欢迎来到天天文库
浏览记录
ID:57416146
大小:157.50 KB
页数:10页
时间:2020-08-16
《基于单片机的LCD1602电子时钟程序和仿真图.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/*******************************************************************///Nameofthisdesign:LCDshowElectricClock//Author:Huangxiang//Date:2008-12-21//proteus仿真论坛:proteus.5d6d.com/*******************************************************************/#include
2、#include#include#defineucharunsignedchar#defineuintunsignedint#defineBUSY0x80//lcd忙检测标志,0x08第七位就是1#defineDATAPORTP0//定义P0口为LCD通讯端口sbitlight=P1^3;sbitLCD_RS=P2^0;//数据/命令端sbitLCD_RW=P2^1;//读/写选择端sbitLCD_EN=P2^2;ucharsecond;//定义并初始化时钟变量:秒分时uc
3、harminite;ucharhour;ucharmstcnt=0;//??uchart,set=0;//??ucharcodestr0[]={"DATE:2008-12-21"};//定义两个一直显示的字符串ucharcodestr1[]={"TIME:::"};voiddelay_LCD(uint);//LCD延时子程序voidinitLCD(void);//LCD初始化子程序voidlcd_wait(void);//LCD检测忙子程序voidWriteCommandLCD(ucharWCLCD,ucharBu
4、syC);//写指令到ICD子函数voidWriteDataLCD(ucharWDLCM);//写数据到LCD子函数voidDisplayOneChar(ucharX,ucharY,ucharDData);//显示指定坐标的一个字符子函数voidDisplayListChar(ucharX,ucharY,ucharcode*DData);//显示指定坐标的一串字符子函数voidinit_timer0(void);//定时器初始化voiddisplayfun1(void);voiddisplayfun2(void);
5、voiddisplayfun3(void);voidkeyscan(void);//键盘扫描子程序voidset_adj(void);voidinc_key(void);voiddec_key(void);/*********延时K*1ms,12.000mhz**********/voiddelay_LCD(uintk){uinti,j;for(i=0;i6、CD(ucharWCLCM,ucharBusyC){if(BusyC)lcd_wait();DATAPORT=WCLCM;LCD_RS=0;//选中指令寄存器LCD_RW=0;//写模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=0;}/**********写数据到LCD子函数************/voidWriteDataLCD(ucharWDLCM){if(BusyC)lcd_wait();//检测忙信号DATAPORT=WDLCM;LCD_RS=1;//选中数据寄存器L7、CD_RW=0;//写模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=0;}/***********lcm内部等待函数*************/voidlcd_wait(void){DATAPORT=0xff;LCD_EN=1;LCD_RS=0;LCD_RW=1;_nop_();while(DATAPORT&BUSY){LCD_EN=0;_nop_();_nop_();LCD_EN=1;_nop_();_nop_();}LCD_EN=0;}/**********LCD初始化子函8、数***********/voidinitLCD(){DATAPORT=0;delay_LCD(15);WriteCommandLCD(0x38,0);//三次显示模式设置,不检测忙信号delay_LCD(5);WriteCommandLCD(0x38,0);delay_LCD(5);WriteCommandLCD(0x38,0);delay_LCD(5);
6、CD(ucharWCLCM,ucharBusyC){if(BusyC)lcd_wait();DATAPORT=WCLCM;LCD_RS=0;//选中指令寄存器LCD_RW=0;//写模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=0;}/**********写数据到LCD子函数************/voidWriteDataLCD(ucharWDLCM){if(BusyC)lcd_wait();//检测忙信号DATAPORT=WDLCM;LCD_RS=1;//选中数据寄存器L
7、CD_RW=0;//写模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=0;}/***********lcm内部等待函数*************/voidlcd_wait(void){DATAPORT=0xff;LCD_EN=1;LCD_RS=0;LCD_RW=1;_nop_();while(DATAPORT&BUSY){LCD_EN=0;_nop_();_nop_();LCD_EN=1;_nop_();_nop_();}LCD_EN=0;}/**********LCD初始化子函
8、数***********/voidinitLCD(){DATAPORT=0;delay_LCD(15);WriteCommandLCD(0x38,0);//三次显示模式设置,不检测忙信号delay_LCD(5);WriteCommandLCD(0x38,0);delay_LCD(5);WriteCommandLCD(0x38,0);delay_LCD(5);
此文档下载收益归作者所有