




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、自動化專業(yè)綜合設計報告所在實驗室: 單片機實驗室 指導教師: 學生姓名 班級 學號 成績評定: 實驗一 LED電子表的設計一、設計任務要求(一)設計任務基于AT89C51單片機,制作LED顯示的智能電子鐘。 (二)設計要求 1. 計時,秒,分時,天,月,年。 2. 五路定時輸出,可任意關斷(最大可到16路) 3. 時間,月,日交替顯示。 4. 自定義任意時刻自動開關屏。 5. 計時精度:誤差=1秒/月。(具有微調設置) 6. 鍵盤采用動態(tài)掃描方式查詢。所有的查詢,設置功能均由K1.K2完成。 二、硬件設計(一)總體思路內部時鐘發(fā)生器復位清零切換按鈕AT89C51單片機數(shù)碼顯示管74HCS245
2、芯片圖 1(二)實圖為 圖2 (三)1. 首先要選擇單片機的芯片,其次,選擇系統(tǒng)中要用到的其他外圍元件。例如要用到的顯示器啊、執(zhí)行機構等等的。2. 硬件的設計。硬件設計是指應用系統(tǒng)的電路設計,它包括單片機的芯片、控制電路、存儲器、IO等等,硬件設計時,應該考慮留有充分的余量,電路設計要保證正確無誤,應為在硬件設計中不容易修改設計的結構。 3. 硬件設計時要注意的問題有以下幾點:(1)單片機的選擇:盡量選用帶有EEPROM和MCS51系列的單片機,理如我們用到的AT89C51,這種單片機會減少外部的擴展。(2)程序存儲器:若要外擴存儲器時,一般要選用容量較大的EPROM芯片,盡量避免用小容量的芯
3、片,應為程序存儲容量大些,則可以編程空間充裕。(3)數(shù)據(jù)存儲器:根據(jù)系統(tǒng)功能的要求,如果需要擴展外部ROM,那么ROM芯片可選用6264(8KB)等,擴展外部ROM和RAM相同,盡量減少芯片的數(shù)量。(4)IO接口的芯片:IO接口的芯片的擴展也需要根據(jù)應用系統(tǒng)功能的要求來確定,常用的IO接口芯片一般要選用8255芯片,這類芯片可利用功能多、具有口線多、硬件邏輯簡單等優(yōu)點。(5)總線驅動功能:MCS51系列的單片機的外部擴展功能很強,但4個8位并行接口帶負載能力是有限的,P0口能驅動8個TTL電路,P1P3口只能驅動3個TTL電路。4.單片機與顯示模塊電路由74HC245芯片和電阻,導線構成,控制
4、鎖存單片機輸出信號。74HC245元件的封裝:74HC245真值表:5.顯示LED電路由7SEG-MPSX6-CC供陰LED8段位顯示器構成:結構圖為:abcdefg12345. dp678910e d G c dpg f G a b其真值表為:顯示字符共陰極接法八段狀態(tài)斷碼(共陰)spgfedcba0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FH.1000000080H綜上則可知:顯示012345678
5、9.斷碼3FH06H5BH4FH66H6DH7DH07H7FH6FH80H6.設計的硬件的思路和實圖為: (1).思路是內部時鐘發(fā)生器復位清零切換按鈕AT89C51單片機數(shù)碼選字管排阻74HCS245芯片(2).實圖為(二)軟件的設計1. 軟件的設計,單片機應用系統(tǒng)的軟件設計是研究的過程中最關鍵的一步,沒有軟件,就無法實現(xiàn)單片機的控制,不同的軟件會實現(xiàn)的個功能就有不同的控制,。所以,要編寫軟件就應該把實現(xiàn)的控制對象及其功能全部掌握,要做到心中有數(shù)。2. 選擇了c語言來編寫程序軟件來控制。3. 流程圖為:(1)主程序流程圖 結束顯示開始初始化鍵盤掃描時間處理讀取時間值預置計數(shù)初值(2)鍵盤掃描子
6、程序鍵盤掃描子程序按鍵秒的調整按鍵分的調整按鍵時的調整定時返回(3)時間處理子程序時間處理子程序秒鐘設為進制分鐘設為進制時鐘設為進制返回(三)調試的過程1. 單片機系統(tǒng)的軟件事千差萬別的,沒有統(tǒng)一的模式,我們是盡可能的采用模塊化的結構,并按照先相后細的方法,把整個系統(tǒng)軟件分成多個獨立模塊。應該確定個模塊的結構和功能,個模塊的接口信息。2. 各個模塊可以分別獨立設計,編輯和調試,最后將各個模塊連接成一個完整的程序進行調試,。3. 較為復雜的軟件是建立在各個機本末快的基礎上的。4. 系統(tǒng)的測試:系統(tǒng)的測試包括硬件調適合軟解調試,硬件的調試是解決硬件的故障,包括設計故障和工藝錯誤。軟件的調試是經過在
7、線的仿真調試,出了發(fā)現(xiàn)和解決程序的錯誤外,也可已發(fā)現(xiàn)硬件的錯誤。5. 程序調試是按模塊進行的,各個模塊和子程序都是獨立進行的,最后是要連在一起來調試的,可以利用開發(fā)工具的單步和斷點運行方式,通過檢查系統(tǒng)的CPU現(xiàn)場、RAM和SFR的內容及IO口的狀態(tài),來檢查程序大的執(zhí)行結果和系統(tǒng)IO設備的狀態(tài)化是否正常,從中發(fā)現(xiàn)程序的邏輯錯誤、轉移地址的錯誤以及隨機的錄入錯誤。6. 在調試的過程中要不斷的調整、修改系統(tǒng)的軟件和硬件,直到其符合預期結果為止,聯(lián)機調試運行后,將軟件固化到EPROM中。三、硬件設計的電路和調試結果為 2.首先要選擇單片機的芯片,其次,選擇系統(tǒng)中要用到的其他外圍元件。例如,我們要用到
8、的顯示器啊、執(zhí)行機構等等的。硬件的設計。硬件設計是指應用系統(tǒng)的電路設計,它包括單片機的芯片、控制電路、存儲器、IO等等,硬件設計時,應該考慮留有充分的余量,電路設計要保證正確無誤,應為在硬件設計中不容易修改設計的結構。硬件設計時要注意的問題有以下幾點:(1)單片機的選擇:盡量選用帶有EEPROM和MCS51系列的單片機,理如我們用到的AT89C51,這種單片機會減少外部的擴展。(2)程序存儲器:若要外擴存儲器時,一般要選用容量較大的EPROM芯片,盡量避免用小容量的芯片,應為程序存儲容量大些,則可以編程空間充裕。(3)數(shù)據(jù)存儲器:根據(jù)系統(tǒng)功能的要求,如果需要擴展外部ROM,那么ROM芯片可選用
9、6264(8KB)等,擴展外部ROM和RAM相同,盡量減少芯片的數(shù)量。(4)IO接口的芯片:IO接口的芯片的擴展也需要根據(jù)應用系統(tǒng)功能的要求來確定,常用的IO接口芯片一般要選用8255芯片,這類芯片可利用功能多、具有口線多、硬件邏輯簡單等優(yōu)點。(5)總線驅動功能:MCS51系列的單片機的外部擴展功能很強,但4個8位并行接口帶負載能力是有限的,P0口能驅動8個TTL電路,P1P3口只能驅動3個TTL電路。四、軟件的設計思想及流程 /*/*延時子程序*/*/void delay (uchar k)uchar j;while(k-)!=0) for(j=0;j=99)year=1; /*/* 時分秒
10、顯示子程序*/*/void display(void) P2=0xfe; P0=dispcodehour/10; /顯示小時的十位 delay(4); P2=0xfd; P0=(dispcode(hour%10)|0X80; /顯示小時的個位 delay(4); P2=0xfb; P0=dispcodeminute/10; /顯示分的十位 delay(4); P2=0xf7; P0=(dispcodeminute%10)|0X80; /顯示分的個位 delay(4); P2=0xef; P0=dispcodesecond/10; /顯示秒的十位 delay(4); P2=0xdf; P0=di
11、spcodesecond%10; /顯示秒的個位 delay(4); /*年月日顯示程序*/void display1(void) P2=0xfe; P0=dispcodeyear/10; delay(4); P2=0xfd; P0=(dispcode(year%10)|0X80; delay(4); P2=0xfb; P0=dispcodemon/10; delay(4); P2=0xf7; P0=(dispcodemon%10)|0X80; delay(4); P2=0xef; P0=dispcodeday/10; delay(4); P2=0xdf; P0=dispcodeday%10;
12、 delay(4); /*/*主函數(shù)*/*/void main(void) P1=0xff; /初始化p1口,全設為 TMOD = 0x11; /time0為定時器,方式TH0=0x3c; /預置計數(shù)初值TL0=0xb0;EA=1; ET0=1; TR0=1; while (1) keyscan( ); /按鍵掃描 time_pro( ); /時間處理 if(disp) display1( ); /顯示時間 else display( ); 五、調試過程和方法1. 單片機系統(tǒng)的軟件事千差萬別的,沒有統(tǒng)一的模式,盡可能的采用模塊化的結構,并按照先相后細的方法,把整個系統(tǒng)軟件分成多個獨立模塊。應該
13、確定個模塊的結構和功能,個模塊的接口信息。各個模塊可以分別獨立設計,編輯和調試,最后將各個模塊連接成一個完整的程序進行調試,。2. 系統(tǒng)的測試包括硬件調適合軟解調試,硬件的調試是解決硬件的故障,包括設計故障和工藝錯誤。軟件的調試是經過在線的仿真調試,出了發(fā)現(xiàn)和解決程序的錯誤外,也可已發(fā)現(xiàn)硬件的錯誤。3. 程序調試是按模塊進行的,各個模塊和子程序都是獨立進行的,最后是要連在一起來調試的,可以利用開發(fā)工具的單步和斷點運行方式,通過檢查系統(tǒng)的CPU現(xiàn)場、RAM和SFR的內容及IO口的狀態(tài),來檢查程序大的執(zhí)行結果和系統(tǒng)IO設備的狀態(tài)化是否正常,從中發(fā)現(xiàn)程序的邏輯錯誤、轉移地址的錯誤以及隨機的錄入錯誤。
14、4. 在調試的過程中要不斷的調整、修改系統(tǒng)的軟件和硬件,直到其符合預期結果為止,聯(lián)機調試運行后,將軟件固化到EPROM中。1這是日期的調試圖:分別為年、月、日2. 此圖為時、分、秒的調試圖 實驗二 數(shù)字時鐘的設計 一、設計要求合格要求:用PROTEUS畫出原理圖,并完成下列任務一、 用六只LED數(shù)碼管輸出顯示時、分、秒。二、 可通過按鍵設置鬧鐘功能,且停鬧無須手工操作。三、 可通過按鍵設置復位和時、分較時等。四、 寫出詳細的設計報告。五、 給出電路的原理圖、源程圖,仿真實現(xiàn)。二、設計內容(可加附頁)硬件方案軟件方案:/獨立式鍵盤調時的數(shù)碼時鐘實驗#include / 包含51單片機寄存器定義的
15、頭文件unsigned char code Tab =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /數(shù)字09的段碼unsigned char int_time ; /中斷次數(shù)計數(shù)變量unsigned char second; /秒計數(shù)變量unsigned char minute; /分鐘計數(shù)變量unsigned char hour; /小時計數(shù)變量unsigned char alarm_flag=0; /鬧鐘標志unsigned char beep_col=0;unsigned char alarm_second; /鬧鐘秒計數(shù)變量un
16、signed char alarm_minute; /鬧鐘分鐘計數(shù)變量unsigned char alarm_hour; /鬧鐘小時計數(shù)變量sbit BEEP=P36; /蜂鳴器引腳定義/*函數(shù)功能:數(shù)碼管掃描延時*/ void delay(void) unsigned char j;for(j=0;j200;j+) ; /*函數(shù)功能:鍵盤掃描延時*/ void delay50ms(void) unsigned char i,j; for(i=0;i200;i+) for(j=0;j70;j+) ; void delay1ms() unsigned char i,j; for(i=0;i10;
17、i+) for(j=0;j30;j+); /* 函數(shù)功能:延時若干毫秒 入口參數(shù):n*/ void delay2(unsigned char n) unsigned char i;for(i=0;in;i+)delay1ms(); /* 函數(shù)功能:延時每10微秒 入口參數(shù):u*/void delay10us(unsigned char u)unsigned char i,j;for(i=0;iu;i+)for(j=0;j5;j+);/*函數(shù)功能:顯示秒入口參數(shù):s*/ void DisplaySecond(unsigned char s) P2=0x40; /P2.6引腳輸出低電平, DS6點
18、亮 P0=Tabs/10; /顯示十位 delay(); P2=0x80; /P2.7引腳輸出低電平, DS7點亮 P0=Tabs%10; /顯示個位delay();P0=0xff; /關閉所有數(shù)碼管 /*函數(shù)功能:顯示分鐘入口參數(shù):m*/void DisplayMinute(unsigned char m) P2=0x08; / P2.3引腳輸出低電平, DS3點亮 P0=Tabm/10;/顯示個位 delay(); P2=0x10; / P2.4引腳輸出低電平, DS4點亮 P0=Tabm%10; delay(); P2=0x20; /P2.5引腳輸出低電平, DS5點亮 P0=0xbf;
19、 /分隔符“-”的段碼 delay(); P0=0xff; /關閉所有數(shù)碼管/*函數(shù)功能:顯示小時的子程序入口參數(shù):h*/void DisplayHour(unsigned char h) P2=0x01; /P2.0引腳輸出低電平, DS0點亮 P0=Tabh/10; /顯示十位 delay(); P2=0x02; /P2.1引腳輸出低電平, DS1點亮 P0=Tabh%10; /顯示個位delay(); P2=0x04; /P2.2引腳輸出低電平, DS2點亮 P0=0xbf; /分隔符“-”的段碼delay(); P0=0xff; /關閉所有數(shù)碼管 /*函數(shù)功能:蜂鳴器發(fā)聲*/void
20、beep()unsigned char j,k,l;if(beep_col=1) /beep_col控制循環(huán) 一直執(zhí)行以下程序 for(l=0;l2;l+) /循環(huán)響5下for(k=0;k0;j-) /蜂鳴器響大約300msBEEP = BEEP;delay10us(5);/延時50us 發(fā)出大約1KHZ頻率的響聲 BEEP=1; /蜂鳴器不響for(j=600;j0;j-) /蜂鳴器響大約300msBEEP = BEEP;delay10us(5);/延時50us 發(fā)出大約1KHZ頻率的響聲 BEEP=1; /蜂鳴器不響B(tài)EEP=1;delay2(700); beep_col=0;/*函數(shù)功能
21、:鍵盤掃描*/void key_scan(void) P1=0xff; /將P1口高4位置高電平“1” if(P1&0xf8)!=0xf8) /有鍵按下 delay50ms(); /延時60ms再檢測 if(P1&0xf8)!=0xf8) /確實有鍵按下 if(S1=0) /如果是S1鍵按下 second+; /秒加1 if(S2=0) /如果是S2鍵按下 minute+; /分鐘加1 if(S3=0) /如果是S3鍵按下 hour+; /小時加1 if(S4=0) /如果是S4鍵按下 second=0; /秒清0 minute=0; /分鐘清0 hour=0; /小時清0 if(S5=0)
22、/如果是S5鍵按下,則進行設定鬧鐘 alarm_flag=1; /秒清0 minute=0; /分鐘清0 hour=0; /小時清0 /*函數(shù)功能:主函數(shù)*/ void main(void) TMOD=0x01; /使用定時器T0EA=1; /開中斷總允許ET0=1; /允許T0中斷TH0=(65536-46083)/256; /定時器高八位賦初值TL0=(65536-46083)%256; /定時器低八位賦初值TR0=1; /啟動定時器T0 int_time=0; /中斷計數(shù)變量初始化second=0; /秒計數(shù)變量初始化minute=0; /分鐘計數(shù)變量初始化hour=0; /小時計數(shù)變量
23、初始化 while(1) DisplaySecond(second); /調用秒顯示子程序 delay(); DisplayMinute(minute); /調用分鐘顯示子程序delay(); DisplayHour(hour); /調用小時顯示子程序 delay(); /鬧鐘定時檢查if(second=alarm_second&minute=alarm_minute&hour=alarm_hour)beep_col=1;elsebeep_col=0; /整點報時if(hour%10)=0&minute=0&hour=0) beep_col=1;elsebeep_col=0; while(al
24、arm_flag) /鬧鐘設定死循環(huán) DisplaySecond(alarm_second); /調用秒顯示子程序 delay(); DisplayMinute(alarm_minute); /調用分鐘顯示子程序delay();DisplayHour(alarm_hour); /調用小時顯示子程序 delay(); P1=0xff; /將P1口高4位置高電平“1” if(P1&0xf8)!=0xf8) /S5調整鬧鐘鍵按下 delay50ms(); /延時50ms再檢測 if(P1&0xf8)!=0xf8) /確實有鍵按下 if(S1=0) /如果是S1鍵按下 alarm_second+; /
25、秒加1 if(S2=0) /如果是S2鍵按下 alarm_minute+; /分鐘加1 if(S3=0) /如果是S3鍵按下 alarm_hour+; /小時加1 if(S4=0) /如果是S4鍵按下 alarm_second=0; /秒清0 alarm_minute=0; /分鐘清0 alarm_hour=0; /小時清0 if(S5=0) /如果是S5鍵按下,則進行設定鬧鐘 alarm_flag=0; /!/ minute=0; /分鐘清0/ hour=0; /小時清0 /if(P1&0xf8)!=0xf8) /while(alarm_flag) /while(1) /main()/*函數(shù)
26、功能:定時器T0的中斷服務子程序*/ void interserve(void ) interrupt 1 using 1 /using Time0 TR0=0; /關閉定時器T0 int_time+; /中斷次數(shù)加1 if(int_time=20) /如果中斷次數(shù)滿20 int_time=0; /中斷計數(shù)變量清0 second+; /秒計數(shù)變量加1 if(second=60) /如果秒計滿60 second=0; /如果秒計滿60,將秒計數(shù)變量清0 minute+; /分鐘計數(shù)變量加1 if(minute=60) /如果分鐘計滿60 minute=0; /如果分鐘計滿60,將分鐘計數(shù)變量清0 hour+; /小時計數(shù)變量加1 if(hour=24) /如果小時計滿24 hou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國民用航空飛行學院《武術散打》2023-2024學年第二學期期末試卷
- 三峽旅游職業(yè)技術學院《茅盾文學獎獲獎作品欣賞》2023-2024學年第二學期期末試卷
- 愛之鏈 教學課件
- 春天的校園講課件
- 教學專題培訓課件下載
- 車庫墻面裝修方案(3篇)
- 個人財務規(guī)劃方案(3篇)
- 機關單位競標方案(3篇)
- 煙草清理庫存方案(3篇)
- 通信基站組建方案(3篇)
- 酒吧入職合同模版
- 醫(yī)師法課件教學課件
- GB/T 44831-2024皮膚芯片通用技術要求
- 校園安全主題團課
- 新版申請銀行減免利息的申請書
- 中職英語新課標詞匯表
- 2024秋期國家開放大學《國際法》一平臺在線形考(形考任務1至5)試題及答案
- 中華文明的起源與早期國家課件
- Unit 8 I come from China. (教學設計)-2023-2024學年湘少版(三起)英語四年級下冊
- 2024年浙江高考英語考綱詞匯表
評論
0/150
提交評論