51单片机,数码管动态显示,不影响其它程序

我写好了 数码管动态显示的程序,
可是如果我主程序执行其它的,它就显示最后一位。
怎么让数码管一直显示一个数,然后主程序同时还能运行其它的。
然后定期更新显示的数字。
比如显示温度,然后隔1秒更新一次显示的数字。
读温度传感器,更新显示的数字,如此重复。
void display(uint num)
{
uchar i;
play[0]=num/1000;
play[1]=num%1000/100;
play[2]=num%100/10;
play[3]=num%10;

for(i=0;i<4;i++)
{
DOT=1;
P0=~table[play[i]];
DOT=0;
P0=0xff;
SEG=1;
P0 =(1 << i);
SEG=0;
delay(1);
}

}

就在主程序里反复调用 改变变化数字,用暂存最好 要改变的时候改变暂存就可以了 不影响其他程序 如果闪就可以改变显示子程序的延时子程序时间
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-19
动态扫描程序放定时器中断里面做,nMS进一中断。
第2个回答  推荐于2016-08-30
动态显示程序,必须不停的、反复的调用。
稍有停顿,就只能看见最后显示的一位字符。

解决方法,可以参考我以前回答的问题:
http://zhidao.baidu.com/question/408722818.html追问

可是如果要处理其它模块,怎么办?

追答

如果其它模块,比较费时,就应该在它的处理过程中间,调用显示程序,否则就会黑屏。
编程人,就应该协调好这些模块的关系。
到我的百度空间看看吧,有很多的实例。

本回答被提问者采纳

单片机数码管动态显示的过程中,怎么实现让其中一个闪烁,其他的不受影...
1 单片机数码管动态显示的过程中,设置一个闪烁寄存器,专门保存要闪烁显示的位子,再增加一个闪烁显示码的暂存器。2 每次调用显示程序时,先要判断需要显示闪烁的位子的显示码,是不是等于“灭”的显示码,不是的话,将该位的显示码送闪烁显示码的暂存器进行保存,将“灭”的显示码送入相应的显示缓冲...

51单片机中不用锁存器怎么显示动态数码管
AT24C02是EEPROM芯片,与数码管毫无关系。要组成动态显示电路,可以不用锁存器,是数码管驱动电路是必须用的。如果,要是仿真,数码管的段控和位控是可以直接用单片机引脚的,不用锁存器,也不用驱动,真的可以做到不用74芯片,如下仿真图。但是,要是做实物,可以不用锁存器,但驱动必须用,不用74...

51单片机如何让一个数码管闪烁而其他数码管一直保持亮的状态不受影响...
\/\/5种模式4个数码管,所以表格为5*4 \/\/4个0表示4个数码管都可以正常亮 void display(uint m,uchar mode )\/\/4位显示子程序 带某位闪烁功能 \/\/mode=0,都不闪烁 mode=1 千位闪烁 mode=2 百位闪烁 mode=3 十位闪烁 mode=4 个位闪烁 \/\/mode=5 全部闪烁 { uchar a1,a2,a3,a4;staic ia...

51单片机数码管显示不停闪烁?
动态显示,显示程序的调用,不能有条件。必须不停的调用。你的显示程序,是满足了什么什么条件,才调用一次?这就耽误事了。你显示的时候,先显示分,仅仅显示几个毫秒,之后,就显示秒。秒,显示几个毫秒,之后,没有消隐,一直显示到下次调用显示程序。所以,秒,显示稳定,分,一闪就没了。

51单片机数码管显示问题
采用这种方式一般都是所谓的动态扫描显示,往往不止一个数码管。一个数码管8段加一个公共端需要9根口线才能完全显示任意数字,为了节省IO口线,就利用了人眼视觉驻留的原理(就像电影胶片每秒24帧,连续起来播放你觉得没有任何间断),每一位数码管显示一会儿,然后关掉它,再去显示下一个数码管。只要保证...

51单片机显示八位数码管的C语言程序
1、最开始,我们先打开keil。2、接着,我们要定义好库函数,想要实现动态数码灯,这个步骤是很重要的。3、接着,我们加上一条循环语句。4、最后,我们把先前定义的延时语句delayms写好。5、最后,点击这里进行编译,生成一个hex文件。6、如果这里无错误警告的话,就说明我们的程序写对了,那我们就可以...

51单片机数码管静态显示和动态显示原理及实验
静态显示方式中,每个数码管的段选和位选都是独立控制的。通常情况下,每个数码管对应一组位选线和一组段选线,分别由单片机的I\/O口控制。这种方式的优点是显示稳定,不受刷新频率的影响,但需要较多的I\/O口资源,且成本较高。动态显示方式则通过轮流切换显示状态,使得每个数码管的显示信息能够在短...

51单片机数码管显示的程序是什么?
(num1=0;num1<48;num1++)\/\/6个数循环显示\\x0d\\x0a {\\x0d\\x0a wela=1;\/\/打开u2锁存端\\x0d\\x0a P0=aable[num1%6];\/\/送入位选信号\\x0d\\x0a wela=0;\/\/关闭u2锁存端\\x0d\\x0a \/\/delays(1);\\x0d\\x0a dula=1;\/\/打开

高分:51单片机汇编程序,数码管跳动问题
给你贴一个我写的显示程序(在定时中断中调用,这个程序显示两组数据,500ms换一次):\/ 函数名称: void Display()功能描述: 将缓冲区中可显示字符输出到LED \/ define PIN_SDINP0_0 define PIN_STP0_1 define PIN_SHP0_2 define LOC_D10x08 void Display(void){ unsigned char i,ch,loc;if...

运用51单片机实现2位8段LED数码管的动态数字显示,写出汇编程序(C程序...
P2=TAB[1]; \/\/赋值 P3_0=0; \/\/开第一位显示 FOR(I=0;I<200:I++);\/\/延时 P3_0=1; \/\/关第一位显示 P2=TAB[2];P3_1=0; \/\/开第二位显示 FOR(I=0;I<200:I++);P3_1=1;这个程序就是让两个数码管分别显示1和2,注意程序开头包含头文件regx52.h,如果是包含reg52...

相似回答