|
kr51开发板 stc89c52 lcd1602 废话不多说 看代- #include "reg52.h"
- #define uchar unsigned char
- #define uint unsigned int
- sbit rs=P2^0;//H数据,L命令
- sbit lcden=P2^2;//高脉冲使能,使能脉宽最小150ns
- sbit rw=P2^1;
- uchar code table[]= "welcome to use";
- uchar code table1[]="press the key";
- uchar code table3[]="Time remaining";
- sbit key1=P3^2;
- sbit key2=P3^3;
- sbit key3=P3^4;
- sbit key4=P3^5;
- uchar qian;
- uchar bai;
- uchar shi;
- uchar ge;
- int num=9999;//变量控制时间
- int a=0;
- int c=0;
- int d=0;//这三个变量请读者自行体会作用
- void anjian();//按键函数声明
- /********************************************************************
- * 名称 : delay(uchar x)
- * 功能 : 延时函数
- * 输入 : x
- * 输出 : 无
- ***********************************************************************/
- void delay(uchar x)
- { uint y;
- for(;x>0;x--)
- {
- for(y=110;y>0;y--)
- {};
- }
- }
- /********************************************************************
- * 名称 : lcdwrcom(uchar cdat)
- * 功能 : LCD1602写数据到LCD1602
- * 输入 : cdat
- * 输出 : 无
- ***********************************************************************/
- void lcdwrdata(uchar dat)
- {
- // dat = ((dat&0x01)<<7)|((dat&0x02)<<5)|((dat&0x04)<<3)|((dat&0x08)<<1)|((dat&0x10)>>1)|((dat&0x20)>>3)|((dat&0x40)>>5)|((dat&0x80)>>7);
- rs=1;//写数据时RS拉高
- lcden=1;
- P0=dat;
- delay(6);
- lcden=0;
- delay(6);
- }
- /********************************************************************
- * 名称 : lcdwrcom(uchar cdat)
- * 功能 : LCD1602写命令到LCD1602
- * 输入 : cdat
- * 输出 : 无
- ***********************************************************************/
- void lcdwrcom(uchar cdat)//写指令数据到LCD
- {
- // cdat = ((cdat&0x01)<<7)|((cdat&0x02)<<5)|((cdat&0x04)<<3)|((cdat&0x08)<<1)|((cdat&0x10)>>1)|((cdat&0x20)>>3)|((cdat&0x40)>>5)|((cdat&0x80)>>7);
- rs=0;//写指令时RS拉低
- lcden=1;
- P0=cdat;//
- delay(6);//不加此延时将导致不能写入指令,但能写入显示数据
- lcden=0;
- delay(6);
- }
- /********************************************************************
- * 名称 : lcd_init()
- * 功能 : LCD1602初始化
- * 输入 : 无
- * 输出 : 无
- ***********************************************************************/
- void lcd_init()
- {
- lcdwrcom(0x38);//0x38设置显示模式为:16X2 显示,5X7 点阵,8 位数据接口
- lcdwrcom(0x0c);//打开显示光标闪烁
- lcdwrcom(0x06);
- lcdwrcom(0x01);
- }
- void display(int numdis)//显示时间函数
- {
- qian=numdis/1000;
- bai=(numdis%1000)/100;
- shi=(numdis%100)/10;
- ge=numdis%10;
- }
- void init()//定时器初始化
- {
- TMOD=0X01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- TR0=1;
- ET0=1;
- EA=1;
- }
复制代码

|
|