

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計任務書</b></p><p> 題 目: 簡易數字時鐘 </p><p><b> 初始條件:</b></p><p> 用C語言編寫程序,實現簡易數字時鐘的功能。</p><p&g
2、t; 要求完成的主要任務: </p><p> (1)簡易數字時鐘能實現時、分、秒的數字顯示;</p><p> ?。?)可以對時鐘、分鐘進行調節(jié)并且校正。</p><p> 近幾年,單片機在各個領域得到廣泛的應用。從工業(yè)到人們的日常生活,大部分的科技產品都是通過單片機來控制。在它問世之前,自動控制設備不能被廣泛的應用,這是因為控制設備的體積龐大,耗電量大,價
3、格昂貴。在第一臺微處理器成功研制不久,第一個單片機就問世了。因為其小巧的體積,低功耗,以及高效的性能,單片機受到了大家的歡迎。 今天,單片機成為了解決低復雜度,中等復雜度控制問題的傳統(tǒng)選擇。文章介紹了單片機在定時方面的基本功能。生活中,我們發(fā)現:時間的準確顯得格外的重要。 </p><p> 我們選擇的方法是單片機開發(fā)設計使用的傳統(tǒng)方法,通過本次設計,可以了解整個單片機開發(fā)的流程。文章首先介紹了單片
4、機的基本知識,然后同時給出了框圖,流程圖等。論文涵蓋了從需求分析,系統(tǒng)設計,編程,原理圖等產品開發(fā)的基本過程。</p><p> 關鍵詞:單片機,軟件仿真,原理圖</p><p><b> Abstract</b></p><p> Single Chip Microcomputer has achieved a immemse popu
5、larity in all fileds in recent years.From industry to people’s common lives,most of technical applications are controlled by SCM. Before it appeared,the automatic devices could’t be widely used because of their huge size
6、 ,large quantity of power cost and high price.The first SCM appeared as soon as the first MCU(MicroController Unit) was successfully developed.Due to its small size,low power cost and high performance,it has been welcome
7、d by pe</p><p> The approach we choose is the common way for SCM developing from which we can get an acknowledge about the SCM develop flowing process.The paper first introduces knowledge on 51 serial SCM,t
8、hen At it also shows block diagrams,flowing process diagrams and so on. It presents the process including requirement analysis ,system design,SCM programming ,program emulation , which forms a complete procedure for prod
9、uct manufacture。Key words: SCM,software emulation,schemetic </p><p><b> 目錄</b></p><p> 1單片機的基本知識5</p><p> 1.1數碼管動態(tài)顯示原理5</p><p> 1.2鍵盤掃描原理6</p>
10、;<p> 2程序說明和流程圖6</p><p><b> 2.1程序說明6</b></p><p><b> 2.2流程圖8</b></p><p><b> 3程序設計9</b></p><p> 4實驗仿真和驗證13</p>
11、<p><b> 5心得體會14</b></p><p><b> 6參考文獻15</b></p><p><b> 簡易數字時鐘</b></p><p><b> 1單片機的基本知識</b></p><p> 1.1數碼管動態(tài)顯
12、示原理</p><p> 圖1數碼管顯示原理圖</p><p> 如圖1數碼管顯示原理圖所示,使用LED顯示器時,要注意是共陰還是共陽,要注意區(qū)分這兩種不同的接法。為了顯示數字或字符,必須對數字或字符進行編碼。七段數碼管加上一個小數點,共計8段。因此為LED顯示器提供的編碼正好是一個字節(jié)。我們用的是共陰LED顯示器,根據電路連接圖顯示16進制數的編碼已列在下表。</p>
13、<p> 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,</p><p> 0 1 2 3 4 5</p><p> 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,</p><p> 6 7 8 9 A B&l
14、t;/p><p> 0x39 , 0x5e , 0x79 , 0x71 , 0x00</p><p> C D E F 無顯示</p><p> 動態(tài)顯示的特點是將所有位數碼管的段選線并聯在一起,由位選線控制是哪一位數碼管有效,由另一位控制顯示碼值。選亮數碼管采用動態(tài)掃描顯示。所謂動態(tài)掃描顯示即輪流向各位數碼管送出字形碼和相應的位選,利用發(fā)
15、光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數碼管同時都在顯示。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應略小于靜態(tài)顯示電路中的。我們這里正是利用的數碼管動態(tài)顯示來完成顯示功能。</p><p><b> 1.2鍵盤掃描原理</b></p><p> 鍵盤分編碼鍵盤和非編碼鍵盤,鍵盤上閉合鍵的識別由專用的硬件編碼器實現,并產生按鍵編碼號或鍵值的稱
16、為編碼鍵盤,如計算機鍵盤。而靠軟件編程來識別的稱為非編碼鍵盤,在單片機組成的各種系統(tǒng)中,用的最多的是非編碼鍵盤,也有用到編碼鍵盤的,我們這里用的就是非編碼鍵盤。如圖2鍵盤圖所示,當按鈕按下時;端口會變成低電平,我們設計一段掃描程序來判斷那個端口是低電平來判斷是否有按鍵按下。</p><p><b> 圖2鍵盤圖</b></p><p><b> 2程序說
17、明和流程圖</b></p><p><b> 2.1程序說明</b></p><p> 此實時時鐘的設計與實現,主要采用了6只LED數碼管,加Atmega128單片機,包括顯示模塊,運算模塊和校時模塊三大功能模塊。</p><p><b> 顯示模塊:</b></p><p>
18、用Atmega128控制,用數碼管的顯示功能來設計。顯示部分硬件用六只LED為顯示管,這些LED發(fā)光二極管的陰極是互相連接在一起的,所以稱為共陰極數碼管。通過在這8只發(fā)光二極管的陽極加+5 V或0 V的電壓使不同的二極管發(fā)光,形成不同的數字。該模塊主要是將運算模塊和校時模塊運算出來的十進制表示的時位、分位和秒位數值,并通過6只數碼管顯示出來。該模塊實現的硬件是7seg-mpx6-ca單元,采用軟件譯碼,即在程序中設置一個段選碼表。CPU
19、直接往LED輸出八段代碼,省去了硬件譯碼器。A0~A3作為8段數據輸出口到達各LED。只要做到每送一次段選碼時也送一次位掃描碼,并且每送一次位掃描碼后,位碼中的0右移一位作為下一次的位掃描碼,即可實現由左向右使6只LED依次出現數字顯示。</p><p><b> 運算模塊:</b></p><p> 該模塊的主要功能是對時、分、秒的運算,并把運算出的最終結果存到
20、事先已經開辟的內存單元里,以便顯示模塊即時地顯示出來。該模塊可以細分為秒定時模塊和運算模塊。延時程序實現延時功能,由于CPU運算模塊中的指令消耗一定的時間,所消耗的時間可以用來延時。當演示完成后才能讓秒單元內的數值加1。在主程序里,必須對秒、分和時的單元內的數值進行判斷,當秒加到60時,分必須加1 、秒清零;當分加到60時,時加1、分清零。當時加到24時,直接清零。然后轉到調用處。</p><p><b&g
21、t; 校時模塊:</b></p><p> 該模塊主要功能是修改時、分、秒內存單元的數值。每按一次鍵,對應的顯示值便加1。分、 秒加到59后變?yōu)?0;小時加到23后再按鍵即變?yōu)?0.再調校時均不向上一單位進位(例如分加到59后變?yōu)?0;但小時不發(fā)生改變)。</p><p><b> 2.2流程圖</b></p><p><
22、;b> 1.主函數</b></p><p><b> 2.顯示子程序</b></p><p><b> 3程序設計</b></p><p> #include <iom128v.h></p><p> #include <macros.h><
23、/p><p> //#pragma interrupt_handler t1_int:13</p><p> unsigned char led_table[26]= //數碼管段碼表</p><p> { 0xC0,/*0*/</p><p> 0xF9,/*1*/</p><p> 0xA4,/*2*/&
24、lt;/p><p> 0xB0,/*3*/</p><p> 0x99,/*4*/</p><p> 0x92,/*5*/</p><p> 0x82,/*6*/</p><p> 0xF8,/*7*/</p><p> 0x80,/*8*/</p><p>
25、0x90,/*9*/};</p><p> unsigned int m;</p><p> unsigned char m6,m5,m4,m3,m2,m1;</p><p> void display()</p><p> {DDRE=0XFF;</p><p> DDRB=0XFF;</p>
26、<p> PORTE=0X00;</p><p> PORTB=0Xff;</p><p> PORTE|=BIT(0);</p><p> PORTB=led_table[m6];</p><p><b> delay(3);</b></p><p> PORTB=0XF
27、F;</p><p> PORTE=0X00;</p><p> PORTE|=BIT(1);</p><p> PORTB=led_table[m5]-0X80;</p><p><b> delay(2);</b></p><p> PORTB=0XFF;</p>&l
28、t;p> PORTE=0X00;</p><p> PORTE|=BIT(2);</p><p> PORTB=led_table[m4];</p><p><b> delay(2);</b></p><p> PORTB=0XFF;</p><p> PORTE=0X00;&
29、lt;/p><p> PORTE|=BIT(3);</p><p> PORTB=led_table[m3]-0X80;</p><p><b> delay(2);</b></p><p> PORTB=0XFF;</p><p> PORTE=0X00;</p><p
30、> PORTE|=BIT(4);</p><p> PORTB=led_table[m2];</p><p><b> delay(2);</b></p><p> PORTE=0X00;</p><p> PORTB=0X00;</p><p> PORTE|=BIT(5);&
31、lt;/p><p> PORTB=led_table[m1];</p><p> delay(2);}</p><p> void delay(int m)</p><p> { int i,j;</p><p> for(i=0;i<m;i++)</p><p> for(j=0
32、;j<500;j++);}</p><p> void main()</p><p> {unsigned char q;</p><p><b> m=0;</b></p><p> DDRB=0XFF;</p><p> PORTB=0XFF;</p><p
33、> DDRF=0X00;</p><p> PORTD=0X00;</p><p> DDRD=0XFF;</p><p> PORTD=0XFF;</p><p><b> while(1)</b></p><p> {m6=m/100000;</p><p
34、> m5=m%100000/10000;</p><p> m4=m%10000/1000;</p><p> m3=m%1000/100;</p><p> m2=m%100/10;</p><p><b> m1=m%10;</b></p><p><b> m++
35、;</b></p><p> if(m2==5&&m1==9)</p><p><b> {m+=100;</b></p><p><b> m-=59;}</b></p><p> if(m3==9&&m4==5&&m1==9&a
36、mp;&m2==5)</p><p> {m+=10000;</p><p><b> m-=5900;}</b></p><p> for(q=0;q<10;q++)</p><p> { display();</p><p> PINF==0X00;</p>
37、<p> if(PINF==0X01)</p><p><b> {m=m+100;</b></p><p> delay(50);}</p><p> if(PINF==0X02)</p><p><b> {m=m-100;</b></p><p>
38、; delay(50);}</p><p> if(PINF==0x04)</p><p> {m=m+10000;</p><p> delay(50);}</p><p> if(PINF==0X08)</p><p> {m=m-10000;</p><p> delay(5
39、0);}</p><p><b> }}}</b></p><p><b> 4實驗仿真和驗證</b></p><p> 我們跟據試驗原理設計了仿真圖,將程序在Iccv7中運行后,將生成的HEX檔加載、運行,來看是否能實現我們要求的功能,并看是否有錯誤。如圖3實驗仿真圖所示,這與我們想要的結果是一致的??梢娢覀兊某绦?/p>
40、是正確的,并且能夠實現我們想要的功能。</p><p><b> 圖3實驗仿真圖</b></p><p><b> 5心得體會</b></p><p> 通過本次實驗,能初步理論聯系實際、應用C語言、能簡單設計出程序、并且能通自己的調試進行修改。</p><p> 課程設計是培養(yǎng)學生綜合運用
41、所學知識、發(fā)現、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新日異,計算機已經成為當今社會生活工作中空前活躍的領域, 在生活中可以說得是無處不在?;仡櫰鸫舜螁纹瑱C原理課程設計,至今我仍感慨頗多。的確,從選題到定稿、從理論到實踐,在整整兩星期的日子里,可以說得是苦多于甜,但是可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知
42、識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說如何對程序的初始進行編程,如何利用流程方塊圖……通
43、過這次課程設計之后,一定把以前所學過的知識重新溫故。 這次課程設計終于順利完成了,在設</p><p><b> 6參考文獻</b></p><p> [1]《微機原理與接口技術》 主編:周佩玲 彭虎 傅忠謙 出版社:電子工業(yè)出版社2007</p><p> [2]《微機原理與接口技術學習指導》 主編:周佩玲 彭虎 傅忠謙 出
44、版社:電子工業(yè)出版社2007</p><p> [3]《計算機高級應用》 主編:章工榮 出版社:高等教育 2004</p><p> [4]《計算機程序設計基礎》 主編:李文成 出版社:科學出版社 2007</p><p> [5]《C語言高級程序設計及其講解》 主編:張錦程 出版社:機械工業(yè)出版社 2000</p><p> 本科生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論