标题:
51单片机独立按键的使用
[打印本页]
作者:
107415890
时间:
2018-5-16 15:49
标题:
51单片机独立按键的使用
51单片机独立按键的使用,主函数的c文件如下,完整工程文件在附件
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit we = P2^7; //数码管位选
sbit du = P2^6; //数码管段选
sbit key_s2 = P3^0; //S2按键未定义
uchar code leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x77, //"A"
0x7C, //"B"
0x39, //"C"
0x5E, //"D"
0x79, //"E"
0x71, //"F"
0x76, //"H"
0x38, //"L"
0x37, //"n"
0x3E, //"u"
0x73, //"P"
0x5C, //"o"
0x40, //"-"
0x00, //熄灭
0x00 //自定义
};
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
void main()
{
uchar num = 0;
we = 1; //数码管位选
P0 = 127; //选通第一个数码管,该数码管接低电平,其余为高电平
we = 0;
while(1)
{
du = 1;
P0 = leddata[num];
du =0;
if(key_s2 == 0)
{
delay(5); //软件延时
if(key_s2 == 0)
{
num++;
}
while(!key_s2);//松手检测
}
if(num == 10)
{
num=0;
}
}
}
1独立按键.zip
2018-5-16 15:48 上传
点击文件名下载附件
下载积分: 黑币 -5
13.43 KB, 下载次数: 4, 下载积分: 黑币 -5
作者:
xiaoyu.
时间:
2018-5-18 15:16
独立按键控制数码管时钟
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit K1=P3^4;
sbit K2=P3^5;
sbit K3=P3^6;
sbit K4=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint aa;
uchar num1,num2,shi1,ge1,shi2,ge2;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar num1,uchar num2)
{
shi1=num1/10;
ge1=num1%10;
shi2=num2/10;
ge2=num2%10;
dula=1;
P0=table[shi1];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);
dula=1;
P0=table[ge1];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);
dula=1;
P0=table[shi2];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
dula=1;
P0=table[ge2];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay(1);
}
void key()
{
if(K1==0)
{
delay(5);
if(K1==0)
{
TR0=0;
while(!K1);
}
}
if(K2==0)
{
delay(5);
if(K2==0)
{
if(num1==0)
{
num1=60;
}
num1--;
while(!K2);
}
}
if(K3==0)
{
delay(5);
if(K3==0)
{
num1++;
if(num1>=60)
{
num1=num1-60;
}
while(!K3);
}
}
if(K4==0)
{
delay(5);
if(K4==0)
{
TR0=1;
while(!K4);
}
}
}
void inint()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
inint();
while(1)
{
key();
display(num1,num2);
}
}
void zhongduan()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==20)
{
aa=0;
num2++;
if(num2==60)
{
num2=0;
num1++;
if(num1==60)
num1=0;
}
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1