基於51微控制器的簡易減法器設計製作

2021-10-11 19:08:13 字數 2131 閱讀 1100

51微控制器可實現很多功能,今天筆者介紹一種使用c51編寫程式,通過4*4矩陣鍵盤和8位共陰數碼管實現的簡易減法器。矩陣鍵盤以及數碼管的原理圖如下:

(1)4*4矩陣鍵盤原理圖:

(2)數碼管的原理圖:

程式設計**如下:

#include  

#include "math.h"

#define gpio_key

p1typedef unsigned int u16;

typedef unsigned char u8;

sbit lsa=p2

^2;sbit lsb=p2

^3;sbit lsc=p2

^4;u8 b[8]

=;u16 l,m,keyvalue,flag;

u8 displaydata[8]

=;

u8 code smgduan[10]

=;//0-9(十六進製制)陣列

void

delay

(u16 i)

//延時函式

void

keydown()

//按鍵函式

//測試行

gpio_key

=0xf0

;switch

(gpio_key)}

if(keyvalue==

0||keyvalue==

1||keyvalue==

2||keyvalue==

3||keyvalue==

4||keyvalue==

5||keyvalue==

6||keyvalue==

7||keyvalue==

8||keyvalue==9)

else

if(keyvalue==10)

//s11位減號

else

if(keyvalue==11)

//s12為等於號

while

(gpio_key

!=0xf0

)//判斷按鍵是否鬆開 }}

void

digdisplay()

//在數碼管上顯示 displaydata裡的元素

p0=displaydata[j]

;delay

(100);

p0=0x00

;//數碼管消隱 }}

void

main()

;while(1

) b[0]

=keyvalue;

//減數與被減數判斷

if(g==0)

else

//判斷輸入的數的位數

for(e=

0;e<

8;e++)}

//由上面得到輸入的數的位數,接下來確定哪幾個數碼管顯示

for(d=

0;d) flag=

100;}if

(flag==2)

//減號

displaydata[0]

=0x40

;//減號顯示,按下減號之後數碼管上顯示「—」號

flag=

100;

g++;}

if(flag==3)

//等於號

}for

(h=0

;h)for

(am=y;am<

8;am++)}

if(l

} displaydata[y]

=0x40

;for

(h=0

;h)for

(am=y+

1;am<

8;am++)}

flag=

100;

}digdisplay();}}

基於51微控制器的簡易遊戲機

1.2課程設計的任務及設計要求 簡易遊戲機 1 液晶顯示製作人姓名 學號,院,班級及校徽等資訊和 2 多個遊戲選項 1 貪吃蛇遊戲 俄羅斯方塊等 3 具有簡單電子錶功能,可顯示年 月 日 星期 時 分 秒等 根據實際顯示方式的不同,可選擇部分或全部功能 4 具有電子錶的校準功能 5 擴充套件功能 自...

基於51微控制器的簡易計算器

矩陣鍵盤有16個按鍵,滿足對簡易計算器的計算實現,顯示部分採用lcd1602,第一行顯示計算的數值符號,第二行顯示計算結果。最大能計算7位數 7位數的值,可以計算負數,小數點結果保留有三位,在每次按下計算符號後,接著只能按下數字,再按下符號鍵無效,也就是每次計算只能按乙個計算符號,如輸入錯誤需按n清...

51微控制器簡易可控風扇

include define uint unsigned int define uchar unsigned char sbit k1 p3 1 sbit k2 p3 0 sbit k3 p3 2 sbit k4 p3 3 sbit moto p1 0 定義所需要的引腳 uint key 巨集定義k...