欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 使用單片機(jī)+74HC595芯片驅(qū)動(dòng)點(diǎn)陣和跑馬燈的心得與程序分享 [打印本頁]

作者: jkla    時(shí)間: 2020-4-2 17:17
標(biāo)題: 使用單片機(jī)+74HC595芯片驅(qū)動(dòng)點(diǎn)陣和跑馬燈的心得與程序分享
使用這個(gè)芯片還是上個(gè)帖子有位前輩說74HC595芯片對(duì)IO口的擴(kuò)展能力優(yōu)于三八譯碼器。(它有個(gè)級(jí)聯(lián)接口,可以直接接下一個(gè)74HC595芯片),其實(shí)想想生活中的廣告位顯示器就能用到它。剛好發(fā)現(xiàn)自己的板子上有兩塊74HC595芯片。通過看它的數(shù)據(jù)手冊(cè)我發(fā)現(xiàn)這個(gè)芯片的特點(diǎn)可以用下圖描述:(字寫得不好)。大家可以想想入棧和出棧的原理,其實(shí)一樣的。(如有不對(duì),懇請(qǐng)指正)。例如:?jiǎn)纹瑱C(jī)P1^1口輸出0x01至該芯片,當(dāng)SRCLK上升沿到來時(shí),該數(shù)據(jù)被從高到低位依次移入移位寄存器當(dāng)中,此時(shí)數(shù)據(jù)為:0x80;SRCLK下降沿到來時(shí),禁止置入數(shù)據(jù),然后當(dāng)RCLK的上升沿到來時(shí),移位寄存器當(dāng)中的數(shù)據(jù)從高位到地位依次移到數(shù)據(jù)寄存器當(dāng)中,QA->QH,此時(shí)數(shù)據(jù)為原來的數(shù)據(jù):0x01。下面分享兩個(gè)代碼,一個(gè)是對(duì)這個(gè)芯片的基礎(chǔ)理解。另一個(gè)是驅(qū)動(dòng)兩個(gè)8*8點(diǎn)陣顯示♥。關(guān)于♥的位碼生成大家可以了解一下字符取模軟件。


單片機(jī)源程序如下:
  1. #include "reg51.h"
  2. #include "intrins.h"        // 包含_nop_()函數(shù)原型

  3. typedef unsigned char u8;
  4. typedef unsigned int u16;

  5. sbit SRCLK = P1^0;
  6. sbit RCLK = P1^1;
  7. sbit SER = P1^2;

  8. void HC595SendByte(u8 dat);   

  9. void delay(u16 i)
  10. {
  11.         while(i--);
  12. }

  13. void Hc595SendByte(u8 dat)
  14. {
  15.         u8 i;
  16.         SRCLK = 0;
  17.         _nop_();
  18.         SRCLK = 1;

  19.         for(i = 0; i < 8; i++)  //用循環(huán)依次讀入8位數(shù)據(jù)。
  20.         {                                               
  21.                 SER = dat >> 7;                //把dat的最高位直接移到最低位。dat不變。
  22.                 dat <<= 1;
  23.                
  24.                 SRCLK = 0;
  25.                 _nop_();
  26.                 _nop_();
  27.                 SRCLK = 1;                
  28.         }
  29.         RCLK = 0;
  30.         _nop_();
  31.         _nop_();
  32.         RCLK = 1;
  33. }

  34. void main(void)
  35. {
  36.         u8 led = 0xfe;
  37.         u8 i;
  38.         while(1)
  39.         {
  40.                  for(i = 0; i < 7; i++)
  41.                 {
  42.                          HC595SendByte(led);
  43.                         P0 = _crol_(led,1);
  44.                         delay(50000);
  45.                 }
  46.                 for(i = 0; i < 7; i++)
  47.                 {
  48.                          HC595SendByte(led);
  49.                         P0 = _cror_(led,1);
  50.                         delay(50000);
  51.                 }
  52.         }
  53. }
復(fù)制代碼

所有資料51hei提供下載:
LED點(diǎn)陣.rar (18.25 KB, 下載次數(shù): 20)
_HC595.zip (18.91 KB, 下載次數(shù): 16)







歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1