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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機74hc595串行數碼管時鐘顯示程序+Proteus仿真

  [復制鏈接]
跳轉到指定樓層
樓主
分享給大家 簡要:本文主要內容是用8051系列和74HC595構成的的數字鐘的電路設計。
一、硬件設計
利用8951的端口進行控制74HC595的RCK,SCK和/G腳,控制顯示部分的內容。為了節約89X51的端口,采用兩片74HC595級聯的方式,一片595控制八位數碼管的段碼端,一片595控制八位數碼管的片選端,因此我們在選不同位數碼管的同時,加以輸入不一樣的內容,這樣我們采用動態顯示的方法,可以利用八位數碼管進行時鐘顯示的目的。因為595采用級聯的方式,我們在給595數據的時候,應該先進行后聯一片595的數據傳輸。舉個例子,比方說我們采用第一片進行位選的控制,然后級聯的一片595進行段碼的輸出。那么我們在向兩片595采用數據傳輸的時候,就應該先進行數據顯示的傳輸,而不是進行位選數據的傳輸?傊,我們要根據兩片595的硬件設計不一樣,在軟件控制部分做好軟件部分的設計。



圖中共由三個部分構成,即:單片控制部分,數據傳輸顯示部分和按鍵調整部分。
單片控制部分核心器件由8051系列構成,外圍部分這里不給出。
數據傳輸顯示部分又由兩片74HC595和兩個四位的數碼管組成。
按鍵調整部分主要是三個按鍵,對秒,分,小時的校準和調節。

二、軟件部分
  1. #include <AT89X51.H>
  2. unsigned int tcount;
  3. unsigned char m;
  4. static unsigned char second,minute,hour;

  5. unsigned char code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  6. unsigned char code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  7. unsigned char  disbuf[8]={0,0,0,0,0,0,0,0};



  8. //數據傳輸//
  9. void sdata(void)
  10. {unsigned char b,c,num;

  11.          if(b==0)
  12.         {        
  13.           b++;
  14.         num=segbit[m];
  15.           for(c=0;c<8;c++)
  16.                   {P3_2=0;
  17.                    P3_3=num&0x80;
  18.                    num<<=1;
  19.                    P3_2=1;
  20.            }
  21.         
  22.         }

  23.         if(b==1)

  24.         {  
  25.             b--;
  26.           if(m==2||m==5)
  27.           {num=0xbf;}
  28.           else
  29.            {num=fseg[disbuf[m]];}

  30.                  for(c=0;c<8;c++)
  31.                    {  P3_2=0;
  32.                          P3_3=num&0x80;
  33.                          num<<=1;
  34.                          P3_2=1;
  35.                    }
  36.         
  37.         }
  38.              m++;
  39.              if(m==8)
  40.                  {m=0;
  41.                      }
  42. }
  43. //數據傳輸//

  44. //延時單位//

  45. void delay (unsigned char h)
  46.   {        while(h--);
  47.   }
  48.   //延時單位//


  49. //數據輸出//
  50. void out(void)
  51. {P3_4=0;
  52.   delay(50);
  53.   P3_4=1;
  54. }
  55. //數據輸出//

  56.   //按鍵控制//
  57.   void bcon(void)
  58.    {if(P3_5==0)
  59.      {delay(100);
  60.            if(P3_5==0)
  61.             {second=0;
  62.                   while(P3_5==0);
  63.                   
  64.                 }
  65.          }
  66.          disbuf[0]=second%10;
  67.         disbuf[1]=second/10;

  68.         if(P3_6==0)
  69.      {delay(100);
  70.            if(P3_6==0)
  71.             {minute++;
  72.                   while(P3_6==0);
  73.                   if(minute==60)
  74.                    {minute=0;
  75.                    }
  76.                 }
  77.          }
  78.         disbuf[3]=minute%10;
  79.         disbuf[4]=minute/10;


  80.          if(P3_7==0)
  81.      {delay(100);
  82.            if(P3_7==0)
  83.             {hour++;
  84.                   while(P3_7==0);
  85.                    if(hour==24)
  86.                     {hour=0;
  87.                         }
  88.                 }
  89.          }
  90.         
  91.         disbuf[6]=hour%10;
  92.         disbuf[7]=hour/10;
  93.         
  94.         disbuf[0]=second%10;
  95.         disbuf[1]=second/10;
  96.         disbuf[3]=minute%10;
  97.         disbuf[4]=minute/10;
  98.         disbuf[6]=hour%10;
  99.         disbuf[7]=hour/10;

  100.    }
  101.    //鍵盤控制//
  102.   
  103.   //主函數//



  104. void main(void)
  105. {        
  106.   TMOD=0x02;
  107.   TH0=0x06;
  108.   TL0=0x06;
  109.   TR0=1;
  110.   ET0=1;
  111.   EA=1;

  112.   while(1)
  113.   {
  114.    bcon();
復制代碼
五、小結
本文主要利用74HC595芯片構成數字顯示的一個例子,在硬件設計和軟件控制部分,只要二者互相結合,可以得到不同的電路,效果也可以不一樣,這主要給讀者自己去發揮。



全部資料51hei下載地址:
595串行時鐘顯示.rar (72.67 KB, 下載次數: 284)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:362033 發表于 2019-6-1 22:33 | 只看該作者
謝謝分享。。。!
回復

使用道具 舉報

板凳
ID:421410 發表于 2019-6-18 10:05 | 只看該作者
新手,剛好想實現595的時鐘電路軟件,下來學習
回復

使用道具 舉報

地板
ID:320097 發表于 2019-6-18 18:45 | 只看該作者
請教一下,595寫數據的時候是寫最后一片再倒回來嗎?
回復

使用道具 舉報

5#
ID:566010 發表于 2019-6-18 20:32 | 只看該作者

請教一下,595寫數據的時候是寫最后一片再倒回來嗎
回復

使用道具 舉報

6#
ID:141072 發表于 2019-12-27 20:45 | 只看該作者
值得參考
回復

使用道具 舉報

7#
ID:196311 發表于 2020-4-12 23:05 | 只看該作者
收下啦,謝謝分享
回復

使用道具 舉報

8#
ID:726103 發表于 2020-4-13 10:32 | 只看該作者
有匯編版的嗎
回復

使用道具 舉報

9#
ID:85480 發表于 2021-11-2 16:34 | 只看該作者
某一個寶上的都沒有C51的程序, 剛好又買了595模塊,學習一下,謝謝分享。
回復

使用道具 舉報

10#
ID:1011444 發表于 2022-11-13 11:46 | 只看該作者
驅動數碼管還是7219比較方便好用,但595有價格優勢,線路布局也方便點兒。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产色综合久久 | 毛片网站免费观看 | 综合另类 | 亚洲精品视频免费观看 | 精品久久久久久18免费网站 | 四虎影院久久 | 国产精品久久久久久久久久免费看 | 国产激情在线看 | 国产精品一二三区 | 欧美亚洲国产一区二区三区 | 综合九九 | 成人免费看片 | 国产高清免费 | 国产1区2区在线观看 | 国产高清一区二区三区 | 国产精品视频偷伦精品视频 | 青青草这里只有精品 | 亚洲欧美日韩久久久 | 亚洲电影一区二区三区 | 男人的天堂久久 | 一区二区三区四区电影视频在线观看 | 99av成人精品国语自产拍 | 久久www免费人成看片高清 | 黄在线免费观看 | 91精品国产色综合久久不卡98口 | 中国av在线免费观看 | 久久久91精品国产一区二区精品 | 美女天堂在线 | 日本不卡一区 | 色偷偷888欧美精品久久久 | 中文字幕国产精品 | 精品一区二区三区在线观看国产 | 天天综合网天天综合色 | 国产第1页 | 一区二区手机在线 | 日韩综合色 | 欧美中文字幕在线观看 | 日韩高清国产一区在线 | 日本成人福利 | 91porn国产成人福利 | 国产精品99999999 |