永发信息网

单片机中,使用定时器让数码管从1一秒加一,变化到100.我写的程序在下面,运行以后变化不是一秒加一个数如下

答案:3  悬赏:0  手机版
解决时间 2021-02-25 11:12
  • 提问者网友:孤凫
  • 2021-02-25 01:28
单片机中,使用定时器让数码管从1一秒加一,变化到100.我写的程序在下面,运行以后变化不是一秒加一个数如下
最佳答案
  • 五星知识达人网友:风格不统一
  • 2021-02-25 01:36
这个呀,你要看看你的中断函数,aa,temp的变化。aa应该是中断20次才加1,而,temp是在aa加一以后再加一。所以就会一秒钟走好几十个数。还有,像你这么display,数码管肯定会有阴影,因为你没有清零的过程。
全部回答
  • 1楼网友:逃夭
  • 2021-02-25 04:13
while(1)
{ // if(aa==20) aa=0; // 这条去掉

aa++; // 后面这样改
if(aa==20)
{
aa=0;
temp++;
}追问不好使呀。。。运行以后从000到100还是很快的就完事了。我想一秒钟变化一个数。追答void dd() interrupt 1 // 改后的中断程序是这样的 看看是不是 前面那条要去掉 不然等于没有改
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==20)
{
aa=0;
temp++;
}
}追问还是不好使呀。。还是很快的从000变到100呀。。我变成if(aa==40),的时间和if(aa==20)的时间一样呀。(实际中)。我觉得问题在这了。。。。追答#include // 试试
unsigned char aa,temp,ge,shi,bai,i;
unsigned char code wd[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit g=P1^3;sbit s=P1^2;sbit b=P1^1;
void delay()
{
for(i=0;i<50;i++);
}
void display()
{
bai=temp/100;
shi=temp%100/10;
ge=temp%10;
g=0;s=1;b=1;
P0=wd[ge];
delay();
g=1;s=0;b=1;
P0=wd[shi];
delay();
g=1;s=1;b=0;
P0=wd[bai];
delay();
}
void chushi()
{
TMOD=0x01;
EA=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
}
void main()
{
chushi();
while(1)
{
display();
if(temp==100) temp=0;
}
}
void dd() interrupt 1 // 改后的中断程序
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==20)
{
aa=0;
temp++;
}
}
  • 2楼网友:几近狂妄
  • 2021-02-25 03:08
以下的,就可以了。
#include
unsigned char aa,temp,ge,shi,bai,i;
unsigned char code wd[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit g=P1^3;sbit s=P1^2;sbit b=P1^1;
void delay()
{
for(i=0;i<50;i++);
}
void display()
{
bai=temp/100;
shi=temp%100/10;
ge=temp%10;
g=0;s=1;b=1; P0=wd[ge]; delay();
g=1;s=0;b=1; P0=wd[shi]; delay();
g=1;s=1;b=0; P0=wd[bai]; delay();
}
void chushi()
{
TMOD=0x01;
EA=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
}
void main()
{
chushi();
while(1) {
display();
}
}
void dd() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
aa++;
if(aa >= 20) {
aa = 0;
temp++;
if(temp >= 100) temp = 0;
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯