導航:首頁 > 操作系統 > 讓單片機中數碼管亮1

讓單片機中數碼管亮1

發布時間:2022-09-26 12:44:04

A. 數碼管共陽極,讓第一個數碼管顯示數字1,是先打開「段選」還是「位選」

單片機上電瞬間我記得IO電平是不定的,所以控制數碼管的IO如果沒有外部上拉的話是不會亮的,如果你只點亮一個數碼管的話,段選和位選的先後沒什麼關系,如果輪詢多個的話建議還是先段後位

B. 我在給單片機編程時,想讓第一個數碼管亮,然後編了下面的程序

你好
如樓上說的,程序沒問題,第一段程序,先把語句順序調一下:
void main()
{
P0=0xfe;
wela=1;
wela=0;

P0=0x06;
la=1;
la=0;
}
還不行的話,查查電源電壓,是否在4.5-5.5.

第二段程序是掃描速度太快,造成MCU外部晶元跟不上MCU的速度,在末尾加入延時,才能正常,如:
void Delay(unsigned int t)
{
while(--t);
}
主程序:
while(1)
{
wela=1;
P0=0xfe;
wela=0;

la=1;
P0=0x06;
la=0;
Delay(200); //掃描間隙延時,時間太長會閃爍,太短會造成重影
}

C. 51單片機怎麼點亮數碼管

單片機通過驅動電路給數碼管中相應各段的發光二極體加正向電壓,該段發光二極體就會被點亮。
不同段的發光二極體加正向電壓則亮,不加正向電壓則滅,這樣就可以通過各段的亮滅組合,來顯示不同的數字和字元了。

單片機是通過向數碼管送段形(即顯示編碼),來給數碼管相應的各段加正向電壓來實現的。

D. 怎麼讓51單片機亮一數碼管,或者亮幾個能從一變的。用c語言的,順便幫我講講埠問題,剛開始學,誰能告訴

#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int
uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code ACT[4]={0xfe,0xfd,0xfb,0xf7};
/***********************************************************/
sbit D0=P1^0;
sbit D1=P1^1;
sbit D2=P1^2;
sbit D3=P1^3;
sbit D4=P1^4;
sbit D5=P1^5;
sbit D6=P1^6;
sbit D7=P1^7;
#define ON 0
#define OFF 1
uchar a[2]; //a[0]用於存放發光管編號,a[1]用於存放發光管亮、滅的選擇
uchar cnt;
uchar temp,tp,i;
bit outflag; //定義位標志用於輸出控制
/****************************************/
void delay(uint k)
{
uint data i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++){;}
}
}
/**************************************/
void init(void)
{
TMOD=0x20; //定時器T1方式2
TH1=0xfd; //波特率9600 初值由公式P210得來,SMOD默認是0
TL1=0xfd; //
SCON=0x50; //串口方式1,10位可變波特率,允許接收
TR1=1; //啟動T1
ES=1; //串口1開中斷
EA=1; //打開總中斷
}
/****************************************/
void main(void)
{
init();
while(1)
{
P0=SEG7[a[0]];P2=ACT[2];delay(1); //顯示變數a[0](發光管編號)
P0=SEG7[a[1]];P2=ACT[0];delay(1); //顯示變數a[1](發光管亮、滅的選擇)
if(outflag==1) //如果輸出標志為1,進入if語句
{
switch(a[0])
{
case 1:if(a[1]==1)D0=ON;else D0=OFF;break;
case 2:if(a[1]==1)D1=ON;else D1=OFF;break;
case 3:if(a[1]==1)D2=ON;else D2=OFF;break;
case 4:if(a[1]==1)D3=ON;else D3=OFF;break;
case 5:if(a[1]==1)D4=ON;else D4=OFF;break;
case 6:if(a[1]==1)D5=ON;else D5=OFF;break;
case 7:if(a[1]==1)D6=ON;else D6=OFF;break;
case 8:if(a[1]==1)D7=ON;else D7=OFF;break;
default:break;
}
outflag=0; //置輸出標志為0
}
if(RI)
{
RI=0;
SBUF=tp; while(TI==0);TI=0;
EA=1;
}
}
}
/******************************************/
void serial_serve(void) interrupt 4 //定義函數名為serial_serve的串口接收中斷服務函數,使用默認的寄存器組
{

//RI=0; //清除接收標志
EA=0; //關閉總中斷
temp=SBUF; //將接收到的信息存放在temp中,單片機中的SBUF一般只有一個位元組,字元也是一個位元組,因此一次只接受一個字元,這里一共進行了5次中斷
tp=temp;
switch(cnt)
{
case 0:if(temp=='#')cnt=1;else outflag=0;break;
case 1:if((temp>0x30)&&(temp<0x39)){a[0]=temp-0x30;cnt=2;}else outflag=0;break;
case 2:if(temp=='(')cnt=3;else outflag=0;break;
case 3:if((temp>=0x30)&&(temp<=0x38)){a[1]=temp-0x30;cnt=4;}else outflag=0;break;
case 4:if(temp==')'){cnt=0;outflag=1;}else outflag=0;break;
default:break;
}
//EA=1; //打開總中斷
}

串口通訊,你還是好好看看吧,直接給你個程序有什麼用呢?又不是萬能的,要自己根據實際情況寫的。

E. 我在給單片機編程時,想讓第一個數碼管亮,然後編了下面的程序

你好
如樓上說的,程序沒問題,第一段程序,先把語句順序調一下:
void
main()
{
P0=0xfe;
wela=1;
wela=0;
P0=0x06;
la=1;
la=0;
}
還不行的話,
查查
電源電壓,是否在4.5-5.5.
第二段程序是掃描速度太快,造成MCU外部晶元跟不上MCU的速度,在末尾加入延時,才能正常,如:
void
Delay(unsigned
int
t)
{
while(--t);
}
主程序:
while(1)
{
wela=1;
P0=0xfe;
wela=0;
la=1;
P0=0x06;
la=0;
Delay(200);
//掃描間隙延時,時間太長會閃爍,太短會造成
重影
}

F. 怎麼的單片機一位數碼管輸入0xbe就可以顯示1

這個取決於數碼管引腳與單片機IO口的連接,0xbe顯示1,說明數碼管右邊的兩劃(筆畫段b和c)接在單片機某個埠的第0腳和第6腳,因為0xbe的二進制是10111110,兩個0就是兩個被點亮的筆畫段,這是共陰數碼管

G. 單片機數碼管同時顯示 1 2.

你的延時程序不對。
void delay(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);//你這里竟然是大於!?
}

還有,問這種問題前先要告訴別人,你的數碼管是共陰還是共陽的。你的位選到底是怎麼樣的。

不然怎麼看得懂程序。

最後,給別人看的程序最好在變數處添加變數的作用的注釋。這個程序短,不然我肯定

不高興看。

要亮的那些燈,即P0=table[x]後面,加上延時delay(50);在延時過程中,P0不變,可以讓

燈亮的久一點。

我估計你的重影就是應為延時程序失效,每次都不滿足循環條件直接跳出,亮燈程序後

面沒有延時,燈亮和暗時間一樣就閃了,閃的很快情況下就是重影。

H. 怎麼讓51單片機亮一數碼管,或者亮幾個能從一變的。

問題很簡單用動態掃描,或是用解碼器晶元或是用74HC164

I. 51單片機數碼管如何依次點亮

51單片機數碼管依次點亮:選擇數碼管操作稱為位選,根據自己的開發板原理圖找到位選對應的管腳,以共陰極為例。要在編程時執行選中操作,只要給對應管腳低電平即可。段選同樣。如果每個單獨連接佔用管腳太多,很浪費硬體資源,所以採用多位串聯控制。

數碼管通常有兩種不同的接法,共陰極和共陽極,共陰極顧名思義就是講八個二極體的陰極連接在一起,這樣根據二極體導通原理,通過控制不同二極體陽極電平就可以控制數碼管顯示不同的數字。單個數碼管是由八個發光二極體連接而成,通過控制不同led點亮,可以使之顯示不同的數字。

注意區分兩個概念即段選和位選;位選指數碼管對應的位,例如圖共有八個數碼管,位選就是選中哪一個數碼管操作,段選則是控制數碼管顯示什麼數字。靜態顯示為了縮短代碼長度,一般都是採用匯流排式編程,顯示數字共陰共陽互為反。

J. 本人初學單片機,請各位大神幫幫忙,我點亮一號數碼管顯示數字1,可是4.5.6.7.8號數碼管微亮顯示數字1。

你這是模擬,還是實物呀?
是用兩片74HC573鎖存器的吧?你看過,誰這么寫程序的?

閱讀全文

與讓單片機中數碼管亮1相關的資料

熱點內容
寧波程序員接私活小程序 瀏覽:491
小六壬pdf 瀏覽:12
怎麼通過快捷指令隱藏手機app 瀏覽:609
方舟手游如何辨別優質伺服器 瀏覽:116
pdf林徽因傳 瀏覽:527
國產區小電影網址 瀏覽:102
西班牙大尺度男男 瀏覽:609
消先的眼角膜電影 瀏覽:434
編譯原理課設項目簡介 瀏覽:921
日本《失樂園》無刪減 瀏覽:227
更新最快的電視劇網站 瀏覽:597
啟動app的廣告怎麼關 瀏覽:850
非sp文中的sp情節的小說 瀏覽:76
女主是被拐賣到大山的小說 瀏覽:858
哆啦a夢美人魚電影 瀏覽:597
舊版本蝌蚪短視頻app怎麼不能 瀏覽:458
電影劇情里有個老頭在雨里騎單車有防 瀏覽:950
日本歐美推理片電影 瀏覽:75
主角穿越到紅軍長征 瀏覽:915
《屍吻》拿走不謝 瀏覽:306