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