數碼管顯示的簡易計算器_第1頁
數碼管顯示的簡易計算器_第2頁
數碼管顯示的簡易計算器_第3頁
數碼管顯示的簡易計算器_第4頁
數碼管顯示的簡易計算器_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、學 號 1307080113天津城建大學單片機原理及應用A課程設計設計說明書數碼管顯示的簡易計算器設計起止日期: 2016 年 1 月 4 日 至 2016 年 1 月 8 日學生姓名鄔海斌班級13電信科1班成績指導教師(簽字)計算機與信息工程學院2016年1月8日天津城建大學課程設計任務書20142015學年 第1學期計算機與信息工程學院 電子信息工程專業 班級 13電信科1班 學號 1307080113 課程設計名稱: 單片機原理及應用A 課程設計 設計題目: 數碼管顯示的簡易計算器設計 完成期限:自 2015 年 1 月 4 日至 2015年 1 月 8日共1 周設計依據、要求及主要內容

2、:一設計的目的1.進一步熟悉和掌握單片機系統設計和編程原理。2.掌握單片機的接口技術及相關外圍芯片的外特性、控制方法。3.通過設計,掌握以單片機核心的電路設計的基本方法和技術。4.通過實際程序設計和調試,掌握模塊化程序設計方法和調試技術。5.通過完成一個包括電路設計和程序開發的完整過程,了解開發單片機應用系統的全過程,為今后從事相應開發打下基礎。二設計的基本要求1.認真認識設計的意義,掌握設計工作程序,學會使用工具書和技術參考資料,并培養科學的設計思想和良好的設計作風。2.提高模型建立和設計能力,學會應用相關設計資料進行設計計算的方法。3.提高獨立分析、解決問題的能力,逐步增強實際應用訓練。4

3、.設計的說明書要求簡潔、通順,電路圖內容完整、清楚、規范。三設計主要內容a) 設計實現功能STC12C5A60S2(引腳排序及基本功能同AT89S51)作為主控芯片,設計由數碼管和鍵盤電路組成的簡易計算器。一是擴展數碼管顯示電路;二是擴展按鍵電路,能夠實現參數的輸入;三是能夠實現數據的加減乘除運算,并能顯示運算的數據和運算結果;四是擴展時鐘芯片DS12C887電路,用于不計算時的時間信息顯示。b) 原理圖設計1.原理圖設計要符合項目的工作原理,連線要正確。2.圖中所使用的元器件要合理選用,電阻、電容等器件的參數要正確標明。3.原理圖要完整,CPU、外圍器件、外擴接口、輸入/輸出裝置要一應俱全。

4、c) 程序調計1.根據要求,將總體功能分解成若干個子功能模塊,每個功能模塊完成一個特定的功能。2.根據總體要求及分解的功能模塊,確定各功能模塊之間的關系,設計出完整的程序流程圖。d) 程序調試1.編寫相關程序,并進行仿真。2.將程序下載到單片機,進行運行調試。e) 設計說明書1.原理圖設計說明簡要說明設計目的,原理圖中所使用的元器件功能及在圖中的作用,各器件的工作過程及順序。2.程序設計說明對程序設計總體功能及結構進行說明,對各子模塊的功能以及各子模塊之間的關系作較詳細的描述。3.畫出工作原理圖,程序流程圖并給出相應的程序清單。四設計進度安排序號日期計劃完成內容11.4 確定設計方案,根據設計

5、方案繪制的硬件原理電路。21.5編寫軟件程序流程。31.6-1.7根據設計方案編寫軟件程序,綜合調試。41.8編寫課程設計報告,口試或答辯。指導教師(簽字): 批準日期: 20 年 月 目 錄第1章 設計任務及要求1第2章 設計原理22.1設計原理22.2設計系統框圖2第3章 硬件電路設計33.1 數碼管硬件電路設計33.2 矩陣鍵盤電路設計43.3 主要元件AT89S514第4章 軟件程序設計與調試64.1程序流程圖64.2 調試結果7總 結8參考文獻9附錄I:主要程序10附錄II:元器件清單1920第1章 設計任務及要求STC12C5A60S2(引腳排序及基本功能同AT89S51)作為主控

6、芯片,設計由數碼管和鍵盤電路組成的簡易計算器。一是擴展數碼管顯示電路;二是擴展按鍵電路,能夠實現參數的輸入;三是能夠實現數據的加減乘除運算,并能顯示運算的數據和運算結果;四是擴展時鐘芯片DS12C887電路,用于不計算時的時間信息顯示。通過鍵盤輸入數據,進行相應的加減乘除運算,并在數碼管顯示相應的運算結果。第2章 設計原理2.1設計原理設計主要是利用AT89C51進行數據處理,利用4×4矩陣鍵盤的按鍵掃描,利用LED數碼管的動態顯示。該設計首先是運用矩陣鍵盤的按鍵掃描,然后把掃描得到的鍵值進行譯碼,其次把譯碼所得的數值進行處理,最后將處理后的值進行動態顯示。矩陣鍵盤和數碼管分別接在P

7、1和P0,這樣大大的節約了單片機的I/O端口。圖2-1 設計原理圖2.2設計系統框圖51單片機數碼管顯示模塊時鐘電路模塊 鍵盤運算模塊電源模塊 圖2-2 系統結構框圖第3章 硬件電路設計3.1 數碼管硬件電路設計數碼管數據顯示的硬件電路由單片機、4位共陽極數碼管、位驅動電路、限流電阻等組成。實驗板中將跳線 J7 與J2(A8A11 腳)相連,即單片機P2.0-P2.3??刂茢荡a管4位位選。用跳線將 J14 與J15 相連,P0 口送出數碼管段選碼。程序輪流選通各位,并送出段碼信息,數碼管從低位循環移位顯示 0-F 的數據。程序由 P1 口送出段碼信息,最低位數碼管循環顯示0-9的數字。數碼管共

8、陽極段碼表及數碼管顯示電路圖如下:表3-1 共陽極數碼管段碼顯示字符 共陽極段碼 共陰極段碼0 C0H 3FH1 F9H 06H2 A4H 5BH3 B0H 4FH4 99H 66H5 92H 6DH6 82H 7DH7 F8H 07H8 80H 7FH9 90H 6FH圖3-1 數碼顯示電路3.2 矩陣鍵盤電路設計4*4 矩陣鍵盤行輸入接單片機 P1.0-P1.3,列輸入接單片機 P1.4-P1.7,通過掃描方式檢測是否有鍵按下,并確定鍵值。通過數碼管顯示價值。 設置跳線,連接J12 與J11,P1 口連接鍵盤行列,連接J14 與J15,74LS573口送出數碼管段碼,連接 J7 至J2:A

9、8-A11 腳(單片機 P2.0-P2.3),控制數碼管位選。 鍵盤掃描程序的過程為:開始時,先判斷是否有鍵閉合,無鍵閉合時,返回繼續判斷,有鍵閉合時,先去抖動,然后確定是否有鍵按下,若無鍵按下,則返回繼續判斷是否有鍵閉合,若有鍵按下,則判斷鍵號,然后釋放,若釋放按鍵完畢,則返回,若沒有釋放按鍵,則返回繼續釋放。圖3-2 鍵盤電路 3.3 主要元件AT89S51目前AT89S51多采用40個引腳的雙列直插封裝方式。40個引腳按其功能可分如下三類:電源及時鐘引腳Vcc、Vss;XTAL1、XTAL2.控制引腳PSEN、ALE/PROG、EA/VppRST(即RESET).I/O口引腳P0、P1、

10、P2、P3,為4個8位I/O口的外部引腳。主要引腳功能如下: P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地

11、址接收。 P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“

12、1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。圖3-3 單片機圖3-4 輸出口擴展第4章 軟件程序設計與調試4.1程序流程圖按鍵譯碼是否有按鍵按下初始化后,程序開始進入主程序,1、進行按鍵判斷,如果有鍵按下,繼續往下執行,否則重新掃描;2、如果有鍵按下,延時5MS;3、再次按鍵判斷,如果有鍵按下,繼續往下執行,否則重新掃描;4、如果有鍵按下,確定按鍵位置;5、再次進行按鍵判斷,如果有鍵按下,繼續往下執行,否則,表示出錯,重新掃面;6、如果有鍵按下,對按鍵譯碼;7、判斷是否按鍵釋放,如果釋放,繼續往下執行,否則等待;8、

13、對送來的譯碼值進行數據處理;9、把處理的數據,放到LED數碼管中動態顯示。詳細程序源代碼見附錄I。結束數碼管中顯示是否有按鍵下按下是否有按鍵按下延時5Ms是否有按鍵按下初始化開始數據處理 NY YN 確定按鍵位置 N圖4-1 程序流程4.2 調試結果(1)鍵盤上按下123;鍵盤上按下運算鍵“+”后,按下7; 圖4-2 數碼管顯示“123”、“7”(2)鍵盤上按下功能鍵“=”后,得出運算結果130;圖4-3 數碼管顯示運算結果(3)不運算時,數碼管顯示時間15:12。圖4-4 數碼管顯示時間總 結很快一周多的時間又過去了,一個星期的課程設計對于我們初學者來說并不簡單,畢竟我們對單片機這門課程花的

14、時間很少,上課的時間和上機的時間僅僅那么多,所以我們對這門課程的知識只了解了一個大概。對于這一個星期的成就我感到很欣慰,能夠自己編出一個程序運用到實踐當中。剛開始我們都不知道如何動筆,看到那么多的課題,心中在暗暗的想,我們真的能做好一個嗎,糾結了好久才把課題選好。選好課題后也不只從何處下手,我們只得到處查詢資料和網上借鑒。我們都知道這個課程設計的關鍵是流程圖和程序的編寫。我們不急不忙的看了很多相似的程序和流程圖,和向老師的請教才將流程圖給畫出個大概來,當然萬事開頭難嗎,第一步做好了以后。我們就得開始編寫程序了,這是最關鍵的了,首先我們認真的看了書本上的相似程序,將這個程序看懂了解透。我們才開始

15、著手編寫程序,當然在編寫程序的這個過程是最復雜最麻煩了。老是出現各種各樣的問題,這就需要我們能靜下心了,同樣我們也得考驗同學之間團結合作能力了。自己編的程序自己往往很難發現錯誤,我們便便請教班上的高手解答。實在不懂得就求助老師了。在各種方法使盡后,程序終于出來了,一個程序的編寫就花了我們課程設計的一大半的時間。此后說明書的書寫也是項不小的工程,要將所有的東西集合起來還真的不簡單。老是發現缺這缺那的。一個人書寫后還得要幾個人的審查才敢最終確定。當然經過這次課程設計我們學會了很多,對單片機這門課程有了更好的了解,這也是一次理論知識運用到實踐當中的考驗,同時也為我們以后的畢業設計提供了參考。最后非常

16、感謝老師和同學們的幫助。參考文獻1張毅剛,彭喜元等. 單片機原理及應用M. 北京:高等出版社,2010.2彭偉. 單片機C語言程序設計實訓100例M. 北京:高等出版社,2009.3徐愛均,徐陽等. 單片機原理與應用M. 機械工業出版社,2013.附錄I:主要程序#include "reg51.h"#include"absacc.h"#include <string.h>typedef unsigned char BYTE;typedef unsigned int WORD;#define led_date XBYTE0x6000 /*LED

17、口地址*/BYTE led_dm20=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;void LED_crt(BYTE val);/ /*led顯示位置*/void Delay(WORD n);void crt_num();BYTE led_w,di; WORD num,a,b,c,d;/定義存儲變量 WORD num1;WORD num2,count,flage,Hourh,Hourl,Secondh,Secondl,Minuteh,Min

18、utel;bit fuhao;BYTE yunsuan;bit flag;bit biaozhi;#define DS_A XBYTE0x100A /寄存器 /* DS12887口地址 */ #define DS_B XBYTE0x100B /寄存器 #define DS_C XBYTE0x100C /寄存器 #define Years XBYTE0x1009 /年 #define Month XBYTE0x1008 /月 #define Day XBYTE0x1007 /日 #define Week XBYTE0x1006 /星期 #define Hour XBYTE0x1004 /時 #d

19、efine Minute XBYTE0x1002 /分 #define Second XBYTE0x1000 /秒 void DS_init()/*DS12887初始化程序*/ DS_A=0x20; DS_B=0x12;void write_time() DS_A=0x2f; /寄存器 DS_B|=0x80; Years=0x16; /年 Month=0x01; /月 Day=0x03; /日 Week=0x07; /星期 Hour=0x15; /時 Minute=0x12; /分 Second=0x00; /秒 DS_B &=0x7f; /寄存器 void Delay(WORD n)

20、/延時500US WORD x;while(n-) x=500;while(x-);void crt_num() /轉換運算數據Hourh=Hour/16;Hourl=(Hour%16)+10; Secondh=Second/16;Secondl=Second%16;/+10; Minuteh=Minute/16 ;Minutel=Minute%16;a=num/1000;b=num/100%10;c=num/10%10;d=num%10;if(flage=1) for(count=0;count<4;count+) if(di=0x09)LED_crt(a);else if(di=0x

21、08)LED_crt(b);else if(di=0x07)LED_crt(c);else if(di=0x06)LED_crt(d);di-;if(di=0x05)di=0x09;Delay(1);if(flage=0) for(count=0;count<4;count+)if(di=0x09)LED_crt(Hourh);else if(di=0x08)LED_crt(Hourl);else if(di=0x07)LED_crt(Minuteh);else if(di=0x06)LED_crt(Minutel);di-;if(di=0x05)di=0x09;Delay(1); un

22、signed char keypad_scan()/矩陣鍵盤掃描/*行列式掃描鍵盤*/ unsigned char temp;unsigned char key=0xff;P1=0xfe; temp=P1; temp=temp&0xf0; while(temp!=0xf0) Delay(5); temp=P1; temp=temp&0xf0;while(temp!=0xf0) temp=P1; switch(temp)case 0xee: key=7; break; case 0xde: key=4; break; case 0xbe: key=1; break; case 0

23、x7e: key=15; break; while(temp!=0xf0) temp=P1;temp=temp&0xf0;P1=0xfd; temp=P1;temp=temp&0xf0;while(temp!=0xf0)Delay(5);temp=P1; temp=temp&0xf0;while(temp!=0xf0) temp=P1;switch(temp)case 0xed: key=8; break;case 0xdd: key=5; break;case 0xbd: key=2; break;case 0x7d: key=0; break;while(temp!

24、=0xf0)temp=P1;temp=temp&0xf0;P1=0xfb; temp=P1;temp=temp&0xf0;while(temp!=0xf0)Delay(5);temp=P1; temp=temp&0xf0;while(temp!=0xf0) temp=P1;switch(temp)case 0xeb: key=9; break;case 0xdb: key=6; break;case 0xbb: key=3; break;case 0x7b: key='=' break; while(temp!=0xf0)temp=P1;temp=temp&0xf0;P1=0xf7;temp=P1;temp=temp&0xf0;while(temp!=0xf0)Delay(5);temp=P1; temp=temp&0xf0;while(temp!=0xf0) temp=P1;switch(temp)case 0xe7: key=10; break;case 0xd7: key=11; break;case 0xb7: key=12; break;case 0x77: key=13; break;while(temp!=0xf0)temp=P1;temp=te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論