51数字闪卡
今天运困体育就给我们广大朋友来聊聊51数字卡互换平台,希望能帮助到您找到想要的答案。
- 1、关于51单片机实现数字秒表程序算法出错的问题
- 2、①②③④⑤这样的圆圈数字都能打,怎么打一个圆圈51呀?打出来一个给我复制一下。
- 3、请教高手,用51单片机独立按键控制数码管数字加减,为什么在按下独立按键的时候会出现闪烁?怎么回事?
- 4、51单片机做计数显示时,数字不连续,一闪一闪的。
本文目录导航:
关于51单片机实现数字秒表程序算法出错的问题
答你想表达的是不是: 你的程序中每次进入for循环都有这样一条指令sec=sec/10,而且执行了4次,所以每次for循环出来都有sec=0,因为计时开始,sec < 10,sec的前3位还总是0,进入for因为连续4次除10再重新赋值,导致每次出来sec都为0,而出来后累加得1后再进入循环,那每次进入循环都应该有sec=1,从而应该每次BUF[0]=1,数码管个位应该一直显示1才对,可是却显示的是0。
根据你第二张图的上面,我发现你还用来显示秒ms,而刷新完毫秒后就立刻去刷新s了,而这时秒位还没更新到1,所以99次刷新为0,只有一次刷新为1,所以显示0时会闪,而且刷新为1停留的时间占的比重太小,根本看不到刷新为1的时候。
而你说你用左图的方法代替那个for循环正常,是因为左图那个每次都不会把储存秒的变量给清0,即使是每ms刷新一次,因为储存秒的变量是存在的,到下一秒才变化,所以每ms进入刷新时,储存秒的变量储存的是上一个s得到的值,显示出来就是正确的。
①②③④⑤这样的圆圈数字都能打,怎么打一个圆圈51呀?打出来一个给我复制一下。
答带圈数字正常输入只能输入1—10,11—50需要用Unicode编码转换,50之后的带圈数字就只能在Word中输入了,下面用Word 2007演示输入方法:
一、打开Word,进入“开始选项卡”,点击“字体”栏内的“带圈字符”按钮。
二、打开带圈字符窗口后,在文字栏中输入“51”,右边圈号使用圆形。
三、上方“缩小文字和增大圈号”选择一种,点击“确定”(增大圈号会更加美观一些)。
四、效果如下图,这时就可以在Word中输入一个带圈的51,但该符号仅可以在该窗口中使用,复制到其它程序中会变为正常数字“51”。
请教高手,用51单片机独立按键控制数码管数字加减,为什么在按下独立按键的时候会出现闪烁?怎么回事?
答因为你按键的时候影响了数码管刷新;
数码管一般都是动态扫描的,利用人眼的视觉暂留做的,你按下按键的时候,肯定有延时消抖,延时的时候就影响了数码管显示,所以数码管刷新的慢了,人眼就能分辨出来亮和灭的状态
解决办法
1、改进按键扫描
2、改进数码管显示
3、用嵌入式系统
三选一即可解决
51单片机做计数显示时,数字不连续,一闪一闪的。
答当然会闪啦,你在每次中断时扫描LED,间隔太长啦!请用以下改过的程序:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,shi,ge;
uchar code table[]={ 0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0};
void delay(uint z);
sbit com0=P2^7;
sbit com1=P2^6;
bit flag;
void main()
{
aa=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1){
if(aa==20)
{
aa=0;
temp++;
if(temp==60)temp=0;
shi=temp/10;
ge=temp%10;
}
P1=table[ge] ;
com1=0;
delay(10);
com1=1 ;
P1=table[shi];
com0=0;
delay(10) ;
com0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
今天的内容先分享到这里了,读完本文《51数字闪卡》之后,是否是您想找的答案呢?想要了解更多,敬请关注www.zuqiumeng.cn,您的关注是给小编最大的鼓励。
本文来自网络,不代表本站立场,转载请注明出处:https://www.zuqiumeng.cn/wenda/41428.html