微控制器數碼管0000 9999顯示問題

2021-06-19 03:37:41 字數 1816 閱讀 1052

數碼管的顯示

效果:顯示

00-99,

動態顯示

+變化顯示

說明:此例程將數碼管顯示內容用乙個函式打包,要顯示直接呼叫即可。

//標頭檔案:

#include "reg51.h"

//變數定義:

unsigned char table= ;

//表:共陽數碼管0-9

//引腳定義:          

sbit smg_q = p1^0;      //定義數碼管陽級控制腳(千位)

sbit smg_b = p1^1;      //定義數碼管陽級控制腳(百位)

sbit smg_s = p1^2;      //定義數碼管陽級控制腳(十位)

sbit smg_g = p1^3;      //定義數碼管陽級控制腳(個位)

//函式宣告:

void display(unsigned char da);//定義顯示函式,引數為顯示內容,只顯示兩位數

void delay(void);

//主函式,c語言的入口函式:                  

void main(void) 

if(ldata<99)

ldata++;         //重新整理完成約1秒,變數做加計數

else

ldata=0; }

} //顯示函式,引數為顯示內容,只顯示兩位數

void display(unsigned char da)

//延時子函式,短暫延時

void delay(void)

這個是顯示

00-99,

動態顯示

+變化顯示,然後我對這個程式進行了擴充套件,想把它變成

0000-9999

的動態顯示,**的顯示如下:

//標頭檔案:

#include "reg51.h"

//變數定義:

unsigned char table= ;

//表:共陽數碼管0-9

//引腳定義:          

sbit smg_q = p1^0;      //定義數碼管陽級控制腳(千位)

sbit smg_b = p1^1;      //定義數碼管陽級控制腳(百位)

sbit smg_s = p1^2;      //定義數碼管陽級控制腳(十位)

sbit smg_g = p1^3;      //定義數碼管陽級控制腳(個位)

//函式宣告:

void display(unsigned char da);//定義顯示函式,引數為顯示內容,只顯示兩位數

void delay(void);

//主函式,c語言的入口函式:                  

void main(void) 

if(ldata<9999)

ldata++;         //重新整理完成約1秒,變數做加計數

else

ldata=0; }

} //顯示函式,引數為顯示內容,只顯示兩位數

void display(unsigned char da)

//延時子函式,短暫延時

void delay(void)

但是出來的結果讓我下了一跳,前面100個數正常,但是到了100+就出現了數碼管顯示不正常,什麼f,h都出來了,而且是以189這個數結束的,到了289 就直接跳到了0000,實在不解,開發板我也好好看了一下,應該是**的問題,但是,我實在找不出**出問題了,,,凌亂了。

微控制器驅動數碼管

數碼管的原理?數碼管是分段控制點亮和熄滅的led段,數碼管分為共陽極以及共陰極,共陽極就是說數碼管的led段共乙個電壓正極,共陰極就是說所有的led段共乙個電壓負極。一般方法,乙個io控制公共段,共陽極為例子,給公共段施加乙個正電壓,其餘led段由io分開控制,想顯示多少,只需點亮對應的led段,即...

51微控制器數碼管詳解

led數碼管是由多個發光二極體封裝在一起組成 8 字型的器件,引線已在內部連線完成,只需引出它們的各個筆劃,公共電極。led數碼管常用的段數一般為7段,有的另加乙個小數點 led數碼管根據led的接法不同,分為共陽和共陰兩類 1.共陽極數碼管 指八段數碼管的八段發光二極體的陽極 正極 都連在一起,而...

51微控制器攻略 數碼管

使用前先明確數碼管是共陰極接法還是共陽極接法,若是共陰極接法,定義char型按位控制其輸出 共陽極與下圖相反 工作方式分為靜態顯示和動態顯示,靜態顯示數碼管必須段選接八位資料線保持字碼。下圖是共陽極數碼管,通過we控制段,p0控制位,四個數碼管共占用12個i o口,若使用74hc573等鎖存器可簡化...