找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

一上电数码管要显示一段时间的8才开始变化 求解决

查看数: 4640 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-4-24 11:48

正文摘要:

#include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit k = P3; sbit ch=P3^0; uchar c = 0; uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; vo ...

回复

ID:513931 发表于 2019-4-25 13:00
chtyise 发表于 2019-4-24 23:29
用164 Q3控制数码管供电

啥意思呀?
ID:513931 发表于 2019-4-25 11:31
51hei_user 发表于 2019-4-25 09:11
可以尝试先使164都输出高电平,这样用共阳的数码管也不会显示8了。另外,SBUF初始化时复值0xff也可以。

具体要怎么操作呢?
ID:521059 发表于 2019-4-25 09:11
zry991122 发表于 2019-4-24 22:06
已经可以了! 感谢 但是想问下 为啥用共阳的他就会闪8呢?

可以尝试先使164都输出高电平,这样用共阳的数码管也不会显示8了。另外,SBUF初始化时复值0xff也可以。
ID:434390 发表于 2019-4-25 07:44
共阴极COM端用个IO口控制三极管驱动,复位上电的时候COM端(通过IO口上拉或下拉控制三级管,非程序控制)输出高电平
ID:337069 发表于 2019-4-24 23:29
用164 Q3控制数码管供电
ID:513931 发表于 2019-4-24 22:06
zjjhtony 发表于 2019-4-24 20:05
要想解决这个问题很简单啊!
1)将这个LED数码管有共阳极的改为共阴极的。
2)修改uchar code DSY_CODE[] ...

已经可以了! 感谢 但是想问下 为啥用共阳的他就会闪8呢?
ID:18297 发表于 2019-4-24 20:05
要想解决这个问题很简单啊!
1)将这个LED数码管有共阳极的改为共阴极的。
2)修改uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
为uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
修改后测试没有再显示8
ID:513931 发表于 2019-4-24 14:44
zjjhtony 发表于 2019-4-24 13:09
1)初始化后,马上输出 SBUF=DSY_CODE[0];
这样你的程序就会较快的进入显示“0”。
2)如下代码,功能是 ...

我试了下 为啥他一开始还是会闪一下8呢?
ID:18297 发表于 2019-4-24 13:09
1)初始化后,马上输出 SBUF=DSY_CODE[0];
这样你的程序就会较快的进入显示“0”。
2)如下代码,功能是上电后马上显示0,并开始递加显示。
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit k = P3;
  5. sbit ch=P3^0;
  6. uchar c = 0;
  7. uchar t=0;
  8. uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  9. void DelayMS(uint ms)
  10. {
  11.         uchar i;
  12.         while(ms--) for(i=0;i<120;i++);
  13. }
  14. void main()
  15. {
  16.    
  17.         SBUF = 0x00;//???
  18.         SCON = 0x00;// ?????0
  19.         TMOD=0x01;                                
  20.         TH0=(65536-50000)/256;        
  21.         TL0=(65536-50000)%256;
  22.         PCON = 0x00;//??????
  23.         TI = 0;//????
  24.         ET0 = EA = 1;
  25.         TR0 = 1;
  26.               SBUF=DSY_CODE[0];
  27.         while(1)
  28.         {
  29.                 //while(!TI);//??TI=1?,????,???????????,???
  30.                 //TI  = 0;  //????
  31.                 DelayMS(300);
  32.         }
  33. }
  34. void Timer0() interrupt 1
  35. {
  36.         //uchar t;
  37.         TH0=(65536-50000)/256;        
  38.         TL0=(65536-50000)%256;
  39.         if(++t == 20)
  40.                 {
  41.                         t = 0;
  42.                                                                               c++;  
  43.                         c = c%10;
  44.                         SBUF=DSY_CODE[c];                           
  45.                 }
  46. }
复制代码

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表