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

QQ登錄

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

搜索
查看: 3881|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

發(fā)一個(gè)優(yōu)信74HC595的 8X8的的驅(qū)動(dòng)模塊DEMO

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
剛學(xué)STM32,原來(lái)粗略懂一些51,在網(wǎng)上買(mǎi)了很多模塊,現(xiàn)在想用STM32驅(qū)動(dòng)起來(lái)。原來(lái)只有51的驅(qū)動(dòng)DEMO,但在網(wǎng)上找了很多74HC595的驅(qū)動(dòng)好像都不太好用,這次我就參考了他們的代碼。自己修改了一個(gè)。效果還不錯(cuò)。因?yàn)榻?jīng)驗(yàn)不足,有一些地方可以改進(jìn)的,希望大家提出。以下是部份代碼

  1. /****************************************Copyright (c)**************************************************
  2. **                                
  3. **        項(xiàng)目名稱:                        74HC595驅(qū)動(dòng)電路
  4. **        文件名稱:                        74HC595.c
  5. **        模塊功能:                        驅(qū)動(dòng)程序
  6. **
  7. **------------------------------------------------------------------------------------------------------

  8. **         創(chuàng) 建 者:                        李*
  9. **        E-mail  :                        lidezhong@163.com
  10. **        QQ                :                        13151999
  11. **        Mobile        :                        15870966330
  12. **        創(chuàng)建時(shí)間:                        2018-07-02
  13. **        版    本:                        v1.0.0
  14. **        描    述:                        基礎(chǔ)程序
  15. **
  16. ********************************************************************************************************/

  17. #include "74HC595.h"

  18. //以下為74HC595_N376RIX2_DIP顯示位表
  19. //unsigned char  wei[8]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
  20. //以下為優(yōu)信2X8數(shù)碼管顯示位表
  21. unsigned char wei[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


  22. /********************************************************************************************************
  23. **         函數(shù)名稱:                        void HC595Init(void)
  24. **        功能描述:                        初始化74HC595
  25. **        入口參數(shù):                        void
  26. **        創(chuàng) 建 者:                        李德忠
  27. **        創(chuàng)建時(shí)間:                        2014-07-3 0:10
  28. **        版    本:                        v1.0.0
  29. ********************************************************************************************************/

  30. void HC595Init(void)
  31. {
  32.         GPIO_InitTypeDef GPIO_InitStructure;
  33.         
  34.         RCC_APB2PeriphClockCmd(HC595_CLK_GPIO_CLK | HC595_DATA_GPIO_CLK | HC595_CS_GPIO_CLK, ENABLE);
  35.         
  36.         GPIO_InitStructure.GPIO_Pin = HC595_CLK_PIN;
  37.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  38.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  39.         GPIO_Init(HC595_CLK_GPIO, &GPIO_InitStructure);
  40.         
  41.         GPIO_InitStructure.GPIO_Pin = HC595_DATA_PIN;
  42.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  43.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  44.         GPIO_Init(HC595_DATA_GPIO, &GPIO_InitStructure);

  45.         GPIO_InitStructure.GPIO_Pin = HC595_CS_PIN;
  46.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  47.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  48.         GPIO_Init(HC595_CS_GPIO, &GPIO_InitStructure);
  49.         
  50.         HC595_CLK_H();
  51.         HC595_DATA_H();
  52.         HC595_CS_H();
  53.         
  54. }
  55. void HC595Send(u8 data)
  56. {
  57.         u8 i;
  58.          for(i=0;i<8;i++)
  59.          {
  60.                          HC595_CLK_L();
  61.                   if((data & 0x80)== 0x80)                                                
  62.                   {
  63.                           HC595_DATA_H(); //串行數(shù)據(jù)輸出
  64.                   }
  65.                   else
  66.                   {
  67.                           HC595_DATA_L();
  68.                   }
  69.                  data<<=1;
  70.                  HC595_CLK_H(); //移位輸入時(shí)鐘,上升沿輸入
  71.                 HC595_CLK_L();
  72.          }
  73. }

  74. /********************************************************************************************************
  75. **         函數(shù)名稱:                        bit         DispNum(uchar * N)
  76. **        功能描述:                        刷新優(yōu)信74HC595 8X8顯示數(shù)字
  77. **        入口參數(shù):                        *N:                顯示的字符數(shù)組
  78. **        出口參數(shù):                        void
  79. **        創(chuàng) 建 者:                        李德忠
  80. **        創(chuàng)建時(shí)間:                        2018-07-05 22:38
  81. **        版    本:                        v1.0.0
  82. **  -----------------------------------------------------------------------------------------------------
  83. ********************************************************************************************************/
  84. void         DispNum(unsigned char * N)
  85. {
  86.         unsigned char i,Nnow[8];

  87.         for(i=0;i<8;i++)
  88.         {
  89.                 switch(*(N+i))
  90.                 {
  91.                                 //以下為74HC595_N376RIX2_DIP顯示碼表
  92. //                        case        '0':        Nnow[i]        =        0x3F;        break;
  93. //                        case        '1':        Nnow[i]        =        0x06;        break;
  94. //                        case        '2':        Nnow[i]        =        0x5B;        break;
  95. //                        case        '3':        Nnow[i]        =        0x4F;        break;
  96. //                        case        '4':        Nnow[i]        =        0x66;        break;
  97. //                        case        '5':        Nnow[i]        =        0x6D;        break;
  98. //                        case        '6':        Nnow[i]        =        0x7D;        break;
  99. //                        case        '7':        Nnow[i]        =        0x07;        break;
  100. //                        case        '8':        Nnow[i]        =        0x7F;        break;
  101. //                        case        '9':        Nnow[i]        =        0x6F;        break;
  102. //                        case        'a':        Nnow[i]        =        0x77;        break;
  103. //                        case        'f':        Nnow[i]        =        0x71;        break;
  104. //                        case        'c':        Nnow[i]        =        0x39;        break;
  105. //                        case        'h':        Nnow[i]        =        0x76;        break;
  106. //                        case        '-':        Nnow[i]        =        0x40;        break;
  107. //                        case        ' ':        Nnow[i]        =        0x00;        break;
  108. //                        default:                Nnow[i]        =        0xFF;
  109.                                 
  110.                         //以下為優(yōu)信8位數(shù)碼管顯示碼表                        
  111.                         case        '0':        Nnow[i]        =        0xC0;        break;
  112.                         case        '1':        Nnow[i]        =        0xF9;        break;
  113.                         case        '2':        Nnow[i]        =        0xA4;        break;
  114.                         case        '3':        Nnow[i]        =        0xB0;        break;
  115.                         case        '4':        Nnow[i]        =        0x99;        break;
  116.                         case        '5':        Nnow[i]        =        0x92;        break;
  117.                         case        '6':        Nnow[i]        =        0x82;        break;
  118.                         case        '7':        Nnow[i]        =        0xF8;        break;
  119.                         case        '8':        Nnow[i]        =        0x80;        break;
  120.                         case        '9':        Nnow[i]        =        0x90;        break;
  121.                         case        'a':        Nnow[i]        =        0x8C;        break;
  122.                         case        'b':        Nnow[i]        =        0xBF;        break;
  123.                         case        'c':        Nnow[i]        =        0xC6;        break;
  124.                         case        'd':        Nnow[i]        =        0xA1;        break;
  125.                         case        'e':        Nnow[i]        =        0x86;        break;
  126.                         case        'f':        Nnow[i]        =        0xFF;        break;
  127.                         case        '-':        Nnow[i]        =        0xbf;        break;
  128.                         case        ' ':        Nnow[i]        =        0x00;        break;
  129.                         default:                Nnow[i]        =        0xFF;                        
  130.                 }
  131.                 /*74HC595_N376RIX2_DIP驅(qū)動(dòng)順序*/
  132. //                 HC595Send(0x00);  //先傳段表
  133. //                 HC595Send(Nnow[i]);
  134. //                 HC595Send(wei[i]);  //位表
  135.                
  136.                 /*優(yōu)信8位LED數(shù)碼管驅(qū)動(dòng)順序*/        
  137.                  HC595Send(wei[i]);  //位表
  138.                  HC595Send(Nnow[i]);

  139.                  HC595_CS_L();
  140.                  HC595_CS_H();
  141.                  HC595_CS_L();

  142.         }
  143.                         
  144. }
  145.          

復(fù)制代碼

全部資料51hei下載地址:
ALIENTEK MINISTM32_74HC595.rar (286.38 KB, 下載次數(shù): 19)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

地板
ID:192297 發(fā)表于 2018-10-29 22:41 | 只看該作者
謝謝樓主!
回復(fù)

使用道具 舉報(bào)

板凳
ID:98880 發(fā)表于 2018-7-7 15:17 | 只看該作者
mengsiu 發(fā)表于 2018-7-7 09:27
驅(qū)動(dòng)8位數(shù)碼管有專用芯片的,MAX7219就可以。只需要把要顯示的內(nèi)容傳送到7219,芯片會(huì)自動(dòng)掃描數(shù)碼管,這樣 ...

對(duì)的。我現(xiàn)在講的就是74HC595.
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:16255 發(fā)表于 2018-7-7 09:27 | 只看該作者
驅(qū)動(dòng)8位數(shù)碼管有專用芯片的,MAX7219就可以。只需要把要顯示的內(nèi)容傳送到7219,芯片會(huì)自動(dòng)掃描數(shù)碼管,這樣單片機(jī)就不用操心數(shù)碼管顯示的事情了。
(優(yōu)信電子也有相應(yīng)的7219模塊出售的。)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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