欢迎来到天天文库
浏览记录
ID:50381669
大小:39.52 KB
页数:9页
时间:2020-03-05
《基于51单片机与DS1302时钟芯片和LCD1602液晶显示的数字时钟.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.PROTEUS仿真图:KEILC程序:#include#include"LCD1602.h"#include"DS1302.h"voidDelay1ms(unsignedintcount){unsignedinti,j;for(i=0;i2、otoXY(0,1);Print("Time:");....while(1){DS1302_GetTime(&CurrentTime);TimeToStr(&CurrentTime);GotoXY(6,1);Print(CurrentTime.TimeString);Delay1ms(400);}}#ifndefLCD_CHAR_1602_2005_4_9#defineLCD_CHAR_1602_2005_4_9#include//PortDefinitions************3、**********************************************sbitLcdRs=P2^0;sbitLcdRw=P2^1;sbitLcdEn=P2^2;sfrDBPort=0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口//内部等待函数**************************************************************************unsignedcharLCD_Wait(void){Lcd4、Rs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();//while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80//实际硬件时打开此语句LcdEn=0;returnDBPort;}//向LCD写入命令或数据************************************************************#de5、fineLCD_COMMAND0//Command#defineLCD_DATA1//Data#defineLCD_CLEAR_SCREEN0x01//清屏....#defineLCD_HOMING0x02//光标返回原点voidLCD_Write(bitstyle,unsignedcharinput){LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();//注意顺序LcdEn=1;_nop_();//注意顺序LcdEn=0;_nop_();LC6、D_Wait();}//设置显示模式************************************************************#defineLCD_SHOW0x04//显示开#defineLCD_HIDE0x00//显示关#defineLCD_CURSOR0x02//显示光标#defineLCD_NO_CURSOR0x00//无光标#defineLCD_FLASH0x01//光标闪动#defineLCD_NO_FLASH0x00//光标不闪动voidLCD_SetDisplay7、(unsignedcharDisplayMode){LCD_Write(LCD_COMMAND,0x088、DisplayMode);}//设置输入模式************************************************************#defineLCD_AC_UP0x02#defineLCD_AC_DOWN0x00//default#defineLCD_MOVE0x01//画面可平移#defineLCD_NO_MOVE0x00//defaultvoidLCD_SetIn9、put(unsignedcharInputMode){LCD_Write(LCD_COMMAND,0x0410、InputMode);}//移动光标或屏幕************************************************************/*#defineLCD_CURSOR0x02#defineLCD_SCREEN0x08#defineLCD_LEFT0x00....#defin
2、otoXY(0,1);Print("Time:");....while(1){DS1302_GetTime(&CurrentTime);TimeToStr(&CurrentTime);GotoXY(6,1);Print(CurrentTime.TimeString);Delay1ms(400);}}#ifndefLCD_CHAR_1602_2005_4_9#defineLCD_CHAR_1602_2005_4_9#include//PortDefinitions************
3、**********************************************sbitLcdRs=P2^0;sbitLcdRw=P2^1;sbitLcdEn=P2^2;sfrDBPort=0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口//内部等待函数**************************************************************************unsignedcharLCD_Wait(void){Lcd
4、Rs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();//while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80//实际硬件时打开此语句LcdEn=0;returnDBPort;}//向LCD写入命令或数据************************************************************#de
5、fineLCD_COMMAND0//Command#defineLCD_DATA1//Data#defineLCD_CLEAR_SCREEN0x01//清屏....#defineLCD_HOMING0x02//光标返回原点voidLCD_Write(bitstyle,unsignedcharinput){LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();//注意顺序LcdEn=1;_nop_();//注意顺序LcdEn=0;_nop_();LC
6、D_Wait();}//设置显示模式************************************************************#defineLCD_SHOW0x04//显示开#defineLCD_HIDE0x00//显示关#defineLCD_CURSOR0x02//显示光标#defineLCD_NO_CURSOR0x00//无光标#defineLCD_FLASH0x01//光标闪动#defineLCD_NO_FLASH0x00//光标不闪动voidLCD_SetDisplay
7、(unsignedcharDisplayMode){LCD_Write(LCD_COMMAND,0x08
8、DisplayMode);}//设置输入模式************************************************************#defineLCD_AC_UP0x02#defineLCD_AC_DOWN0x00//default#defineLCD_MOVE0x01//画面可平移#defineLCD_NO_MOVE0x00//defaultvoidLCD_SetIn
9、put(unsignedcharInputMode){LCD_Write(LCD_COMMAND,0x04
10、InputMode);}//移动光标或屏幕************************************************************/*#defineLCD_CURSOR0x02#defineLCD_SCREEN0x08#defineLCD_LEFT0x00....#defin
此文档下载收益归作者所有