




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、科技大學信息科學技術學院課程設計(32位微機原理與接口技術)班級 : 姓名 : 課題名稱 : 7段數碼管電子鬧鐘一、設計要求:利用試驗箱資源,自行設定一個7段數碼管電子鬧鐘,完成電路設計、電路連線、軟件編程、系統調試等工作。所實現的電梯模擬系統主要功能如下。用7段數碼管或液晶顯示當前的時間。允許設置響鈴時間。允許設施當前時間。用發(fā)光二極管的閃爍表示響鈴。按某個按鈕后,鬧鐘停止響應。二、設計原理:1、設計所用到的芯片:8086CPU中央處理器、8255A并行接口芯片、74LS244三態(tài)緩沖器2、硬件電路設計電路圖3、硬件電路設計原理用8255芯片實現4位共陽數碼管的動態(tài)掃描,就是將數碼管的段碼由
2、8255PB口送到數碼管的段選端,數碼管的位碼由8255PA口送到數碼管的位選端,這樣每一時刻就可以利用8255讓4個數碼管當中的一位顯示一個特定的數,再設計相應的驅動程序來控制8255,就可以實現數碼管的動態(tài)顯示,能顯示4位數。另外通過PC口來控制三個LED的亮滅,以表示相應的信息。用74HC244將數據有數據總線送給CPU。244的四個輸入端與四個彈跳按鍵相接,當其中某一個按鈕按下時,對應數據總線中的那一位的數據就是0,否則為1,因此,我們可以通過244來改變電子鬧鐘的工作模式。4、軟件設計流程圖 開始初始化檢測鬧鐘顯示數碼管及LED燈掃描檢測按鍵 5、總體設計用數碼管的動態(tài)掃描來作為顯示
3、部分,用四個按鍵來作為操控部分,CPU接收用戶輸入的控制信號并進行分析,切換到相應的狀態(tài)。按鍵部分是通過循環(huán)從244讀取數據到CPU,然后進行分析,若從四個按鍵讀回的數據均為1,表示沒有按鍵被按下,因此不做任何額外操作。若第一個按鍵被按下,表示對分進行加操作,如果當前是模式0,則對實時時間分鐘進行加1操作,否則對鬧鐘定時時間的分鐘進行加1操作;若第二個按鍵被按下,當前模式為0時對實時秒進行加1操作,當前模式為1時對鬧鐘的定時時間秒進行加1操作;若第三個鍵被按下,模式0和1進行切換;按下第四個按鍵時,若當前鬧鐘正在響鈴,及LED燈D3在閃爍,按下此按鍵后停止響鈴,即關掉LED燈,不讓其閃爍,若當
4、前沒有處在響鈴時段,按下此按鍵不做任何操作。顯示部分。一是通過四位數碼管的動態(tài)掃描來顯示當前的時間,二是通過三個LED燈來表示當前所處的模式,若D1亮,表示處在模式0,即實時時間顯示及調節(jié)模式,若D2亮,表示處在模式1,即定時時間顯示及調節(jié)模式。若D3在閃爍,表示當前正處在鬧鐘響的時間段,若為滅表示當前不處在鬧鈴時段。計時部分。主要是通過8086內部產生的每秒產生18.2次的中斷來計時,先設置好兩個變量second,minute,改變原來18.2次中斷的服務子程序的入口地址,改為自己編寫的中斷服務子程序的入口地址。設置一個變量count,每次中斷時count就自加1,當count加到18時將其
5、清零并使second加1,表示已計時1秒,類似的,當second加到60的時候將其清零并使minute加1。中斷服務子程序主要的內容就是實現count、second、minute的自加及清零。有了計時部分,顯示部分,操控部分,將它們組合起來就完成了鬧鐘的設計。用計時部分來計時并通過顯示部分將用于計時的兩個變量顯示出來,用操控部分來設置定時時間和實時時間,這樣就實現了設計的需求。三、測試結果:程序運行后,數碼管開始計時,波動開關3可以調整狀態(tài),在狀態(tài)1下,led燈1亮,此時可以設定當前時間,撥動開關1調整分鐘,撥動開關2調整秒;在狀態(tài)2下,led燈2亮,此時可以設定鬧鐘時間,撥動開關1調整分鐘,
6、撥動開關2調整秒;當前時間到達鬧鈴時間時led燈3閃爍,閃爍頻率為每秒3次,撥動開關4可以結束鬧鈴,led燈結束閃爍。四、設計總結本設計成功的設計并實現了設計的需求。附件:程序源代碼: #include<stdio.h> #include<dos.h> #include<conio.h> #include<bios.h> char table_dula=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /段碼 char table_wela=0x01,0x02,0x04,0x08;/位碼 cha
7、r minute=0,second=1; /記錄當前時間的分和秒 char minute1=0,second1=0;/記錄鬧鐘時間的分和秒 int count=0; int mode=0; /控制方式標志位,為是顯示當前時間,為時調節(jié)當前時間,為時調節(jié)定時時間 char clock_led=0xff,clock_button=0;/clock_led為控制鬧鐘鬧鈴時閃爍的led,主要利用最低位 void interrupt far(interrupt far *OldAsyncInt)(.); void interrupt far AsyncInt(.);/聲明中斷服務子程序 void del
8、ay(unsigned int t);/延時函數聲明 void display(char wei,char num);/顯示第wei位為數num的顯示函數的聲明 void ComInit();/端口初始化函數聲明 void KeyScan();/按鍵掃描的函數的聲明 void displayAll();/總顯示函數的聲明 void clock_check();/檢查鬧鐘是否需要響鈴的函數的聲明 void mian() int c=0;outportb(0x183,0x80);/初始化的控制字outportb(0x180,0x01);outportb(0x181,0x0c);ComInit();
9、 /初始化端口while(1)clock_check(); /循環(huán)檢測鬧鐘是否需要響displayAll();/顯示數碼管if(second>=60) /控制秒向分的進位second=0;minute+;if(minute>=60)minute=0;KeyScan();/循環(huán)檢測按鍵c=bioskey(1);/按Esc鍵退出程序if(c=283)break; void delay(unsigned int t) /粗略延時函數 while(t-)unsigned int i = 600;while(i-); void display(char wei,char num)/在第wei
10、位上顯示數num outportb(0x180,0);outportb(0x181,table_dulanum);/往B口上送段碼outportb(0x180,table_welawei);/往A口上送位碼 void interrupt far AsyncInt(.)/中斷服務子程序 disable();/關閉中斷 count+;/每秒中斷.2秒的中斷 if(count=18)second+; else if(count=36)second+; else if(count=54)second+; else if(count=72)second+; else if(count=91) count
11、=0;second+; if(count%6=0&&clock_button=1)clock_led=clock_led; void ComInit() /替換.2秒中斷原來的服務子程序 unsigned char IntVectNum = 0x1c;disable();OldAsyncInt=getvect(IntVectNum);setvect(IntVectNum,AsyncInt);enable(); void KeyScan()/鍵盤掃描函數char key;key=inportb(0x190);if(mode=0)/當為方式的時候if(!(key&0x000
12、1) delay(100); key = inportb(0x190); if(!(key&0x0001) while(!(key&0x0001) key = inportb(0x190);delay(100);minute+;if(minute>=60) minute=0; else if(!(key&0x0002) delay(100); key = inportb(0x190); if(!(key&0x0002) while(!(key&0x0002) key = inportb(0x190);delay(100);second+;if(se
13、cond>=60) second=0; else if(mode=1)if(!(key&0x0001) delay(100); key = inportb(0x190); if(!(key&0x0001) while(!(key&0x0001) key = inportb(0x190);delay(100);minute1+;if(minute1>=60) minute1=0; else if(!(key&0x0002) delay(100); key = inportb(0x190); if(!(key&0x0002) while(!(ke
14、y&0x0002) key = inportb(0x190);delay(100);second1+;if(second1>=60) second1=0; if(!(key&0x0004) delay(100); key = inportb(0x190); if(!(key&0x0004) while(!(key&0x0004) key = inportb(0x190);delay(100);mode+;if(mode=2)mode=0; if(!(key&0x0008) delay(100); key = inportb(0x190); if(!
15、(key&0x0008) while(!(key&0x0008) key = inportb(0x190);delay(100);clock_button=0;clock_led=0xff; void displayAll()if(mode=0)display(0,minute/10);delay(1);display(1,minute%10);delay(1);display(2,second/10);delay(1);display(3,second%10);delay(1);outportb(0x182,0xfd); else if(mode=1) display(0,minute1/10);delay(1);display(1,minute1%10);delay(1);display(2,second1/10);delay(1);display(3,second1%10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 采訪廣告公司心得體會模版
- 病毒性胃腸炎的臨床護理
- 住宅-生活用房
- 世界旅游形象大使長三角特別賽區(qū)
- 幼兒園語言教育與活動設計 課件 第四章 幼兒園語言教育活動與其他教育活動的交叉與融合
- 瘡瘍日常護理
- 運營能力規(guī)劃
- 作業(yè)治療器材
- 高中語文教師教育教學工作總結模版
- 牛羊產后護理
- 人工智能的誕生簡述課件
- 子宮破裂的護理查房
- 文藝復興時期的北方畫派課件
- 人力資源管理師二級理論知識要點
- 出貨檢驗報告
- 科研成果研制任務書
- 完整版:美制螺紋尺寸對照表(牙數、牙高、螺距、小徑、中徑外徑、鉆孔)
- 市政道路綜合整治工程施工部署方案
- 無機材料科學基礎-第3章-晶體結構與晶體中的缺陷
- 泄漏擴散模型及其模擬計算
- 橋梁工程施工工藝標準圖集
評論
0/150
提交評論