【51微控制器】資料管的消影問題
阿新 • • 發佈:2019-02-19
數碼管的消影
未消影
程式碼
#include<reg52.h> sbit wela=P2^7; //位選 sbit dula=P2^6; //段選 void main() { while(1) { //一直顯示 dula=1; P0=0x06; //顯示1 dula=0; wela=1; P0=0xfe; //選擇第一個數碼管 wela=0; } }
執行結果
原因
第一個數碼管的1顯示較亮但是同時伴隨著另外較弱一點段位的顯示,可以看出是下面位選的影響(0xfe),然後幾
個未選擇的數碼管亮了,可以看出是前面段選帶來的影響(0x06->對應位選的就是1,4,5,6位數碼管)。
其實消除影響就是把選擇過的狀態重新置為沒有選擇過的狀態,段選是置為1才選中所以消除影響應該置為0,位選是
置為0才選中所以消除影響全部置為1 。
如何消影
為了消除段選對位選的影響:應該在兩者之間加上P0=0xff;
為了消除位選對段選的影響:應該在兩者之間加上 P0=0x00;
消影
程式碼
#include<reg52.h> sbit wela=P2^7; //位選 sbit dula=P2^6; //段選 void main() { while(1) { //一直顯示 dula=1; P0=0x06; //顯示1 dula=0; P0=0xff; //消除段選對位選的影響 wela=1; P0=0xfe; //選擇第一個資料管 wela=0; P0=0x00; //消除位選對段選的影響 } }