找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4230|回復(fù): 9
收起左側(cè)

一上電數(shù)碼管要顯示一段時(shí)間的8才開(kāi)始變化 求解決

[復(fù)制鏈接]
ID:513931 發(fā)表于 2019-4-24 11:48 來(lái)自手機(jī) | 顯示全部樓層 |閱讀模式
50黑幣
#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};
void DelayMS(uint ms)
{
        uchar i;
        while(ms--) for(i=0;i<120;i++);
}
void main()
{
   
        SBUF = 0x00;//賦初值
        SCON = 0x00;// 工作在方式0
        TMOD=0x01;                               
        TH0=(65536-50000)/256;       
        TL0=(65536-50000)%256;
        PCON = 0x00;//波特率不倍增
        TI = 0;//發(fā)送中斷
        ET0 = EA = 1;
        TR0 = 1;
        while(1)
        {
                while(!TI);//等待TI=1時(shí),跳出循環(huán),保證數(shù)據(jù)全部發(fā)送完畢后,再清零
                TI  = 0;  //軟件清零
                DelayMS(300);
        }
}
void Timer0() interrupt 1
{
        uchar t;
        TH0=(65536-50000)/256;       
        TL0=(65536-50000)%256;
        if(++t == 20)
                {
                        t = 0;
                        c = c%10;
                        SBUF=DSY_CODE[c];
                        c++;      
                }
}

E02CF9D0-096C-438F-81B8-782C98783A43.png
回復(fù)

使用道具 舉報(bào)

ID:18297 發(fā)表于 2019-4-24 13:09 | 顯示全部樓層
1)初始化后,馬上輸出 SBUF=DSY_CODE[0];
這樣你的程序就會(huì)較快的進(jìn)入顯示“0”。
2)如下代碼,功能是上電后馬上顯示0,并開(kāi)始遞加顯示。
  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. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:513931 發(fā)表于 2019-4-24 14:44 來(lái)自手機(jī) | 顯示全部樓層
zjjhtony 發(fā)表于 2019-4-24 13:09
1)初始化后,馬上輸出 SBUF=DSY_CODE[0];
這樣你的程序就會(huì)較快的進(jìn)入顯示“0”。
2)如下代碼,功能是 ...

我試了下 為啥他一開(kāi)始還是會(huì)閃一下8呢?
回復(fù)

使用道具 舉報(bào)

ID:18297 發(fā)表于 2019-4-24 20:05 | 顯示全部樓層
要想解決這個(gè)問(wèn)題很簡(jiǎn)單!
1)將這個(gè)LED數(shù)碼管有共陽(yáng)極的改為共陰極的。
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};
修改后測(cè)試沒(méi)有再顯示8
回復(fù)

使用道具 舉報(bào)

ID:513931 發(fā)表于 2019-4-24 22:06 來(lái)自手機(jī) | 顯示全部樓層
zjjhtony 發(fā)表于 2019-4-24 20:05
要想解決這個(gè)問(wèn)題很簡(jiǎn)單!
1)將這個(gè)LED數(shù)碼管有共陽(yáng)極的改為共陰極的。
2)修改uchar code DSY_CODE[] ...

已經(jīng)可以了! 感謝 但是想問(wèn)下 為啥用共陽(yáng)的他就會(huì)閃8呢?
回復(fù)

使用道具 舉報(bào)

ID:337069 發(fā)表于 2019-4-24 23:29 | 顯示全部樓層
用164 Q3控制數(shù)碼管供電
回復(fù)

使用道具 舉報(bào)

ID:434390 發(fā)表于 2019-4-25 07:44 | 顯示全部樓層
共陰極COM端用個(gè)IO口控制三極管驅(qū)動(dòng),復(fù)位上電的時(shí)候COM端(通過(guò)IO口上拉或下拉控制三級(jí)管,非程序控制)輸出高電平
回復(fù)

使用道具 舉報(bào)

ID:521059 發(fā)表于 2019-4-25 09:11 | 顯示全部樓層
zry991122 發(fā)表于 2019-4-24 22:06
已經(jīng)可以了! 感謝 但是想問(wèn)下 為啥用共陽(yáng)的他就會(huì)閃8呢?

可以嘗試先使164都輸出高電平,這樣用共陽(yáng)的數(shù)碼管也不會(huì)顯示8了。另外,SBUF初始化時(shí)復(fù)值0xff也可以。
回復(fù)

使用道具 舉報(bào)

ID:513931 發(fā)表于 2019-4-25 11:31 來(lái)自手機(jī) | 顯示全部樓層
51hei_user 發(fā)表于 2019-4-25 09:11
可以嘗試先使164都輸出高電平,這樣用共陽(yáng)的數(shù)碼管也不會(huì)顯示8了。另外,SBUF初始化時(shí)復(fù)值0xff也可以。

具體要怎么操作呢?
回復(fù)

使用道具 舉報(bào)

ID:513931 發(fā)表于 2019-4-25 13:00 來(lái)自手機(jī) | 顯示全部樓層
chtyise 發(fā)表于 2019-4-24 23:29
用164 Q3控制數(shù)碼管供電

啥意思呀?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表