您的位置 首页 主动

51单片机C言语程序(四)键盘 数码管 跑表程序

程序一数码管前三位显示一个跑表,从000到999之间以1%秒的速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行(用定时器设计表

程序一

数码管前三位显现一个跑表,
从000到999之间以1%秒的速度运转,
当按下一个独立键盘时跑表中止,
松开手后跑表持续运转(用定时器规划表)

#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit s2=P3^4;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};
uchar flag,t0,ge,shi,bai;
uint shu;
void init();
void display(uchar aa,uchar bb,uchar cc);
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x–)
for(y=110;y>0;y–);
}
void main()
{
init();
while(1)
{
display(bai,shi,ge);
if(s2==0)
{
delay(10);
if(s2==0)
{
TR0=0;
while(!s2)
display(bai,shi,ge);
TR0=1;
}
}
}
}

void init()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
}

void timer0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
shu++;
if(shu==1000)
shu=0;
bai=shu/100;
shi=shu%100/10;
ge=shu%10;

}

void display(uchar aa,uchar bb,uchar cc)
{
dula=1;
P0=table[aa];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);

dula=1;
P0=table[bb];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);

dula=1;
P0=table[cc];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
}

程序二

数码管前三位显现一个跑表,
从000到999之间以1%秒的速度运转,
当按下一个独立键盘时跑表中止,
松开手后跑表持续运转(用定时器规划表)

三个独立键盘完成按下第一个时计时中止,按下第二个
时计时完毕,按下第三个是计数值清零从头开始

#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit s2=P3^4;
sbit s3=P3^5;
sbit s4=P3^6;
sbit s5=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};
uchar flag,t0,ge,shi,bai;
uint shu;
void init();
void display(uchar aa,uchar bb,uchar cc);
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x–)
for(y=110;y>0;y–);
}
void main()
{
init();
while(1)
{
display(bai,shi,ge);
if(s2==0)
{
delay(10);
if(s2==0)
{
TR0=0;
while(!s2)
display(bai,shi,ge);
TR0=1;
}
}
if(s3==0)
{
delay(10);
if(s3==0)
{
while(!s2)
display(bai,shi,ge);
TR0=0;
}
}
if(s4==0)
{
delay(10);
if(s4==0)
{
while(!s2)
display(bai,shi,ge);
TR0=1;
}
}
if(s5==0)
{
delay(10);
if(s5==0)
{
while(!s2)
display(bai,shi,ge);
shu=0;
}
}
}
}

void init()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
}

void timer0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
shu++;
if(shu==1000)
shu=0;
bai=shu/100;
shi=shu%100/10;
ge=shu%10;

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/260651.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部