大家好,
我用兩片74HC595D 控制8位數碼管動態掃描,一片做8位段碼的控制,另一片做8位位碼的控制。
因為之前是直接用單片機IO連接數碼管來控制的,代碼里面需要有消隱和延時程序,用起來沒啥問題,現在改用74HC595后,發現不需要消隱和延時了,加了消隱和延時發現反而無法正常顯示了,我不知道為啥是這樣,代碼里我就直接放顯示部分了。
顯示是沒啥問題,但是現在有一個小問題,就是前面7位亮度一致,最后一位比較亮,也就是最后一位比前7位都亮。這個應該是最后一位掃描到的時間比前面長造成的,但是我不知道如何解決。
各位大神有解決這個問題的比較成熟的方法么?
顯示程序大概如下:
void SendData595(uint8_t DataSendH15_8, uint8_t DataSendL7_0); // 74HC595數據發送
uint8_t weima_table[]= {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe} //8位位碼
uint8_t duanma_table[]={0xd7,0x82,0xcd,0x5d,0x1e,0x5b,0xdb,0x15,0xdf,0x5f} //段碼,0~9
void SHG_DISPLAY() // 數碼管顯示,此處無需消隱和延時
{
SendData_hc595(weima_table[0], duanma_table[5]);
SendData_hc595(weima_table[1], duanma_table[2]);
SendData_hc595(weima_table[2], duanma_table[1])
SendData_hc595(weima_table[3], duanma_table[4])
SendData_hc595(weima_table[4], duanma_table[0]);
SendData_hc595(weima_table[5], duanma_table[8])
SendData_hc595(weima_table[6], duanma_table[3]); //以上7位顯示亮度均勻一致
SendData_hc595(weima_table[7], duanma_table[7]); //這一位特別亮,比前7位都亮
}
|