标题:
谁帮我看看独立按键程序,不知道哪里出问题
[打印本页]
作者:
zh_jian
时间:
2016-7-5 16:02
标题:
谁帮我看看独立按键程序,不知道哪里出问题
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula = P2^6;
sbit wela = P2^7;
sbit KEY_1 = P3^7;
unsigned char leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};
void delay_xms(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar shi,uchar ge) //显示函数
{
wela = 1;
P0 = 0xfe;
wela = 0;
P0 = 0xff;
dula = 1;
P0 = leddata[shi];
dula = 0;
delay_xms(5);
wela = 1;
P0 = 0xfd;
wela = 0;
P0 = 0xff;
dula = 1;
P0 = leddata[ge];
dula = 0;
delay_xms(5);
}
void keyscan() //按键扫描
{
uchar num,shi,ge;
if(KEY_1==0)
{
delay_xms(10);
if(KEY_1==0)
{
num++;
if(num==20)
num=0;
shi=num/10;
ge=num%10;
while(!KEY_1);
}
display(shi,ge);
}
}
void main()
{
while(1)
{
keyscan();
}
}
实现功能:用独立按键 按下数码管加1
我这样写的函数,实现不了,求解哪里的问题 谢谢大神。小白一枚
作者:
腾飞的龙
时间:
2016-7-6 09:13
你的程序写到有问题,我改了一下现在正常啦
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula = P2^6;
sbit wela = P2^7;
sbit KEY_1 = P3^7;//加
sbit KEY_2 = P3^6;//减
uchar num,shi,ge,i;
uchar leddata[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
0xa1,0x86,0x8e,0x89};
/*uchar leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};*/
void delay_xms(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar num) //显示函数
{
shi=num/10;
ge=num%10;
for(i=0;i<10;i++)//显示10次增加亮度
{
wela = 1;
P0 = 0xfe;
wela = 0;
dula = 1;
P0 = leddata[shi];
dula = 0;
delay_xms(5);
P0 = 0xff;
wela = 1;
P0 = 0xfd;
wela = 0;
dula = 1;
P0 = leddata[ge];
dula = 0;
delay_xms(5);
P0 = 0xff;
}
}
void keyscan() //按键扫描
{
if(KEY_1==0)
{
delay_xms(10);
if(KEY_1==0)
{
num++;
if(num==99)
num=0;
}
while(!KEY_1);
}
if(KEY_2==0)
{
delay_xms(10);
if(KEY_2==0)
{
num--;
if(num==0)
num=0;
}
while(!KEY_2);
}
}
void main()
{
num=0;
while(1)
{
keyscan();
display(num);
}
}
复制代码
作者:
460864915
时间:
2016-7-6 12:07
把 display(shi,ge); 放在主函数里面,num,ge,shi 定义为全局变量
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula = P2^6;
sbit wela = P2^7;
sbit KEY_1 = P3^7;
uchar num,shi,ge;
unsigned char leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};
void delay_xms(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar shi,uchar ge) //显示函数
{
wela = 1;
P0 = 0xfe;
wela = 0;
P0 = 0xff;
dula = 1;
P0 = leddata[shi];
dula = 0;
delay_xms(5);
wela = 1;
P0 = 0xfd;
wela = 0;
P0 = 0xff;
dula = 1;
P0 = leddata[ge];
dula = 0;
delay_xms(5);
}
void keyscan() //按键扫描
{
if(KEY_1==0)
{
delay_xms(10);
if(KEY_1==0)
{
num++;
if(num==20)
num=0;
shi=num/10;
ge=num%10;
while(!KEY_1);
}
}
}
void main()
{
while(1)
{
keyscan();
display(shi,ge);
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1