




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄1題目設計的要求12 系統硬件設計12.1 設計原理12.2 器件的功能與作用12.2.1 MCS51單片機AT89C5112.2.2 串行時鐘日歷片DS130222.2.3 液晶顯示LCD160233 系統軟件設計43.1 程序流程43.2 程序代碼54 系統仿真調試124.1 仿真原理圖設計124.2 仿真運行過程124.3 仿真運行結果135 總結136 參考文獻131題目設計的要求通過串行日歷時鐘芯片DS1302生成當前日期和是時間,通過IO口傳輸到AT89c52芯片中,然后再將AT89c52接收到的數據輸出到LCD上。要求LCD上顯示的日期和時間與當前系統時間保持一致。2 系統硬
2、件設計2.1 設計原理圖3.1 電路原理圖2.2 器件的功能與作用2.2.1 MCS51單片機AT89C51XXAT89C51是一種帶4K字節FLASH存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATME
3、L的AT89C51是一種高效微控制器。AT89C51單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。2.2.2 串行時鐘日歷片DS1302系統的組成與工作原理:系統由單片機AT89C52,串行日歷時鐘片DS1302,液晶顯示模組LCD1602。DS1302的CLOCK與AT89C52的P1.6相連,RST與P1.5相連,IO與P1.7相連。LCD1602的D0D7與AT89C51的P0.0P.7相連,并接上拉電阻,RS與P2.0相連,RW與P2.1相連,E與P2.2相連。DS1302是DALLAS公司拖出的涓流充電時鐘芯片,內含有一個實時時鐘/日歷和31個季節靜態RAM,通過簡單地串
4、行接口與單片機進行通信,實時時鐘/日歷電路提供秒、分、時、日、日期、月、年的信息,每月的天數和閏年的天數可自動調整,時鐘操作可通過AM/PM指示決定采用24小時或12小時格式,DS1302與單片機之間能簡單地采用同步串行方式進行通信,僅需用到RES復位、I/O數據線、SCLK串行時鐘3個口線。對時鐘、RAM的讀/寫,可以改用單字節方式或多達31個字節的字符組方式。DS1302工作時功耗很低,保持數據和時鐘信息是功率小于1mW。DS1302廣泛應用于電話傳真、便攜式儀器及電池供電的儀器儀表等產品領域中。RT-1602 字符型液晶模塊是以兩行16個子的5*7點陣吐信來顯示字符的液晶顯示器。 DS1
5、302有8個引腳:X1、X2:32.768kHz晶振介入引腳。GND:地。RST:復位引腳,低電平有效。I/O:數據輸入/輸出引腳,具有三態功能。SCLK:串行時鐘輸入引腳。Vcc1:工作電源引腳。Vcc2:備用電源引腳。DS1302有一個控制寄存器,12個日歷,時鐘寄存器和31個RAM。控制寄存器控制寄存器用于存放DS1302的控制命令字,DS1302的RST引腳回到高電平后寫入的第一個字就為控制命令。它用于對DS1302讀寫過程進行控制,它的格式如下:表2.1 控制寄存器的格式 D7 D6 D5 D4 D3 D2 D1 D01RAM/CKA4A3A2A1A0RD/W各項功能說明如下。D7:
6、固定為1D6:RAM/CK位,片內RAM或日歷、時鐘寄存器選擇位,當RAM/CK=1時,對片內RAM進行讀寫,當RAM/CK=0時,對日歷、時鐘寄存器進行讀寫。D5D1:地址位,用于選擇進行讀寫的日歷、時鐘寄存器或片內RAM。對日歷、時鐘寄存器或片內RAM的選擇。D0:讀寫位,當RD/W=1時,對日歷、時鐘寄存器或片內RAM進行讀操作,當RD/W=0時,對日歷、時鐘寄存器或片內RAM進行寫操作。日歷、時鐘寄存器DS1302共有12個寄存器,其中有7個與日歷、時鐘相關,存放的數據為BCD碼形式。日歷、時鐘寄存器的格式。說明:數據都以BCD碼形式表示。小時寄存器的D7位為12小時制/24小時制的選
7、擇位,當為1時選擇12小時制,當為0時選24小時制。當12小時制時,D5位為1是上午,D5位為0是下午,D4位小時的十位。當24小時制時,D5、D4位為小時的十位。秒寄存器中的CH位為時鐘暫停位,當為1時,時鐘暫停,為0時,時鐘開始啟動。寫保護寄存器中的WP為寫保護位,WP=1時,寫保護,當WP=0時,未寫保護,當對日歷、時鐘寄存器或片內RAM進行寫時,WP應清零,當對日歷、時鐘寄存器或片內RAM進行讀時,WP一般置1.慢充電寄存器的TCS位為控制慢充電的選擇,當它為1010時才能是慢充電工作。DS為二極管選擇位。DS為01選擇一個二極管,DS為10選擇兩個二極管,DS為11或00充電器被禁止
8、,與TCS無關。RS用于選擇連接在Vcc2與Vcc1之間的電阻,RS為00,充電器被禁止,與TCS無關。2.2.3 液晶顯示LCD1602RT-1602采用表中的16 腳接口:第一腳:Vss,電源地。第二腳:VDD,+5V電源。第三腳:VL,液晶顯示偏壓信號。第四腳:RS,數據/命令選擇端,高電平時選擇數據寄存器,低電平時選擇指令寄存器。第五腳:R/W,讀/寫選擇端。第六腳:E,使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。第七14腳:D0D7,為8位雙向數據線。第15腳:BLA,背光源正極。第16腳:BLK,背光源負極。3 系統軟件設計3.1 程序流程圖4.1 程序流程圖3.2 程
9、序代碼#include<reg51.h> /包含單片機寄存器的頭文件#include<intrins.h> /包含_nop_()函數定義的頭文件/*以下是DS1302芯片的操作程序*/unsigned char code digit10="0123456789" /定義字符數組顯示數字sbit DATA=P17; /位定義1302芯片的接口,數據輸出端定義在P1.7引腳sbit RST=P15; /位定義1302芯片的接口,復位端口定義在P1.5引腳sbit SCLK=P16; /位定義1302芯片的接口,時鐘輸出端口定義在P1.6引腳/*函數功能:
10、延時若干微秒入口參數:n*/ void delaynus(unsigned char n)unsigned char i;for(i=0;i<n;i+);/*函數功能:向1302寫一個字節數據入口參數:x*/ void Write1302(unsigned char dat)unsigned char i; SCLK=0; /拉低SCLK,為脈沖上升沿寫入數據做好準備delaynus(2); /稍微等待,使硬件做好準備for(i=0;i<8;i+) /連續寫8個二進制位數據DATA=dat&0x01; /取出dat的第0位數據寫入1302delaynus(2); /稍微等待
11、,使硬件做好準備SCLK=1; /上升沿寫入數據delaynus(2); /稍微等待,使硬件做好準備SCLK=0; /重新拉低SCLK,形成脈沖dat>>=1; /將dat的各數據位右移1位,準備寫入下一個數據位/*函數功能:根據命令字,向1302寫一個字節數據入口參數:Cmd,儲存命令字;dat,儲存待寫的數據*/ void WriteSet1302(unsigned char Cmd,unsigned char dat)RST=0; /禁止數據傳遞SCLK=0; /確保寫數居前SCLK被拉低RST=1; /啟動數據傳輸delaynus(2); /稍微等待,使硬件做好準備Writ
12、e1302(Cmd); /寫入命令字Write1302(dat); /寫數據SCLK=1; /將時鐘電平置于已知狀態RST=0; /禁止數據傳遞/*函數功能:從1302讀一個字節數據入口參數:x*/ unsigned char Read1302(void)unsigned char i,dat;delaynus(2); /稍微等待,使硬件做好準備for(i=0;i<8;i+) /連續讀8個二進制位數據dat>>=1; /將dat的各數據位右移1位,因為先讀出的是字節的最低位if(DATA=1) /如果讀出的數據是1dat|=0x80; /將1取出,寫在dat的最高位SCLK=
13、1; /將SCLK置于高電平,為下降沿讀出delaynus(2); /稍微等待SCLK=0; /拉低SCLK,形成脈沖下降沿delaynus(2); /稍微等待 return dat; /將讀出的數據返回 /*函數功能:根據命令字,從1302讀取一個字節數據入口參數:Cmd*/ unsigned char ReadSet1302(unsigned char Cmd)unsigned char dat;RST=0; /拉低RSTSCLK=0; /確保寫數居前SCLK被拉低RST=1; /啟動數據傳輸Write1302(Cmd); /寫入命令字dat=Read1302(); /讀出數據SCLK=1
14、; /將時鐘電平置于已知狀態RST=0; /禁止數據傳遞return dat; /將讀出的數據返回/*以下是對液晶模塊的操作程序*/sbit RS=P20; /寄存器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信號位,將E位定義為P2.2引腳sbit BF=P07; /忙碌標志位,將BF位定義為P0.7引腳/*函數功能:延時1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以認為是1毫秒*/void delay1ms()unsigned char i,j; for(i=0
15、;i<10;i+)for(j=0;j<33;j+); /*函數功能:延時若干毫秒入口參數:n*/void delaynms(unsigned char n)unsigned char i;for(i=0;i<n;i+)delay1ms();/*函數功能:判斷液晶模塊的忙碌狀態返回值:result。result=1,忙碌;result=0,不忙*/bit BusyTest(void)bit result;RS=0; /根據規定,RS為低電平,RW為高電平時,可以讀狀態RW=1;E=1; /E=1,才允許讀寫_nop_(); /空操作_nop_();_nop_(); _nop_(
16、); /空操作四個機器周期,給硬件反應時間 result=BF; /將忙碌標志電平賦給resultE=0; /將E恢復低電平return result;/*函數功能:將模式設置指令或顯示地址寫入液晶模塊入口參數:dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待RS=0; /根據規定,RS和R/W同時為低電平時,可以寫入指令RW=0; E=0; /E置低電平/ 就是讓E從0到1發生正跳變,所以應先置"0"_nop_();_nop_(); /空操作兩個機器周期,
17、給硬件反應時間P0=dictate; /將數據送入P0口,即寫入指令或地址_nop_();_nop_();_nop_();_nop_(); /空操作四個機器周期,給硬件反應時間E=1; /E置高電平_nop_();_nop_();_nop_();_nop_(); /空操作四個機器周期,給硬件反應時間E=0; /當E由高電平跳變成低電平時,液晶模塊開始執行命令/*函數功能:指定字符顯示的實際地址入口參數:x*/void WriteAddress(unsigned char x)WriteInstruction(x|0x80); /顯示位置的確定方法規定為"80H+地址碼x"/
18、*函數功能:將數據(字符的標準ASCII碼)寫入液晶模塊入口參數:y(為字符常量)*/void WriteData(unsigned char y)while(BusyTest()=1); RS=1; /RS為高電平,RW為低電平時,可以寫入數據RW=0;E=0; / 就是讓E從0到1發生正跳變,所以應先置"0"P0=y; /將數據送入P0口,即將數據寫入液晶模塊_nop_();_nop_();_nop_();_nop_(); /空操作四個機器周期,給硬件反應時間E=1; /E置高電平_nop_();_nop_();_nop_();_nop_(); /空操作四個機器周期,給
19、硬件反應時間E=0; /當E由高電平跳變成低電平時,液晶模塊開始執行命令/*函數功能:對LCD的顯示模式進行初始化設置*/void LcdInitiate(void)delaynms(15); /延時15ms,首次寫指令時應給LCD一段較長的反應時間WriteInstruction(0x38); /顯示模式設置:16×2顯示,5×7點陣,8位數據接口delaynms(5); /延時5ms,給硬件一點反應時間WriteInstruction(0x38);delaynms(5); /延時5ms,給硬件一點反應時間WriteInstruction(0x38); /連續三次,確保初
20、始化成功delaynms(5); /延時5ms,給硬件一點反應時間WriteInstruction(0x0c); /顯示模式設置:顯示開,無光標,光標不閃爍delaynms(5); /延時5ms,給硬件一點反應時間WriteInstruction(0x06); /顯示模式設置:光標右移,字符不移delaynms(5); /延時5ms,給硬件一點反應時間WriteInstruction(0x01); /清屏幕指令,將以前的顯示內容清除delaynms(5); /延時5ms,給硬件一點反應時間 /*以下是1302數據的顯示程序*/void Display(unsigned char x,unsig
21、ned char y)unsigned char i,j; i=x/10;j=x%10; WriteAddress(y); WriteData(digiti); WriteData(digitj); delaynms(50); /延時1ms給硬件一點反應時間 /*函數功能:主函數*/ void main(void)unsigned char second,minute,hour,day,month,year; /分別儲存秒、分、小時,日,月,年unsigned char ReadValue; /儲存從1302讀取的數據LcdInitiate(); /將液晶初始化WriteAddress(0x0
22、0); /寫Date的顯示地址,將在第1行第1列開始顯示WriteData('D'); /將字符常量寫入LCDWriteAddress(0x01);WriteData('a'); /將字符常量寫入LCD WriteAddress(0x02);WriteData('t'); /將字符常量寫入LCDWriteAddress(0x03);WriteData('e'); /將字符常量寫入LCDWriteAddress(0x04);WriteData(':'); /將字符常量寫入LCDWriteAddress(0x08);
23、/寫年月分隔符的顯示地址, 顯示在第1行第9列WriteData('-'); /將字符常量寫入LCDWriteAddress(0x0b); /寫月日分隔符的顯示地址, 顯示在第1行第12列WriteData('-'); /將字符常量寫入LCDWriteAddress(0x40);WriteData('T');WriteAddress(0x41);WriteData('i');WriteAddress(0x42);WriteData('m');WriteAddress(0x43);WriteData('e
24、39;);WriteAddress(0x44);WriteData(':');WriteAddress(0x48); WriteData(':'); /將字符常量寫入LCDWriteAddress(0x4b); WriteData(':'); /將字符常量寫入LCD while(1)ReadValue = ReadSet1302(0x81); /從秒寄存器讀數據second=(ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);/將讀出數據轉化Display(second,0x4c);
25、/顯示秒ReadValue = ReadSet1302(0x83); /從分寄存器讀minute=(ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); /將讀出數據轉化 Display(minute,0x49); /顯示分ReadValue = ReadSet1302(0x85); /從小時寄存器讀hour=(ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); /將讀出數據轉化Display(hour,0x46); /顯示小時ReadValue = ReadSet1302(0x87); /從分寄存器讀day=(ReadValue&0x70)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紡織品、針織品企業縣域市場拓展與下沉戰略研究報告
- 超、高速離心機市場分析及競爭策略分析報告
- 大米拋光設備競爭策略分析報告
- 2024年渭南清源初級中學教師招聘考試真題
- 煙臺市煙臺山醫院制人員招聘筆試真題2024
- 2024年臨沂市農業學校招聘教師考試真題
- 內蒙古鄂爾多斯生態環境職業學院專業技術人員招聘筆試真題2024
- 2019年全國統一高考歷史試卷(新課標ⅰ)歷年真題試題答案解析
- 江蘇開放大學招聘工作人員筆試真題2024
- 合肥市第八人民醫院招聘筆試真題2024
- 普通高中學生綜合素質檔案填寫樣表
- 級配碎石旁站監理記錄表.模板
- 管道機器人畢業設計正文
- 國電南自PSL 641U線路保護測控裝置技術說明書V1.1
- 2022年國網輸變電工程質量通病防治工作要求及技術措施[1]
- 出口退運貨物追溯調查情況說明表
- 皮秒激光培訓講解PPT課件
- 49.5MW風電場變電所電氣部分設計
- 加工貿易業務批準證
- 翻書效果PPT模板
- 硫代硫酸鈉滴定液配制與標定操作規程
評論
0/150
提交評論