-
大小: 66KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-02
- 語言: 其他
- 標(biāo)簽:
資源簡介
用51單片機(jī)實(shí)現(xiàn)整數(shù)的加減乘除,通過矩陣按鍵實(shí)現(xiàn)數(shù)據(jù)的輸入和處理,通過8個(gè)數(shù)碼管實(shí)現(xiàn)數(shù)據(jù)及結(jié)果的顯示。

代碼片段和文件信息
/**************************************************************************************
* ??????????????矩陣按鍵實(shí)驗(yàn) ??*
實(shí)現(xiàn)現(xiàn)象:下載程序后數(shù)碼管顯示0,按下矩陣按鍵上的按鍵顯示對(duì)應(yīng)的數(shù)字
S1-S4:0-3
S5-S8:4-7
S9-S12:8-B
S13-S16:C-F。
注意事項(xiàng): ??
***************************************************************************************/
#include?“reg52.h“ ?//此文件中定義了單片機(jī)的一些特殊功能寄存器
typedef?unsigned?int?u16; ??//對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef?unsigned?char?u8;
#define?GPIO_DIG?P0
#define?GPIO_KEY?P1
u8?a[9]={0};
u16?mnh;
sbit?LSA=P2^2;
sbit?LSB=P2^3;
sbit?LSC=P2^4;
sbit?beep=P2^7; ?
u8?KeyValue=20; //用來存放讀取到的鍵值
u8?code?smgduan[17]={0x3f0x060x5b0x4f0x660x6d0x7d0x07
0x7f0x6f0x770x7c0x390x5e0x790x71};//顯示0~F的值
/*******************************************************************************
*?函?數(shù)?名?????????:?delay
*?函數(shù)功能 ???:?延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us
*******************************************************************************/
void?delay(u16?i)
{
while(i--);
}
void?chaifen(u16?n)
{
u8?i;
for(i=0;i<8;i++)
{
?a[8-1-i]=n%10;
?n/=10;
}
}
void?fuwei()
{
u8?i;
for(i=0;i<9;i++)
{
a[i]=0;
}
}
/*******************************************************************************
*?函?數(shù)?名?????????:?DigDisplay
*?函數(shù)功能 ???:?數(shù)碼管動(dòng)態(tài)掃描函數(shù),循環(huán)掃描8個(gè)數(shù)碼管顯示
*******************************************************************************/
void?DigDisplay()
{
u8?i;
for(i=0;i<8;i++)
{
?if(a[i]!=0)
?break;
}
if(i==8)
{
?i--;
}
for(;i<8;i++)
{
switch(i) ?//位選,選擇點(diǎn)亮的數(shù)碼管,
{
case(0):
LSA=0;LSB=0;LSC=0;?break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0;?break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0;?break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0;?break;//顯示第3位
case(4):
LSA=0;LSB=0;LSC=1;?break;//顯示第4位
case(5):
LSA=1;LSB=0;LSC=1;?break;//顯示第5位
case(6):
LSA=0;LSB=1;LSC=1;?break;//顯示第6位
case(7):
LSA=1;LSB=1;LSC=1;?break;//顯示第7位
}
P0=smgduan[a[i]];//發(fā)送段碼
delay(100);?//間隔一段時(shí)間掃描
P0=0x00;//消隱
}
}
/*******************************************************************************
*?函?數(shù)?名?????????:?KeyDown
*?函數(shù)功能 ???:?檢測有按鍵按下并讀取鍵值
*?輸????入?????????:?無
*?輸????出?????????:?無
*******************************************************************************/
void?KeyDown(void)
{
char?a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
{
delay(1000);//延時(shí)10ms進(jìn)行消抖
if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
{
//測試列
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d):?KeyValue=2;break;
case(0X0e): KeyValue=3;break;
}
//測試行
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0):?KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!=0xf0)) ?//檢測按鍵松手檢測
{
delay(1000)
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????14827??2019-04-11?11:17??用51單片機(jī)實(shí)現(xiàn)簡單的計(jì)算器要求說明.docx
?????目錄???????????0??2018-12-02?21:11??計(jì)算器程序例程\
?????文件????????5093??2018-11-30?21:24??計(jì)算器程序例程\main.c
?????文件???????14310??2018-11-30?21:34??計(jì)算器程序例程\main.LST
?????文件????????9650??2018-11-30?21:34??計(jì)算器程序例程\main.OBJ
?????文件????????8053??2018-11-30?21:34??計(jì)算器程序例程\template
?????文件????????3018??2018-11-30?21:34??計(jì)算器程序例程\template.hex
?????文件??????????44??2018-11-30?21:34??計(jì)算器程序例程\template.lnp
?????文件???????13652??2018-11-30?21:34??計(jì)算器程序例程\template.M51
?????文件?????????180??2018-12-02?21:11??計(jì)算器程序例程\template.plg
?????文件??????135109??2018-11-04?13:17??計(jì)算器程序例程\template.uvgui.Administrator
?????文件???????85331??2018-11-17?19:24??計(jì)算器程序例程\template.uvgui.ThinkPad
?????文件??????135101??2018-11-04?13:17??計(jì)算器程序例程\template.uvgui_Administrator.bak
?????文件???????56275??2018-12-02?21:11??計(jì)算器程序例程\template.uvopt
?????文件???????13229??2018-11-29?10:10??計(jì)算器程序例程\template.uvproj
?????文件???????56277??2018-12-02?20:35??計(jì)算器程序例程\template_uvopt.bak
?????文件???????13844??2018-11-17?19:24??計(jì)算器程序例程\template_uvproj.bak
- 上一篇:二叉樹與哈夫曼壓縮編碼實(shí)驗(yàn)
- 下一篇:SVPWM仿真輸出
評(píng)論
共有 條評(píng)論