1、sbit RST = P35;/ DS1302 复位bit ReadRTC_Flag;/读 DS1302 全局变量/* 12864 端口定义*/#define LCD_data P0/带字库液晶 12864 数据口sbit LCD_RS = P24;/寄存器选择输入sbit LCD_RW = P25;/液晶读/写控制sbit LCD_EN = P26;/液晶使能控制sbitPSB=P21;/并口控制RES=P23;uchar code dis1 = 电子设计天地; /液晶显示的汉字uchar code dis2 = 有志者,事竟成!uchar code dis4 = 0,123456789 u
2、nsigned char temp;#define delayNOP(); _nop_();_nop_(); void lcd_pos(uchar X,uchar Y); /确定显示位置unsigned char l_tmpdate7=0,7,16,19,10,1,9;/秒分时日月周年 09-10-19 16:07:00code unsigned char write_rtc_address7=0x80,0x82,0x84,0x86,0x88,0x8a,0x8c; /秒分时日月周年 最低位读写位code unsigned char read_rtc_address7=0x81,0x83,0x8
3、5,0x87,0x89,0x8b,0x8d;void Write_Ds1302_byte(unsigned char temp);void Write_Ds1302( unsigned char address,unsigned char dat ); unsigned char Read_Ds1302 ( unsigned char address );void Read_RTC(void);/read RTC void Set_RTC(void); /set RTCvoid InitTIMER0(void);/inital timer0/*/* */* 延时函数 */void delay(
4、unsigned int m) /延时程序unsigned int i,j; for(i=0;im;i+)for(j=0;j10;j+);/*检查 LCD 忙状态 */*lcd_busy 为 1 时,忙,等待。lcd-busy 为 0 时,闲,可写指令与数据。 */*/ bit lcd_busy()bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP();result = (bit)(P0&0x80); LCD_EN = 0; return(result);/*写指令数据到 LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指
5、令码。void lcd_wcmd(uchar cmd)while(lcd_busy(); LCD_RW = 0; _nop_();P0 = cmd; delay(1);/*写显示数据到 LCD */*RS=H,RW=L,E=高脉冲,D0-D7=数据。/*/ void lcd_wdat(uchar dat) LCD_RS = 1;P0 = dat;/* LCD 初始化设定 */*/ void lcd_init()P0=0xFF;P2=0xFF;delay(40);PSB=1; /并口方式。delay(1);RES=0;RES=1;delay(10); lcd_wcmd(0x30); delay(
6、100); delay(37); lcd_wcmd(0x08); lcd_wcmd(0x10);lcd_wcmd(0x0C); /显示开,关光标 delay(100);lcd_wcmd(0x01); /清除 LCD 的显示内容 delay(100);lcd_wcmd(0x06);void main()uchar i; InitTIMER0();Set_RTC(); lcd_init();/初始化 LCDwhile(1)if(ReadRTC_Flag)ReadRTC_Flag=0;Read_RTC();lcd_pos(0,0); /设置显示位置为第一行的第 1 个字符i = 0;while(di
7、s1i != 0) /显示字符lcd_wdat(dis1i); i+;lcd_pos(1,0); /设置显示位置为第二行的第 1 个字符while(dis2i !lcd_wdat(dis2i); /显示字符i+;lcd_pos(2,0);lcd_wdat(dis4l_tmpdate6/16); /DS1302 是 BCD 码,进行处理得到十位与个位数。lcd_pos(2,1);lcd_wdat(dis4l_tmpdate6%16);lcd_pos(2,2);lcd_wdat(-);lcd_pos(2,3);lcd_wdat(dis4l_tmpdate4/16);lcd_pos(2,4);lcd
8、_wdat(dis4l_tmpdate4%16);lcd_pos(2,5);lcd_pos(2,6);lcd_wdat(dis4l_tmpdate3/16);lcd_pos(2,7);lcd_wdat(dis4l_tmpdate3%16); /设置显示位置为第三行的第 1 个字符lcd_pos(3,0); /设置显示位置为第四行的第 1 个字符lcd_wdat(dis4l_tmpdate2/16); lcd_pos(3,1);lcd_wdat(dis4l_tmpdate2%16); lcd_pos(3,2);: lcd_pos(3,3);lcd_wdat(dis4l_tmpdate1/16); lcd_pos(3,4);lcd_wdat(dis4l_tmpdate1%16); lcd_pos(3,5); lcd_pos(3,6);lcd_wdat(dis4l_tmpdate0/16);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1