版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、總電路圖:單片機電路圖:1602接線圖:1302接線圖:(I/O接單片機3.5腳)按鍵接線圖:程序清單:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit ACC0 = ACC0;sbit ACC7 = ACC7;sbit t=P10;/進入調時按鍵sbit jia=P11;/加一按鍵sbit jian=P12;/減一按鍵sbit m=P13;/退出調時按鍵sbit BEEP=P20;/蜂鳴器sbit jtod=P14;/矩陣按鍵轉獨立按
2、鍵,該腳置0sbit T_CLK = P16; /*實時時鐘時鐘線引腳 */sbit T_IO = P35; /*實時時鐘數(shù)據(jù)線引腳 */sbit T_RST = P17; /*實時時鐘復位線引腳 */sbit E=P27;/1602使能引腳sbit RW=P26;/1602讀寫引腳sbit RS=P25;/1602數(shù)據(jù)/命令選擇引腳uchar code hanzi8=0x04,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,0x0f,0x09,0x0f,0x09,0x0f,0x09,0x13,0x11,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f
3、,0x00;void v_W1302(uchar ucAddr, uchar ucDa);uchar uc_R1302(uchar);uchar dectobcd(uchar bcd);uchar bcdtodec(uchar);void beep();void delay(uchar x) uchar i; while(x-) for(i=0;i<110;i+);/* 名稱 : enable(uchar del)* 功能 : 1602命令函數(shù)* 輸入 : 輸入的命令值* 輸出 : 無*/void enable(uchar del)RS = 0;RW = 0;P0 = del;E = 1
4、;delay(3);E=0;/* 名稱 : write(uchar del)* 功能 : 1602寫數(shù)據(jù)函數(shù)* 輸入 : 需要寫入1602的數(shù)據(jù)* 輸出 : 無*/void write(uchar del)RS = 1;RW = 0;P0 = del;E = 1;delay(3);E=0;/* 名稱 : L1602_init()* 功能 : 1602初始化,請參考1602的資料* 輸入 : 無* 輸出 : 無*/void L1602_init(void)enable(0x01);enable(0x38);enable(0x06);enable(0x0c);E=0;/裝入自定義字符(漢字)voi
5、d writch() uchar i,j; enable(0x40); for(i=0;i<8;i+) for(j=0;j<8;j+) write(hanziij);/* 名稱 : L1602_char(uchar hang,uchar lie,char sign)* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符顯示"b" ,調用該函數(shù)如下 L1602_char(1,5,'b')* 輸入 : 行,列,需要輸入1602的數(shù)據(jù)* 輸出 : 無*/void L1602_char(uchar hang,uchar lie,char sign)
6、uchar a;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;enable(a);write(sign);/* 名稱 : L1602_string(uchar hang,uchar lie,uchar *p)* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調用該函數(shù)如下 L1602_string(1,5,"ab cd ef;")* 輸入 : 行,列,需要輸入1602的數(shù)據(jù)* 輸出 : 無*/void L1602_string(uchar
7、hang,uchar lie,uchar *p)uchar a;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;enable(a);while(1)if(*p = '0') break;write(*p);p+;/時鐘調節(jié)/void timechange() uchar a,num=1; uchar year,mon,day,hour,min,sec;/進入調時循環(huán) while(num) if(t=0) delay(5); if(t=0) num+; beep(); while(!t); /退出調時按鍵m
8、if(m=0) delay(5); if(m=0) num=0; enable(0x0f); a=uc_R1302(0x81)|0x80; v_W1302(0x8e,0); v_W1302(0x80,a);/調時到年以后退出調時if(num=7)num=0;/num=1調秒if(num=1) enable(0xc0+12); if(jia=0) delay(5); if(jia=0) /秒加一 while(!jia); sec=bcdtodec(uc_R1302(0x81)&0x7f); sec+; if(sec>59) sec=0; L1602_char(2, 12, sec/
9、10%10+48); L1602_char(2, 13, sec%10 + 48); v_W1302(0x80,dectobcd(sec)|0x80); if(jian=0) /秒減一 delay(5); if(jian=0) while(!jian); sec=bcdtodec(uc_R1302(0x81); sec-; if(sec=-1) sec=59; L1602_char(2, 12, sec/10%10+48); L1602_char(2, 13, sec%10 + 48); v_W1302(0x80,dectobcd(sec)|0x80); if(num=2) /調分鐘 enab
10、le(0xc0+9); if(jia=0) delay(5); if(jia=0) min = bcdtodec(uc_R1302(0x83); min+; while(!jia); if(min>59) min=0; L1602_char(2, 9, min / 10 % 10 + 48); L1602_char(2, 10, min % 10 + 48); v_W1302(0x82,dectobcd(min); if(jian=0) delay(5); if(jian=0) min = bcdtodec(uc_R1302(0x83); min-; while(!jian); if(m
11、in=-1) min=59; L1602_char(2, 9, min / 10 % 10 + 48); L1602_char(2, 10, min % 10 + 48); v_W1302(0x82,dectobcd(min); if(num=3) /調小時 enable(0xc0+6); if(jia=0) delay(5); if(jia=0) hour = bcdtodec(uc_R1302(0x85); hour+; while(!jia); if(hour>23) hour=0; L1602_char(2, 6, hour / 10 % 10 + 48); L1602_char
12、(2, 7, hour % 10 + 48); v_W1302(0x84,dectobcd(hour); if(jian=0) delay(5); if(jian=0) while(!jian); hour = bcdtodec(uc_R1302(0x85); hour-; if(hour=-1) hour=23; L1602_char(2, 6, hour / 10 % 10 + 48); L1602_char(2, 7, hour % 10 + 48); v_W1302(0x84,dectobcd(hour); if(num=4) /調日期 enable(0x80+13); if(jia=
13、0) delay(5); if(jia=0) hour = bcdtodec(uc_R1302(0x87); day+; while(!jia); if(day>31) day=0; L1602_char(1, 13, day / 10 % 10 + 48); L1602_char(1, 14, day % 10 + 48); v_W1302(0x86,dectobcd(day); if(jian=0) delay(5); if(jian=0) while(!jian); day=bcdtodec(uc_R1302(0x87); day-; if(day=-1) day=31; L160
14、2_char(1,13,day/10%10+48); L1602_char(1,14,day%10+48); v_W1302(0x86,dectobcd(day); if(num=5)/調月份 enable(0x80+10); if(jia=0) delay(5); if(jia=0) mon = bcdtodec(uc_R1302(0x89); mon+; while(!jia); if(mon>12) mon=0; L1602_char(1, 10, mon / 10 % 10 + 48); L1602_char(1, 11, mon % 10 + 48); v_W1302(0x88
15、,dectobcd(mon); if(jian=0) delay(5); if(jian=0) while(!jian); mon = bcdtodec(uc_R1302(0x89); mon-; if(mon=-1) mon=12; L1602_char(1, 10, mon / 10 % 10 + 48); L1602_char(1, 11, mon % 10 + 48); v_W1302(0x88,dectobcd(mon); if(num=6)/調年份 enable(0x80+7); if(jia=0) delay(5); if(jia=0) year = bcdtodec(uc_R1
16、302(0x8d); year+; while(!jia); if(year>20) year=0; L1602_char(1, 7, year / 10 % 10 + 48); L1602_char(1, 8, year % 10 + 48); v_W1302(0x8c,dectobcd(year); if(jian=0) delay(5); if(jian=0) while(!jian); year = bcdtodec(uc_R1302(0x8d); year-; if(year=-1) year=20; L1602_char(1, 7, year / 10 % 10 + 48);
17、 L1602_char(1, 8, year % 10 + 48); v_W1302(0x8c,dectobcd(year); if(num=0)/關閉光標閃爍enable(0x0c); v_W1302(0x80,uc_R1302(0x81)&0x7f);/開啟1302記時/* 名稱 : v_RTInputByte()* 功能 : 往DS1302寫入1Byte數(shù)據(jù)* 輸入 : ucDa 寫入的數(shù)據(jù)* 輸出 : 無*/void v_RTInputByte(uchar ucDa)uchar i;ACC = ucDa;T_RST = 1;for(i=8; i>0; i-)T_IO =
18、ACC0;T_CLK = 1;T_CLK = 0;ACC = ACC >> 1;/* 名稱 : uc_RTOutputByte()* 功能 : 從DS1302讀取1Byte數(shù)據(jù)* 輸入 :無* 返回值: ACC*/uchar uc_RTOutputByte(void) uchar i;T_RST = 1;for(i=8; i>0; i-)ACC = ACC >>1;ACC7 = T_IO;T_CLK = 1;T_CLK = 0;return(ACC);/* 名稱 : v_W1302(uchar ucAddr, uchar ucDa)* 功能 : 往DS1302寫入
19、數(shù)據(jù)* 輸入 : ucAddr: DS1302地址, ucDa: 要寫的數(shù)據(jù)* 返回值 : 無*/void v_W1302(uchar ucAddr, uchar ucDa)T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(ucAddr); / 寫地址 _nop_();_nop_();v_RTInputByte(ucDa); / 寫1Byte數(shù)據(jù)T_CLK = 1;T_RST = 0;/* 名稱 : uc_R1302(uchar ucAddr)* 功能 : 讀取DS1302某地址的數(shù)據(jù)* 輸入 : ucAddr: DS1302地址* 返回值 : ucDa
20、:讀取的數(shù)據(jù)*/uchar uc_R1302(uchar ucAddr)uchar ucDa;T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(ucAddr); /寫地址,命令_nop_();_nop_();ucDa = uc_RTOutputByte(); /讀1Byte數(shù)據(jù)T_CLK = 1;T_RST = 0;return(ucDa);/* 名稱 : bcdtodec(uchar bcd)* 功能 : BCD碼轉換為DEC碼(DEC碼為十進制數(shù)據(jù):BCD:0x11->DEC為數(shù)值11(HEX:0x0b)* 輸入 : bcd碼* 輸出 : dec
21、碼*/uchar bcdtodec(uchar bcd)uchar data1; data1=(bcd&0x70)>>4)*10+(bcd&0x0f);return data1;uchar dectobcd(uchar dec) uchar dat;dat=(dec/10)<<4|(dec%10);return dat;/* 名稱 : Write_DS1302Init()* 功能 : 往DS1302中寫入數(shù)據(jù)。最開始顯示的數(shù)據(jù)就是在這里設置的。* 輸入 : 無* 輸出 : 無*/void Write_DS1302Init(void)v_W1302(0x8
22、e,0);v_W1302(0x80,0x00);/寫入秒v_W1302(0x8e,0);v_W1302(0x82,0x00);/寫入分v_W1302(0x8e,0);v_W1302(0x84,0x00);/寫入小時v_W1302(0x8e,0);v_W1302(0x86,0x00);/寫入日v_W1302(0x8e,0);v_W1302(0x88,0x00);/寫入月v_W1302(0x8e,0);v_W1302(0x8a,0x00);/寫入星期v_W1302(0x8e,0);v_W1302(0x8c,0x00);/寫入年 v_W1302(0x90,0xa6);/單二極管,2K電阻充電/* 名
23、稱 : Run_DS1302(void)* 功能 : 讀出DS1302中的數(shù)據(jù),并在液晶1602上進行顯示* 輸入 : 無* 輸出 : 無*/void Run_DS1302(void)uchar sec, min, hour, day, month, year;v_W1302(0x8f, 0);sec = bcdtodec(uc_R1302(0x81); /讀出DS1302中的秒v_W1302(0x8f, 0);min = bcdtodec(uc_R1302(0x83); /讀出DS1302中的分v_W1302(0x8f, 0);hour = bcdtodec(uc_R1302(0x85);
24、/讀出DS1302中的小時v_W1302(0x8f, 0);day = bcdtodec(uc_R1302(0x87); /讀出DS1302中的日v_W1302(0x8f, 0);month = bcdtodec(uc_R1302(0x89); /讀出DS1302中的月v_W1302(0x8f, 0);year = bcdtodec(uc_R1302(0x8d); /讀出DS1302中的年L1602_char(2, 6, hour / 10 % 10 + 48); /字符ASIIC碼顯示,0的ASIIC=48L1602_char(2, 7, hour % 10 + 48);L1602_char(2, 8, ':');L1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班長競選演講稿匯編6篇資料
- 嘉興嘉善縣第一人民醫(yī)院醫(yī)共體招聘考試試卷及答案
- 春節(jié)日記三篇
- 新學期的計劃資料集錦6篇
- 青春的演講稿4篇
- 端午節(jié)日記范文合集五篇
- 2014年遼寧省丹東市中考數(shù)學試卷(含解析版)
- 二級建造師之二建建設工程法規(guī)及相關知識題庫(原創(chuàng)題)
- 審計學(教學課件)第九章 采購與付款循環(huán)的審計
- 2020年江西省中考滿分作文《好的故事》8
- 江西省礦山地質環(huán)境詳細調查技術指南
- 遼寧省名校聯(lián)盟2024-2025學年高三上學期10月聯(lián)考數(shù)學試卷
- 湖北省黃石市(2024年-2025年小學四年級語文)人教版專題練習(上學期)試卷及答案
- 農(nóng)產(chǎn)品供應鏈數(shù)字化行業(yè)分析報告及未來五年行業(yè)發(fā)展報告
- 稻谷種植綜合知識與技能考核試卷
- 法律法規(guī)中英文對照版(大全)
- 八年級生物上冊 第六單元 第三章 保護生物的多樣性教案1 (新版)新人教版
- 自律成長主題班會課件
- 北師版七上數(shù)學1.2展開與折疊第1課時正方體的展開與折疊課件
- 2024年吉林省通化梅河口市公安局招錄工作人員100人(高頻重點提升專題訓練)共500題附帶答案詳解
- 古建筑修繕施工合同
評論
0/150
提交評論