課程設計報告
設計名稱: 簡易計算器 班 級:15 q通信2班 學 號:201524440213 姓 名:xxx 指導教師: 邢*
基于單片機的簡易計算器設計 1設計目的 我所設計的基于ATMEL公司AT89C52單片機的簡易計算器,是利用該51單片機和數(shù)碼管顯示設計的簡易計算器。 本設計滿足計算器的基本要求,可以基本的運算(加減乘除),數(shù)據(jù)歸零,利用51系列單片機設計符合功能的計算器,并用LED碼管顯示數(shù)據(jù),4*4的矩陣鍵盤實現(xiàn)數(shù)據(jù)輸入,同時,可以在流水燈處顯示出相應數(shù)字。在進行運算時,按等號鍵能將最后結果輸送給數(shù)碼管并顯示出來。設計仿真和調試要用到Protues、Keil等軟件。 通過對簡易計算器的設計制作與調試,學習掌握
- 單片機系統(tǒng)的整體設計流程;
- 單片機系統(tǒng)的硬件、軟件調試方法及相關工具的使用;
- Protues繪制電路原理圖的方法
- 各種常見元器件的選擇及使用。
2 設計方案 本設計采用以AT89C52單片機為核心的低成本、高精度、微型化數(shù)字顯示簡易計算器的硬件電路和軟件設計方法。整個電路采用模塊化設計,由主程序、按鍵子程序、延時子程序、顯示子程序等模塊組成。在此基礎上設計了系統(tǒng)的總體方案,最后通過硬件和軟件實現(xiàn)了各個功能模塊,利用軟件方面使用C語言編程,并用Protues仿真。 (1)硬件設計: 單片機微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領域,故又稱為微控制器。通常,單片機由單塊集成電路芯片構成,內(nèi)部包含有計算機的基本功能部件:中央處理器、存儲器和I/O接口電路等。因此,單片機只需要和適當?shù)能浖巴獠吭O備相結合,便可成為一個單片機控制系統(tǒng)。 通常,單片機由單個集成電路芯片構成,內(nèi)部包含有計算機的基本功能部件,中央處理器,存儲器和I/O接口電路等。因此,單片機只需要和適當?shù)能浖巴獠吭O備相結合,便可成為一個單片機控制系統(tǒng)。隨著社會的發(fā)展,科學的進步,人們的生活水平在逐步的提高,尤其是微電子技術的發(fā)展,猶如雨后春筍般的變化。單片機的應用已經(jīng)越來越貼近生活,用單片機來實現(xiàn)一些電子設計也變得容易起來。計算器在人們的日常中是比較的常見的電子產(chǎn)品之一。可是它還在發(fā)展之中,以后必將出現(xiàn)功能更加強大的計算器,基于這樣的理念,本次設計是用單片機來設計的計算器。 1.系統(tǒng)模塊圖為: 簡易計算器按模塊可化分為: ·1 單片機主控芯片 ·2 矩陣鍵鍵 ·3 數(shù)碼管顯示 ·4 點亮發(fā)光二極管 2.引腳圖: 3.最小系統(tǒng)原理圖: 最小系統(tǒng)由復位電路、輸入輸出設備、電源和單片機芯片組成。 4.共陰極數(shù)碼管引腳接線: 5.數(shù)碼管顯示部分的實現(xiàn): 數(shù)碼管通過PO口輸入高低電平控制每個LED燈的亮滅,公共端接地線P0口接1K的上拉電阻。由于并未用到小數(shù)點顯示,所以DP引腳懸空。 
6.計算器用到的數(shù)字0-9的共陰極字形代碼: 7.數(shù)碼管與單片機連接圖: (2)軟件設計 顯示程序 初始化-->寫命令-->寫數(shù)據(jù) *將各類函數(shù)聲明都寫到同一個頭文件中,方便查看各個函數(shù)的參數(shù)以及功能 主控芯片如圖 
4.軟件程序 
5調試結果及說明 (1)鍵盤對應有效值表
(2)使用說明 鍵盤分布如上圖所示,該計算器可以計算簡單的256以內(nèi)的加減乘除運算,右側復位鍵為“清零”。 - 上電后,屏幕初始化。
- 計算。按下數(shù)字鍵,屏幕顯示要運算的第一個數(shù)字,再按下符號鍵,然后再按下 數(shù)字鍵,屏幕顯示要運算的第二個數(shù)字,最后按下“﹦”號鍵,屏幕上顯示出計算結果。
如果要再次計算,可以按下“ON/C”鍵清零,或者按下單片機的復位鍵,重新初始化。 (3)實物圖 例如11*11=121 
最大的數(shù)字到 
| 通過這次單片機課程設計,不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且還學會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的基礎上進行改進,使之功能不斷完善,成為真己的東西。設計結果能夠符合題意,成功完成了此次課程設計要求,不只在乎這一結果,更加在乎的,是這個過程。這個過程中,花費了大量的時間和精力。在老師的精心指導和嚴格要求下,獲得了豐富的理論知識,極大地提高了實踐能力,單片機領域這對我今后進一步學習及工作有極大的幫助。 然而我們也有許多不足之處。在軟件編程時一定要考慮周到,要有耐心要仔細。還要與硬件相聯(lián)系起來,脫離了實物一切都是假的。在理論上往往是可行的,然而當把程序燒入芯片,進行調試時就會遇到這樣那樣的的問題。最糟的是當我們辛苦把實物完成,而那電路有完全沒反應,與我們的設想完全不同,而我們又不知道是軟件問題還是硬件問題時,就要靜下心來,一步一步來,從硬件的芯片開始檢查是否短路等等,而軟件又要不斷地進行仿真調試。然而我們遇到的問題除了焊接時可能導致的短路外,還應電壓不穩(wěn)定或過大而導致芯片被燒毀,總而言之,我們還是缺少對芯片和各種器件的了解,無法準確的判斷出什么樣的現(xiàn)象將是由原因引起的。 以后還是要努力學習基礎知識,把基礎知識理解透徹,去更好的應用和實踐。 |
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit dula=P2^6;
- sbit wela=P2^7;
- sbit beep=P2^3;
- uchar qian,hou;
- uchar a0=16,b0=16,c0=16,d0=16,e0=16,f0=16,wei,temp,key,i,j,k;
- uchar jia,jian,cheng,chu,dengyu,jia0,jian0,cheng0,chu0,qingling;
- uchar s0,s1,s2,s3,s4,s5;
- void delay(uchar xms);
- void display();
- void keyscan();
- void display0();
- uchar code table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71,0x00};
- void delay(uchar xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
- {
- dula=0;
- P0=table[a];
- dula=1;
- dula=0;
-
- wela=0;
- P0=0xfe;
- wela=1;
- wela=0;
- delay(5);
-
- P0=table[b];
- dula=1;
- dula=0;
-
- P0=0xfd;
- wela=1;
- wela=0;
- delay(5);
-
- P0=table[c];
- dula=1;
- dula=0;
-
- P0=0xfb;
- wela=1;
- wela=0;
- delay(5);
-
- P0=table[d];
- dula=1;
- dula=0;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
完整的Word格式文檔51黑下載地址:
基于單片機的簡易計算器的課程設計.doc
(987 KB, 下載次數(shù): 186)
2018-6-18 16:36 上傳
點擊文件名下載附件
基于單片機的簡易計算器的設計報告
|