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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7445|回復: 5
收起左側

stm32f0R8t6學習串轉并口74HC595實驗

[復制鏈接]
ID:111475 發表于 2016-3-30 19:56 | 顯示全部樓層 |閱讀模式
         因為器材都放在學校,所以就沒法做這個實驗,不過,這是我曾經做過的實驗。
               本次主要兩種串轉并的器件(74hc164,74hc595)實驗io拓展的功能,可能網上也有歷程,不過這是我自己編寫,所以記憶猶深。
                在學習數電的過程中有學習這兩種器件,但我不知道為什么我買來的開發板都沒有用這個器件,所以很納悶,就在百度在搜了下74hc595的資料。


        74HC595是硅結構的CMOS器件, 兼容低電壓TTL電路,遵守JEDEC NO.7A標準。        
                        74HC595具有8位移位寄存器和一個存儲器,三態輸出功能。 移位寄存器和存儲器有相互獨立的時鐘。        
                        數據在SH_cp(移位寄存器時鐘輸入)的上升沿輸入到移位寄存器中,在ST_cp(存儲器時鐘輸入)的上升沿輸入到存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。        
                        移位寄存器有一個串行移位輸入(Ds),和一個串行輸出(Q7’),和一個異步的低電平復位,存儲寄存器有一個并行8位的,具備三態的總線輸出,當使能OE時(為低電平),存儲寄存器的數據輸出到總線。        
                        8位串行輸入/輸出或者并行輸出移位寄存器,具有高阻關斷狀態。三態。        
                        將串行輸入的8位數字,轉變為并行輸出的8位數字,例如控制一個8位數碼管,將不會有閃爍。        

        中文名74HC595類    別存儲器功    能數據存儲結    構硅結構的CMOS器件        

   

        特點       8位串行輸入 /8位串行或并行輸出 存儲狀態寄存器,三種狀態
        輸出寄存器(三態輸出:就是具有高電平、低電平和高阻抗三種輸出狀態的門電路。)可以直接清除 100MHz的移位頻率

        輸出能力         并行輸出,總線驅動; 串行輸入;標準中等規模集成電路
        595移位寄存器有一個串行移位輸入(Ds),和一個串行輸出(Q7’),和一個異步的低電平復位,存儲寄存器有一個并行8位的,具備三態的總線輸出,當使能OE時(為低電平),存儲寄存器的數據輸出到總線。
        參考數據
        Cpd決定動態的能耗,
        Pd=Cpd×VCC×f1+∑(CL×VCC^2×f0)
        F1=輸入頻率,CL=輸出電容 f0=輸出頻率(MHz) Vcc=電源電壓

        引腳說明                        95eef01f3a292df506712810bc315c6034a87301.jpg 74HC595         

                                符號
                        
                                引腳
                        
                                描述
                        
                                Q0--Q7
                        
                                                                        第15腳,第1-7腳                                
                        
                                8位并行數據輸出,
                        
                                GND
                        
                                第8腳
                        
                                地
                        
                                Q7’
                        
                                第9腳
                        
                                串行數據輸出
                        
                                MR
                        
                                第10腳
                        
                                主復位(低電平)
                        
                                SHCP
                        
                                第11腳
                        
                                移位寄存器時鐘輸入
                        
                                STCP
                        
                                第12腳
                        
                                存儲寄存器時鐘輸入
                        
                                OE
                        
                                第13腳
                        
                                輸出有效(低電平)
                        
                                DS
                        
第14腳
                                串行數據輸入
                        
                                VCC
                        
                                第16腳
                        
                                電源
                        

        使用方法       74595的數據端:
        Q0--Q7: 八位并行輸出端,可以直接控制數碼管的8個段。
        Q7': 級聯輸出端。將它接下一個595的SI端。
        DS: 串行數據輸入端。
        74595的控制端說明:
        /MR(10腳): 低電平時將移位寄存器的數據清零。通常我將它接Vcc。
        SH_CP(11腳):上升沿時數據寄存器的數據移位。Q1->Q2-->Q3-->...-->Q7;下降沿移位寄存器數據不變。(脈沖寬度:5V時,大于幾十納秒就行了。我通常都選微秒級)
        ST_CP(12腳):上升沿時移位寄存器的數據進入數據存儲寄存器,下降沿時存儲寄存器數據不變。通常我將ST_CP置為低點平,當移位結束后,在ST_CP端產生一個正脈沖(5V時,大于幾十納秒就行了。我通常都選微秒級),更新顯示數據。
        /OE(13腳): 高電平時禁止輸出(高阻態)。如果單片機的引腳不緊張,用一個引腳控制它,可以方便地產生閃爍和熄滅效果。比通過數據端移位控制要省時省力。
        注1)74164和74595功能相仿,都是8位串行輸入轉并行輸出移位寄存器。74164的驅動電流(25mA)比74595(35mA)的要小,14腳封裝,體積也小一些。
        2)74595的主要優點是具有數據存儲寄存器,在移位的過程中,輸出端的數據可以保持不變。這在串行速度慢的場合很有用處,數碼管沒有閃爍感。
        3)595是串入并出帶有鎖存功能移位寄存器,它的使用方法很簡單,在正常使用時ST_CP為低電平, /OE為低電平。595是串入并出帶有鎖存功能移位寄存器,它的使用方法很簡單,如下面的真值表,在正常使用時ST_CP為低電平, /OE為低電平。從DS每輸入一位數據,串行輸入時鐘SH_CP上升沿有效一次,直到八位數據輸入完畢,輸出時鐘ST_CP上升沿有效一次,此時,輸入的數據就被送到了輸出端。
        595具體使用的步驟:
        第一步:目的:將要準備輸入的位數據移入74HC595數據輸入端上。
        方法:送位數據到_595。
        第二步:目的:將位數據逐位移入74HC595,即數據串入
        方法:SH_CP產生一上升沿,將DS上的數據移入74HC595中.從低到高
        第三步:目的:并行輸出數據。即數據并出
        方法:ST_CP產生一上升沿,將由DS上已移入數據寄存器中的數據
        送入到輸出鎖存器。
        說明: 從上可分析:從SH_CP產生一上升沿(移入數據)和ST_CP產生一上升沿(輸出數據)是二個獨立過程,實際應用時互不干擾。即可輸出數據的 同時移入數據。[1]

    相關注釋      
H=高電平狀態

        L=低電平狀態
        ↑=上升沿
        ↓=下降沿
        Z=高阻態
        NC=無變化
        ×=無關系
        當MR為高電平,數據在SHCP上升沿進入移位寄存器,在STCP上升沿輸出到并行端口,OE為使能端,低電平有效,當OE為低時,輸出使能,為高關閉使能,并不影響其他輸入端。
                         b21c8701a18b87d6b005e054070828381f30fd32.jpg 真值表         


        程序樣例     DS接MOSI,OE/GND接GND,SH_CP接SCLK,ST_CP接使能信號BIT0@P1,MR/VCC接POWER,如果不需要16位,改US16B,不使用H寄存器即可,還有SPI工作期間可以進入低功耗,也可以執行指令.
                                                                                                                                                                                                                                                            
                            補充內容:
                                                                                                                                                                                                    論壇不知道怎么的,剛寫了一半就發表了,好吧,那就從新在寫下。     74hc595,在我眼中,有點像spi的樣子,不過,他只出不進,也沒有什么協議。就是用的很普遍的移位寄存器及鎖存器。只不過,由于現在一一些器件都集成了spi或者iic等協議,不需要串轉并的接口,但一般場合下,用下也無傷大雅,所以我就摳門的想到了用這款芯片。     我選用的一款stm32f0開發板,一個74hc595芯片,一個一段共陰數碼管。借鑒青風電子的庫函數,寫了下自己的串轉并的程序。      不知道為什么無法上傳文件壓縮包,那我就在在此貼上我的程序唄。      

led.c
  1. /******************** (C) COPYRIGHT 2011 青風電子 ********************
  2. * 文件名  :led.c
  3. * 描述    :         
  4. * 實驗平臺:青風stm32f051開發板
  5. * 描述    :led驅動函數
  6. * 作者    :青風
  7. * 店鋪    :qfv5.taobao.com
  8. **********************************************************************************/

  9. #include "led.h"
  10. /**********************************************/
  11. /* 函數功能; led燈 初始化                     */
  12. /* 入口參數:無                               */
  13. /**********************************************/
  14. unsigned char code_hex[]={
  15.      0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,        
  16.      0x7c,0x39,0x5e,0x79,0x71,0x76,0x73,0x3e,0x00
  17. };
  18. void LED_Init(void)
  19. {
  20.         GPIO_InitTypeDef GPIO_InitStruct;
  21.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
  22.   GPIO_InitStruct.GPIO_Pin = SDATA_595  |SCLK_595| RCK_595 ;
  23.   GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
  24.   GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
  25.   GPIO_InitStruct.GPIO_Speed =GPIO_Speed_Level_3;
  26.   GPIO_Init(RCK_PORT, &GPIO_InitStruct);
  27.         GPIO_SetBits(RCK_PORT, SDATA_595  |SCLK_595| RCK_595 );
  28. }
  29. void delay(u8 i)
  30. {
  31.         while(i--);
  32. }
  33. /**********************************************/
  34. /* 函數功能;打開led燈                        */
  35. /* 入口參數:無                               */
  36. /**********************************************/
  37. void SDATA_0(void)
  38. {
  39.          GPIO_ResetBits(RCK_PORT, SDATA_595 );
  40.         }
  41. /**********************************************/
  42. /* 函數功能; 關掉led燈                        */
  43. /* 入口參數:無                               */
  44. /**********************************************/
  45. void SDATA_1(void)
  46. {
  47.                 GPIO_SetBits(RCK_PORT, SDATA_595);
  48. }

  49. /**********************************************/
  50. /* 函數功能;led翻轉                          */
  51. /* 入口參數:無                               */
  52. /**********************************************/
  53. void SCLK_0(void)
  54. {
  55.          GPIO_ResetBits(RCK_PORT, SCLK_595 );
  56.         }
  57. void SCLK_1(void)
  58. {
  59.          GPIO_SetBits(RCK_PORT, SCLK_595 );
  60.         }
  61. void RCK_0(void)
  62. {
  63.          GPIO_ResetBits(RCK_PORT, RCK_595 );
  64.         }
  65. void RCK_1(void)
  66. {
  67.          GPIO_SetBits(RCK_PORT, RCK_595 );
  68.         }
  69. void write_595(u8 temp)  //上升沿將數據寫入寄存器
  70. {
  71.         u8 i,temp0;
  72.         SCLK_0();
  73.         for(i=0;i<8;i++)
  74.         {
  75.                  temp0=temp<<i ;
  76.                 if(temp0&0x80)
  77.                 SDATA_1();
  78.   else         SDATA_0();        
  79.                 SCLK_1();
  80.         //        delay(100);
  81.                 SCLK_0();
  82.         }
  83.         
  84. }
  85. void out_595(void)//上升沿輸出數據
  86. {
  87.   RCK_0();        
  88. //        delay(100);
  89.         RCK_1();        
  90.         RCK_0();        
  91. }
  92. void buffer_595(u8 temp)
  93. {
  94.         write_595(temp);
  95.         out_595();
  96. }
復制代碼

下載(此代碼年代久遠,采用的老版本的庫和老版本Keil編寫的): 代碼.7z (737.65 KB, 下載次數: 49)
回復

使用道具 舉報

ID:128791 發表于 2016-7-1 10:14 | 顯示全部樓層
學習學習1
回復

使用道具 舉報

ID:144075 發表于 2016-10-23 16:56 | 顯示全部樓層
很不錯的經驗貼,學習了。
回復

使用道具 舉報

ID:121160 發表于 2017-6-16 14:55 | 顯示全部樓層
學習學習
回復

使用道具 舉報

ID:121160 發表于 2017-6-16 15:00 | 顯示全部樓層
學習學習
回復

使用道具 舉報

ID:92967 發表于 2017-9-6 16:39 | 顯示全部樓層

 學習學習1
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 五月香婷婷 | 国产一二三区电影 | 欧美一区二区三区久久精品视 | 欧美一级久久 | 99re6在线视频精品免费 | 国产高清免费 | 亚洲精品一区在线观看 | 久久久久久久网 | 在线播放国产一区二区三区 | 91精品国产91久久久久久 | 久久一区二区三区电影 | 亚洲精品国产精品国自产在线 | 日韩在线免费视频 | 91久久精品国产91久久性色tv | 久久精品免费观看 | 久久91av| 日韩精品在线观看一区二区 | 国产精品久久久久久久午夜片 | 做a视频在线观看 | 成人精品一区二区 | 男女羞羞视频在线观看 | 日日日日操 | 亚洲一区二区久久久 | 久热国产精品视频 | 91精品久久久久久综合五月天 | 中文字幕 国产 | 成人精品视频在线观看 | 欧美日韩精品一区二区三区视频 | 久久精品亚洲欧美日韩精品中文字幕 | 日本黄色不卡视频 | 麻豆精品国产免费 | 国产高清免费视频 | 精品国产乱码久久久久久老虎 | 日本超碰| 亚洲视频一区 | 久草在线视频中文 | 美女爽到呻吟久久久久 | 精品国产第一区二区三区 | 国产成人精品999在线观看 | 欧美videosex性极品hd | 91午夜在线 |