单片机用一个按键控制数码管显示图
发布网友
发布时间:2022-04-28 21:36
我来回答
共3个回答
热心网友
时间:2022-06-23 07:31
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char //宏定义
sbit key1=P0^0; //定义键盘IO口
sbit key2=P0^1; //
sbit beep=P2^3;
sbit key3=P0^2;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90}; //共阳数码管编码号
uchar num;
void keyscan();//键扫描函数
void display();
void delayms(uint);
void main() //主函数
{
while(1) //大循环
{
///display(); //显示函数
keyscan(); //键扫描函数
display(); //显示函数
}
}
void display()//显示函数,使函数调回主函数
{
P1=table[num];//显示数码管编码数
delayms(5);
}
void keyscan() //键扫描函数
{
if(key1==0) //判断键一是否按下
{
if(key1==0)
{
delayms(10);
while(!key1);//未按下,键开路
num++;
beep=~beep;
delayms(50);
beep=~beep;
if(num==10)
{
num=0;
}
while(!key1);
}
}
if(key2==0)
{
if(key2==0)
{
delayms(10);
beep=~beep;
delayms(50);
beep=~beep;
while(!key2);
num--;
if(num==0)
{num=10;}
while(!key2);
}
}
if(key3==0)
{
if(key3==0)
{
delayms(50);
beep=~beep;
num=0;
while(!key3);
}
}
}
void delayms(uint xms) //延时函数
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
热心网友
时间:2022-06-23 07:32
说的再具体点,太抽象,
热心网友
时间:2022-06-23 07:32
最好把电路图拿来看看