版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《 單片機應用 》</p><p><b> 課程設(shè)計報告</b></p><p> 題 目: 簡易計算器的設(shè)計 </p><p> 院 (系): 信息科學與技術(shù) </p><p> 專業(yè)班級:
2、 </p><p> 20 12 年 6 月 11 日至20 12 年 6 月 15 日</p><p> 課程設(shè)計報告撰寫內(nèi)容、格式與成績評定</p><p> 一、課程設(shè)計報告的撰寫內(nèi)容與要求</p><p> 1.課程設(shè)計總結(jié)報告應包括:前言、基本原理或理論、設(shè)計計算書或?qū)嶒瀳蟾?、結(jié)論、圖紙
3、(框圖、流程圖)、參考資料等;或調(diào)查、訪談報告、調(diào)查問卷、調(diào)查提綱等。</p><p> 2.課程設(shè)計總結(jié)報告應書寫工整,文句通順、精煉、邏輯性強,圖紙和曲線的繪制應符合規(guī)范。</p><p> 3.調(diào)查型課程設(shè)計應根據(jù)調(diào)查結(jié)果撰寫調(diào)查報告。調(diào)查報告內(nèi)容包括:題目、參加時間、地點、方式、過程、調(diào)查對象一般情況、調(diào)查內(nèi)容、發(fā)現(xiàn)的問題、調(diào)查結(jié)果和調(diào)查分析及體會等。調(diào)查報告要求語言簡練、準確
4、;敘述清楚、明白;數(shù)據(jù)、資料可靠;結(jié)論有理、有據(jù)。</p><p> 4.圖紙應布局合理,比例恰當,線條分明,字體工整,符合國家制圖標準。</p><p> 5.課程設(shè)計報告字數(shù)要求:理工、藝術(shù)類不少于2000字,其他專業(yè)不少于3000字。</p><p> 二、課程設(shè)計成績評定</p><p> 1.學生的課程設(shè)計成績由平時成績、業(yè)
5、務考核成績兩部分組成,均為百分制記分,其中平時成績占總成績的30%,業(yè)務考核成績占70%。業(yè)務考核含設(shè)計報告(計算說明書、調(diào)查提綱、調(diào)查問卷等)、繪制的圖紙、編制的軟件、制作的模型、撰寫的論文或問卷統(tǒng)計、調(diào)查分析等的完成及質(zhì)量情況;平時成績含設(shè)計表現(xiàn)、到課率等。</p><p> 2. 教師按學生實際成績(百分制,含平時成績和業(yè)務考核成績兩部分)登記并錄入教務MIS系統(tǒng),由系統(tǒng)自動轉(zhuǎn)化為“優(yōu)秀(90~100分)
6、、良好(80~89分)、中等(70~79分)、及格(60~69分)和不及格(60分以下)”五等。</p><p><b> 目 錄</b></p><p> 1.課程設(shè)計的目的2</p><p> 2.課程設(shè)計題目描述和要求2</p><p> 3.課程設(shè)計報告內(nèi)容2</p><p&g
7、t; 3.1 課題設(shè)計方案及基本原理3</p><p> 3.2 軟件設(shè)計3</p><p><b> 3.3 調(diào)試3</b></p><p><b> 4.總結(jié)3</b></p><p><b> 參考資料3</b></p><p
8、> 附錄1電路原理圖5</p><p> 附錄2 硬件實物圖6</p><p> 附錄3 源程序清單6</p><p><b> 1 課程設(shè)計的目的</b></p><p> 通過對簡易計算器的安裝調(diào)試,需學習掌握:</p><p> 單片機系統(tǒng)的整體設(shè)計流程。</p
9、><p> 單片機系統(tǒng)的硬件、軟件調(diào)試方法及相關(guān)工具的使用。</p><p> Protel繪制電路原理圖的方法。</p><p> 各種常見元器件的選擇及使用。</p><p> 2 課程設(shè)計題目描述和要求</p><p> 題目描述:簡易計算器的設(shè)計</p><p> 制作要求:用
10、80C51/52單片機小系統(tǒng)編程制作的簡易計算器。</p><p> ?。?) 要有4位LED顯示器。</p><p> ?。?) 要有0—9個數(shù)字輸入按鍵,和功能按鍵分別是 “+”,“-”,“*”,“/”,“=” “CLR”,“RET”。即“加法”,“減法”,“乘法”,“除法”,“等于”,“清除” ,“修改”</p><p> (3) 顯示過程:實驗板通電開機后
11、,第一位LED顯示器顯示“0”,按下相應數(shù)字,在按運算鍵“+ 、- 、*、/ ”后,再按第一組數(shù)字,繼續(xù)按下“=”即可顯示整數(shù)運算結(jié)果。按“清除鍵”,清除當前LED顯示器上的全部數(shù)字,按“修改鍵” ,清除當前LED顯示器上右邊的一個數(shù)字。</p><p> ?。?) 能夠正確安裝和焊接硬件電路板。拿到元器件后,用萬用表對電子元器件進行參數(shù)測量、檢查。焊接時,要焊點飽滿、光潔,無虛焊、漏焊、錯焊。</p&
12、gt;<p> ?。?) 熟悉單片機系統(tǒng)的工作原理及調(diào)測方法。軟硬件安裝調(diào)測完成后根據(jù)系統(tǒng)的工作原理、過程、測試數(shù)據(jù)及遇到的問題與處理情況、體會等完成課設(shè)報告。</p><p> 3 課程設(shè)計報告內(nèi)容</p><p> 3.1 課題設(shè)計方案及基本原理</p><p> 方案:按照系統(tǒng)設(shè)計的功能的要求,初步確定設(shè)計系統(tǒng)由主控模塊、顯示模塊、錯誤
13、報警模塊、鍵掃描接口電路共四個模塊組成,電路系統(tǒng)構(gòu)成框圖如圖1.1所示。主控芯片使用51系列AT89C52單片機,采用高性能的靜態(tài)80C51設(shè)計,由先進工藝制造,并帶有非易失性Flash程序存儲器。它是一種高性能、低功耗的8位COMS微處理芯片,市場應用最多。由于單片機是可編程芯片,并且它可以運用C語言編寫,對于一些復雜的計算功能,可以調(diào)用C語言庫函數(shù)。使編寫程序變得非常簡單。</p><p> 數(shù)碼管點亮原理
14、:顯示模塊采用4枚二位一體共陰極數(shù)碼管和譯碼芯片4511和4028,反向驅(qū)動芯片2003。4511輔助單片機對數(shù)碼管進行段選,單片機的p1口的低四位用來控制4511作段選。4028四十譯碼器輔助單片機對數(shù)碼管進行位選,單片機的p1口的高四位用來控制4028的輸入端作位選。實驗中采用的數(shù)碼管是共陰極的,位選低電平表示選中,電路圖中有反向驅(qū)動芯片接在數(shù)碼管與4028之間,故4028輸出的高電平的引腳即為被點亮的數(shù)碼管。通過給p1口賦值,位選
15、段選結(jié)合起來便可以實現(xiàn)數(shù)碼管的各種點亮方式。</p><p> 按鍵檢測原理:通過p2口和p0口與按鍵地相連,即16個按鍵分別由16個端口控制。由于按鍵沒按下時為高電平,當有按鍵按下時為低電平,通過檢測p2,p0口的數(shù)值便可以判斷出哪個按鍵被按下了。</p><p><b> 3.2 軟件設(shè)計 </b></p><p><b>
16、 3.3 調(diào)試 </b></p><p> 在焊接好器件后,先不要將芯片插在芯片座上,要先驗證先板上電源是否好用,有無短路等。接上USB電源,用萬用表測量個芯片座對應電源和地之間的電壓值,觀察電壓值是否正常。一切正常后方可將芯片插入芯片座,以繼續(xù)測試其他功能。將芯片插上后,對各個模塊進行調(diào)試,按鍵是否工作正常,數(shù)碼管是否顯示正常等。編寫相關(guān)部分的測試程序?qū)ζ溥M行測試。各部分硬件檢測無誤后,下載程序
17、進行整體調(diào)試,一切正常后,結(jié)束調(diào)試過程。在此過程中我的顯示出現(xiàn)問題,分析原因后發(fā)現(xiàn)原來是在一維數(shù)組定義值是順序剛好顛倒了,改正后,從新燒錄程序,一切正常,可以連著運算,達到了課程設(shè)計的要求。</p><p><b> 4 總結(jié)</b></p><p> 從大二開始進入電子愛好者協(xié)會,便開始接觸有關(guān)單片機的知識,是通過匯編語言來編程,那是接觸起來真的是好難,然后通過
18、學習微機原理,尤其是這學期的單片機讓自己對匯編語言有了更深一步的了解,以及對單片機的外圍設(shè)施有了更深入的認識,然后由于要參加電子競賽,慢慢的開始用C編程。通過這些學習才讓我很快的完成了這次實驗報告。</p><p> 這次的課程設(shè)計是設(shè)計簡易的計算器,編程時確實遇到了不少的問題,首先你要有很好的邏輯思維能力,必須考慮到各種變量,在編程中通過設(shè)置標志位起到很大的作用,可以說標志位在C編程中很重要。另外在顯示子程序
19、中,由于</p><p> 電路中是用譯碼器作為段選的,所以顯示程序必須根據(jù)電路來設(shè)計,先把段選送到P1口的低四位,然后再把位選送到P1口的高四位,然后通過P1口來控制顯示,而在這里面就有一個問題,即如何將兩個變量的高四位和低四位合在一起然后送P1口,最后我用的方法是設(shè)置幾個一維數(shù)組,然后通過邏輯運算與,合成八位送至P1口,當然要特別注意數(shù)組里的數(shù)值順序,因為很可能導致顯示的數(shù)碼管位置錯誤,我就出現(xiàn)了這種錯誤。
20、</p><p> 然后要特別注意對數(shù)值的定義,因為Unsigned int 的數(shù)值范圍為0~65535,而unsigned long int 的數(shù)值范圍為0~4294967295,而我們的數(shù)碼管是八位的,顯然是定義unsigned long int。當然在鍵盤掃描子程序中要特別注意防抖動,這主要通過延時再判斷,對延時也有很高的要求,不能太短也不能太長。時間長了會導致按鍵反應太慢,而太短就起不到防抖的作用。&l
21、t;/p><p><b> 參考文獻</b></p><p> [1] 姜志海.單片機原理及應用.北京:電子工業(yè)出版社,2007.</p><p> [2] 康華光.電子技術(shù)基礎(chǔ)模擬部分,北京:高等教育出版社,2003.</p><p> [3] 陳青.單片機應用課程設(shè)計指導書.武漢:華中科技大學武昌分校.&l
22、t;/p><p> [4] 譚浩強《C程序設(shè)計》 清華大學出版社</p><p> [5] 郭天祥 《51單片機C語言教程》 電子工業(yè)出版社</p><p><b> 附錄1電路原理圖</b></p><p><b> 附錄2 硬件實物圖</b></p&
23、gt;<p><b> 附錄3 源程序清單</b></p><p> #include <reg52.H></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> #define
24、key0 P0 </p><p> #define key2 P2 //鍵盤接口定義 </p><p> unsigned long int shu1,shu2; //進行運算的兩個變
25、量數(shù)</p><p> uchar num; //鍵盤掃描返回值</p><p> char flag_shu,flag_fuhao,fuhao,newkey,update;//newkey新按鍵標志,fuhao運算符,update
26、表示等于號之后緊接著輸入的是數(shù)的話則清零shu1</p><p> char key_shu;//按鍵值</p><p> unsigned char code Wela[]={0x70,0x60,0x50,0x40,0x30,0x20,0x10,0x00};</p><p> unsigned char code Duan[]={0x00
27、,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; </p><p> uchar keyscan(); //鍵盤掃描函數(shù)</p><p> void display(unsigned long int ); //數(shù)碼管顯示函數(shù)<
28、;/p><p> void delay(uint i) //延時函數(shù)</p><p><b> {</b></p><p> while(i--);</p><p><b> }</b></p><p>
29、 /*********************************************** </p><p><b> 主函數(shù)</b></p><p> ************************************************/</p><p> void main()</p><p
30、><b> {</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> if(keyscan()==15)//開機檢測</p><p><b> {</b></p>
31、<p> shu1=shu2=fuhao=flag_shu=newkey=0;//初始化變量</p><p><b> while(1)</b></p><p> { if(!flag_fuhao)</p><p> display(shu1);</p><p> else display(shu
32、2);</p><p> key_shu=keyscan();</p><p> if(newkey==1) //有新鍵值</p><p> { if(key_shu==15) //按下ON/C鍵,清零</p><p> {flag_fuhao=0;update=0;</p><p
33、> shu1=shu2=fuhao=flag_shu=newkey=0;</p><p><b> }</b></p><p> else if(key_shu==14&&flag_shu==1&&fuhao)//按下"="</p><p> {switch(fuhao)<
34、;/p><p><b> {</b></p><p> case 10:shu1=shu2+shu1;break;</p><p> case 11:shu1=shu2-shu1;break;</p><p> case 12:shu1=shu2*shu1;break;</p><p> c
35、ase 13:shu1=shu2/shu1;break;</p><p><b> }</b></p><p> fuhao=0;flag_fuhao=0;update=1;</p><p><b> }</b></p><p> else if((key_shu>=0)&&a
36、mp;(key_shu<=9))//按下數(shù)字鍵</p><p> {flag_fuhao=0;</p><p> if(update)</p><p><b> shu1=0;</b></p><p> if(shu1<100000000)</p><p> {shu1=
37、key_shu+shu1*10;</p><p> flag_shu=1;</p><p><b> }</b></p><p><b> update=0;</b></p><p><b> }</b></p><p> else if((k
38、ey_shu>=10)&&(key_shu<=13)) //按下運算符</p><p><b> {</b></p><p> flag_fuhao=1;update=0;</p><p> if(flag_shu==1)</p><p><b> {</b>
39、</p><p> if(fuhao==0)</p><p><b> {</b></p><p> shu2=shu1;shu1=0;</p><p> fuhao=key_shu;flag_shu=2;</p><p><b> }</b></p>
40、<p><b> else </b></p><p><b> {</b></p><p> switch(fuhao)</p><p><b> {</b></p><p> case 10:shu2=shu2+shu1;break;</p>
41、<p> case 11:shu2=shu2-shu1;break;</p><p> case 12:shu2=shu2*shu1;break;</p><p> case 13:shu2=shu2/shu1;break;</p><p><b> }</b></p><p> shu1=0;f
42、uhao=key_shu;</p><p><b> }</b></p><p><b> }</b></p><p> else if(flag_shu==2) </p><p> fuhao=key_shu; //按鍵值</p><p><b&
43、gt; }</b></p><p> newkey=0;</p><p><b> }}}}}</b></p><p> ///////////////鍵盤掃描/////////////////</p><p> uchar keyscan()</p><p><b
44、> {</b></p><p> key0=0xff;</p><p> if(key0!=0xff)</p><p><b> {</b></p><p> delay(500);</p><p> if(key0!=0xff)</p><p&g
45、t;<b> { </b></p><p> switch(key0)</p><p><b> {</b></p><p> case 0xfe:num=7;break;</p><p> case 0xfd:num=8;break;</p><p>
46、 case 0xfb:num=9;break;</p><p> case 0xf7:num=13 ;break; // /</p><p> case 0xef:num=4;break;</p><p> case 0xdf:num=5;break;</p><p> case 0xbf:num=6;break;</
47、p><p> case 0x7f:num=12;break; // *</p><p><b> }</b></p><p><b> newkey=1;</b></p><p> delay(500);</p><p> while(key0!=0xff)</
48、p><p><b> {</b></p><p> if(!shu1&&num>=0&&num<=9)</p><p> display(num);</p><p><b> else</b></p><p> display
49、(shu1);</p><p><b> }</b></p><p> return num;</p><p><b> }</b></p><p><b> }</b></p><p> key2=0xff;</p><
50、;p> if(key2!=0xff)</p><p><b> {</b></p><p> delay(500);</p><p> if(key2!=0xff)</p><p><b> {</b></p><p> switch(key2)</p
51、><p><b> {</b></p><p> case 0xfe:num=10 ;break;</p><p> case 0xfd:num=14 ;break; //=</p><p> case 0xfb:num=0 ;break;</p><p> case 0xf
52、7:num=15 ;break; //ON/C</p><p> case 0xef:num=11 ;break;//- </p><p> case 0xdf:num=3 ;break;</p><p> case 0xbf:num=2 ;break;// =</p><p> case 0x7f:num=1
53、 ;break;// + </p><p><b> }</b></p><p><b> newkey=1;</b></p><p> delay(500);</p><p> while(key2!=0xff)</p><p><b> {&l
54、t;/b></p><p> if(!shu1&&num>=0&&num<=9)</p><p> display(num);</p><p><b> else</b></p><p> display(shu1);</p><p>&l
55、t;b> }</b></p><p> return num;</p><p><b> }</b></p><p><b> }</b></p><p> return 100;</p><p><b> }</b>
56、</p><p> //////////////////顯示函數(shù)////////////////</p><p> void display(unsigned long int dis_shu)</p><p> {uchar dis_flag,dis_aa;</p><p> uchar dis_data[10]={0,0,0,0
57、,0,0,0,0,0,0};</p><p> if(dis_shu>9999999) dis_flag=8;</p><p> else if(dis_shu>999999) dis_flag=7;</p><p> else if(dis_shu>99999) dis_flag=6;</p><p> else
58、if(dis_shu>9999) dis_flag=5;</p><p> else if(dis_shu>999) dis_flag=4;</p><p> else if(dis_shu>99) dis_flag=3;</p><p> else if(dis_shu>9) dis_flag=2;</p><p&
59、gt; else dis_flag=1; </p><p> for(dis_aa=0;dis_aa<dis_flag;dis_aa++)</p><p><b> { </b></p><p> dis_data[dis_aa]=dis_shu%10;</p><p> dis_shu=dis_
60、shu/10;</p><p><b> }</b></p><p> for(dis_aa=0;dis_aa<dis_flag;dis_aa++)</p><p><b> { </b></p><p> P1=Duan[dis_data[dis_aa]]| Wela[dis_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計--計算器
- 單片機課程設(shè)計-計算器
- 課程設(shè)計-單片機計算器
- 單片機課程設(shè)計——計算器設(shè)計
- 單片機課程設(shè)計--簡易計算器
- 單片機課程設(shè)計簡易計算器
- 單片機課程設(shè)計---計算器實驗
- 單片機課程設(shè)計-簡易計算器
- 單片機課程設(shè)計簡易計算器
- 單片機課程設(shè)計報告---計算器
- 單片機課程設(shè)計--簡易計算器
- 基于單片機的計算器設(shè)計-單片機課程設(shè)計
- 單片機系統(tǒng)設(shè)計課程設(shè)計--計算器
- 51單片機計算器設(shè)計課程設(shè)計
- 課程設(shè)計---單片機簡易計算器設(shè)計
- 單片機課程設(shè)計報告---簡易計算器
- 單片機課程設(shè)計報告計算器2
- 單片機課程設(shè)計報告-簡易計算器
- 計算器單片機技術(shù)課程設(shè)計
- 單片機課程設(shè)計--簡易數(shù)字計算器
評論
0/150
提交評論