基于c語言單片機電子時鐘課程設計_第1頁
基于c語言單片機電子時鐘課程設計_第2頁
基于c語言單片機電子時鐘課程設計_第3頁
基于c語言單片機電子時鐘課程設計_第4頁
基于c語言單片機電子時鐘課程設計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于c語言單片機電子時鐘課程設計作者: 日期:課程設計報告課程名稱:單片機程序設計報告題目:電子時鐘 學生姓名: 所在學院:信息科學與工程學院 專業(yè)班級:學生學口號:指導教師:2013年12月25日課程設計任務書報告題目電子時鐘完成時間12.25學生姓名專業(yè)班級電子信息工程指導教師職稱講師總體設計要求和技術(shù)要點設計要求如下:以AT89C51單片機為核心的時鐘,在 LCD顯示器上顯示當前的時間: 使用字符型LCD顯示器顯示當前時間。顯示格式為“時時:分分:秒秒”。用4個功能鍵操作來設置當前時間。功能鍵 K1K4功能如下。K1進入設置現(xiàn)在的時間。K2設置小時。K3設置分鐘。K4確認完成設置。程序執(zhí)

2、行后工作指示燈LED閃動,表示程序開始執(zhí)行,LCD顯示“00: 00: 00”, 然后開始計時。工作內(nèi)容及時間進度安排第17周周1-3立題、論證方案設計周4-5仿真實驗第18周周1-3綜合調(diào)試周4-5驗收答辯課程設計成果1與設計內(nèi)容對應的軟件程序2.課程設計總結(jié)報告摘要單片計算機即單片微型計算機。由 RAM ROM CPU構(gòu)成。定時,計數(shù)和 多 種接口于一體的微控制器。它體積小,成本低,功能強,廣泛應用于智能產(chǎn)業(yè)和 工業(yè)自動化上。而51系列單片機是各單片機中最為典型和最有代表性的一種。 這次課程設計通過對它的學習,應用,從而達到學習、設計、開發(fā)軟、硬的能力。本設計主要設計了一個基于 AT89C

3、51單片機的電子時鐘。并在數(shù)碼管上顯 示相應的時間。并通過一個控制鍵用來實現(xiàn)時間的調(diào)節(jié)和是否進入省電模式的轉(zhuǎn) 換。應用Proteus的ISIS軟件實現(xiàn)了單片機電子時鐘系統(tǒng)的設計與仿真。該方 法仿真效果真實、準確,節(jié)省了硬件資源。關(guān)鍵詞:單片機;子時鐘;鍵控制目錄概述電子時鐘簡介1.2電子時鐘的基本特點1.3電子時鐘的原理方案設計選擇2.1案2.2案三、硬件設計3.1擇3.2理3.3計3.4圖1516四、軟件設計五、結(jié)論與心得六、參考文獻一、概述1.1電子時鐘簡介1957年,Ventura發(fā)明了世界上第一個電子表,從而奠定了電子時鐘的 基礎(chǔ),電子時鐘開始迅速發(fā)展起來?,F(xiàn)代的電子時鐘是基于單片機的

4、一種計時 工具,采用延時程序產(chǎn)生一定的時間中斷用于一秒的定義,通過計數(shù)方式進行滿 六十秒分鐘進一,滿六十分小時進一,滿二十四小時小時清零。從而達到計時的 功能,是人民日常生活補課缺少的工具。1.2電子時鐘的基本特點現(xiàn)在高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘、 石英鐘、石英表都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不 需要經(jīng)常調(diào)試,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時、分、秒顯 示時間的功能,還可以進行時和分的校對,片選的靈活性好。1.3電子時鐘的原理該電子時鐘由89C51, BUT

5、TON六段數(shù)碼管等構(gòu)成,采用晶振電路作為驅(qū)動電路,由延時程序和循環(huán)程序產(chǎn)生的一秒定時,達到時分秒的計時,六十秒 為一分鐘,六十分鐘為一小時,滿二十四小時為一天。而電路中唯一的一個控制 鍵卻擁有多種不同的功能,按下又松開,可以實現(xiàn)屏蔽數(shù)碼管顯示的功能, 達到 省電的目的;直接按下不松開,則可以通過按鍵實現(xiàn)分鐘的累加, 每按一次分鐘 加一;而連續(xù)兩次按下按鍵不放松,則可實現(xiàn)小時的調(diào)節(jié),同樣每按一次小時加二、方案設計選擇2.1計時方案方案1:采用實時時鐘芯片現(xiàn)在市場上有很多實時時鐘集成電路,如 DS1287 DS12887 DS1302等。 這些實時時鐘芯片具備年、月、日、時、分、秒計時功能和多點定

6、時功能,計時 數(shù)據(jù)的更新每秒自動進行一次,不需要程序干預。因此,在工業(yè)實時測控系統(tǒng)中 多采用這一類專用芯片來實現(xiàn)實時時鐘功能。方案2:使用單片機內(nèi)部的可編程定時器。利用單片機內(nèi)部的定時計數(shù)器進行中端定時,配合軟件延時實現(xiàn)時、分、 秒的計時。該方案節(jié)省硬件成本,但程序設計較為復雜。2.2顯示方案對于實時時鐘而言,顯示顯然是另一個重要的環(huán)節(jié)。通常LED顯示有兩種 方式:動態(tài)顯示和靜態(tài)顯示。靜態(tài)顯示的優(yōu)點是程序簡單、顯示亮度有保證、單片機CPU的開銷小,節(jié) 約CPU勺工作時間。但占有I/O 口線多,每一個LED都要占有一個I/O 口,硬件 開銷大,電路復雜。需要幾個LED就必須占有幾個并行口,比較適

7、用于LED數(shù)量 較少的場合。當然當LED數(shù)量較多的時候,可以使用單片機的串行口通過移位寄 存器的方式加以解決,但程序編寫比較麻煩。LED動態(tài)顯示硬件連接簡單,但動態(tài)掃描的顯示方式需要占有 CPU較多的 時間,在單片機沒有太多實時測控任務的情況下可以采用。本系統(tǒng)需要采用6位LED數(shù)碼管來分別顯示時、分、秒,因數(shù)碼管個數(shù)較多,故本系統(tǒng)選擇動態(tài)顯示方式。三、硬件設計3.1單片機型號的選擇通過對多種單片機性能的分析,最終認為89C51是最理想的電子時鐘開發(fā)芯 片o89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8 位微處理器,器件采用ATMEI高密度非易失存儲器制造技術(shù)制造

8、,與工業(yè)標準的 MCS-51指令集和輸出管腳相兼容。由于將多功能 8位CPI和閃爍存儲器組合在 單個芯片中,ATME的 89C5是一種高效微控制器,而且它與 MCS-51兼容,且具 有4K字節(jié)可編程閃爍存儲器和1000寫/擦循環(huán),數(shù)據(jù)保留時間為10年等特點, 是最好的選擇。3.2數(shù)碼管顯示工作原理數(shù)碼管是一種把多個LED顯示段集成在一起的顯示設備。有兩種類型,一種 是共陽型,一種是共陰型。共陽型就是把多個LED顯示段的陽極接在一起,又稱 為公共端。共陰型就是把多個LED顯示段的陰極接在一起,即為公共商。陽極即 為二極管的正極,又稱為正極,陰極即為二極管的負極,又稱為負極。通常的數(shù) 碼管又分為8

9、段,即8個LED顯示段,這是為工程應用方便如設計的,分別為A B、C、D E、F、G DP其中DP是小數(shù)點位段。而多位數(shù)碼管,除某一位的公 共端會連接在一起,不同位的數(shù)碼管的相同端也會連接在一起。 即所有的A段都 會連在一起,其它的段也是如此,這是實際最常用的用法。數(shù)碼管顯示方法可分 為靜態(tài)顯示和動態(tài)顯示兩種。靜態(tài)顯示就是數(shù)碼管的8段輸入及其公共端電平一 直有效。動態(tài)顯示的原理是,各個數(shù)碼管的相同段連接在一起, 共同占用8位段 引管線;每位數(shù)碼管的陽極連在一起組成公共端。 利用人眼的視覺暫留性,依次 給出各個數(shù)碼管公共端加有效信號,在此同時給出該數(shù)碼管加有效的數(shù)據(jù)信號, 當全段掃描速度大于視覺

10、暫留速度時,顯示就會清晰顯示出來。3.3鍵盤電路設計該設計只用了一個鍵盤,但實現(xiàn)的功能卻是比較完善,減少了硬件資源的損 耗,該鍵盤可以實現(xiàn)小時和分鐘的調(diào)節(jié); 直接按下不松開,則可以通過按鍵實現(xiàn) 分鐘的累加,每按一次分鐘加一;而連續(xù)兩次按下按鍵不放松,則可實現(xiàn)小時的 調(diào)節(jié),同樣每按一次小時加一。達到時間調(diào)節(jié)的目的。3.4電路原理圖44匸:J=InsjaaaMEgEai四、軟件設計#in elude <reg52.h> #in elude vintrin s.h> #defi ne uehar un sig ned char #defi ne uint un sig ned in

11、t#defi ne some nop _nop_();_nop_();_nop_();_nop_();_nop_ ();/宏定義掩延時函數(shù)sbit K1= P3A0;/ 位定義sbit K2=P3A1;sbit K3=P3A2;sbit K4=P3A3;sbit D34=P3A4; sbit SCL = P 29 sbit SDA = P 2人1;void diyi();void xia nshi(); /函數(shù)聲明void pan dua n();/函數(shù)聲明void delay(uchar z);函數(shù)聲明定義變量void delay_us(uchar tt)/短延時函數(shù)uchar t=O,n=

12、1,m=59,a,te mp;uchar code at=0xe0,0xd0,0xb0,0x70; /定義數(shù)組uchar code as10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar code b=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;uint cnt;while(tt-);/*/*始化 */*/*at24c02*/ void l2C_start()/|A2C 模塊SDA = 1;_n op_();SCL = 1;some nop;SDA = 0;some nop;SCL = 0;v

13、oid I2C_sto p()SDA = 0;_n op_();SCL = 1;some nop;SDA = 1;void l2C_ack(bit ackbit)if(ackbit)elseSDA = 0;SDA = 1;some nop;SCL = 1;some nop;SCL = 0;SDA = 1;some nop;bit l2C_waitack()SDA = 1;some nop;SCL = 1;some nop;if(SDA)SCL = 0;return 0;elseI2C_sto p();SCL = 0;return 1;void l2C_write(uchar dat)uchar

14、 i;for(i=0;i<8;i+)if(dat&0x80)SDA = 1;elseSDA = 0;some nop;SCL = 1;dat <<= 1;some nop;SCL = 0;uchar I2C_read()uchar dat;l2C_waitack();uchar i;for(i=0;i<8;i+)SCL = 1;some nop;dat <<= 1;if(SDA)dat |= 0x01;SCL = 0;some nop;retur n dat;void W_at24c02(uchar add,uchar dat)I2C_start()

15、;l2C_wnte(0xa0);I2C_write(add);I2C_waitack();l2C_write(dat);l2C_waitack();I2C_st op();delay_us(300);uchar R_at24c02(uchar add)uchar AT_te mp;I2C_start();I2C_write(0xa0);I2C_waitack();I2C_write(add);I2C_waitack();I2C_start();I2C_write(0xa1);I2C_waitack();I2C_ack(0);I2C_sto p();AT_te mp = I2C_read();T

16、MOD=0x01;/*/*ma in */ void mai n()diyi();t= R_at24c02(24);程序運行時,讀取掉電前數(shù)據(jù)m= R_at24c02(23);n= R_at24c02(25);while(1)panduan();/判斷子函數(shù)xianshi();/顯示子函數(shù)void diyi()定義子函數(shù)P2=0xbf;P0=0xbf;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void exer1() interrupt 1 / 定時器 /計數(shù)器 1uchar t1;TH0=(65536-50000

17、)/256;TL0=(65536-50000)%256;t1+;if(t1=10)P 2=0x9f; P0=0x00;if(t1=20)P 2=0x9f; P0=0xff;t1=0;t+;W_at24c02(24,t );/每隔一秒,保存當前數(shù)據(jù)delay(3);W_at24c02(23,m);P2 = 0xdf;P0 =b6; P 2=0x1f; P 0=0xff; P2 = 0xff; P0 =as n%10;W_at24c02(25, n);if(t=60)t=0; m+;if(m=60)m=0; n+;if(n=24)n=0;void xia nshi()/顯示函數(shù)P2 = 0xdf;

18、 P0 =b0; P 2=0x1f; P 0=0xff; P2 = 0xff; P0 =ast%10;P2=0x1f; P0=0x00;delay(3);P2 = 0xdf; P0 =b1; P 2=0x1f; P 0=0xff; P2 = 0xff; P0 =as(t/10)%10;P 2=0x1f; P0=0x00;delay(3);P2 = 0xdf; P0 =b2; P 2=0x1f; P 0=0xff; P2 = 0xff; P0 =0xbf;P 2=0x1f; P0=0x00;delay(3);P2 = 0xdf; P0 =b3; P 2=0x1f; P 0=0xff; P2 =

19、0xff; P0 =asm%10;P2=0x1f; P0=0x00;delay(3);P2 = 0xdf; P0 =b4; P 2=0x1f; P 0=0xff; P2 = 0xff; P0 =as(m/10)%10;P2=0x1f; P0=0x00;delay(3);P2 = 0xdf; P0 =b5; P 2=0x1f; P 0=0xff; P2 = 0xff; P0 =0xbf;P 2=0x1f; P0=0x00;delay(3);P 2=0x1f; P0=0x00;delay(3);P2 = 0xdf; P0 =b7; P 2=0x1f; P 0=0xff; P2 = 0xff; P0

20、 =as( n/10)%10;P 2=0x1f; P0=0x00;delay(3);void delay(uchar z)/ 延時函數(shù)uchar i,j;for(i=0;i<z;i+)for(j=0;j<110;j+);void panduan()/ 判斷函數(shù)P3=0xfe;delay(5);tem p=P3;temp=temp&0xf0;if(te mp !=0xf0)delay(5);if(te mp !=0xf0)while( P3!=0xfe);if(tem p=atO)a+;TRO=O; if(a=4) a=0;TR0=1;if(te mp=at1)if(a=1) t+; if(t=60) t=0; if(a=2)m+;if(m=60)m=0;if(a=3) n+;if( n=24) n=0;if(te mp=at2)if(a=1)if(t=0)t=60;t-;if(a=2)if(m=0)m=60;m-;if(a=3)if(n=0) n=24; n-;P2 = OxcO;PO =b7; P 2=0x0

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論