C语言按键控制两位数码管动态显示0-20清零 编程是什么?
答案:1 悬赏:30 手机版
解决时间 2021-11-25 03:57
- 提问者网友:爱唱彩虹
- 2021-11-24 11:16
C语言按键控制两位数码管动态显示0-20清零 编程是什么?
最佳答案
- 五星知识达人网友:鸽屿
- 2021-11-24 11:23
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar m_shi;//定义十位
uchar m_ge; //定义个位
uchar s_shi;//定义秒十位
uchar s_ge; //定义秒个位
uchar second,msecond;
void CLR();
void delay(uint z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
EX0=1;//外部中断0设置
IT0=1;//边沿触发
EX1=1;//外部中断1设置
IT1=1;//边沿触发
TMOD=0x01;//定时器设置 10ms in 12M crystal
TH0=(65536-10000)/256;//0xd8;
TL0=(65536-10000)%256;//0xf0;
EA=1;
ET0=1; //打开中断
TR0=0;
CLR();
while(1)
{
P0=s_shi;//显示秒十位
P2=1;
delay(3);//短暂延时
P0=s_ge; //显示秒个位
P2=2;
delay(3);
P0=0x40; //显示横杠
P2=3;
delay(3);
P0=m_shi;//显示十位
P2=4;
delay(3);//短暂延时
P0=m_ge; //显示个位
P2=5;
delay(3);
}
}
void timer0() interrupt 1
{
TH0=(65536-10000)/256;//0xd8;//重新赋值
TL0=(65536-10000)%256;//0xf0;
msecond++;
if(msecond==100)
{
msecond=0;
second++;//秒加1
if(second==20) second=0;
s_shi=table[second/10];//十位显示值处理
s_ge=table[second%10]; //个位显示处理
}
m_shi=table[msecond/10];//十位显示值处理
m_ge=table[msecond%10]; //个位显示处理
}
void exter0() interrupt 0
{
TR0=!TR0; //利用外部中断打开和关闭定时器0 用于开始和停止计时
}
void exter1() interrupt 2
{
if(TR0==0)//停止时才可以清零
CLR();
}
void CLR()
{
second=0; //利用外部中断清零
msecond=0;
m_shi=table[msecond/10];//十位显示值处理
m_ge=table[msecond%10]; //个位显示处理
s_shi=table[second/10];//十位显示值处理
s_ge=table[second%10]; //个位显示处理
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯