




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
51單片機帶字庫液晶12864ds1302數(shù)字時鐘c源程序無按鍵改正功能51單片機帶字庫液晶12864ds1302數(shù)字時鐘c源程序無按鍵改正功能51單片機帶字庫液晶12864ds1302數(shù)字時鐘c源程序無按鍵改正功能51單片機+帶字庫液晶12864+DS1302數(shù)字時鐘C源程序〔無按鍵改正功能〕過兩天的搜尋與調(diào)試,在他人程序的基礎上,不停改正,終于調(diào)試成功了這個程序。當前還不可以改正時間與日期,但是以預準時間以始。合用于開發(fā)板:51單片機〔AT89S52〕+帶字庫液晶12864(ST7920)+DS1302(實不時鐘〕實現(xiàn)功能:簡單,數(shù)字時鐘+日期〔此后會不停圓滿〕。語言源程序以下:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint/*DS1302端口設置*/sbitSCK=P3^6;//DS1302時鐘sbitSDA=P3^4;//DS1302IOsbitRST=P3^5;//DS1302復位bitReadRTC_Flag;//讀DS1302全局變量/*12864端口定義*/#defineLCD_dataP0//帶字庫液晶12864數(shù)據(jù)口sbitLCD_RS=P2^4;//寄存器選擇輸入sbitLCD_RW=P2^5;//液晶讀/寫控制1/13sbitLCD_EN=P2^6;//液晶使能控制sbitPSB=P2^1;//并口控制sbitRES=P2^3;ucharcodedis1[]={"電子設計天地"};//液晶顯示的漢字ucharcodedis2[]={"有志者,事竟成!"};ucharcodedis4[]={'0','1','2','3','4','5','6','7','8','9'};unsignedchartemp;#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};voidlcd_pos(ucharX,ucharY);//確立顯示地點unsignedcharl_tmpdate[7]={0,7,16,19,10,1,9};//秒分時間月周年09-10-1916:07:00codeunsignedcharwrite_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);//setRTCvoidInitTIMER0(void);//initaltimer0/*//*2/13*//*延時函數(shù)*//**//*/voiddelay(unsignedintm)//延時程序{unsignedinti,j;for(i=0;i<m;i++)for(j=0;j<10;j++);}/*//**//*檢查LCD忙狀態(tài)*//*lcd_busy為1時,忙,等候。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。*//**//*/bitlcd_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(P0&0x80);LCD_EN=0;return(result);}/*//**//*寫指令數(shù)據(jù)到LCD*//*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。*//**//*/voidlcd_wcmd(ucharcmd){while(lcd_busy());LCD_RS=0;3/13LCD_RW=0;LCD_EN=0;_nop_();_nop_();P0=cmd;delay(1);LCD_EN=1;delay(1);LCD_EN=0;}/*//**//*寫顯示數(shù)據(jù)到LCD*//*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。*//**//*/voidlcd_wdat(uchardat){while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delayNOP();4/13LCD_EN=1;delay(1);LCD_EN=0;}/*//**//*LCD初始化設定*//**//*/voidlcd_init(){P0=0xFF;P2=0xFF;delay(40);PSB=1;//并口方式。delay(1);RES=0;delay(1);RES=1;delay(10);lcd_wcmd(0x30);delay5/13(100);lcd_wcmd(0x30);delay(37);lcd_wcmd(0x08);delay(100);lcd_wcmd(0x10);delay(100);lcd_wcmd(0x0C);//顯示開,關光標delay(100);lcd_wcmd(0x01);//去除LCD的顯示內(nèi)容delay(100);lcd_wcmd(0x06);delay(100);}voidmain(){uchari;InitTIMER0();Set_RTC();6/13lcd_init();初始化LCDwhile(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個字符i=0;while(dis2[i]!='\0'){lcd_wdat(dis2[i]);//顯示字符i++;}lcd_pos(2,0);lcd_wdat(dis4[l_tmpdate[6]/16]);//DS1302是BCD碼,進行辦理獲得十位與個位數(shù)。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);7/13lcd_wdat(dis4[l_tmpdate[4]%16]);lcd_pos(2,5);lcd_wdat('-');lcd_pos(2,6);lcd_wdat(dis4[l_tmpdate[3]/16]);lcd_pos(2,7);lcd_wdat(dis4[l_tmpdate[3]%16]);//設置顯示地點為第三行的第個字符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_wdat(':');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_wdat(':');8/13lcd_pos(3,6);lcd_wdat(dis4[l_tmpdate[0]/16]);lcd_pos(3,7);lcd_wdat(dis4[l_tmpdate[0]%16]);}}}/*//**//*設定顯示地點*//**//*/voidlcd_pos(ucharX,ucharY){ucharpos;if(X==0){X=0x80;}elseif(X==1){X=0x90;}elseif(X==2){X=0x88;}elseif(X==3){X=0x98;}pos=X+Y;lcd_wcmd(pos);//顯示地點}voidInitTIMER0(void){TMOD|=0x01;//準時器設置16位TH0=0xef;//初始化值9/13TL0=0xf0;ET0=1;TR0=1;EA=1;}voidWrite_Ds1302_Byte(unsignedchartemp){unsignedchari;for(i=0;i<8;i++)//循環(huán)8次寫入數(shù)據(jù){SCK=0;SDA=temp&0x01;//每次傳輸?shù)妥止?jié)temp>>=1;//右移一位SCK=1;}}/**/voidWrite_Ds1302(unsignedcharaddress,unsignedchardat){RST=0;_nop_();SCK=0;_nop_();RST=1;_nop_();//啟動Write_Ds1302_Byte(address);//發(fā)送地點Write_Ds1302_Byte(dat);//發(fā)送數(shù)據(jù)RST=0;//恢復}//10/13unsignedcharRead_Ds1302(unsignedcharaddress){unsignedchari,temp=0x00;RST=0;_nop_();SCK=0;_nop_();RST=1;_nop_();Write_Ds1302_Byte(address);for(i=0;i<8;i++)//循環(huán)8次讀取數(shù)據(jù){if(SDA)temp|=0x80;//每次傳輸?shù)妥止?jié)SCK=0;temp>>=1;//右移一位SCK=1;}RST=0;_nop_();//以下為DS1302復位的穩(wěn)準時間RST=0;SCK=0;_nop_();SCK=1;_nop_();SDA=0;_nop_();11/13SDA=1;_nop_();return(temp);//返回}//voidRead_RTC(void)//讀取日歷{unsignedchari,*p;p=read_rtc_address;//地點傳達for(i=0;i<7;i++)//分7次讀取秒分時間月周年{l_tmpdate[i]=Read_Ds1302(*p);p++;}}/*/voidSet_RTC(void)//設定日歷{unsignedchari,*p,tmp;for(i=0;i<7;i++){//BCD辦理tmp=l_tmpdate[i]/10;l_tmpdate[i]=l_tmpdate[i]%10;l_tmpdate[i]=l_tmpdate[i]+tmp*16;}Write_Ds1302(0x8E,0X00);p=write_rtc_address;//傳地點for(i=0;i<7;i++)//7次寫入秒分時間月周年{Write_Ds1302(*p,l_tmpdate[i]);p++;}Write_Ds1302(0x8E,0x80);}voidtim(void)interrupt1using1//中止,用于數(shù)碼管掃描{staticunsignedchari,num;TH0=0xf5;TL0=0xe0;12/13//P0=table[l_tmpdisplay[i]];//查表法獲得要顯示數(shù)字的數(shù)碼段//P2=table1[i];i++;if(i==8){i=0;num++;if(20==num)//隔段時間讀取1302的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度澳大利亞大學本碩連讀合同
- 二零二五年度勞動合同解除協(xié)議
- 二零二五年度農(nóng)村合作社鄉(xiāng)村旅游開發(fā)合作協(xié)議
- 鏟車勞務承包合同鏟車合同書
- 社交網(wǎng)絡運營合作合同
- 公司內(nèi)外部往來文書規(guī)范手冊
- 小熊維尼的友情世界讀后感
- 生物技術在農(nóng)村綜合利用項目協(xié)議
- 新能源汽車充電站投資協(xié)議
- 企業(yè)數(shù)字化轉(zhuǎn)型解決方案手冊
- DB32T 3699-2019 城市道路照明設施養(yǎng)護規(guī)程
- 自然辯證法概論課件:第四章馬克思主義科學技術社會論
- 2021版大象版四年級科學下冊12奇妙的植物教學課件
- 精雕JDPaint快捷鍵大全
- 山東建筑電氣與智能化疑難問題分析與解答
- 2022年鄭州衛(wèi)生健康職業(yè)學院單招英語模擬試題(附答案解析)
- Q∕GDW 10354-2020 智能電能表功能規(guī)范
- 土壤學習題與答案
- 國家自然科學基金(NSFC)申請書樣本
- 觀摩臺標準化建設方案
- 數(shù)字化影像與PACS教學大綱
評論
0/150
提交評論