以郭天祥微控制器為例
wei 指 位&位鎖存
duan 指 段&段鎖存
不好的方式:
duan =1;
//開鎖存
p0 =
0x45
;duan =0;
//關鎖存
好的方式:
p0 =
0x45
;duan =1;
//開鎖存
duan =0;
//關鎖存
p0 =
0x45
;wei =1;
wei =0;
p0 =
0x45
;duan =1;
duan =0;
p0 =
0x00
;//清除duan
duan =1;
duan =
0;
p0 =
0x45
;duan =1;
duan =0;
p0 =
0x45
;wei =1;
wei =0;
p0 =
0xff
;//清除wei
wei =1;
wei =
0;
在微控制器上電後,p0口輸出值全部為1,此時數碼管wei使能全部關閉,duan全部開啟,也就是(8.)待亮,一旦wei使能開啟就會亮(8.)。
如果先送wei,再送duan:在送wei的一瞬間,數碼管就會亮(8. ),產生鬼影。解決方法:送wei前先初始化,使duan全部關閉,啥也不亮。
p0 =
0x00
;//初始化,關閉斷
duan =1;
duan =0;
wei_latch()
;duan_latch()
;
如果先開duan_latch,再開wei_latch:不會產生鬼影。無需初始化。
duan_latch()
;wei_latch()
;
digitable[0]
= duantable[sec/1%
10]; digitable[1]
= duantable[sec/10%
10]; digitable[2]
= duantable[sec/
100%10]
; digitable[3]
= duantable[sec/
1000%10
];digitable[4]
= duantable[sec/
10000%10
];digitable[5]
= duantable[sec/
100000%10
];
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar code weitable[6]
=;uchar code duantable[16]
=;uchar digitable[6]
=;sbit wei = p2^7;
sbit duan = p2^6;
ulong sec =0;
bit flag =0;
uchar i =0;
uint cnt =0;
void
main
(void
) digitable[0]
= duantable[sec/1%
10]; digitable[1]
= duantable[sec/10%
10]; digitable[2]
= duantable[sec/
100%10]
; digitable[3]
= duantable[sec/
1000%10
];digitable[4]
= duantable[sec/
10000%10
];digitable[5]
= duantable[sec/
100000%10
];}}
}void
timer0
(void
) interrupt 1
p0 =
0x00
; duan =1;
duan =0;
switch
(i)}
51微控制器數碼管的動態顯示
本節實驗,需要加深理解鎖存器,位選線,段選線等,以及防止重影的方法 和keil中數 組的定義 另外想讓8個數碼管同時顯示不同的數字,靠的是程式的快速執行,和人眼的短時間緩衝原理實現的 本例的延時設定是1ms,可以分別用100ms 等嘗試一下 include define uchar unsigned...
51微控制器數碼管遞增顯示
硬體 stc90c51 普中科技51開發板 連線 74hc138解碼管a b c與p22 p23 p24連線,控制數碼管的位選 p0與數碼管連線,控制段選 如下 include include sbit hc138a p2 2 sbit hc138b p2 3 sbit hc138c p2 4 sb...
51微控制器數碼管詳解
led數碼管是由多個發光二極體封裝在一起組成 8 字型的器件,引線已在內部連線完成,只需引出它們的各個筆劃,公共電極。led數碼管常用的段數一般為7段,有的另加乙個小數點 led數碼管根據led的接法不同,分為共陽和共陰兩類 1.共陽極數碼管 指八段數碼管的八段發光二極體的陽極 正極 都連在一起,而...