微機課程設(shè)計報告-數(shù)字時鐘系統(tǒng)與自動報時系統(tǒng)設(shè)計_第1頁
微機課程設(shè)計報告-數(shù)字時鐘系統(tǒng)與自動報時系統(tǒng)設(shè)計_第2頁
微機課程設(shè)計報告-數(shù)字時鐘系統(tǒng)與自動報時系統(tǒng)設(shè)計_第3頁
微機課程設(shè)計報告-數(shù)字時鐘系統(tǒng)與自動報時系統(tǒng)設(shè)計_第4頁
微機課程設(shè)計報告-數(shù)字時鐘系統(tǒng)與自動報時系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程名稱微機系統(tǒng)課程設(shè)計成績課 題數(shù)字時鐘系統(tǒng)與自動報時系統(tǒng)設(shè)計評語: 指導(dǎo)教師: 年 月 日班 級: 13030 學 號: 1303 姓 名: # 地 點: B-312 批 次: 第一批 時 間: 2016年3月 微機系統(tǒng)課程設(shè)計 數(shù)字時鐘系統(tǒng)與自動報時系統(tǒng)設(shè)計 時間:2016年3月1. 課設(shè)題目及成員分工1.1 課設(shè)題目:數(shù)字時鐘與自動報時系統(tǒng)1.2 小組成員介紹及分工學號姓名 任務(wù)分工組長1410030總體設(shè)計,硬件電路的測試、連接、調(diào)試組員130088參與設(shè)計,軟件編程1303014參與設(shè)計,軟件測試,調(diào)整130305參與設(shè)計,資料查找,報告書寫2. 課設(shè)內(nèi)容及要求2.1 課程設(shè)計目的

2、:1、了解以微機為核心的總線方式訪問總線設(shè)備的原理,提高接口擴展硬件電路的連接能力;2、你阿姐數(shù)字時鐘和語音報時的工作原理,提高應(yīng)用系統(tǒng)的設(shè)計和調(diào)試的綜合能力;3、加深對定時器/計數(shù)器、并行接口芯片和語音芯片的硬件電路和軟件編程的工作方式和編程方法的理解。2.2 課程設(shè)計內(nèi)容:1、設(shè)計數(shù)字時鐘,能夠動態(tài)時間顯示,整點語音報時;2、利用定時器產(chǎn)生精確的時鐘源, 通過中斷或者查詢的方式將時鐘源數(shù)值傳送到微機控制臺;3、微機控制臺在進行數(shù)據(jù)的處理后,控制并行接口芯片進行 DLED 的動態(tài)掃描,正確的顯示時鐘;4、當系統(tǒng)運行后,數(shù)碼管顯示時分秒,每到整點,喇叭播放報時音。2.3 系統(tǒng)功能和設(shè)計要求1、

3、基本功能要求:a.系統(tǒng)顯示界面:1. 在 DLED 數(shù)碼管上進行實時刷新顯示;2. 使用 8255 掃描數(shù)碼管,顯示時分秒,小時和分鐘分別為兩位顯示,秒使用 LED3的 DP 顯示,0.5s 亮,0.5s 滅。b.自動報時要求:1. 通過編程實現(xiàn)語音錄制,播放,可以隨時修改報時音內(nèi)容;2. 報時音以 12 時制錄制,12 個報時音以連續(xù)地址存放在 ISD1420 芯片內(nèi),錄音順序如表 2.1 所示:表 2.1 錄音順序表地址報音時地址報音時00十二點整06六點整01一點整07七點整02二點整08八點整03三點整09九點整04四點整10十點整05五點整11十一點整2、發(fā)揮部分:1.增加“語音提醒

4、”功能,自行設(shè)計提醒時間和播放的錄音內(nèi)容。打開“語音提醒”功能后,數(shù)字鐘運行到設(shè)定的時刻,喇叭發(fā)聲提醒事先錄制的語音;2. 增加“秒表計時”功能,啟動該功能后可在 DLED 上進行 00.0099.99 秒計時;3. 增加“時區(qū)轉(zhuǎn)換”功能,根據(jù)設(shè)定的時區(qū)表隨時轉(zhuǎn)換相應(yīng)時區(qū)的時刻。 3. 課設(shè)實現(xiàn)方案3.1 總體設(shè)計思路1、數(shù)字時鐘部分:1.利用 CLOCK 分頻器提供的信號作為可編程定時器 8254 的時鐘源,通過 8254 進行 16分頻,產(chǎn)生 0.5 秒的精確時鐘;2.監(jiān)控時鐘通過查詢獲取時鐘,根據(jù)時鐘計算出時分秒,然后驅(qū)動 4 位數(shù)碼管實時顯示出時間;3.基本 I/O 驅(qū)動器 74LS2

5、44 作為可編程定時器 8254 的時鐘監(jiān)控端口。2、自動報時部分:1.通過調(diào)用電腦系統(tǒng)的蜂鳴器函數(shù)beep()實現(xiàn)報時2.系統(tǒng)可以通過可編程并行接口 8255 的PA 口和 PB 口控制時間顯示數(shù)碼管的段和位3.2 硬件設(shè)計方案1、總體布局:該系統(tǒng)主要使用的 QTH-2008PCI 實驗箱和個人 PC 機,涉及到的芯片有通用可編程并行接口 8255、可編程定時器 8254、驅(qū)動器 74LS244、32Hz 的時鐘源 CLOCK等,除此之外,還有 DLED 數(shù)碼管、按鍵和一些導(dǎo)線等硬件。其中,數(shù)碼管 DLED 主要顯示時鐘的時分秒,語音芯片 ISD1420 主要用于錄音。2、硬件連接圖:總體硬

6、件連接圖如圖 3.1 所示: 圖3.13、詳細設(shè)計:如圖3.1所示, 該系統(tǒng)可分為兩大部分, 通用可編程并行接口8255部分和可編程定時器8253部分:8255 部分:a. 輸入部分:8255 的 8 位數(shù)據(jù)信號線與總線的數(shù)據(jù)信號線相連,兩個地址 A0、A1分別接總線的 LA0、LA1,RD 和 WR 信號分別接總線的 IORD 和 IOWR 信號, 片選信號 CS2 接總線的地址 0020H。PC 口的 PC4、PC5、PC6、PC7、作為輸入分別與按鍵 KEY4、KEY7、KEY3、KEY4 相連。其中,KEY4 主要用于時鐘模式下分鐘的減,KEY7 主要用于從時鐘模式切換到特殊功能狀態(tài),

7、KEY2 主要用于秒表的啟動和暫停,KEY3 主要用于秒表的退出。b. 輸出部分:8255 的 PA 口 8 條信號線作為輸出與數(shù)碼管的段相連,PB 口的低四位作為輸出與數(shù)碼管部分的四位相連,PC 口的 PC0、PC1、PC2 作為輸出分別于語音芯片 ISD1420 的 REC、PLAYE、PLAYL 相連。8254 部分:c. 輸入部分:8254 的 8 位數(shù)據(jù)信號線與總線的數(shù)據(jù)信號線相連,兩個地址 A0、A1分別接總線的 LA0、LA1,RD 和 WR 信號分別接總線的 IORD 和 IOWR 信號, 片選信號 CS1 接總線的地址 0000H。通道 0 中 CLK0 作為輸入連接 32H

8、z 的時鐘源CLOCK0,門控位 GET0 連接按鍵 KEY1;通道 1 中 CLK1 作為輸入連接 1024Hz的時鐘源 CLOCK1,門控位 GET1 連接按鍵 KEY8。d. 輸出部分:通道 0 中的輸出 OUT0 連接驅(qū)動器 74LS244 的輸入口 A1,通道 1 中的輸出 OUT1 連接驅(qū)動器 74LS244 的輸入口 A2。e. 驅(qū)動器 74LS244 部分:按鍵 KEY5 連接驅(qū)動器 74LS244 的輸入口 A3,輸出口 Y1、Y2、Y3 連接總線的數(shù)據(jù)信號線 LD1、LD2、LD3,片選信號 CS4 連接總線的地址0060H。其中,按鍵 KEY5 主要用于在時鐘狀態(tài)下調(diào)節(jié)分

9、鐘部分的加。3.3 軟件設(shè)計方案1、開發(fā)環(huán)境:對于軟件開發(fā)環(huán)境,我們采用的 PC 機中的 VC+ 6.0 軟件,新建了一個 C+ 的工程,將與總線驅(qū)動有關(guān)的文件加進去,然后編寫自己的程序。2、軟件流程圖:該系統(tǒng)軟件流程圖如圖 3.2 所示:圖 3.2 程序流程圖4. 完成內(nèi)容及實驗結(jié)果4.1 本系統(tǒng)實際完成的功能:1、數(shù)字時鐘顯示功能:對程序進行編譯,運行后,數(shù)碼管 DLED 正常顯示所設(shè)定的時間,小數(shù)點作為秒單位以預(yù)定的 0.5 秒的頻率閃爍。四位數(shù)碼管可正常顯示時和分;如果按下按鍵 KEY7,就會退出時鐘模式,進入特殊模式,實現(xiàn)相應(yīng)的語音提醒功能、秒表定時功能、時區(qū)轉(zhuǎn)換功能等。2、自動報時

10、功能:運行程序,選擇自動錄音功能,每到整點就會自動報時3、語音提醒功能:運行程序,進入特殊模式,選擇語音提醒功能,然后數(shù)字鐘運行到設(shè)定的時刻,就會自動蜂鳴4、秒表計時功能:運行程序,進入特殊模式,選擇秒表計時功能,按下對應(yīng)的按鍵 KEY2,啟動秒表定時,在數(shù)碼管 DLED 上就會顯示秒表計時,然后再次按下對于的按鍵 KEY2,秒表計時就會停止。按下相應(yīng)的按鍵 KEY3,就會使秒表計時功能停止,然后退出。5、時區(qū)轉(zhuǎn)換功能:在此功能中,我們定義了東 0 區(qū)到東 11 區(qū)共 12 個區(qū)時,對應(yīng)的城市分別是倫敦、布魯塞爾、雅典、德黑蘭、莫斯科、卡斯蘭、阿拉木圖、曼谷、北京、首爾、關(guān)島、悉尼、馬加達等。

11、運行程序,輸入對應(yīng)的區(qū)時數(shù)字,就可以實現(xiàn)相應(yīng)的時區(qū)轉(zhuǎn)換功能。 團隊實驗總結(jié):(共同編寫)1、經(jīng)過本次實驗,我們非常清楚的掌握了一個完整系統(tǒng)的設(shè)計與實現(xiàn),更加清晰的體會了要用系統(tǒng)的觀點去看待問題,解決問題。2、通過本次實驗,我們對硬件系統(tǒng)中一些芯片,如 8255、8254、ISD1420 等,有了一個更好的掌握,更加清楚了它們的用途,并學會了硬件連線和編程使用,感覺收獲很大。3、通過本次實驗,我們對 VC+ 6.0 軟件有了一個更加深入的了解,并用它成功的寫出了整個系統(tǒng)的程序,運行通過,下載到實驗箱中,硬件系統(tǒng)可以按照預(yù)先設(shè)定的功能進行工作。4、通過本次實驗,我們體會到了團隊合作的重要性,大家分

12、工協(xié)作,相互討論,互幫互助,最終順利的完成了本次實驗。6. 遇到的問題及解決辦法1、軟件方面:a. 新建工程時添加文件問題:在新建工程時,我們添加原有的文件出現(xiàn)了問題,我們仔細查找了資料,終于找到了正確的方法,添加文件成功。b.編譯過程中存在錯誤:在編程中,有的變量定義和使用的不合適,導(dǎo)致了最后的編譯錯誤,我們仔細查找原因,最終找到了錯誤,改正之后運行通過。c.單線程處理時鐘進度,在整點響鈴時,時鐘停止,運用算法進行彌補,也是不足支出。驗收后,課下學會了用多線程進行處理。d.在數(shù)碼顯示時未能注意到數(shù)碼管的刷新頻率太低,導(dǎo)致顯示有閃爍現(xiàn)象。個人收獲、體會和建議: 通過本次微機課程設(shè)計,深切了解體

13、會到一個項目或一件產(chǎn)品從設(shè)計到完成再到檢驗的完整過程,從中收獲頗大,作為本次課設(shè)的組長及硬件設(shè)計者,收獲亦多,課設(shè)活動的整體安排計劃分工,的確給組長帶來了不少問題,在了解大家的長處之后,方便大家的分工及合作,通過小組人員的共同合作,終于完成了本次課設(shè),作為硬件及總體方案設(shè)計者,從剛開始的一頭霧水,到老師的指導(dǎo),組員的幫助解答,終于找到突破口,并從實踐中真正理解了8255、8254等器件的功能,編程方法,對系統(tǒng)與外設(shè)、總線與接口等方面有了更加清晰的認識,對以后工作與學習提供了巨大的幫助,這是一次非常好的課設(shè),期待有機會可以再嘗試,收獲更多。8. 附錄序:本次實驗的主要源程#include &qu

14、ot;StdAfx.h"#include <iostream>#include "QTH9054fun.h"#include <windows.h>#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifCWinApp theApp;using namespace std;void Init8254()ULONG adr8254=0x00;ULONG adr,dat;adr=adr8254+3;/選計數(shù)器0作為時鐘發(fā)生器da

15、t=0x37;IO8bWrite(adr,dat);adr=adr8254;dat=0x32;/32 分頻IO8bWrite(adr,dat);dat=0;IO8bWrite(adr,dat);adr=adr8254+3;/選計時器1作為秒表計數(shù)器dat=0x77;IO8bWrite(adr,dat);adr=adr8254+1;dat=0x10;IO8bWrite(adr,dat);dat=0x00;IO8bWrite(adr,dat);void Init8255()ULONG adr8255=0x20;ULONG adr,dat;adr=adr8255+3;dat=0x88;IO8bWri

16、te(adr,dat);IO8bWrite(adr8255+2,0xff);void Player(int h,int n)/報時模塊int t=h*10+n;for( int i = 0; i < t; i+)Beep(500,500);Sleep(500);int w=-1,x=-1,y=-1,z=-1;/鬧鐘變量int h=0,n=8,m=5,l=9,shiqu=8;/初始時間變量 時區(qū) int clk_flag = 0;/定時開關(guān)void Clock()/設(shè)置定時部分Beep(500,500);cout <<"請輸入指定時間(x x x x):"&

17、lt;<endl;cin >>w>>x>>y>>z;clk_flag = 1;void Second()/秒表計時ULONG wei410=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /0 1 2 3 4 5 6 7 8 9ULONG adr8255=0x20;ULONG adr,dat;int i=0,j=0,l=0,m=0,n=0;while(1)int key;int key1;int state;while(state=IO8bRead(0x60)&(0x04)=0x

18、00)adr=adr8255+1;dat=0x80;IO8bWrite(adr,dat);adr=adr8255;dat=wei4n;IO8bWrite(adr,dat);Sleep(1);adr=adr8255+1;dat=0x40;IO8bWrite(adr,dat);adr=adr8255;dat=wei4m-0x80;IO8bWrite(adr,dat);Sleep(1);if(state=1) break;adr=adr8255+1;dat=0x20;IO8bWrite(adr,dat);adr=adr8255;dat=wei4l;IO8bWrite(adr,dat);Sleep(1

19、);adr=adr8255+1;dat=0x10;IO8bWrite(adr,dat);adr=adr8255;dat=wei4i;IO8bWrite(adr,dat);Sleep(1);j+;while(state=IO8bRead(0x60)&(0x04)=0x04)key=IO8bRead(adr8255+2)&(0x80);key1=IO8bRead(adr8255+2)&(0x40);adr=adr8255+1;dat=0x80;IO8bWrite(adr,dat);adr=adr8255;dat=wei4n;IO8bWrite(adr,dat);adr=ad

20、r8255+1;dat=0x40;IO8bWrite(adr,dat);adr=adr8255;dat=wei4m-0x80;IO8bWrite(adr,dat);Sleep(1);if(state=0) break;adr=adr8255+1;dat=0x20;IO8bWrite(adr,dat);adr=adr8255;dat=wei4l;IO8bWrite(adr,dat);adr=adr8255+1;dat=0x10;IO8bWrite(adr,dat);adr=adr8255;dat=wei4i;IO8bWrite(adr,dat);j+;if(j=2 && key=

21、0)i += 10;j=0;if(j=2)j=0;if(i=10)i=0;l+;if(l=10)l=0;m+;if(m=10)n+;m=0;if(n=10)n=0;if(key1=0)break;void shiqubiao()cout<<"當前時區(qū)為:"<<shiqu<<"時區(qū)"<<endl;cout<<"請輸入您需要查詢的時區(qū)"<<endl;cout<<"時區(qū)0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12

22、"<<endl;cout<<"城市 倫敦 布魯塞爾 雅典 德黑蘭 莫斯科 卡拉奇 阿拉木圖 曼谷 北京 首爾 關(guān)島 悉尼 馬加丹"<<endl;int opt,shi;cin >> opt;shi = h*10 + n - shiqu + opt;shiqu = opt;h = shi / 10;n = shi % 10;void shizhong()ULONG adr8254=0x00;ULONG adr8255=0x20;ULONG adrisd=0x40;ULONG adr,dat;ULONG wei410=0

23、xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;int i=0,j=0,k1=0,k=0,k2=0,k3=0,key2,key3,key4,key5;while(1)if(!(IO8bRead(adr8255+2)&(0x20) break;while(IO8bRead(0x60)&(0x02)=0x00)/顯示時分模塊/位選信號 通過B高位端口/顯示數(shù)字信號 通過A端口adr=adr8255+1; /數(shù)碼1dat=0x80;IO8bWrite(adr,dat);adr=adr8255;dat=wei4h;IO8bWrite(a

24、dr,dat);Sleep(1);adr=adr8255+1; /數(shù)碼2dat=0x40;IO8bWrite(adr,dat);adr=adr8255;dat=wei4n;IO8bWrite(adr,dat);Sleep(1);adr=adr8255+1;/數(shù)碼3dat=0x20;IO8bWrite(adr,dat);adr=adr8255;dat=wei4m;IO8bWrite(adr,dat);Sleep(1);adr=adr8255+1;/數(shù)碼4dat=0x10;IO8bWrite(adr,dat);adr=adr8255;dat=wei4l;IO8bWrite(adr,dat);Sle

25、ep(1);j+;/低電平判定while(IO8bRead(0x60)&(0x02)=0x02)/通過C端口獲取 Keykey2=IO8bRead(adr8255+2)&(0x80);key3=IO8bRead(adr8255+2)&(0x40);key4=IO8bRead(adr8255+2)&(0x10);key5=IO8bRead(0x60)&(0x08);adr=adr8255;dat=0x80;IO8bWrite(adr,dat);adr=adr8255+1;dat=0x80;IO8bWrite(adr,dat);adr=adr8255;dat

26、=wei4h;IO8bWrite(adr,dat);Sleep(1);adr=adr8255+1;dat=0x40;IO8bWrite(adr,dat);adr=adr8255;dat=wei4n-0x80;/點是亮的IO8bWrite(adr,dat);Sleep(1);adr=adr8255+1;dat=0x20;IO8bWrite(adr,dat);adr=adr8255;dat=wei4m;IO8bWrite(adr,dat);Sleep(1);adr=adr8255+1;dat=0x10;IO8bWrite(adr,dat);adr=adr8255;dat=wei4l;IO8bWri

27、te(adr,dat);Sleep(1);j+;/高電平判定/時鐘自我調(diào)整部分if(j=2)/滿足則加ii+;j=0;if(i=60)/分鐘計時個位i=0;l+;if(l=10)/分鐘計時十位l=0;m+;if(m=6)n+;m=0;Player(h,n); /整點放音i += 10*h+n;if(n=10)h+;n=0;if(h=1 && n = 2)h=0;n=0;if(w=h && x=n && y=m && z=l && clk_flag = 1) /定時語音提醒Beep(1000,1000);i+;clk

28、_flag = 0;if(k1!=key3)/增加一小時n+;k1=key3;int s;s=h*10+n;if(s<0)s=s+12;else if(s>11)s=s-12;if(s<=9)h=0;n=s;elseh=1;n=s-10;if(k!=key2)/減一小時n-;k=key2;int s;s=h*10+n;if(s<0)s=s+12;else if(s>11)s=s-12;if(s<=9)h=0;n=s;elseh=1;n=s-10;if(k2!=key4)/減一分鐘l-;k2=key4;int s;s=m*10+l;if(s<0)s=s+60;else if(s>59)s=s-60;m=s/10;l=s-m*10;if(k3!=key5)/增一分鐘l+;k3=key5;int s;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論