51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx

上传人:b****6 文档编号:21251170 上传时间:2023-01-28 格式:DOCX 页数:6 大小:16.10KB
下载 相关 举报
51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx_第1页
第1页 / 共6页
51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx_第2页
第2页 / 共6页
51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx_第3页
第3页 / 共6页
51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx_第4页
第4页 / 共6页
51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx

《51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx(6页珍藏版)》请在冰豆网上搜索。

51单片机+带字库液晶12864+DS1302数字时钟C源程序无按键修改功能Word文档格式.docx

sbitRST=P3^5;

//DS1302复位

bitReadRTC_Flag;

//读DS1302全局变量

/*12864端口定义*/

#defineLCD_dataP0

//带字库液晶12864数据口

sbitLCD_RS=P2^4;

//寄存器选择输入

sbitLCD_RW=P2^5;

//液晶读/写控制

sbitLCD_EN=P2^6;

//液晶使能控制

sbit

PSB=P2^1;

//并口控制

RES=P2^3;

 

ucharcodedis1[]={"

电子设计天地"

};

//液晶显示的汉字

ucharcodedis2[]={"

有志者,事竟成!

"

ucharcodedis4[]={'

0'

'

1'

2'

3'

4'

5'

6'

7'

8'

9'

unsignedchartemp;

#definedelayNOP();

{_nop_();

_nop_();

voidlcd_pos(ucharX,ucharY);

//确定显示位置

unsignedcharl_tmpdate[7]={0,7,16,19,10,1,9};

//秒分时日月周年09-10-1916:

07:

00

codeunsignedcharwrite_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};

//

秒分时日月周年最低位读写位

codeunsignedcharread_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};

voidWrite_Ds1302_byte(unsignedchartemp);

voidWrite_Ds1302(unsignedcharaddress,unsignedchardat);

unsignedcharRead_Ds1302(unsignedcharaddress);

voidRead_RTC(void);

//readRTCvoidSet_RTC(void);

//setRTC

voidInitTIMER0(void);

//initaltimer0

/*******************************************************************/

/**/

/*延时函数*/

voiddelay(unsignedintm)//延时程序

{

unsignedinti,j;

for(i=0;

i<

m;

i++)

for(j=0;

j<

10;

j++);

}

/*检查LCD忙状态*/

/*lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据。

*/

/*******************************************************************/bitlcd_busy()

bitresult;

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=指令码。

voidlcd_wcmd(ucharcmd)

while(lcd_busy());

LCD_RW=0;

_nop_();

P0=cmd;

delay

(1);

/*写显示数据到LCD*/

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。

/*******************************************************************/voidlcd_wdat(uchardat)

LCD_RS=1;

P0=dat;

/*LCD初始化设定*/

/*******************************************************************/voidlcd_init()

P0=0xFF;

P2=0xFF;

delay(40);

PSB=1;

//并口方式。

delay

(1);

RES=0;

RES=1;

delay(10);

lcd_wcmd(0x30);

delay(100);

delay(37);

lcd_wcmd(0x08);

lcd_wcmd(0x10);

lcd_wcmd(0x0C);

//显示开,关光标delay(100);

lcd_wcmd(0x01);

//清除LCD的显示内容delay(100);

lcd_wcmd(0x06);

voidmain()

uchari;

InitTIMER0();

Set_RTC();

lcd_init();

//初始化LCD

while

(1)

if(ReadRTC_Flag)

ReadRTC_Flag=0;

Read_RTC();

lcd_pos(0,0);

//设置显示位置为第一行的第1个字符

i=0;

while(dis1[i]!

='

\0'

{//显示字符

lcd_wdat(dis1[i]);

i++;

lcd_pos(1,0);

//设置显示位置为第二行的第1个字符

while(dis2[i]!

lcd_wdat(dis2[i]);

//显示字符

i++;

lcd_pos(2,0);

lcd_wdat(dis4[l_tmpdate[6]/16]);

//DS1302是BCD码,进行处理得到十位与

个位数。

lcd_pos(2,1);

lcd_wdat(dis4[l_tmpdate[6]%16]);

lcd_pos(2,2);

lcd_wdat('

-'

);

lcd_pos(2,3);

lcd_wdat(dis4[l_tmpdate[4]/16]);

lcd_pos(2,4);

lcd_wdat(dis4[l_tmpdate[4]%16]);

lcd_pos(2,5);

lcd_pos(2,6);

lcd_wdat(dis4[l_tmpdate[3]/16]);

lcd_pos(2,7);

lcd_wdat(dis4[l_tmpdate[3]%16]);

//设置显示位置为第三行的第1个

字符

lcd_pos(3,0);

//设置显示位置为第四行的第1个字符

lcd_wdat(dis4[l_tmpdate[2]/16]);

lcd_pos(3,1);

lcd_wdat(dis4[l_tmpdate[2]%16]);

lcd_pos(3,2);

:

'

lcd_pos(3,3);

lcd_wdat(dis4[l_tmpdate[1]/16]);

lcd_pos(3,4);

lcd_wdat(dis4[l_tmpdate[1]%16]);

lcd_pos(3,5);

lcd_pos(3,6);

lcd_wdat(dis4[l_tmpdate[0]/16]);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1