久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4482|回復: 7
打印 上一主題 下一主題
收起左側

單片機控制74hc595數碼管靜態顯示會閃?

[復制鏈接]
跳轉到指定樓層
樓主


#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar count,second,min;
sbit lclk=P1^0;
sbit sclk=P1^1;
sbit Data=P1^2;
uchar dis[4];
uchar code displayhex[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
                 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delay(uint z)
{
         uint x,y;
         for(x=z;x>0;x--)
            for(y=100;y>0;y--);
}
void send595(uchar *pdat)
{
        uchar i,j;
        j=0x80;
        for(i=0;i<8;i++)
        {
                if((*pdat)&j) Data=1;
    else Data=0;
    sclk=0;
    sclk=1;        
                j>>=1;        
    sclk=0;               
        }
}
void display595( uchar *pdat)
{
        uchar i;
        for(i=0;i<4;i++)
        {
                lclk=0;
          send595(&displayhex[*(pdat+i)]);
                lclk=0;
                lclk=1;
        }
}
void init()
{
        TMOD=0X01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
}
void main()
{
        init();
        while(1)
        {
         if(count==20)
         {
                 count=0;
                 second++;
                 if(second==60)
                 {
                         second=0;
                         min++;
                         if(min==24)
                         {
                                 min=0;
                         }
                        
     }
                 
         }
           dis[0]=second%10;
           dis[1]=second/10;
           dis[2]=min%10;
           dis[3]=min/10;
           display595(dis);
           delay(50);
        }
}

void timer0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        count++;
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:96682 發表于 2019-3-18 22:12 | 只看該作者
樓主是不是發錯了?
回復

使用道具 舉報

板凳
ID:213173 發表于 2019-3-19 09:53 | 只看該作者
程序沒有大毛病,是語句排序錯誤導致閃爍和亂碼。你對比一下就知道哪里錯了。



  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar count,second,min;
  5. sbit lclk=P1^0;
  6. sbit sclk=P1^1;
  7. sbit Data=P1^2;
  8. uchar dis[4];
  9. uchar code displayhex[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
  10.                  0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
  11. /*
  12. void delay(uint z)
  13. {
  14.    uint x,y;
  15.    for(x=z;x>0;x--)
  16.       for(y=100;y>0;y--);
  17. }*/
  18. void send595(uchar *pdat)
  19. {
  20.         uchar i,j;
  21.         j=0x80;
  22.         for(i=0;i<8;i++)
  23.         {
  24.                 if((*pdat)&j) Data=1;
  25.                 else Data=0;
  26. //                sclk=0;
  27.                 sclk=1;
  28.                 sclk=0;
  29.                 j>>=1;
  30.         }
  31. }
  32. void display595( uchar *pdat)
  33. {
  34.         uchar i;
  35.         for(i=0;i<4;i++)
  36.         {
  37. //                lclk=0;
  38.                 send595(&displayhex[*(pdat+i)]);
  39.         }
  40.         lclk=0;
  41.         lclk=1;
  42. }
  43. void init()
  44. {
  45.         TMOD=0X01;
  46.         TH0=(65536-50000)/256;
  47.         TL0=(65536-50000)%256;
  48.         EA=1;
  49.         ET0=1;
  50.         TR0=1;
  51. }
  52. void main()
  53. {
  54.         init();
  55.         while(1)
  56.         {
  57.                 if(count==20)
  58.                 {
  59.                         count=0;
  60.                         second++;
  61.                         if(second==60)
  62.                         {
  63.                                 second=0;
  64.                                 min++;
  65.                                 if(min==24)
  66.                                 {
  67.                                         min=0;
  68.                                 }
  69.                         }
  70.                         dis[0]=second%10;
  71.                         dis[1]=second/10;
  72.                         dis[2]=min%10;
  73.                         dis[3]=min/10;
  74. //                        display595(dis);
  75. //                        delay(50);
  76.                 }
  77.                 display595(dis);
  78.         }
  79. }

  80. void timer0() interrupt 1
  81. {
  82.         TH0=(65536-50000)/256;
  83.         TL0=(65536-50000)%256;
  84.         count++;
  85. }
復制代碼



回復

使用道具 舉報

地板
ID:424598 發表于 2019-3-19 16:12 來自手機 | 只看該作者
閃爍的話,調整下延時,我之前有遇到同樣的問題
回復

使用道具 舉報

5#
ID:485458 發表于 2019-3-19 21:20 | 只看該作者
延時調小一點
回復

使用道具 舉報

6#
ID:164604 發表于 2019-4-4 20:30 | 只看該作者
wulin 發表于 2019-3-19 09:53
程序沒有大毛病,是語句排序錯誤導致閃爍和亂碼。你對比一下就知道哪里錯了。

謝謝,非常感謝!
回復

使用道具 舉報

7#
ID:366559 發表于 2019-4-5 10:36 | 只看該作者
有時候proteus因為仿真速度的問題會把實際情況下不會閃爍的動態掃描顯示成閃爍的
回復

使用道具 舉報

8#
ID:476644 發表于 2019-4-5 14:58 | 只看該作者
延時函數可以調到100微秒
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色偷偷噜噜噜亚洲男人 | 日韩成人免费视频 | 美女视频一区二区三区 | 久久久久一区二区三区 | 亚洲视频中文字幕 | av在线一区二区 | 一级特黄色毛片 | 九九综合 | 国产美女久久 | 一本大道久久a久久精二百 国产成人免费在线 | 国产视频一区二区三区四区五区 | 欧美国产视频 | 在线观看国产wwwa级羞羞视频 | 国产精品久久777777 | 超级乱淫av片免费播放 | 成人欧美一区二区三区在线播放 | 做a的各种视频 | 婷婷丁香综合网 | 四虎成人在线播放 | 国产高清久久久 | 一区二区三区视频在线观看 | 国产一区高清 | 麻豆一区二区三区精品视频 | 岛国精品 | 91精品久久久久久久久久 | 精品久久久久久久久久 | 久久久久一区二区三区 | 激情一区二区三区 | 日产久久 | 欧美激情国产日韩精品一区18 | 亚洲欧美日韩一区二区 | 成人在线一区二区三区 | 中文字幕日韩一区二区 | 亚洲欧美一区二区三区1000 | 久久99精品久久久久久国产越南 | 国产精品久久久久久吹潮 | 天天操天天操 | 日韩男人天堂 | 日本在线一区二区三区 | 中午字幕在线观看 | 久久精品91久久久久久再现 |