⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.c

📁 六位无符号整数加减乘除计算器
💻 C
字号:
#include <reg52.h>
sbit p30=P3^0;
sbit p31=P3^1;
sbit p32=P3^2;
sbit p33=P3^3;
sbit p34=P3^4;
sbit p35=P3^5;

sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
int LED[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int temp1=0,temp2=0,rst;
int dat[6]={0},flag=0,flg=0;//dat[0]最低位个位 flag按键标志位	flg运算符标志

void delay(int m)//延时程序
{
	while(--m);
}

void disp(int key_dat)//按键数据显示函数
{
	int i;
	if(flag)//标志判断 如果 flag=1 说明有按下
	for(i=5;i>=1;i--)//数组中数据向后移一位
	{
		dat[i]=dat[i-1];
	}
	dat[0]=key_dat;//第一位赋值按键值
	P3=0X01;//p3.0口有效
	for(i=0;i<6;i++)
	{
		P2=LED[dat[i]];//将数据传送到p2口
		delay(50);
		P3=P3<<1;//p3口右移一位                  	
	}
	flag=0;//标志判断  如果 flag=0 说明没有按下
}

void clr(void)//清零函数
{
	int i;
	for(i=0;i<6;i++)
	dat[i]=0;
	disp(dat[0]);
}

void temp(int f)//运算符号(处理第一个数及运算符)
{
	if(flag)
	temp1=dat[5]*100000+dat[4]*10000+dat[3]*1000+dat[2]*100+dat[1]*10+dat[0];	
	flg=f;//1 add  ;2 sub   ;3mul   ;4 div
	flag=0;
	clr();//清零
}

void display(int n)//LED显示
{
	char i;
	dat[5]=n/100000;//十万位
	dat[4]=n/10000%10;//万位
	dat[3]=n/1000%10;//千位
	dat[2]=n/100%10;//百位
	dat[1]=n/10%10;//十位
	dat[0]=n%10;//个位
	delay(20);

	P3=0X01;
	for(i=0;i<6;i++)
	{
		P2=LED[dat[i]];
		delay(20);
		P3=P3<<1;                  	
	}

}

void result(void)//运算结果函数
{
	if(flag)
	temp2=dat[5]*100000+dat[4]*10000+dat[3]*1000+dat[2]*100+dat[1]*10+dat[0];
	switch(flg)
	{
		case 0: temp2=temp1;break;
		case 1: rst=temp1+temp2;break;
		case 2: rst=temp1-temp2;break;
		case 3: rst=temp1*temp2;break;
		case 4: rst=temp1/temp2;break;

	}
	flg=0;
	flag=0;//标志判断  if flag=0 说明没有键按下
	display(rst);
}


void keyscan(void)//键盘扫描函数
{
	P1=0xef;//第一列
	if(!p13){flag=1;while(!p13)clr();}//on键清零
	if(!p12){flag=1;while(!p12)disp(1);}//1
	if(!p11){flag=1;while(!p11)disp(4);}//4
	if(!p10){flag=1;while(!p10)disp(7);}//7
	
	
	P1=0xdf;//第二列
	if(!p13){flag=1;while(!p13)disp(0);}//0
	if(!p12){flag=1;while(!p12)disp(2);}//2
	if(!p11){flag=1;while(!p11)disp(5);}//5
	if(!p10){flag=1;while(!p10)disp(8);}//8
	
	
	P1=0xbf;//第三列
	if(!p13){flag=1;while(!p13)result();}//等号
	if(!p12){flag=1;while(!p12)disp(3);}//3
	if(!p11){flag=1;while(!p11)disp(6);}//6
	if(!p10){flag=1;while(!p10)disp(9);}//9
	
	P1=0x7f;//第四列
	if(!p13){flag=1;while(!p13)temp(1);}//+
	if(!p12){flag=1;while(!p12)temp(2);}//-
	if(!p11){flag=1;while(!p11)temp(3);}//*
	if(!p10){flag=1;while(!p10)temp(4);}///
	disp(dat[0]);//如果没有按键 就还显示原来的数值
}
 
main()
{

	while(1)
	{ 
		keyscan();//键盘扫描调用
    }	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -