要求:
(1)创建KeilC工程,编写代码点亮开发板上的数码管,实现一位数字0~9的显示;
(2)编写代码,实现4位不同数字同时显示在4颗数码管上;
(3)编写代码,使按键可持续输入以改变数码管显示数字串;
(4)发挥创意,结合可能的自创硬件,设计具有加减乘除功能的计算器。
#include <REGX52.H>
#include "anjian.h"
#include "Buzzer.h"
#include "delay.h"
#include "digit.h"
void main()
{
int n1, n2, n3, n4, nkey, num=0, num0=0;//显示的个十百千位 键值,显示值,存储值1
char fuhao='0',fuhao0='0'; //键入的符号值,存储的符号值
while(1)
{
nkey=keyscan(); //扫描键值
if(nkey!=0 && nkey<10)
{
num=num*10+nkey;
nkey=0;
}
if(num<10) Nixie(4,num);
if (num>9) {Nixie(4,num%10);Nixie(3,num/10);}
if (num>99) {Nixie(4,num%10);Nixie(3,(num/10)%10);Nixie(2,num/100);}
if (num>999){Nixie(4,num%10);Nixie(3,(num%100)/10);Nixie(2,(num/100)%10);Nixie(1,num/1000);}
if(nkey==10)
{
fuhao0='+';
fuhao='0'; //符号清零
num0=num;
num=0;
}
if(nkey==11)
{
fuhao0='-';
fuhao='0'; //符号清零
num0=num;
num=0;
}
if(nkey==12)
{
fuhao0='*';
fuhao='0';
num0=num;
num=0;
}
if(nkey==13)
{
fuhao0='/';
fuhao='0';
num0=num;
num=0;
}
if(nkey==16)
{
if(fuhao0=='+')num=num0+num;
else if(fuhao0=='-')num=num0-num;
else if(fuhao0=='*')num=num0*num;
else if(fuhao0=='/')num=num0/num;
fuhao='0';
num0=0;
}
}
}