單片機(jī)課程設(shè)計(jì)之智能電子鐘_第1頁
單片機(jī)課程設(shè)計(jì)之智能電子鐘_第2頁
單片機(jī)課程設(shè)計(jì)之智能電子鐘_第3頁
單片機(jī)課程設(shè)計(jì)之智能電子鐘_第4頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、單片機(jī)課程設(shè)計(jì)題目:智能電子鐘學(xué)生姓名專業(yè)班級(jí)指導(dǎo)教師成績工程技術(shù)學(xué)院2016年3月目錄一、系 統(tǒng)設(shè) 計(jì)內(nèi) 容11.1設(shè) 計(jì)要 求:11.2可 實(shí)現(xiàn) 的具 體功 能:1二、總 體設(shè) 計(jì)22.1 DS1302簡介22.2 LCDl602簡介32.3 AT89C51單片 機(jī)簡 介3三、硬 件設(shè) 計(jì)33.1原 理圖43.2 PCB板絲 印層43.3 PCB板底 層4四、軟 件設(shè) 計(jì)流 程44.1總 體設(shè) 計(jì)44.2主程 序流 程圖54.3顯示 流程 圖54.4 DS1302讀取 流 程64.5外 部中 斷 0 流程64.6外 部中 斷 1 流程7五、仿 真效 果圖8六、總 結(jié)與 體會(huì)10附錄111、

2、 程序112、參考文獻(xiàn)21智能電子鐘(LCD 顯示 )一、系統(tǒng)設(shè)計(jì)內(nèi)容1.1設(shè)計(jì)要求:以 AT89C51 單片機(jī)為核心,制作一個(gè) LCD顯示的智能電子鐘:(1) 計(jì)時(shí):秒、分、時(shí)、天、周、月、年;(2) 閏年自動(dòng)判別;(4) 時(shí)間、月、日交替顯示;(5) 自定任意時(shí)刻自動(dòng)開/關(guān)屏;(6) 計(jì)時(shí)精度:誤差1 秒/ 月(具有微調(diào)設(shè)置);(7) 鍵盤采用動(dòng)態(tài)掃描方式查詢。所有的查詢、設(shè)置功能均由功能鍵 K1、K2 完成。本設(shè)計(jì)采用市場(chǎng)上流行的時(shí)鐘芯片 DS1302 進(jìn)行制作。1.2可實(shí)現(xiàn)的具體功能:智能電子鐘的原理主要由 4 部分組成:(1) 單片機(jī)的外圍設(shè)備,即單片機(jī)最小系統(tǒng),此部分是保證單片機(jī)正

3、常工作的必要部分;(2) 顯示部分: LCD顯示,即顯示年、月、星期、日、時(shí)、分、秒等;(3) 時(shí)鐘芯片 DS1302 , DS1302 是 DALLAS 公式推出的涓流充電時(shí)鐘芯片,內(nèi)含一個(gè)實(shí)時(shí)時(shí)鐘/ 日歷和 31 字節(jié)靜態(tài)RAM,可以通過串行接口與計(jì)算機(jī)進(jìn)行通信,使得管腳數(shù)量減少。實(shí)時(shí)時(shí)鐘/ 日歷電路能夠計(jì)算 2100 年之前的秒、分、時(shí)、日、星期、月、年的,具有閏年調(diào)整的能力;(4) 按鍵部分:按鍵實(shí)現(xiàn)開關(guān)顯示屏對(duì)時(shí)鐘時(shí)間的微調(diào),開關(guān)鍵在正常顯示模式下按下開火關(guān) LCD顯示;模式鍵:可切換到時(shí)間調(diào)整界面,再按一次退出,此時(shí)開關(guān)屏鍵實(shí)現(xiàn)對(duì)秒的加一操作。1智能電子鐘 (LCD 顯示 )二、總

4、體設(shè)計(jì)時(shí)鐘芯片DS1302LCDAT89C51顯示電路按鍵圖 2.1設(shè)計(jì)方案框圖2.1 DS1302簡介DS1302 是美國 DALLAS公司推出的一種高性能、低功耗、帶 RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為 2.5V 5.5V 。采 用三線接口與 CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或 RAM數(shù)據(jù)。DS1302 內(nèi)部有一個(gè) 31×8 的用于臨時(shí)性存放數(shù)據(jù)的 RAM寄存器。DS1302 是 DS1202 的升級(jí)產(chǎn)品,與 DS1202 兼容,但增加了主電源 / 后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源

5、進(jìn)行涓細(xì)電流充電的能力。2智能電子鐘 (LCD 顯示 )圖 2.2 DS1302芯片2.2 LCDl602簡介1602 液晶也叫 1602 字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè) 5X7 或者 5X11 等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。2.3 AT89C51單片機(jī)簡介AT89C51(如圖所示)是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器( FPEROM Falsh Programmable andErasable Read Only Memory )的低電壓,

6、高性能 CMOS8位微處理器,俗稱單片機(jī)。該器件采用 ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 MCS-51 指令集和輸出管腳相兼容。由于將多功能 8 位 CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的 AT89S51 是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。三、硬件設(shè)計(jì)3VCCP2.1/A923RP1K10uF29P2.2/A1024PSENP2.3/A11123025ALEP2.4/A12RESPACK4R21k3126EAP2.5/A13B127P2.6/P2.7/4U21P1.0/T2P

7、3.0/RXD10VCC28K1X1VCC1智能2電子鐘(LCD 顯示 )1113P1.1/T2EXP3.1/TXD1212VCC2P1.2P3.2/INT030uF413X2P1.3P3.3/INT1514K2P1.4P3.4/T032.768kHz561512RSTP1.5P3.5/T1C5原理圖7716P1.73.1SCLKP3.6/WR368P1.617X2I/OP3.7/RD30uFWD1100-1189C513.2 PCB板絲印層3.3 PCB板底層四、軟件設(shè)計(jì)流程4.1總體設(shè)計(jì)在整個(gè)程序運(yùn)行過程中,總體上可分為以下幾方面:4智能電子鐘 (LCD 顯示 )寫地址時(shí)鐘芯片DS1302

8、讀數(shù)據(jù)中斷 0寫命令按鍵 1AT89C51LCD開關(guān)屏顯示電路送顯示值按鍵 1秒加一按鍵 2中斷 1進(jìn)入(退出)時(shí)間調(diào)整4.2 主程序流程圖開始開中斷,初始化LCD ,初始化DS1302顯示時(shí)間顯示年月日周4.3 顯示流程圖5智能電子鐘 (LCD 顯示 )清屏設(shè)定光標(biāo)位置從 DS1302讀取要顯示的值將讀取的 BCD 碼拆分送 LCD 顯示4.4 DS1302讀取流程設(shè)定 DS1302 為讀狀態(tài)寫字節(jié)寫入要讀取的值所在地址讀字節(jié)讀出數(shù)據(jù)返回?cái)?shù)據(jù)4.5外部中斷 0 流程6智能電子鐘 (LCD 顯示 )計(jì)數(shù)器加一計(jì)數(shù)器為偶數(shù)嗎NY關(guān)閉顯示開啟顯示退出中斷4.6外部中斷 1 流程等待按鍵釋放記錄此時(shí)

9、光標(biāo)位置關(guān)中斷,讀取當(dāng)前秒值按鍵 1是Y否按下N等待按鍵釋放保持顯示此刻時(shí)間 ,設(shè)定顯示光標(biāo)并指向秒。寫入調(diào)整后的值,取消光標(biāo)顯示,回復(fù)光標(biāo)位置,開中斷。N按鍵 0是否按下退出中斷Y7智能電子鐘 (LCD 顯示 )N當(dāng)年秒值小于 59嗎Y秒值加一并做 BCD 碼調(diào)整顯示加一后的值等待按鍵釋放向 DS1302 寫入秒值并取更新后的值顯示。五、仿真效果圖日期時(shí)間交替顯示:8智能電子鐘 (LCD 顯示 )關(guān)屏9智能電子鐘 (LCD 顯示 )時(shí)間調(diào)整六、總結(jié)與體會(huì)歷經(jīng)一個(gè)星期的設(shè)計(jì)、修改、調(diào)試,最終,我們得到了想要的結(jié)果,感受成功之喜悅,但這并不意味著我們做得很好,相反,在這當(dāng)中暴露出了我們?cè)诟鱾€(gè)方面

10、許許多多的問題,學(xué)到許多的同時(shí)感觸也很深厚。在硬件設(shè)計(jì)時(shí),通過對(duì)需要系統(tǒng)的分析,單元模塊的設(shè)計(jì),元件的選取等,使我們了解到平時(shí)所學(xué)單片機(jī)課程的實(shí)用價(jià)值,以及設(shè)計(jì)過程中的大局協(xié)調(diào)、取舍、分析能力的培養(yǎng)。在編程以及仿真時(shí),充分將單片機(jī)原理的知識(shí)學(xué)以致用,既是對(duì)我們單片機(jī)基礎(chǔ)知識(shí)的考驗(yàn),又是對(duì)我們靈活運(yùn)用及創(chuàng)新能力的檢驗(yàn);既考驗(yàn)我們的學(xué)習(xí)能力,又考驗(yàn)邏輯思維技巧;既體現(xiàn)了個(gè)人對(duì)課程設(shè)計(jì)的靈思妙想,又培養(yǎng)了團(tuán)隊(duì)之間的合作能力。我們能夠很好地完成這次課設(shè),離不開在科學(xué)研究上實(shí)事求是的工作原則、一絲不茍的工作態(tài)度、勤于思考的工作方法、百折不饒的工作精神和精益求精的工作作風(fēng),此外,最重要的就是團(tuán)隊(duì)之間相處和

11、諧、分工明確。在 大家的共同努力下,得到了滿意的成果,更使我們明白團(tuán)隊(duì)合作的重要10智能電子鐘 (LCD 顯示 )與便利。最后,衷心感謝老師在這次設(shè)計(jì)中耐心給予的大量幫助,解決了我程序中存在的不少問題,并指導(dǎo)了我一些設(shè)計(jì)的思路,也令我明白自己的大量不足之處,受益匪淺。附錄1、程序#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define DS1302_SECOND_WRITE 0x80#define DS1302_MINUTE_WRITE 0x82#define DS1302_HOUR_

12、WRITE 0x84#define DS1302_DAY_WRITE 0x86#define DS1302_WEEK_WRITE 0x8a#define DS1302_MONTH_WRITE 0x88#define DS1302_YEAR_WRITE 0x8c#define DS1302_PROTECT_WRITE 0x8e#define DS1302_SECOND_READ 0x81#define DS1302_MINUTE_READ 0x83#define DS1302_HOUR_READ 0x85#define DS1302_DAY_READ 0x87#define DS1302_WEE

13、K_READ 0x8b#define DS1302_MONTH_READ 0x8911智能電子鐘 (LCD 顯示 )#define DS1302_YEAR_READ 0x8dsbit lcden = P22;sbit lcdrs = P20;sbit write = P21;sbit sck = P16; / 時(shí)鐘sbit io = P17; / 數(shù)據(jù)sbit rst = P15;/ DS1302 復(fù)位unsigned char Chinese_13=0x2d,0x20,0x3a;/“- ”“”“ :”unsigned char Chinese_27=0x31,0x32,0x33,0x34,0

14、x35,0x36,0x37;/一二三四五六天/unsigned char Cursor6=0x81,0x83,0x85,0x90,0x92,0x94;/定義光標(biāo)移動(dòng)的位置unsigned char num = 0;unsigned int ji = 0;unsigned int jiao = 0;void Delayms(unsigned int z)/ 延時(shí)unsigned int x,y;for(x=z;x>0;x-)for(y=115;y>0;y-);/lcd 子程序void Write_com(unsigned char com)/ 寫命令lcdrs = 0;P0 = co

15、m;Delayms(5);lcden = 1;12智能電子鐘 (LCD 顯示 )Delayms(5);lcden = 0;void Write_data(unsigned char dat)/ 寫數(shù)據(jù)lcdrs = 1;P0 = dat;Delayms(5);lcden = 1;Delayms(5);lcden = 0;unsigned char Read_com()/讀命令unsigned char com;write = 1;lcdrs = 0;lcden = 1;com = P0;Delayms(5);write = 0;lcdrs = 0;lcden = 0;return com;vo

16、id init_lcd()/lcd初始化13智能電子鐘 (LCD 顯示 )lcden = 0;Write_com(0x38);Write_com(0x0c);Write_com(0x06);Write_com(0x01);Write_com(0x80);/ds1302 子程序void DS1302WriteByte(uchar dat)/ 寫字節(jié)uchar i;sck=0;Delayms(2);for(i=0;i<8;i+)io=dat&0x01;/ 取最低位,注意DS1302 的數(shù)據(jù)和地址都是從最低位開始傳輸?shù)腄elayms(2);sck=1;Delayms(2);sck=0;

17、dat>>=1;uchar DS1302ReadByte()/ 讀字節(jié)uchar i,dat;Delayms(2);for(i=0;i<8;i+)14智能電子鐘 (LCD 顯示 )dat>>=1;if(io=1)/ 當(dāng)數(shù)據(jù)線為高時(shí),證明該位數(shù)據(jù)為1dat|=0x80;/ 要傳輸數(shù)據(jù)的當(dāng)前值置為1,若不是 , 則為 0sck=1;Delayms(2);sck=0;Delayms(2);return dat;uchar DS1302Read(uchar cmd)/讀命令uchar dat;rst=0;sck=0;rst=1;DS1302WriteByte(cmd);/

18、 傳輸?shù)刂穌at=DS1302ReadByte();/ 讀取要得到的時(shí)間/日期sck=1;rst=0;return dat;void DS1302Write(uchar cmd,uchar dat)/ 寫命令rst=0;sck=0;rst=1;15智能電子鐘 (LCD 顯示 )DS1302WriteByte(cmd);/ 傳輸?shù)刂稤S1302WriteByte(dat);/ 寫入時(shí)間 /日期sck=1;rst=0;void Init_DS1302(void)/ 初始化DS1302Write(0x8e,0x00);/ 寫保護(hù)關(guān)DS1302Write(DS1302_SECOND_WRITE,0x5

19、5);/初始秒值DS1302Write(DS1302_MINUTE_WRITE,0x59);/初始分鐘DS1302Write(DS1302_HOUR_WRITE,0x23);/初始為 24 小時(shí)模式初始時(shí)間為DS1302Write(DS1302_DAY_WRITE,0x02);/20xx年 x 月 x 日星期 xDS1302Write(DS1302_MONTH_WRITE,0x03);DS1302Write(DS1302_YEAR_WRITE,0x16);DS1302Write(DS1302_WEEK_WRITE,0x03);DS1302Write(0x90,0x01);/ 充電DS1302W

20、rite(0xc0,0xf0);/ 初始化一次標(biāo)示DS1302Write(0x8e,0x80);void Split_display(unsigned char address)/ 取數(shù)顯示unsigned char i;i=DS1302Read(address);i=i/16+'0'Write_data(i);/ 顯示十位Delayms(3);i=DS1302Read(address);i=i%16+'0'16智能電子鐘 (LCD 顯示 )Write_data(i);/ 顯示個(gè)位Delayms(5);void Dispaly_shi()/ 顯示時(shí)間Write_

21、com(0x84);Split_display(DS1302_HOUR_READ);/顯示小時(shí)Write_data(Chinese_12);/ 顯示“ :”Delayms(3);Split_display(DS1302_MINUTE_READ);/顯示分鐘Write_data(Chinese_12);Delayms(3);Split_display(DS1302_SECOND_READ);/顯示秒Delayms(3);Delayms(50);void Display_nian()/ 顯示年月日uchar i;Write_com(0x82);Delayms(100);Write_com(0x82

22、);Delayms(100);Write_data('2');Delayms(5);Write_data('0');17智能電子鐘 (LCD 顯示 )Delayms(1);Split_display(DS1302_YEAR_READ);/顯示年份Write_data(Chinese_10);/ 顯示“ -”Delayms(3);Split_display(DS1302_MONTH_READ);/顯示月份Write_data(Chinese_10);Delayms(3);Split_display(DS1302_DAY_READ);/顯示日期Write_data(

23、Chinese_11);Delayms(3);Write_data(Chinese_11);Delayms(3);i=DS1302Read(DS1302_WEEK_READ);/顯示星期i=i%16+'0'Write_data(i);Delayms(3);Write_com(0x82);Delayms(50);void inter0() interrupt 0/ 按鍵中斷 1ji = ji+1;if(ji%2 = 0)Write_com(0x0c);elseWrite_com(0x08);18智能電子鐘 (LCD 顯示 )void inter2() interrupt 2/ 按

24、鍵中斷 2unsigned char k,j,i,b;/Delayms(500);while(INT1!=1);b = Read_com();b = ACC & 0x7f;Write_com(0x01);Dispaly_shi();EA=0;EX0=0;EX1=0;k=DS1302Read(DS1302_SECOND_READ);while(INT1)Write_com(0x8a);Write_com(0x0f);if(INT0=0)Delayms(10);if(INT0=0)if(k<0x59)ACC = k;#pragma asmadd a,#1da a#pragma endasmk = ACC;19智能電子鐘 (LCD 顯示 )elseDS1302Write(DS1302_SECOND_WRITE,k);while

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論