欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于51單片機的兩位數相加的源程序(計算器)
[打印本頁]
作者:
甲魚嗎
時間:
2018-5-7 01:36
標題:
基于51單片機的兩位數相加的源程序(計算器)
實現兩位數相加,這里我用到了矩陣鍵盤和數碼管以及獨立按鍵,獨立按鍵控制加法符號和等于符號,矩陣鍵盤為0-F這16個數,先寫十位再寫各位,數碼管顯示,最后,計算出結果以后再利用數碼管顯示結果,同時蜂鳴器響。
注意,我用的芯片是stc89c52
單片機源程序如下:
#include"reg52.h"
//兩位數!!!
int i;
char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
int number_1,number_2;int m=20;int value;int numberr[5];int g=1;
sbit a=P2^2;
sbit b=P2^3;
sbit c=P2^4;
int n=0;
int my;
int uu=1;
sbit beep=P1^5;
int din_K1=0;
int din_K3=0;
int yy=990;
char mm_1;
char bb;
char mm_2;
sbit jia=P3^1;
sbit deng=P3^2;
////////////////
void Init()
{
SCON=0X50; //設置為工作方式1
TMOD=0X20; //設置計數器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計數器初始值設置,注意波特率是4800的
TL1=0XF3;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1; //打開計數器
}
//////////////
void delay(int d)
{
while(d)
{
d--;
}
}
void check()
{ int z;
P1=0x0f;
if(P1!=0x0f)//讀取按鍵是否按下
{
delay(3000);//延時10ms進行消抖
if(P1!=0x0f)//再次檢測鍵盤是否按下
{
//測試列
P1=0X0F;
switch(P1)
{
case(0X07): value=0;break;
case(0X0b): value=1;break;
case(0X0d): value=2;break;
case(0X0e): value=3;break;
}
//測試行
P1=0XF0;
switch(P1)
{
case(0X70): value=value;break;
case(0Xb0): value=value+4;break;
case(0Xd0): value=value+8;break;
case(0Xe0): value=value+12;break;
}
while((z<50)&&(P1!=0xf0)) //檢測按鍵松手檢測
{
delay(1000);
z++;
}
din_K1=1;
din_K3=1;
n++;
numberr[n]=value;
}
}
}
void oror()
{
if(jia==0)
{
delay(1000);
if(jia==0)
{
din_K1=0;
}
}
}
void end()
{
if(deng==0||uu==0)
{
delay(1000);
if(deng==0||uu==0)
{
din_K3=0;
g=0;
value=numberr[1]*10+numberr[2]+numberr[3]*10+numberr[4];
number_1=value/10;
number_2=value%10;
}
}
}
void main()
{
Init();
while(g)
{
check();
while(din_K1&&din_K3&&uu)
{
switch(n%2)
{
case 0:c=0;b=0;a=0;P0=smgduan[value];delay(1200);P0=smgduan[0];c=0;b=0;a=1;P0=smgduan[numberr[n-1]];delay(1200);P0=smgduan[0]; break;
case 1:c=0;b=0;a=1;P0=smgduan[value];delay(1200);P0=smgduan[0];break;
}
break;
}
// oror();
end();
}
while(yy)
{
beep=~beep;
delay(10);
yy--;
}
while(1)
{ int p=0;
for(p=0;p<2;p++)
{
switch(p)
{
case 0:c=0;b=0;a=0;P0=smgduan[number_2];delay(1000);P0=smgduan[0];break;
case 1:c=0;b=0;a=1;P0=smgduan[number_1];delay(1000);P0=smgduan[0];break;
}
}
}
}
void Usart() interrupt 4
{
bb=SBUF;
RI=0;
if(bb==0x3d)
{ uu=0;
}
else
{
RI=0;
mm_1=number_1+0x30;
mm_2=number_2+0x30;
SBUF=mm_1;
while(!TI);
TI=0;
SBUF=mm_2;
while(!TI);
TI=0;
}
// RI=0;
// SBUF=0x30;;//將接收到的數據放入到發送寄存器
// while(!TI); //等待發送數據完成
// TI=0; //清除發送完成標志位
}
復制代碼
所有資料51hei提供下載:
計算1111111111器——2位數相加.rar
(26.28 KB, 下載次數: 30)
2018-5-7 01:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
aaawe
時間:
2019-6-5 21:40
我想擁有這個資源可以嗎?
作者:
冷風12138
時間:
2021-12-1 19:48
你好,有接線圖碼?
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1