簡易數(shù)字計算器_第1頁
簡易數(shù)字計算器_第2頁
簡易數(shù)字計算器_第3頁
簡易數(shù)字計算器_第4頁
簡易數(shù)字計算器_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河北工程大學(xué)科信學(xué)院課程設(shè)計說明書(2012/2013學(xué)年第二學(xué)期)課程名稱:單片機應(yīng)用課程設(shè)計 題目:簡易數(shù)字計算器專業(yè)班級: 學(xué)生姓名: 學(xué)號: 指導(dǎo)老師:楊怡君 王靜爽 韓昱 王巍 苗敬利設(shè)計周數(shù):二周設(shè)計成績: 2013年6月26日目錄1 課程設(shè)計目的2課程設(shè)計任務(wù) 2.1.設(shè)計題目 2.2.設(shè)計小組成員 2.3.原始數(shù)據(jù)及主要任務(wù) 2.4.技術(shù)要求3課程設(shè)計內(nèi)容3.1. 方案設(shè)計3.1.1 STC90C52AD的功能參數(shù)介紹3.1.2 綜合電路設(shè)計3.2單元電路設(shè)計 3.2.1動態(tài)顯示驅(qū)動設(shè)計 3.2.2 時鐘產(chǎn)生單元 3.2.3 蜂鳴器電路單元 3.2.4動態(tài)顯示控制電路單元 3.

2、2.5 按鍵電路單元3.3系統(tǒng)調(diào)試 3.4系統(tǒng)設(shè)計3.5程序流程圖3.6系統(tǒng)實施1、課程設(shè)計目的1.1用單片機課程及已學(xué)電子電路知識設(shè)計一簡易時鐘顯示裝置,包括電路圖的設(shè)計和制版等。 1.2通過課程設(shè)計加深對單片機課程的相關(guān)知識的學(xué)習(xí)和理解。1.3初步學(xué)會一些設(shè)計思想和實踐技能。提高學(xué)生綜合素質(zhì)。1.4讓學(xué)生從設(shè)計過程中領(lǐng)悟到相互合作的重要性。2、課程設(shè)計任務(wù)2.1設(shè)計題目:簡易數(shù)字計算器設(shè)計2.2 設(shè)計小組成員:沙三美 楊玉鋒 王浩23原始數(shù)據(jù)及任務(wù)設(shè)計并制作出一個以單片為核心的電子鎖系統(tǒng):1、確定總體設(shè)計方案;2、設(shè)計鍵盤輸入電路;3、設(shè)計顯示電路;4、合理分配地址,編寫系統(tǒng)程序;5、利用

3、protel設(shè)計硬件電路原理圖和PCB圖;6、軟硬件聯(lián)機調(diào)試2.4技術(shù)要求設(shè)計一個以MCS-51單片機為核心的簡易計算器系統(tǒng)。能夠進行兩位數(shù)的簡單的加、減、乘、除運算,且具備清零功能。十個數(shù)字鍵,六個功能鍵。進行除法運算時,小數(shù)點保留2位顯示。如果除數(shù)為零,擇清零顯示,蜂鳴器響,當(dāng)按下任意鍵后,蜂鳴器停止。課擴展計算連續(xù)功能,數(shù)據(jù)溢出清0顯示,蜂鳴器響,按下任意鍵后,蜂鳴停止。3.1.1 STC90C52AD的功能參數(shù)介紹STC90C52AD是由宏晶公司生產(chǎn)的高性能八位單片機。如圖一所示。該芯片采用FLASH存儲技術(shù),內(nèi)部具有8KB字節(jié)快閃存存儲器,采用DIP封裝,是目前在中小系統(tǒng)中應(yīng)用最為普

4、及的單片機。 STC90C52AD可構(gòu)成真正的單片機最小應(yīng)用系統(tǒng),縮小系統(tǒng)體積,增加系統(tǒng)的可靠性,降低系統(tǒng)的成本。只要程序長度小于8K,四個I/O口全部提供給用戶??捎?V電壓編程,而且擦寫時間僅需10毫秒,僅為8751/87C51的擦除時間的百分之一,8751/87C51的12V電壓擦寫相比,不易損壞器件,沒有兩種電源的要求,改寫時不拔下芯片,適合許多嵌入式控制領(lǐng)域。工作電壓范圍(2.7V6V),全靜態(tài)工作,工作頻率寬在0Hz24MHz之間,比8751/87C51等51系列的6MHz12MHz更具有靈活性,系統(tǒng)能快能慢。 STC90C52AD芯片提供三級程序存儲器加密,提供了方便靈活而可靠的

5、硬加密手段,能完全保證程序或系統(tǒng)不被仿制。P0口是三態(tài)雙向口,通稱數(shù)據(jù)總線口,因為只有該口能直接用于對外部存儲器的讀/寫操作。STC90C52AD單片機為40引腳芯片如圖一所示,在本設(shè)計中,主要用到P0口、P2口、P1.0口及P3.0、P3.1、P3.2口。P0口可作為通用I/O口,但須外接上拉電阻,所以在設(shè)計顯示數(shù)碼管我們避免了使用P0口這樣大大簡化了動態(tài)顯示電路。P1口:8位、雙向I/0口,內(nèi)部含有上拉電阻。P1口可作普通I/O口。輸出緩沖器可驅(qū)動四個TTL負載;用作輸入時,先將引腳置1,由片內(nèi)上拉電阻將其抬到高電平。P1口的引腳可由外部負載拉到低電平,通過上拉電阻提供電流。在FLASH并

6、行編程和校驗時,P1口可輸入低字節(jié)地址。在串行編程和效驗時,P1.5/MO-SI,P1.6/MISO和P1.7/SCK分別是串行數(shù)據(jù)輸入、輸出和移位脈沖引腳。 P2口:具有內(nèi)部上拉電阻的8位雙向I/O口。P2口用做輸出口時,可驅(qū)動4各TTL負載;用做輸入口時,先將引腳置1,由內(nèi)部上拉電阻將其提高到高電平。若負載為低電平,則通過內(nèi)部上拉電阻向外部輸出電流。在FLASH并行編程和校驗時,P2口可輸入高字節(jié)地址和某些控制信號。P3口:具有內(nèi)部上拉電阻的8位雙向口。P3口用做輸出口時,輸出緩沖器可吸收4各TTL的灌電流;用做輸入口時,首先將引腳置1,由內(nèi)部上拉電阻抬位高電平。若外部的負載是低電平,則通

7、過內(nèi)部上拉電阻向輸出電流。在本設(shè)計中,P3口作為時間設(shè)置的4按鍵輸入,因為有上拉電阻,所以可以通過按鍵直接接地,簡化了電路。在與FLASH并行編程和校驗時,P3口可輸入某些控制信號。P3口除了通用I/O口功能外,還有替代功能如表1所示。表1 P3口的第二功能端口引腳各個功能P3.0RXD(串行口輸入端)P3.1TXD(串行口輸出端)P3.2INT0(外部中斷0請求輸入端,低電平有效)P3.3INT1(外部中斷1請求輸入端,低電平有效)P3.4T0(定時/計數(shù)器0計數(shù)脈沖輸入端)P3.5T1(定時/計數(shù)器1計數(shù)脈沖輸入端)P3.6WR(外部數(shù)據(jù)存儲器寫選通信號輸出端,低電平有效)P3.7RD(外

8、部數(shù)據(jù)存儲器讀選通信號輸出端,低電平有效)單片機使用宏晶公司支持串口下載程序(ISP)的單片機,為STC90C52AD課程設(shè)計配發(fā)的小電路板(ISP-MCU Basic circuit)電路原理圖見下圖。該板作為課程設(shè)計的核心電路板使用,板上有單片機及附屬電路,RS-232通信驅(qū)動電路,高低電平測試電路等。課程設(shè)計電路中需要的其他電路在此基礎(chǔ)上擴展,通過插孔連接。課程設(shè)計配發(fā)的小電路板(ISP-MCU Basic circuit)電路原理圖見下圖。擴展電路在萬用板上制作用四位數(shù)碼管顯示小時與分鐘,中間那個點用來區(qū)分小時與分鐘;每秒用一個LED閃爍一下;用了4個按鍵,一個是選擇鍵,一個是加鍵,一

9、個是減鍵, 一個是確認鍵。時間要精確,整點報時,聲音間隔1秒,并且可以調(diào)整時間調(diào)整位閃爍提示。 擴展電路用到得器件:共十六個按鍵:十個數(shù)字鍵,一個是加鍵,一個是減鍵,一個是除鍵,一個乘鍵,一個等鍵,一個清零鍵;六個DPY7-SEG DP共陽極動態(tài)LED;六個PNP三極管;十四個330歐姆和兩個470歐的電阻;導(dǎo)線。每各引腳可吸收8各TTL的灌電流。作為輸入時,首先應(yīng)將引腳置1。P0也可用做訪問外部程序存儲器和數(shù)據(jù)存儲器時的低8位地址/數(shù)據(jù)總線的復(fù)用線。在該模式下,P0口含有內(nèi)部上拉電阻。在FLASH編程時,P0口接收代碼字節(jié)數(shù)據(jù);在編程效驗時,P0口輸出代碼字節(jié)數(shù)據(jù)(需要外接上拉電阻)。元器件

10、清單:單片機 stc90c52ad 1晶振 CRY 1電阻 510歐 1電阻 4.7千歐 4電阻 200歐 1電阻 10千歐 1電解電容10微法 1電容 22皮法 2開關(guān) button 17二極管 led 1三極管 pnp 4蜂鳴器 1數(shù)碼管 43.1.2綜合電路設(shè)計采用單片機的TO定時器,使其工作在方式1,產(chǎn)生一個100ms定時中斷,循環(huán)10次,到1s時,秒加1;秒到60時,分加1,秒清零;分到60時,秒清零,分清零。數(shù)碼管采用動態(tài)顯示,一個掃描周期共循環(huán)四次,依次顯示秒的低位、秒的高位、分的低位、分的高位,每次顯示延時4ms。這期間要將不同的數(shù)送到P1口,以及將P2口的不同位置1。調(diào)節(jié)時,

11、調(diào)用相應(yīng)的子程序,來完成功能。3.2單元電路設(shè)計3.2.1動態(tài)顯示驅(qū)動設(shè)計數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃a,b,c,d,e,f,g,dp的同名端連在一起,如圖三所示。圖三圖3.2.2時鐘產(chǎn)生單元52單片機的時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩方式和外部振蕩方式。 在引腳XTAL1和XTAL2外接晶體振蕩器(簡稱晶振)或陶瓷諧振器,就構(gòu)成了內(nèi)部振蕩方式。由于單片機內(nèi)部有一個高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時鐘脈沖。內(nèi)部振蕩方式的外部電路如下圖所示。圖中,電容器Col,C02起穩(wěn)定振蕩頻率、快速起振的

12、作用,其電容值一般在5-30pF。晶振頻率的典型值為12MH2,采用6MHz的情況也比較多。內(nèi)部振蕩方式所得的時鐘情號比較穩(wěn)定,實用電路中使用較多。外部振蕩方式是把外部已有 的時鐘信號引入單片機內(nèi)。這種方式適宜用來使單片機的時鐘與外部信號保持同步。 3.2.3 蜂鳴器電路單元 如圖四所示 3.2.4 動態(tài)顯示控制電路單元 圖5 如圖五所示另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個 數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位

13、就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為12ms。3.2.5按鍵電路單元如圖六所示 功能分配如圖七所示圖六 圖七3.3系統(tǒng)調(diào)試 硬件調(diào)試時可先檢查印制板及焊接的質(zhì)量情況,在檢查無誤后可通電檢查LED顯示器的點亮狀況。若亮度不理想,可以調(diào)整P1口的電阻大小,一般情況下取200電阻即可獲得滿意的亮度效果。 實驗室制作時,可結(jié)合示波器測試晶振及P1,P2端口的波形情況進行綜合硬件測試分析。硬件調(diào)試:硬件調(diào)試是利用DVCC實驗與開發(fā)系統(tǒng)、基本測試儀器(萬用表、示波器等),檢查用戶

14、系統(tǒng)硬件中存在的故障。硬件調(diào)試可分為靜態(tài)調(diào)試與動態(tài)調(diào)試兩步進行。靜態(tài)調(diào)試:是在用戶系統(tǒng)未工作時的一種硬件檢測。第一步:目測。檢查外部的各種元件或者是電路是否有斷點。第二步:用萬用表測試。先用萬用表復(fù)核目測中有疑問的連接點,再檢測各種電源線與地線之間是否有短路現(xiàn)象。第三步:加電檢測。給板加電,檢測所有插座或是器件的電源端是否符合要求的值 第四步:聯(lián)機檢查。因為只有用單片機開發(fā)系統(tǒng)才能完成對用戶系統(tǒng)的調(diào)試。 動態(tài)調(diào)試:是在用戶系統(tǒng)工作的情況下發(fā)現(xiàn)和排除用戶系統(tǒng)硬件中存在的器件內(nèi)部故障、器件連接邏輯錯誤等的一種硬件檢查。動態(tài)調(diào)試的一般方法是由近及遠、由分到合。由分到合是指首先按邏輯功能將用戶系統(tǒng)硬件

15、電路分為若干塊,當(dāng)調(diào)試電路時,與該元件無關(guān)的 器件全部從用戶系統(tǒng)中去掉,這樣可以將故障范圍限定在某個局部的電路上。當(dāng)各塊電路無故障后,將各電路逐塊加入系統(tǒng)中,在對各塊電路功能及各電路間可能存在的相互聯(lián)系進行調(diào)試。由分到合的調(diào)試既告完成。由近及遠是將信號流經(jīng)的各器件按照距離單片機的邏輯距離進行由近及遠的分層,然后分層調(diào)試。調(diào)試時,仍采用去掉無關(guān)元件的方法,逐層調(diào)試下去,就會定位故障元件了。軟件調(diào)試:軟件調(diào)試是通過對程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程??梢岳梅抡嫫骷右哉{(diào)試,對系統(tǒng)單個單元進行調(diào)試,當(dāng)單元電路成功后,在對整個程序調(diào)試,最后在用CPU芯片調(diào)

16、試。3.4系統(tǒng)設(shè)計 要用到實現(xiàn)要求的功能,需要16個鍵,0-9,+,-,*,/,清零鍵考慮到要有兩位小數(shù)顯示,至少需要4個七段數(shù)碼管,但設(shè)計時應(yīng)用了六個數(shù)碼管,倒數(shù)第二位小數(shù)點直接接地,一直顯示小數(shù)點亮。3.5程序流程圖如圖3.6系統(tǒng)實施根據(jù)原理圖列寫原件清單,領(lǐng)取所需的元件,板子和工具(烙鐵,鉗子,萬用表,螺絲刀,剪刀),去試驗臺焊電路板。焊完板子,通過軟硬結(jié)合的方式對電路板進行硬件調(diào)試,硬件沒錯誤之后,開始進行軟件編程,直到整個功能實現(xiàn),并進行優(yōu)化。4. 總結(jié)通過這兩周的課程設(shè)計,我了解了設(shè)計電路的程序,也了解了數(shù)字計算器的工作原理和設(shè)計理念,加強了我們動手、思考和解決問題的能力。在此次的

17、數(shù)字計算器設(shè)計過程中,我熟悉了單片機芯片的硬件結(jié)構(gòu)和各引腳的功能。這次課程設(shè)計給我的最大感受就是僅僅學(xué)理論知識是不夠的,必須將理論知識和實踐結(jié)合起來,在實踐中應(yīng)用理論知識,從而使其得到更深刻的理解和鞏固,來提高自己的實際運用能力和獨立思考的能力。在設(shè)計的過程中遇到了重重困難,最困難的就是調(diào)試程序,剛開始程序總是不對,不過經(jīng)過多次更改,最后終于成功了。做仿真的時候遇到很多的問題,經(jīng)過同學(xué)們的相互交流和詢問老師,不斷的解決了一些問題,但在硬件上,數(shù)碼管顯示不是令人很滿意,可能是焊接的原因,多次查找也沒能解決,在動手能力方面還需要多加練習(xí)。設(shè)計是一個團隊的任務(wù),我們在一起工作很愉快,互相幫助,互相學(xué)

18、習(xí)。設(shè)計中的很多問題都是老師在老師辛勤、耐心的指導(dǎo)下完成的,同時,我也從老師和同學(xué)們身上學(xué)到了很多知識,在此表示感謝!C語言程序:/ 51單片機4*4鍵盤簡單計算器程序 #include<reg52.h>unsigned char code tab16=0xfd,0xb7,0x0d,0x25,0xb1, 0x61,0x40,0x37,0x00,0x20, 0xa0,0x83,0xa7,0xa1,0x84, 0x8e; /段選碼表unsigned int value1,value2,result;int keyt,key1,tempkey,s;sbit P0.0=P10;sbit P

19、0.1=P11;sbit P0.2=P12;sbit P0.3=P13;void delay(unsigned int z) /延時函數(shù)unsigned int x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);int getkey() /掃描鍵盤并獲得鍵值 int key=0;P2=0xff;if(P2!=0xff)delay(5);while(P2!=0xff)/行掃描有低電平信號出現(xiàn)switch(P2)/則在P2口全輸出高電平的情況下進行列掃描case 0xfe:key=7;break;/得出鍵值case 0xfd:key=8;break;case 0

20、xfb:key=9;break;case 0xf7:key=14;break;if(key) return(key);P2=0xff;while(P2!=0xff)switch(P2)case 0xfe:key=4;break;case 0xfd:key=5;break;case 0xfb:key=6;break;case 0xf7:key=13;break;if(key) return(key);P2=0xff;while(P2!=0xff)switch(P2)case 0xfe:key=1;break;case 0xfd:key=2;break;case 0xfb:key=3;break;

21、case 0xf7:key=12;break; if(key) return(key);P2=0xff;while(P2!=0xff)switch(P2)case 0xfe:key=16;break;case 0xfd:key=10;break;case 0xfb:key=15;break;case 0xf7:key=11;break; return(key);void display(unsigned int value) / 數(shù)碼管顯示函數(shù)unsigned int k4=0; k3=value/1000; /分解整數(shù)各位k2=value%1000/100;k1=value%100/10;k

22、0=value%10while(1)/分別顯示各位if(value>=1000) P0.0=0;P1=k3;P0.1=0;P1=k2;P0.3=0;P1=k1;P0.4=0;P1=k0;if(value>=100) P0.1=0;P1=k2;P0.2=0;P1=k1;P0.3=0;P1=k0;if(value>=10) P0.2=0;P1=k1;P0.3=0;P1=k0;P0.1=0;P1=k0;tempkey=getkey();if(tempkey!=0)key1=tempkey;break;/有鍵按下,則退出循環(huán)向下執(zhí)行/主函數(shù):main()/功能:進行接收數(shù)據(jù)和命令,完成計算器計算流程/注:key=19分別表示按鍵數(shù)字18,key=10表示按鍵數(shù)字0,key=1116/分別代表計算器功能鍵"+" "-" "*" "/" "=" "CE"(清零)main()key1=0; /讀入初值getkey();reset1: s=0;/s代表是否有"上一次計算結(jié)果"reset:value1=result=0;read:if(key1<11&&key1>0)/非功能鍵,則從低到高依次讀

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論