久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7410|回復: 2
打印 上一主題 下一主題
收起左側

單片機簡易計算器課程設計

[復制鏈接]
跳轉到指定樓層
樓主
ID:268836 發表于 2017-12-29 13:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機課程設計
題目:  簡易計算器的設計






院 系:信息工程學院
班  級: 自動化1  
姓  名:黃浩
學  號:           2010550123   
指導教師                 


目錄

1 設計說明.... 1
1.1 設計內容.... 1
1.2 設計要求.... 1
1.3設備及工作環境.... 1
2 硬件方案.... 1
2.1 設計思路.... 1
2.2 原理電路圖.... 2
2.3 主要元件功能說明.... 2
2.4 硬件工作原理闡述.... 7
3 軟件方案.... 8
3.1 分析論證.... 8
3.2 程序流程圖.... 9
3.3 程序清單.... 10
4 調試過程及結果分析..... 16
5 設計總結..... 16
參考文獻..... 16


1.設計說明
1.1設計內容
本次的設計是利用單片機設計簡單的計算器,本設計利用單片機的I/O接口設計2×4鍵盤,8個鍵依次對應0~3、“+”、“-”、“=”和清除鍵。通過檢測不同數字鍵、功能鍵的按下,可以進行小于255的數的加減乘除運算,并可連續運算。當鍵入值大于255時,將自動清零,可以重新輸入。對應每一個數字鍵按下的同時,LED顯示按下鍵的值,并顯示最后的運算結果。
1.2設計要求
要求能實現小于255的數的加減運算,采用2×4鍵盤,8個鍵依次對應0~3、“+”、“-”、“=”和清除鍵。根據輸入鍵的按下實現不同的功能,最終結果通過LED顯示。
1.3設備及工作環境
8051單片機一片、七段四顯示數碼管一個、排阻一個、導線若干、12MHz晶振一個、30pF電容兩個
所有設備均工作在常溫下(0℃~70℃)
2.硬件方案
2.1設計思路
本設計利用單片機的I/O接口設計2×4鍵盤,兩行四列分別由單片機的P2.4\P2.5及P2.0-P2.3輸入輸出數據。采用P0口和P1.0-P1.3輸出數據到數碼管顯示由鍵盤輸入的數據及最終計算結果。
2.2原理電路圖
圖2.1 硬件電路圖
2.3主要元件功能說明
2.3.1單片機概述
單片機微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領域,故又稱為微控制器。
通常,單片機由單塊集成電路芯片構成,內部包含有計算機的基本功能部件:中央處理器、存儲器和I/O接口電路等。因此,單片機只需要和適當的軟件及外部設備相結合,便可成為一個單片機控制系統。
單片機經過1、2、3,3代的發展,目前單片機正朝著高性能和多品種方向發展,它們的CPU功能在增強,內部資源在增多,引腳的多功能化,以及低電壓低功耗。
2.3.2芯片簡介
MSC-51芯片簡介:
8051單片機包含中央處理器、程序存儲器(ROM)、數據存儲器(RAM)、定時/計數器、并行接口、串行接口和中斷系統等幾大單元及數據總線、地址總線和控制總線等三大總線,現在我們分別加以說明:
中央處理器:
中央處理器(CPU)是整個單片機的核心部件,是8位數據寬度的處理器,能處理8位二進制數據或代碼,CPU負責控制、指揮和調度整個單元系統協調的工作,完成運算和控制輸入輸出功能等操作。
數據存儲器(RAM):
8051內部有128個8位用戶數據存儲單元和128個專用寄存器單元,它們是統一編址的,專用寄存器只能用于存放控制指令數據,用戶只能訪問,而不能用于存放用戶數據,所以,用戶能使用的RAM只有128個,可存放讀寫的數據,運算的中間結果或用戶定義的字型表。   
定時/計數器(ROM)
8051有兩個16位的可編程定時/計數器,以實現定時或計數產生中斷用于控制程序轉向。
并行輸入輸出(I/O)口:
8051共有4組8位I/O口(P0、 P1、P2或P3),用于對外部數據的傳輸。
全雙工串行口:
8051內置一個全雙工串行通信口,用于與其它設備間的串行數據傳送,該串行口既可以用作異步通信收發器,也可以當同步移位器使用。
中斷系統:
8051具備較完善的中斷功能,有兩個外中斷、兩個定時/計數器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優先級別選擇。
時鐘電路:
8051內置最高頻率達12MHz的時鐘電路,用于產生整個單片機運行的脈沖時序,但8051單片機需外置振蕩電容。
圖2.2 單片機結構圖
MCS-51的引腳說明:
MCS-51系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結構,下圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復用。現在我們對這些引腳的功能加以說明:如圖2.3
圖2.3單片機引腳圖
Pin9:RESET/Vpd復位信號復用腳,當8051通電,時鐘電路開始工作,在RESET引腳上出現24個時鐘周期以上的高電平,系統即初始復位。初始化后,程序計數器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統即從0000H地址開始執行程序。然而,初始復位不改變RAM(包括工作寄存器R0-R7)的狀態,8051的初始態。
8051的復位方式可以是自動復位,也可以是手動復位,見圖2.4。此外,RESET/Vpd還是一復用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機內部RAM的數據不丟失。
                 
圖2.4單片機復位電路
Pin30:ALE/當訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節。而訪問內部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當作一個時鐘向外輸出。更有一個特點,當訪問外部程序存儲器,ALE會跳過一個脈沖。
如果單片機是EPROM,在編程其間,將用于輸入編程脈沖。
Pin29:當訪問外部程序存儲器時,此腳輸出負脈沖選通信號,PC的16位地址數據將出現在P0和P2口上,外部程序存儲器則把指令數據放到P0口上,由CPU讀入并執行。
Pin31:EA/Vpp程序存儲器的內外部選通線,8051和8751單片機,內置有4kB的程序存儲器,當EA為高電平并且程序地址小于4kB時,讀取內部程序存儲器指令數據,而超過4kB地址則讀取外部指令數據。如EA為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內部無程序存儲器的8031,EA端必須接地。
在編程時,EA/Vpp腳還需加上21V的編程電壓。
2.3.3相關知識
  數碼管顯示
在本任務中用4位數碼管顯示當前數值的千,百,十,個,由于數碼管個數多,如采用靜態顯示方式,則占用單片機的I/O口線太多,如果用定時器/計數器的串行移位寄存器工作方式及外接串入并出移位寄存器74LS164的方式,則電路復雜。所以,在數碼管個數較多時,常采用動態顯示方式。
如圖2.1所示為單片機應用系統中的一種數碼管動態顯示電路圖,4位數碼管的相同段并聯在一起,由一個8位I/O(P1口)輸出字形碼控制顯示某一字形,每個數碼管的公共端由另外一個I/O口(P0口)輸出的字位碼控制,即數碼管顯示的字形是由單片機I/O口輸出的字形碼確定,而哪個數碼管點亮是由單片機I/O口輸出的字位碼確定的。4個數碼管分時輪流循環點亮,在同一時刻只有1個數碼管點亮,但由于數碼管具有余輝特性及人眼具有視覺暫留特性,所以適當地選取循環掃描頻率,看上去所有數碼管是同時點亮的,察覺不出閃爍現象。動態顯示方式所接數碼管不能太多,否則會因每個數碼管所分配的實際導通時間太少,使得數碼管的亮度不足。在本任務中,為了簡便,字形碼和字位碼都沒由加驅動電路,在實際應用中應加驅動電路。數碼管有共陰極和共陽極兩種,對于共陽數碼管,字形驅動輸出0有效,字位驅動輸出1有效;而對于共陰數碼管則相反,即:字形驅動輸出1有效,字位驅動輸出0有效。
矩陣按鍵
鍵盤是單片機系統中最常用的人機對話輸入設備,用戶通過鍵盤向單片機輸入數據或指令。鍵盤控制程序需完成的任務有:監測是否有鍵按下,有鍵按下時,在無硬件去抖的動電路時,應用軟件延時方法消除按鍵抖動影響;當有多個鍵同時按下時,只處理一個按鍵,不管一次按鍵持續多長時間,僅執行一次按鍵功能程序。
矩陣按鍵掃描程序是一種節省I/O口的方法,按鍵數目越多節省I/O口就越可觀,思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那一只鍵按下。但是,在程序的寫法上,采用了最簡單的方法,使得程序效率最高。本程序中,如果檢測到某鍵按下了,就不再檢測其它的按鍵,這完全能滿足絕大多數需要,又能節省大量的CPU時間。
本鍵盤掃描程序的優點在于:不用專門的按鍵延時程序,提高了CPU效率,也不用中斷來掃描鍵盤,節省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用CPU時最短,不論有鍵按下或者無鍵按下都可以在很短的時間完成一次掃描。
2.4 硬件工作原理闡述
8051單片機的P2口作鍵盤口,其中P2.4-P2.5為鍵盤掃描輸出線,P2.0-P2.3為鍵盤掃描輸入線。鍵盤由2*4共8個按鍵組成,4個數字鍵(由0-3組成)3個運算符號(加減等于)組成,1個清除鍵(作用相當于整體復位)。4個數碼管用于顯示當前數值的千,百,十,個,采用動態顯示方式,P1口接4個數碼管的七段,P0口分別接4個數碼管的公共端,P1口輸出數碼管的字形碼,P0口輸出數碼管的字位碼。
3.軟件方案
3.1 分析論證
程序工作過程如下:
(1)首先賦予顯示緩沖初始值‘00 00’,并把數據存儲單元清零。
(2)主程序調用鍵盤掃描子程序,判斷鍵值,是數字第一次直接賦予23H單元,如是第二次輸入數字,則把第一次值乘十后與第二次值相加,結果存儲到23H單元,并R4計數2次,表示已輸入兩位,掃描鍵值時就不再賦值和顯示。等待運算符號的按下,按下等于號就直接計算并顯示,如加減就R5加一并把R4清零,表示可以輸入下一操作數,與第一次相同,并等待等于鍵按下。清零鍵則不管在任何情況下都清零,相當于軟復位。
(3)在掃描完鍵盤后,調用數據顯示轉換子程序把值轉換為七段碼。
(4)調用數碼管動態顯示子程序,顯示數值,重新循環
3.2 程序流程圖
3.3 程序清單
3.3.1存儲單元分配
30H單元:數值個位顯示單元;31H單元:數值十位顯示單元;32H單元:數值百位顯示單元;33H單元:數值千位顯示單元;23H單元:第一操作數存儲單元;24H單元:第二操作數存儲單元;25H單元:鍵值暫存單元;27H單元:清除鍵狀態;34H-37H單元:結果數據轉換暫存單元;38H-39H單元:結果高低8位暫存單元;R5單元:操作數計數單元;R4單元:操作數數值位數計數單元;R3單元:運算符號存儲單元。
3.3.2主程序設計
主程序進行程序中用到的一些存儲單元的初始化,數值顯示和2*4鍵盤掃描。首先,進行存儲單元初始化,給數碼管顯示單元30H-33H賦予“0000”字形數據,將數值計數單元,存儲單元,賦予初值零。之后,調用鍵盤掃描子程序,和數碼管顯示數據轉換程序,數碼管動態顯示子程序。主程序不斷進行鍵盤掃描,數碼管顯示數據轉換子程序和動態顯示子程序。
3.3.3數碼管顯示數據轉換子程序CONV
由于數值單元存放的是二進制數,而用戶熟悉的是十進制數,所以應將數值單元中的二進制轉換為十進制數,即BCD碼。要通過數碼管顯示出當前數值,還必須將BCD碼進一步轉換為七段碼,轉換的最終結果數據存放于顯示緩沖區30H-33H單元中,其中30H單元存放數值的個位七段碼,31H單元存放數值的十位七段碼,32H單元存放數值的百位七段碼,33H單元存放數值的千位七段碼。
3.3.4數碼管動態顯示子程序
本任務由P1口輸出字形碼,P0口輸出字位碼。先將存放于30H單元的數值個位七段碼由P1口輸出,同時P0口輸出使數值個位顯示數碼管點亮的字位碼。由于采用的是共陽數碼管,所以只有該位數碼管對應的P0.0為1,其他位P0.1-P0.3為0,點亮延時10MS。然后P1口輸出數值十位七段碼,P0.1為1,數值十位數碼管點亮,延時10MS。接著P1口輸出數值百位七段碼,P0.2為1,數值百位數碼管點亮,延時10MS。最后P1口輸出數值千位七段碼,P0.3為1,數值千位數碼管點亮,延時10MS。
程序源代碼:
DISPBUF EQU 30H                                   ;顯示數據存儲位置        
           ORG 0000H                            ;主程序的入口地址
START:MOV DISPBUF,#0C0H    ;4個數碼管顯示"0000"字形數據   
           MOV DISPBUF+1,#0C0H               
           MOV DISPBUF+2,#0C0H
           MOV DISPBUF+3,#0C0H
           MOV 37H,#00H                          ;數值初始化
           MOV 27H,#00H
           MOV 26H,#00H
           MOV 25H,#00H
           MOV 24H,#00H
           MOV 23H,#00H
           MOV R3,#00H
           MOV R5,#00H
           MOV R4,#00H
LOOP:   LCALLKEY                           ;調用鍵盤掃描子程序
           MOV R6,27H
           CJNE R6,#00H,START      ;清除鍵判斷
           MOV R6,26H
           CJNE R6,#00H,FA         ;顯示數據轉換子程序選擇
           LCALL CONV            ;調用數碼管顯示數據轉換子程序
FA:         LCALL DISPSCAN           ;調用數碼管動態顯示子程序
           SJMP LOOP
KEY:     MOVP2,#0FH                   ;鍵盤掃描子程序    ;低4位送1
           MOV A,P2                         ;行輸入
           ANL A,#0FH      
           CJNE A,#0FH,K10          ;有按下跳轉
           RET
K10:      JBP2.0,K20                            ;第一列
K11:      MOVP2,#0EFH                     ;一行一列
          JB P2.0,K12
          CJNE R5,#00H,L1
          MOV R4,#00H
          INC R5
          MOV R3,#1H
L1:        LJMP CEND
K12:     MOVP2,#0DFH
          JB P2.0,K13
         CJNE R5,#00H,L2
         MOV R4,#00H
         INC R5
         MOV R3,#2H
L2:       LJMP CEND
KIL:     LJMPKEND
L4:      LJMPCEND
K20:    JBP2.1,K30               ;第二列
K21:    MOVP2,#0EFH
        JB P2.1,K22
        LJMP DYU
K22:    MOV P2,#0DFH
        JB P2.1,K23
        MOV 25H,#3H
        LJMP OPR
CCTV:LJMP KEND
K30:    JBP2.2,K40                    ;第三列
K31:    MOVP2,#0EFH
        JB P2.2,K32
        MOV 25H,#0H
        LJMP OPR
K32:    MOV P2,#0DFH
        JB P2.2,K33
        MOV 25H,#2H
        LJMP OPR
K40:    JBP2.3,KEND                               ;第四列
K41:    MOVP2,#0EFH
        JB P2.3,K42
        INC 27H
        LJMP KEND
K42:    MOV P2,#0DFH
        JB P2.3,K43
        MOV 25H,#1H
        LJMP OPR
OPR:      INC R4                                 ;鍵值存儲
        CJNE R5,#00H,CHANG
        CJNER4,#2H,KBK
ZHI:        MOV A,20H
        MOV B,#0AH
        MUL AB
        MOV20H,25H
        ADD A,20H
        CJNER5,#00H,CZH
        MOV 23H,A
        LJMP KEND
CZH: MOV 24H,A
        LJMP KEND
KEND:MOV P2,#0FH
        MOV A,P2
        ANL A,#0FH
        CJNEA,#0FH,KEND
        RET
CHANG: CJNE R4,#2H,HONG
        AJMP ZHI
HONG:JNC CEND
        INC R5
        MOV 20H,25H
        MOV24H,25H
        LJMP CEND
KBK:  JNC CEND
        MOV 20H,25H
        MOV 23H,25H
        LJMP CEND
DYU:    MOV R5,#00H                   ;結果計算
        MOV R4,#00H
        MOV25H,#00H
        CJNER3,#1H,S
        MOV A,23H
        ADD A,24H
        MOV 23H,A
        SJMP CEND
S:         CJNE R3,#2H,S1
        CLR C
        MOV A,23H
        CJNEA,#00H,JIANFA
        MOV23H,#0EH
        SJMP CEND
JIANFA:SUBB A,24H
        MOV 23H,A
        SJMP CEND
S1:       CJNE R3,#3H,S2
        MOV A,23H
        MOV B,24H
        MOV A,23H
        MUL AB
        MOV R6,B
        CJNER6,#00H,CHENG
        MOV 23H,A
        SJMP CEND
S2:       CJNE R3,#4,CEND
        MOV A,24H
        CJNE A,#00H,ZY
        MOVA,#00H
        SJMP CEND
ZY:      MOV A,23H
        MOV B,24H
        DIV AB
        MOV 23H,A
CEND:MOV P2,#0FH
        MOV A,P2
        ANL A,#0FH
        CJNEA,#0FH,CEND
CONV:  CJNE R5,#02H,BEI                      ;數碼管顯示數據轉換子程序
        MOV A,24H
        AJMP JING
BEI:     MOV A,23H
JING:   MOVB,#64H
        DIV AB
        MOV DPTR,#TABLE
        MOVCA,@A+DPTR
        MOVDISPBUF+2,A
        MOV A,B
        MOVB,#0AH
        DIV AB
        MOVCA,@A+DPTR
        MOVDISPBUF+1,A
        MOV A,B
        MOVCA,@A+DPTR
        MOVDISPBUF,A
        RET
DISPSCAN:MOV R0,#DISPBUF            ;數碼管動態顯示子程序
        MOV R2,#4H
        MOV A,#1H
SC:      PUSH ACC
        MOV A,@R0
        MOV P1,A
        POP ACC
        MOV P0,A
        LCALLDELAY1
        RL A
        INC R0
        DJNZR2,SC
        MOVP0,#1H
        RET
DEL12: MOV R6,#1EH
DEL2: MOV R7,#64H
DEL1: DJNZ R7,DEL1
        DJNZ R6,DEL2
        RET
DELAY1:MOV R6,#70                         ;延時程序
D2:      MOV R7,#100
        DJNZ R7,$
        DJNZ R6,D2
        RET
TABLE:DB0C0H,0F9H,0A4H,0B0H,99H    ;------字符表------
          DB92H,82H,0F8H,80H,90H
          DB88H,83H,0C6H,0A1H,86H
          END
4.調試過程及結果分析
1.首先賦予顯示緩沖初始值‘00 00’,并把數據存儲單元清零。
2.主程序調用鍵盤掃描子程序,判斷鍵值,是數字第一次直接賦予23H單元,如是第二次輸入數字,則把第一次值乘十后與第二次值相加,結果存儲到23H單元,并R4計數2次,表示已輸入兩位,掃描鍵值時就不再賦值和顯示。等待運算符號的按下,按下等于號就直接計算并顯示,如加減就R5加一并把R4清零,表示可以輸入下一操作數,與第一次相同,并等待等于鍵按下。清零鍵則不管在任何情況下都清零,相當于軟復位。
3.在掃描完鍵盤后,調用數據顯示轉換子程序把值轉換為七段碼。
4.調用數碼管動態顯示子程序,顯示數值,重新循環。
參 考 文 獻
[1] 李華.單片機原理及應用[M].蘭州:蘭州大學出版社,2001
[2] 卓越科技.MCS-51單片機原理與應用實例[M].北京:電子工業出版,2008
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:411717 發表于 2018-10-22 09:40 | 只看該作者
電路圖有嗎
回復

使用道具 舉報

板凳
ID:272432 發表于 2018-11-19 23:16 | 只看該作者
程序不完整嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩一区二区 | www.夜夜草 | h视频在线观看免费 | 久久毛片| 日韩精品一区二区三区免费观看 | 免费看a| 日韩中文字幕免费 | 欧美激情第一区 | 激情伊人网 | 99热在线播放 | 欧美高清视频 | 91精品国产一区二区三区香蕉 | 亚洲欧美日韩一区二区 | 精品欧美激情在线观看 | 五月槐花香 | 日韩视频一级 | 中国免费黄色片 | 99久久久99久久国产片鸭王 | 国产免费av网 | 久久在线视频 | 看av网 | 成人午夜电影在线观看 | 91在线免费观看网站 | 免费毛片www com cn | 午夜精品久久久久99蜜 | 蜜桃av人人夜夜澡人人爽 | www国产亚洲精品 | 91精品国产欧美一区二区成人 | jizz中国日本| 色永久 | 国产91久久精品一区二区 | 成人欧美一区二区三区在线播放 | 国产亚洲二区 | 欧美日韩一区二区三区不卡视频 | 91精品国产综合久久婷婷香蕉 | 欧美人妖网站 | 久久激情五月丁香伊人 | av在线电影网| 99综合| 亚洲高清久久 | 欧美一级二级在线观看 |