问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单片机LED倒计时程序有问题

发布网友 发布时间:2022-05-01 22:30

我来回答

1个回答

热心网友 时间:2022-06-24 09:30

错误好多哦


错误一、数码管编码声明部分,缺了个 char


错误二、定时器中断里面,各个变量的值运行不对


错误三、程序整体的结构不够合理


另外你的数码管显示部分太过于繁琐,且在主循环内不方便程序的调试


不多说了,还是上程序吧,已经为你改了,且经过硬件测试的


我测试的时候,使用的端口和你的不一样,测试结束后又改为你使用的端口


更改完端口后,未实测,如果有错误请联系我


/***************************************************************************/

#include <reg51.h>//51单片机通用头文件

char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsigned  int i,t,h;

sbit a=P1^0; sbit led=P3^7; sbit lad=P3^6;

//char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示编码

/***************************************************************************/

void YS(char hs){char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}//延时函数

/***************************************************************************/

void XS(int xs) //数码管显示

{

    char d1,d2,d3,d4;

    d1=(xs/1)%10;  d2=(xs/10)%10;  d3=(xs/100)%10;  d4=(xs/1000)%10;

    P0=table[d1]; P2=0xfe; YS(10); P2=0xff;//个位显示

    P0=table[d2]; P2=0xfd; YS(10); P2=0xff;//十位显示

    P0=table[d3]; P2=0xfb; YS(10); P2=0xff;//百位显示

    P0=table[d4]; P2=0xf7; YS(10); P2=0xff;//千位显示

}

/***************************************************************************/

void main()

{

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

    TMOD=0x01; TR0=1; ET0=1; EA=1;

    led=0;lad=1;

    while(1)

    {

        XS(h);//调用数码管显示函数

        if(a==0){h=10;}//如果按键被按下,则把变量赋值

    }

}

/***************************************************************************/

void  t0()interrupt 1

{

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

    i++; t++;

    if(h>0){t=0;}//如果按键按下,屏蔽 t 计数,

    if(t>=10){t=0;led=~led; lad=~lad;}//t计数,用于两个LED闪烁

    if(i>=20){i=0;if(h>0){h--;led=0;lad=0;}}//如果数值不为0,则一秒减一,并点亮两个LED

    if(h==0&&led==0&&lad==0){led=1;lad=0;}//此句是防止数码管倒计时后两个LED继续同时点亮

}

/***************************************************************************/

追问真不知道该怎么谢你才好!

追答别客气,相互学习,共同进步嘛!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
白色T 恤如何搭配才能穿出优雅的韵味? 白色T 恤衫怎样搭配才能显得时髦又好看? 白色紧身正肩T 恤想要穿出休闲感,该如何搭配? 手机怎么连接笔记本电脑的wifi上网 电热水器为什么用着用着就没压力了 用什么拖地最干净又耐脏 爱奇艺会员的等级是怎么划分的? 爱奇艺星钻会员怎么开通 怎样才是正确的接吻呢 网页上鼠标点住右键拖动后出的蓝色线条是什么?干什么用的?为什么一松开... 2.LED指示用1个二级管指示倒计时时间是否到整点,时,LED闪烁三下? 天数倒计时牌LED数字显示屏 ,距离中考高考完电子看板 怎么在LED屏幕上显示高考倒计时,最好是能自动更新天数的那种 led单色显示屏如何嵌入倒计时 我们公司装配线想做一个led大屏幕,显示装配工位运作状态,有倒计时看那个工位拉后腿,不知道都需要啥 请问设计一个倒计时同步到LED屏上怎么编? led倒计时牌咋设置 德语可以有哪些等级考试,我想在毕业前学了德语去考证,以后好找工作吧,昆明哪里有 森林发生大火怎么灭火。 谁了解德语的等级考试啊? 发生森林大火,该怎么熄灭? 德语有没有等级考试 关于德语的等级考试是什么 德语有什么等级考试吗 淘宝没有延长收货时间怎么办 微信店铺可以设置快捷回复吗? 面对质疑,薇娅表示不知道怎么做自己,你曾经有过哪些迷茫? 薇娅在病床上选品,做带货主播真的要如此敬业吗? 没有人随随便便成功,薇娅卖货为什么那么厉害? 请问这是什么石头,值多少钱? LED颐阔控制卡倒计时,每天下午14点变换天数怎么办 如何关掉cad的wcs wcs每次打开cad就出现 怎么永久关闭? CAD2015怎么把右上角WCS去除? 为什么CAD文件里的WCS不是正方向? 素春卷的做法,素春卷怎么做好吃,素春卷的家常做法 CAD中怎样移动Wcs图标位置 CAD2007中怎样改变WCS??? 怎么样才能在autocad左下角出现文件名呢 2010版的 南充什么地方有春卷皮卖? autocad2004怎么把模板里的图移到布局里面进行修改。 CAD中坐标系样式变了,怎么恢复到正常的WCS? 路虎揽胜广告视频山路是哪里 全新路虎揽胜试车谍照曝光,预计2022年亮相 路虎揽胜VS保时捷卡宴 哪里有试驾路虎揽胜行政的地方吗 我今天在电脑上看到一个视频,一辆路虎揽胜可以攀爬70度的坡 怎么报名参加当地的U16篮球赛? 要疯篮球赛在哪看 今年的安踏要疯篮球赛5.0南昌站需要门票吗?