123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include "drive_1602.h"
- #include <stdarg.h> // 标准头文件
- #include "stdio.h"
- #include "string.h"
- #define lcddata P1
- sbit rs=P2^7;
- sbit en=P2^6;
- void delay_1ms(unsigned int xms)//延时函数,有参函数
- {
- unsigned char i, j;
- while(xms--)
- {
- _nop_();
- _nop_();
- _nop_();
- i = 11;
- j = 190;
- do
- {
- while (--j);
- } while (--i);
- }
- }
- //****液晶写入指令函数****//
- void Write_1602_com(unsigned char com)
- {
- // rw=0;
- rs=0;//数据/指令选择置为指令
- lcddata=com;//送入数据
- delay_1ms(1);
- en=1;//拉高使能端,为制造有效的下降沿做准备
- delay_1ms(1);
- en=0;//en由高变低,产生下降沿,液晶执行命令
- }
- //***液晶写入数据函数****//
- void Write_1602_date(unsigned char date)
- {
- // rw=0;
- rs=1;//数据/指令选择置为数据
- lcddata=date;//送入数据
- delay_1ms(1);
- en=1; //en置高电平,为制造下降沿做准备
- delay_1ms(1);
- en=0; //en由高变低,产生下降沿,液晶执行命令
- }
- /************ 写字符数据函数 *****************
- //功能:在lcd1602指定位置上显示字符;
- //参数
- //p: 指向待显示数据指针
- //x: X坐标
- //y: Y坐标
- //************ *********** *****************/
- void WriteLcd1602_String(char x,char y,char *p)
- {
- char i=0;
- if(y == 0)
- {
- Write_1602_com(0x80 + x);
- }
- else
- {
- Write_1602_com(0xC0 + x);
- }
- while(*p != 0)
- {
- Write_1602_date(*p);
- p++;
- }
- }
- //***液晶初始化函数****//
- void lcd1602_init()
- {
- Write_1602_com(0x38);//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据
- delay_1ms(1);
- Write_1602_com(0x0c);//开显示不显示光标
- delay_1ms(1);
- Write_1602_com(0x06);//整屏不移动,光标自动右移
- delay_1ms(1);
- Write_1602_com(0x01);//清显示
- delay_1ms(1);
- Write_1602_com(0x80);
- delay_1ms(1);
-
- }
- void LCD1602_Write_address(unsigned char x,unsigned char y)
- {
- x&=0x0f; //列地址限制在0-15间
- y&=0x01; //行地址限制在0-1间
- if(y==0) //如果是第一行
- Write_1602_com(x|0x80); //将列地址写入
- else //如果是第二行
- Write_1602_com((x+0x40)|0x80); //将列地址写入
- }
- void LCD1602_Disp(unsigned char x,unsigned char y,unsigned char buf)
- {
- LCD1602_Write_address(x,y); //先将地址信息写入
- Write_1602_date(buf); //再写入要显示的数据
- }
|