* 本節實驗,需要加深理解鎖存器,位選線,
* 段選線等,以及防止重影的方法;和keil中數
* 組的定義;
*另外想讓8個數碼管同時顯示不同的數字,
*靠的是程式的快速執行,和人眼的短時間緩衝原理實現的
*本例的延時設定是1ms,可以分別用100ms
*等嘗試一下
#include
#define uchar unsigned char
#define uint unsigned int
sbit dula = p2^6; //鎖存器的段選線
sbit wela = p2^7;//鎖存器位選線
uchar code table={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71, //定義乙個陣列,每乙個元素分別是0-f;
void delayms(uint);
void main()
while(1){
dula = 1;//開啟端選線
p0 = table[0];//寫入陣列的第乙個元素,即數字0
dula = 0;//關閉端選線,防止開啟位選線時混亂
p0 = 0xff;//將數碼管重置清楚,防止有重影發生,所以這步操作也叫做消影
wela = 1;//開啟位選線
p0 = 0xfe;//選擇位,需要點亮的數碼管,當前選擇的是第乙個數碼管
wela = 0;//關閉位選線
delayms(1);1ms的延遲。防止讀寫速率太快出現重影
dula = 1;
p0 = table[1];
dula = 0;
p0 = 0xff;
wela = 1;
p0 = 0xfd;
wela = 0;
delayms(1);
dula = 1;
p0 = table[2];
dula = 0;
p0 = 0xff;
wela = 1;
p0 = 0xfb;
wela = 0;
delayms(1);
dula = 1;
p0 = table[3];
dula = 0;
p0 = 0xff;
wela = 1;
p0 = 0xf7;
wela = 0;
delayms(1);
void delayms(i)
uint j,k;
for(j = i;j > 0;j--){
for(k = 110;k > 0;k--);
51微控制器 數碼管動態顯示 數碼管鬼影
以郭天祥微控制器為例 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 ...
51微控制器學習過程記錄 6數碼管動態顯示
宣告 51微控制器學習過程記錄 全是我自己學習 實踐所記錄的過程,我只是菜鳥,所有論點和觀點僅代表我個人,不能確定是這個技術的真理。我的目的是學習和有可能成為可以向別人分享的經驗,因此有錯誤我會虛心接受,並認真改正。aa原理圖分析 bb 程式 include define uchar unsigne...
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...