欢迎来到天天文库
浏览记录
ID:48589868
大小:46.57 KB
页数:9页
时间:2020-02-26
《基于51单片机与DS1302时钟芯片和LCD1602液晶显示的数字时钟.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.PROTEUS仿真图:KEILC程序:#include#include"LCD1602.h"#include"DS1302.h"voidDelay1ms(unsignedintcount){unsignedinti,j;for(i=0;i2、XY(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){LcdRs=0;Lcd4、Rw=1;_nop_();LcdEn=1;_nop_();//while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80//实际硬件时打开此语句LcdEn=0;returnDBPort;}//向LCD写入命令或数据************************************************************#defineLCD_COM5、MAND0//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_();LCD_Wait();}//设6、置显示模式************************************************************#defineLCD_SHOW0x04//显示开#defineLCD_HIDE0x00//显示关#defineLCD_CURSOR0x02//显示光标#defineLCD_NO_CURSOR0x00//无光标#defineLCD_FLASH0x01//光标闪动#defineLCD_NO_FLASH0x00//光标不闪动voidLCD_SetDisplay(unsignedcharDis7、playMode){LCD_Write(LCD_COMMAND,0x088、DisplayMode);}//设置输入模式************************************************************#defineLCD_AC_UP0x02#defineLCD_AC_DOWN0x00//default#defineLCD_MOVE0x01//画面可平移#defineLCD_NO_MOVE0x00//defaultvoidLCD_SetInput(unsignedcharInp9、utMode){LCD_Write(LCD_COMMAND,0x0410、InputMode);}//移动光标或屏幕************************************************************/*#defineLCD_CURSOR0x02#defineLCD_SCREEN0x08#defineLCD_LEFT0x00教育资料.#de
2、XY(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){LcdRs=0;Lcd
4、Rw=1;_nop_();LcdEn=1;_nop_();//while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80//实际硬件时打开此语句LcdEn=0;returnDBPort;}//向LCD写入命令或数据************************************************************#defineLCD_COM
5、MAND0//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_();LCD_Wait();}//设
6、置显示模式************************************************************#defineLCD_SHOW0x04//显示开#defineLCD_HIDE0x00//显示关#defineLCD_CURSOR0x02//显示光标#defineLCD_NO_CURSOR0x00//无光标#defineLCD_FLASH0x01//光标闪动#defineLCD_NO_FLASH0x00//光标不闪动voidLCD_SetDisplay(unsignedcharDis
7、playMode){LCD_Write(LCD_COMMAND,0x08
8、DisplayMode);}//设置输入模式************************************************************#defineLCD_AC_UP0x02#defineLCD_AC_DOWN0x00//default#defineLCD_MOVE0x01//画面可平移#defineLCD_NO_MOVE0x00//defaultvoidLCD_SetInput(unsignedcharInp
9、utMode){LCD_Write(LCD_COMMAND,0x04
10、InputMode);}//移动光标或屏幕************************************************************/*#defineLCD_CURSOR0x02#defineLCD_SCREEN0x08#defineLCD_LEFT0x00教育资料.#de
此文档下载收益归作者所有