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...