版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 單片機原理及系統(tǒng)課程設計報告 單片機原理及系統(tǒng)課程設計評語:考勤(10)守紀(10)過程(30)設計報告(30)答辯(20)總成績(100) 專 業(yè):電氣工程及其自動化 班 級: 姓 名: 學 號: 指導教師: 蘭州交通大學自動化與電氣工程學院2014 年 1 月 13 日基于單片機的作息時間控制器設計1. 課程設計目的(1)進一步熟悉和掌握單片機的最小系統(tǒng)結構及其工作原理。(2)掌握單片機的接口技術和鍵盤掃描、數(shù)碼管顯示的原理及拓展使用方法。(3)通過課程設計,提高綜合運用所學知識的能力,掌握單片機程序設計、調試,應用電路設計、分析及調試檢測。2. 設計方案及原理本設計是作息時間控制器,設
2、計其實現(xiàn)的功能主要有:使用4位七段顯示器來顯示當前的時間,由LED閃動作為秒計數(shù)表示,顯示格式為“時分”, 并可顯示日期,顯示格式為“月日”,年份單獨顯示。由4個按鍵來作功能設置,可以設置現(xiàn)在的日期、時間及定時設置時間,一旦設置的時間到則作出相應動作:發(fā)光二極管閃亮,同時播放音樂。數(shù)碼管顯示模塊單片機最小系統(tǒng)按鍵控制模塊鬧鐘模塊 圖1 系統(tǒng)方框圖3. 硬件設計3.1單片機AT89C52提供以下標準功能:8K字節(jié)FLASH閃存,256字節(jié)內部RAM,32個I/O口線,3個16位定時/計數(shù)器,一個6向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,AT89C52可降至0Hz的靜態(tài)
3、邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其他所有部件工作直到下一個硬件復位。3.2 按鍵控制模塊按鍵設定部分比較簡單,因為本系統(tǒng)按鍵少,所以在設計上采用了獨立按鍵方式,程序的編制上也采用了簡單的掃描方式。按鍵控制模塊主要有由四個按鍵組成:K1、K2、K3、K4、。其中K1的功能是模式切換鍵;K2的作用是加一;K3的作用是鬧鐘使能;K4的作用是減一。圖2 按鍵控制模塊3.3 數(shù)碼管顯示模塊時間顯示模塊主要由四位七段數(shù)碼管來顯示,配合按鍵控制模塊的校正與設定時間,
4、相應的顯示。時間正常顯示時,LED每閃動60次,分鐘自動加一;每六十分鐘小時自動加一;每24小時天自動加一。 圖3 數(shù)碼管顯示模塊3.4 鬧鐘模塊鬧鐘模塊快的主要功能即鬧鈴。當設定時間與當前時間一致時,則鬧鐘自動鬧鈴進行提示,同時二極管閃亮一分鐘后,自動退出響鈴狀態(tài),若按K3鍵,鬧鐘退出響鈴狀態(tài)。圖4 鬧鐘模塊4. 軟件設計單片機作息時間控制的動作利用時間計時處理來做秒計數(shù),當所設置的時間到了,則發(fā)出一陣聲響。單片機定時器負責定時的計數(shù),不會因為按鍵處理而中斷時間秒數(shù)的增加,時,分,秒數(shù)據(jù)是存在變量內并寫入七段顯示器的緩沖區(qū)內,而由顯示器掃描程序中定時掃描而顯示出時間。4.1 主程序設計 在主
5、控程序循環(huán)中主要工作為掃描是否有按鍵,若有按鍵則應做相應的功能處理,同時也掃描顯示器顯示時間數(shù)據(jù),并檢查所設置的時間是否到了,時間計時處理程序是等過了1S后,則更新時間數(shù)據(jù),將最新的時,分,秒的數(shù)據(jù)轉換為數(shù)字數(shù)據(jù)并顯示在七段顯示器上。程序中是這樣判斷是否過了1S的:設一舊秒數(shù)變量,當新舊秒數(shù)變量不一樣時,則表示已過了1S,要做相關程序時間處理了。圖5 主程序流程圖4.2 中斷子程序中斷子程序的主要功能:提供時間基準。當連續(xù)中斷20次時,即為一秒,此時秒加一;當秒值為60時,分鐘加一,同時秒清零;當分鐘值為60時,小時加一,同時分鐘值清零;當小時為24時,天值加一,同時小時清零;由于每月天數(shù)不定
6、,1、3、5、7、8、10、12月為31天,當計數(shù)到此類月份時,天值為32時,月值加一,同時天值為1;4、6、9、11月為30天,當計數(shù)到此類月份時,天值為31時,月值加一,同時天值為1;如果是閏年,則2月為29天,當計數(shù)到此類月份時,天值為30時,月值加一,同時天值為一;如果不是閏年,則2月為28天,當計數(shù)此類月份時,天值為29時,月值加一,同時天值為一。當月值為13時,則年值加一,同時月值為一。圖6 中斷子程序程序流程圖4.3 按鍵掃描子程序按鍵掃描子程序是程序計中相當重要的一部分。按鍵掃描子程序的功能是:掃描是否有按鍵按下,若有鍵按下,則執(zhí)行相應功能。5. 系統(tǒng)仿真圖6 系統(tǒng)仿真圖6.
7、總結本次課程設計是對所學知識的一次綜合性運用。在設計的過程中發(fā)現(xiàn)了自身知識的不足。這次課程設計收獲很多,體會也很深刻,并且對我們所學的東西也產(chǎn)生了濃厚的興趣。在設計過程中,也學會了很多新的東西,比如一些仿真軟件的應用,最典型的就是PROTEUS軟件的應用,以及與KEIL軟件的聯(lián)合使用。當然最重要的是學到了關于基本電子設計的一些基本方法。除此之外,我覺得在這次設計的過程中,很多自己解決不了的問題,只有虛心請教別人才能有效的解決問題,我覺得人與人之間的相互幫助很有必要,這樣不僅能幫助大家很快的解決問題,還能提高我們每個人的實際水平。在本次設計過程中遇到不少問題,老師在我們做設計的過程中,給予了我極
8、大的幫助,不僅從知識方面引導了我們的設計思路,同時,在人生觀上也給了我們不少的啟示。在此,我對老師表示深深的謝意。 參考文獻1 王思明,張金敏,茍軍年等.單片機原理及應用系統(tǒng)設計M.北京:科學出版社,2012年2 吳金.8051單片機實踐與應用M.北京:清華大學出版社,2002 年3 楊子文.單片機原理及應用M.西安:西安電子科技大學出版社,2006 年附1 源程序代碼#include#define uint unsigned int#define uchar unsigned charuchar code a10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
9、,0x7f,0x6f;/*sbit K1=P14;sbit K2=P15;sbit K3=P16;sbit K4=P17;sbit sd=P36;sbit BEEP=P37;uchar m=0,h=0,sec=0,cnt=0,x,y,qian,bai,shi,ge;uchar set_h=0;uchar set_m=0;uchar month=1;uchar day=5;uchar th0_f;uchar tl0_f;uint year=2014; void delay(uchar t);/延時函數(shù)void scankey(void);/按鍵掃描函數(shù)void init(void); /初始化函
10、數(shù)void display(void);/顯示函數(shù)void set_time(void);/設定時間顯示輔助函數(shù)void set_day(void);/設定日期顯示輔助函數(shù)void m_choose(void); /月份選擇函數(shù)void bianhuan(void); /年份顯示輔助函數(shù)void bianhuan1(void);/時間顯示輔助函數(shù)changedata(uchar *song,uchar *diao,uchar *jie);/音樂符號串解釋函數(shù) void play(uchar *songdata);/奏樂函數(shù)/蟲兒飛uchar code chongerfei= 33_3_45|3
11、-2-|11_1_23|3.,7_,7_- ,632-,632-,6321_1- ; uchar code freq36*2= 0xA9,0xEF,/00220HZ ,1 /0 0x93,0xF0,/00233HZ ,1# 0x73,0xF1,/00247HZ ,2 0x49,0xF2,/00262HZ ,2# 0x07,0xF3,/00277HZ ,3 0xC8,0xF3,/00294HZ ,4 0x73,0xF4,/00311HZ ,4# 0x1E,0xF5,/00330HZ ,5 0xB6,0xF5,/00349HZ ,5# 0x4C,0xF6,/00370HZ ,6 0xD7,0xF6
12、,/00392HZ ,6# 0x5A,0xF7,/00415HZ ,7 0xD8,0xF7,/00440HZ 1 /12 0x4D,0xF8,/00466HZ 1# /13 0xBD,0xF8,/00494HZ 2 /14 0x24,0xF9,/00523HZ 2# /15 0x87,0xF9,/00554HZ 3 /16 0xE4,0xF9,/00587HZ 4 /17 0x3D,0xFA,/00622HZ 4# /18 0x90,0xFA,/00659HZ 5 /19 0xDE,0xFA,/00698HZ 5# /20 0x29,0xFB,/00740HZ 6 /21 0x6F,0xFB,
13、/00784HZ 6# /22 0xB1,0xFB,/00831HZ 7 /23 0xEF,0xFB,/00880HZ 1 0x2A,0xFC,/00932HZ 1# 0x62,0xFC,/00988HZ 2 0x95,0xFC,/01046HZ 2# 0xC7,0xFC,/01109HZ 3 0xF6,0xFC,/01175HZ 4 0x22,0xFD,/01244HZ 4# 0x4B,0xFD,/01318HZ 5 0x73,0xFD,/01397HZ 5# 0x98,0xFD,/01480HZ 6 0xBB,0xFD,/01568HZ 6# 0xDC,0xFD,/01661HZ 7 /3
14、5 ; /* /音樂符號串解釋函數(shù)changedata(uchar *song,uchar *diao,uchar *jie) uchar i,i1,j; char gaodi;uchar banyin; uchar yinchang; uchar code jie78=0,12,14,16,17,19,21,23; *diao=*song; for(i=0,i1=0;) gaodi=0; banyin=0; yinchang=4; if(*(song+i)=|) | (*(song+i)= ) i+; switch(*(song+i) case ,: gaodi=-12;i+; break;
15、 case : gaodi=12;i+; break; if(*(song+i)=0) *(diao+i1)=0; *(jie+i1)=0; return; j=*(song+i)-0x30; i+; j=jie7j+gaodi; yinc: switch(*(song+i) case #: i+;j+; goto yinc; case -: yinchang+=4; i+; goto yinc; case _: yinchang/=2; i+; goto yinc; case .: yinchang=yinchang+yinchang/2; i+; goto yinc; *(diao+i1)
16、=j; *(jie+i1)=yinchang; i1+; /* /奏樂函數(shù) void play(uchar *songdata) uchar i,c,j=0; uint n; uchar diaodata40; uchar jiedata40; changedata(songdata,diaodata,jiedata); TR1=1; for(i=0;diaodatai!=0;i+) tl0_f=freqdiaodatai*2; th0_f=freqdiaodatai*2+1; for(c=0;cjiedatai;c+) for(n=0;n24;n+) scankey(); if(y=0) T
17、R1=0; return; display(); TR1=0; for(n=0;n=10)P0&=0x00;delay(20);P2=0xfd;P0=abai;if(x%2=1&cnt=10)P0&=0x00;else if(x=0&cnt=10)P0|=0x80;delay(20);P2=0xfb;P0=ashi;if(x%2=0&x!=0)|x=7)&cnt=10)P0&=0x00;delay(20);P2=0xf7;P0=age;if(x%2=0&x!=0)|x=7)&cnt=10)P0&=0x00;delay(20);void m_choose(void)switch(month)ca
18、se 1:if(day=32)day=1;else if(day=0)day=31;break;case 2:if(year%4=0)if(day=30)day=1;else if(day=0)day=29; elseif(day=29)day=1;else if(day=0)day=28;break;case 3:if(day=32)day=1;else if(day=0)day=31;break;case 4:if(day=31)day=1;else if(day=0)day=30;break;case 5:if(day=32)day=1;else if(day=0)day=31;brea
19、k;case 6:if(day=31)day=1;else if(day=0)day=30;break;case 7:if(day=32)day=1;else if(day=0)day=31;break;case 8:if(day=32)day=1;else if(day=0)day=31;break;case 9:if(day=31)day=1;else if(day=0)day=30;break;case 10:if(day=32)day=1;else if(day=0)day=31;break;case 11:if(day=31)day=1;else if(day=0)day=30;br
20、eak;case 12:if(day=32)day=1;else if(day=0)day=31;break;void set_time(void) qian=set_h/10; bai=set_h%10; shi=set_m/10; ge=set_m%10;void set_day(void) qian=month/10; bai=month%10; shi=day/10; ge=day%10;void bianhuan(void)qian=year/1000;bai=year%1000/100;shi=year%100/10;ge=year%10;void bianhuan1(void)
21、qian=h/10; bai=h%10; shi=m/10; ge=m%10;void scankey(void)if(K1=0)delay(20);if(K1=0) while(K1=0); x+; if(x=3)set_time(); else if(x=5)set_day(); else if(x=7)bianhuan(); else if(x=8)x=0;bianhuan1(); if(K2=0) delay(20);if(K2=0)while(K2=0);switch(x)case 0:break;case 1:h+;if(h=24)h=0;bianhuan1();break;case 2:m+;if(m=60)m=0;bianhuan1();break;case 3:set_h
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 事業(yè)單位員工合同協(xié)議書
- 企業(yè)資產(chǎn)購置合同模板
- 機構用工合同協(xié)議書
- 實驗室合作協(xié)議范本
- 工業(yè)廠房租賃合同標準文本
- 期貨交易數(shù)據(jù)服務協(xié)議
- 廣東省室內裝潢設計工程施工合同示例
- 保安服務合同協(xié)議書范本
- 房屋翻新合同的范本
- 廣東省批發(fā)花卉選購合同
- 【已填內容】個人業(yè)績相關信息采集表 含政治表現(xiàn)、最滿意、主要特點、不足
- 口袋妖怪黃版隱藏道具
- excel自動生產(chǎn)排程(至柔Ⅱ) 最新版
- 湖北某創(chuàng)省優(yōu)質安全文明工地實施方案(楚天杯)_secret
- 案例分折----奇瑞信息化
- 九陽真經(jīng)原文
- 企業(yè)有價證券管理制度
- 機關工作人員考勤表Excel模板
- 日照市重點支柱產(chǎn)業(yè)情況
- 兒童過敏性休克ppt課件
- 安全生產(chǎn)文明施工措施費用明細報表范文
評論
0/150
提交評論