1.簡單使用兩片74HC595實現動態顯示數碼管


本篇文章主要是講解如何簡單示用74HC595,更具體的講解請移步

https://www.cnblogs.com/lulipro/p/5067835.html#undefined

這篇文章講解的更加詳細.

/**************************************************************************************/

在開始前要預習的一些東西

595里面有2個8位寄存器:移位寄存器SRCLK、存儲寄存器RCLK;

SER:串行輸入口;

先放一張原理圖.

在圖中我們可以看到三個管腳

P43-SRCLK;

P54-RCLK;

P40-SER;

工作路徑是SER->SRCLK->RCLK;

 

下面簡單演示下如何在右起第二個數碼管顯示2.

/*段碼*/

unsigned char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

/*位碼*/
unsigned char code T_COM[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

 

sbit P_SRCLK=P4^3;//移動寄存器
sbit P_RCLK=P5^4;//存儲寄存器
sbit P_SER=P4^0;//串行輸入口

//我們首先定義一個函數

void Sent595_in(unsigned char dat){
unsigned int i=1;
for(i=1;i<=8;i++){
dat<<=1;
P_SER=CY;
P_SRCLK=1;
P_SRCLK=0;
}}

/*這個函數的作用是收到段碼或位碼dat后,8位二進制依次左移,溢出的數存儲在CY中直接賦值給串行輸入口P_SER,移動8次正好將8位二進制碼全部輸入.

然后移動寄存器上升沿有效給它一個高電平,

記得還原低電平.*/

//第二個函數

void Sent595_out(){
Sent595_in(T_COM[2]);
Sent595_in(smgduan[2]);
P_RCLK=1;
P_RCLK=0;
}

/*我們分別調用了兩次Sent595_in,因為是兩塊HC595,所以必須是位碼先放進去,位碼放進去后再放入段碼,於是原先的位碼便會從Q7口進入上面的那塊HC595中的SER口,起到位碼的作用.

上面的HC595負責選擇哪個數碼管,下面的HC595負責選擇數碼管顯示什么.

最后存儲寄存器賦值高電平,然后還原.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM