武汉理工学《数字电子技术》课程设计说明书
UInt16 x,y;
for(x = z;z > 0;z--) for(y = 110;y > 0;y--); }
/******************************************
判断忙函数
函数功能:判断对lcd的操作是否在忙状态 输入参数:无 输出参数:无
******************************************/
void busy(void) {
UInt8 temp; P0 = 0xff; rs = 0;
rw = 1; en = 1;
while(temp & 0x80) }
21
//判断lcd的信号是否在忙状态
{ } en = 0;
temp = P0; Delayms(20);
武汉理工学《数字电子技术》课程设计说明书
/******************************************
写指令函数
函数功能:读取对lcd的指令 输入参数:Get_Com 输出参数:无
******************************************/
void Lcd_WriteCom(UInt8 GetCom) { }
/******************************************
写数据函数
实现功能:读取要显示的数据 函数参数:Temp
******************************************/
22
busy(); rs = 0; rw = 0; en = 1; P0 = GetCom; Delayms(5); en = 0;
//写指令
武汉理工学《数字电子技术》课程设计说明书
void Lcd_WriteData(UInt8 Temp) { }
/******************************************
显示函数
函数功能:实现对数据的显示 输入参数:Add. Data 输出参数:无
******************************************/
void Lcd_Display(UInt8 Add,UInt8 Data) {
UInt8 Data_0,Data_1; Data_1 = Data/10; Data_0 = Data; Lcd_WriteCom(0x80 + Add);
23
rs = 1; rw = 0; en = 1; P0 = Temp; Delayms(5); en = 0;
//数据读入
//指定数据写入的地址
武汉理工学《数字电子技术》课程设计说明书
}
//指定数据写入的值
Lcd_WriteData(0x30 + Data_1); Lcd_WriteData(0x30 + Data_0);
/******************************************
初始化函数
函数功能:实现对各个部分的初始化 函数参数 :无
******************************************/
void Lcd_init() {
Lcd_WriteCom(0x01); Lcd_WriteCom(0x38); Lcd_WriteCom(0x0c); Lcd_WriteCom(0x06);
//清除显示
//设置8位格式,2行,5*7 //设定输入方式,增量不移位 //整体显示,关光标,不闪烁
P2 = 0xf0; //对矩阵键盘的端口值初始化 for(i = 0;i < 12;i ++) { ; }
Lcd_Display(12,0); Lcd_WriteCom(0x80 + i); Lcd_WriteData(REMIND_GEN[i]);
for(i = 0;i < 12;i ++)
24
武汉理工学《数字电子技术》课程设计说明书
{ } EA = 1;
//打开cpu总中断
Lcd_Display(0x40+12,0); Lcd_WriteCom(0xC0 + i); Lcd_WriteData(REMIND_VIP[i]);
TMOD = 0X01; //设置定时器的寄存器工作方式为方式1
16位 }
/******************************************
键盘扫描与时间设置
******************************************/ void Key_Scan() {
25
ET0 = 1; TR0 = 0;
//中断允许寄存器IE的定时器T0中断打开 //关闭中断
TH0 = (65536-50000)/256; TL0 = (65536-50000)%6;
函数功能:实现对时间设置