微控制器按鍵技術實訓數碼管開始顯示時為啥顯示8而不是

2021-03-03 21:22:46 字數 3709 閱讀 1673

1樓:匿名使用者

上電瞬間所有io都是高電平造成的

2樓:匿名使用者

因為啟動時.管腳都是1.

微控制器八個數碼管動態顯示0~8,為什麼重新整理太快顯示不了?

3樓:倚天逍遙

延時程式這樣改寫

void delayms(uint x)//x給20到40之間,試一下

4樓:匿名使用者

顯示了,你看不見

每一位字要點亮4~10ms,人眼才能看見

設計一個微控制器輸入顯示系統,要求每按一下按鍵數碼管顯示資料加1(數碼管初始值為0,9加1 後顯示0)。

5樓:沈偉棟

程式清單如下:

#include < reg51.h >// 51微控制器標頭檔案

#define uchar unsigned char // 巨集定義

,用uchar替代無符號字元型

#define uint unsigned int // 巨集定義,用uint 替代無符號整數型

sbit key = p2 ^ 7;

uchar count = 0;

uchar code datachar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'p'

;//延時n毫秒

void delaynms( uint n ) // 利用x、y作簡單的自減運算,消耗微控制器指令週期,達到延時的目的

//數碼管顯示 // 顯示方式為動態掃描,視覺暫留原理

void display( uchar num ) // *p指向main函式中的陣列shownum的首地址

void main( void )

while( !key );

}display( count );}}

擴充套件資料

8051微控制器具有如下功能:

8位cpu·4kbytes程式儲存器(rom) (52為8k)

128bytes的資料儲存器(ram) (52有256bytes的ram)

32條i/o口線·111條指令,大部分為單位元組指令

21個專用暫存器

2個可程式設計定時/計數器·5箇中斷源,2個優先順序(52有6個)

一個全雙工序列通訊口

外部資料儲存器定址空間為64kb

外部程式儲存器定址空間為64kb

邏輯操作位定址功能·雙列直插40pindip封裝

單一+5v電源供電

cpu:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能暫存器;

ram:用以存放可以讀寫的資料,如運算的中間結果、最終結果以及欲顯示的資料;

rom:用以存放程式、一些原始資料和**;

i/o口:四個8位並行i/o口,既可用作輸入,也可用作輸出

t/c:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;

五個中斷源的中斷控制系統;

一個全雙工uart(通用非同步接收傳送器)的序列i/o口,用於實現微控制器之間或微控制器與微機之間的序列通訊;

片內振盪器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6m—12m。

6樓:匿名使用者

#include < reg52.h > // 嵌入51微控制器標頭檔案

#define uchar unsigned char // 巨集定義,用uchar替代無符號字元型

#define uint unsigned int // 巨集定義,用uint 替代無符號整數型

sbit key = p2 ^ 7;

uchar count = 0;

uchar code datachar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'p'

;//延時n毫秒

void delaynms( uint n ) // 利用x、y作簡單的自減運算,消耗微控制器指令週期,達到延時的目的

//數碼管顯示 // 顯示方式為動態掃描,視覺暫留原理

void display( uchar num ) // *p指向main函式中的陣列shownum的首地址

void main( void )

while( !key );

}display( count ); }}

用微控制器控制一個8段數碼管,其迴圈顯示數字0到9,每位數字顯示時間為一秒,定時功能用微控制器中斷顯示

7樓:瀋陽_大偉

有一個一模一樣的提問,好吧,俺再發布一次

給你一份我自己寫的,利用四位數碼管顯示模擬時鐘的程式吧,供你研究

另外,再給你一個一位數碼管的,是你要求的那種

這兩個都是利用微控制器的定時器中斷來產生秒訊號的

下面這個是 四位數碼管的,最下邊的是一位數碼管的,埠不一樣的話,自己改下

#include

sbit p20=p3^7; sbit p21=p3^6; sbit led=p2^7;//按鍵及led埠定義

sbit axs=p1^3; sbit bxs=p1^2; sbit cxs=p1^1; sbit dxs=p1^0;//數碼管位選埠

char table[10]=;//數碼管顯示編碼

unsigned int h,m,s,t,n;

void ys(char hs)//延時函式

void xs(int xh,int xm) //顯示子函式

void main(void)

}while(!p20)}

if(p21==0)}while(!p21)}

xs(h,m);//呼叫數碼管顯示函式}}

void int1() interrupt 1 //定時器中斷

//led閃爍

if(n>1000)//如果達到一秒,秒加一

if(s>59)//如果達到一分,分加一

if(m>59)//如果達到一小時,小時加一

if(h>23)//如果達到24小時,小時清零

#include

sbit axs=p1^3;//數碼管位選埠

char table[10]=;//數碼管顯示編碼

unsigned int h,m,s,t,n;

void ys(char hs)//延時函式

void main(void)

void int1() interrupt 1 //定時器中斷

//如果達到一秒,秒加一

if(m>9)//如果達到一小時,小時加一

c 語言51微控制器,求解8位數碼管上動態顯示0-7,為什麼會顯示"12345670"?

8樓:匿名使用者

void main()

}延時的位置放錯了,導致當前位選擇為下內一次服容務了。

9樓:匿名使用者

把case(7)改為

ducase(0)

,case(1)改為zhicase(2)

case(2)改為case(3)

case(3)改為case(4)

case(4)改為case(5)

case(5)改為case(6)

case(6)改為case(7)問題即可解決dao,你查一下真值表對下專

你的硬屬件吧

51微控制器位選的問題,51微控制器數碼管實驗位選和段選問題共陰極

比如數碼管是共陽的,位選 就是置1,共陰的就是置0 共陽管,原則就是位選先高專電平,屬再送段選段選控制碼,延時1 5ms,位選低電平熄滅,再下一位。你上面的程式 差個延時。送段選 後才幾微秒時間 眼睛還沒反應就滅了,這是錯的。我看過他的。每復一個數碼管都是八制 個發光二極體構成,其陰極是全部接在一起...

微控制器動態掃描數碼管問題,關於用微控制器實現數碼管動態掃描顯示

電路問題不大,不需要在集電極加上拉電阻。用proteus 和抄實際電路有區別的,數碼管在軟體裡是二極體性質,在有電位差情況下才能導通,而三極體導通需要集電極和發射極之間有電位差,在 開始時,二極體和三極體都是截止的,二極體因為三極體沒有導通而無法開通,三極體因為二極體沒有導通而建立不了集電極電位,或...

微控制器單位數碼管顯示倒計時,微控制器2個單位數碼管顯示倒計時

大體bai思路 a 先要寫好0 du1 2 3 4 5 6 7 8 9數字在七zhi段數碼管顯示的資料表dao程式 b 寫好60每秒減一內直到零的程容序,然後寫要接位程式 30 1 c 寫好將每次數字變化後的數字經過a 輸出到七段數碼管顯示 你板子都焊接好了,就把原理圖貼上來塞,沒原理圖誰知道你是怎...