- void main ()
- {
- uchar i;
- while(1)
- {
- for(i=0;i<8;i++){
- //給掃描信號;通過調(diào)用寫595數(shù)據(jù)的函數(shù)來實(shí)現(xiàn)
- //給字模信號;
- delay();
- }
- }
- }
- 程序?qū)崿F(xiàn)—2.向HC595寫入數(shù)據(jù)
- sbit sk=P2^0; //所有595的時(shí)鐘信號 pin11
- sbit st=P2^1; //595的鎖存信號pin12
- sbit ds=P2^7; //595串行數(shù)據(jù)輸入 pin14
- sbit EN=P2^6; //595的輸出使能 pin13
- void hc595_write (uchar mydata)
- {
- uchar j;
- for(j=0;j<8;j++) //第2步
- {
- ds= mydata &0x80;
- sk=0; //注意硬件中,如果有其他芯片,則要根據(jù)實(shí)際情況修改
- sk=1;
- mydata <<=1;
- }
- st=0; //第3步
- st=1;
- EN = 0; //第4步
- }
- 程序?qū)崿F(xiàn)—2.向HC595寫入數(shù)據(jù),同時(shí)控制行列
- sbit DZ_DINL=P1^4; //控制點(diǎn)陣列的595數(shù)據(jù)輸入
- sbit DZ_DINH=P1^5; //控制點(diǎn)陣行的595數(shù)據(jù)輸入
- sbit DZ_OE =P1^2; //所有595的輸出使能
- sbit DZ_LC =P0^4; //所有595的鎖存信號
- sbit DZ_SC =P1^7; //所有595的時(shí)鐘信號
- /******************************************************************
- - 功能描述:向控制行與列的兩片595芯片中同時(shí)寫入2個(gè)字節(jié)
- - 隸屬模塊:8X8點(diǎn)陣模塊
- - 函數(shù)屬性:外部,供用戶使用
- - 參數(shù)說明:datl:控制列的字節(jié)
- dath:控制行的字節(jié)
- - 返回說明:無
- - 注:無
- ******************************************************************/
- void DZ_SetValue_2595(unsigned char datl,unsigned char dath)
- {
- unsigned char i;
- datl=~datl;
- DZ_OE=1; //向595寫入數(shù)據(jù)前,先將輸出使能關(guān)閉
- for(i=0;i<8;i++) //向兩路(行與列)上的595同時(shí)寫入數(shù)據(jù)
- {
- DZ_DINL=(datl&1);
- DZ_DINH=(dath&1);
- DZ_SC=0;
- DZ_SC=1; //時(shí)鐘上升沿時(shí)數(shù)據(jù)被寫入
- datl>>=1;dath>>=1;
- }
- DZ_LC=0;
- DZ_LC=1; //寫入595的數(shù)據(jù),需要進(jìn)行鎖存才能輸出到輸出端,上升沿?cái)?shù)據(jù)被鎖存
- DZ_OE=0; //打開所有595的輸出使能
- }
復(fù)制代碼
|