導航:首頁 > 操作系統 > 單片機小數點怎麼亮

單片機小數點怎麼亮

發布時間:2025-08-25 00:43:37

① 51單片機的按鍵控制小燈亮滅的問題(程序類型:c語言)怎麼解決

#include
#define uint unsigned int
sbit LED = P1^0;
sbit KEY1 = P1^2;
void delay(uint);
void main(void)
{
LED = 1; //初始化LED熄滅
KEY1 = 1; //賦值KEY1高電平
while(1)
{
if(!KEY1) //檢測到按鍵按下
{
LED = ~LED; /*LED取反,此時LED = 0,燈亮。當鬆手時,KEY1 = 1,不滿足if語句不
進入循環,LED繼續保持當前狀態即LED = 0,如果再次按下按鍵,此時檢測到KEY1 = 0,進入循
環,LED取反得到LED = 0,燈亮。*/
delay(500); /*此處延遲,保證連續兩次按鍵動作處在程序的延時過程中,不進行其他程序從而不會影響小燈。*/
}
}

}
void delay(uint z) //延時函數
{
uint x, y;
for(x=85; x>0; x--)
for(y=z; y>0; y--);
}

可下載到單片機驗證。

② 單片機控制數碼管顯示電路圖的運行原理是什麼

原理:

數碼管其實是由發光二極體組成,有共陰極和共陽極之分,對於共陽極來說,一位數碼管由8個二極體組成,他們的陽極接在一起接+5v電源,而各個陰極與某個埠,如p1的8個引腳相連,當某個引腳輸出低電平的時候數碼管對應的二極體亮。

③ 關於用51單片機做一個電子時鍾的問題


程序中好像還沒有自動加時的部分,並且按鍵處理還沒有消抖措施


不多說了,上程序,俺剛剛為你編寫的,測試的時候使用的埠和你的不一樣


在我的開發板上測試成功後,按照你的板子埠做了修改


如果你直接復制到你的程序中不能使用,檢查及更改一下埠即可


如果滿意記得採納哦,若有疑問可以隨時向我提問


/***************************************************************************/

//#include<stdio.h>

#include<reg51.h>

sbit p20=P2^0; sbit p21=P2^1; sbit led=P2^7;

char dis_2[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管顯示編碼

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

/***************************************************************************/

void delay(char hs)//延時函數

{char hk;for(;hs>0;hs--){for(hk=100;hk>0;hk--);}}

/***************************************************************************/

void XS(unsigned int xh,unsigned int xs) //顯示子函數

{

char d1,d2,d3,d4;

d1=(xs/1)%10; d2=(xs/10)%10;

d3=(xh/1)%10; d4=(xh/10)%10;


P0=dis_2[d1]; P1=0x08; delay(10); P1=0x00;//秒個位

P0=dis_2[d2]; P1=0x04; delay(10); P1=0x00;//秒十位

P0=0x7f; P1=0x04; delay(10); P1=0x00;//小數點

P0=dis_2[d3]; P1=0x02; delay(10); P1=0x00;//時個位

P0=dis_2[d4]; P1=0x01; delay(10); P1=0x00;//時十位

}

/***************************************************************************/

void main(void)

{

TH0=(65536-1000)/256; TL0=(65536-1000)%256;

TMOD=0x01; EA=1; ET0=1; TR0=1;//定時器初始化

while(1)//主循環

{

if(p20==0){delay(10);if(p20==0){h++;if(h>23){h=0;}}while(!p20){XS(h,m);}}

if(p21==0){delay(10);if(p21==0){m++;if(m>59){m=0;}}while(!p21){XS(h,m);}}

XS(h,m);//調用數碼管顯示函數

}

}

/***************************************************************************/

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

{

TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;t++;

if(t>500){t=0;led=~led;}//LED閃爍

if(n>1000){n=0;s++;}//如果達到一秒,秒加一

if(s>59){s=0;m++;}//如果達到一分,分加一

if(m>59){m=0;h++;}//如果達到一小時,小時加一

if(h>23){h=0;}//如果達到24小時,小時清零

}

/***************************************************************************/

④ 單片機中|0x80為什麼能點亮小數點

這取決於你的電路。

0x80即最高位為1,即最高位置1亮,由此可以判斷出,你的電路是共陰接法,數碼管為高電平驅動,且小數點的段接在IO的bit7。

在上述條件下,當數碼管公共端接地時,若8段中某一段所接的IO輸出高電平,則對應段會亮。|0x80之前應該是取段碼,段碼中不含小數點,再與0x80或之後,則添加上小數點的段碼。

閱讀全文

與單片機小數點怎麼亮相關的資料

熱點內容
情節情節pdf 瀏覽:880
使用u盤安裝gcc編譯器命令 瀏覽:573
java空格亂碼 瀏覽:381
php高端技術 瀏覽:646
cad中xc是什麼命令 瀏覽:26
程序員公開課應該去哪裡學 瀏覽:59
程序員那麼可愛的小摩托 瀏覽:366
深圳java程序員 瀏覽:402
java中的通信 瀏覽:614
php端到端加密 瀏覽:359
世界最奇特的解壓方式 瀏覽:71
鎂粉解壓視頻教學 瀏覽:741
程序員共享網站 瀏覽:940
搬家服務app怎麼開發 瀏覽:418
騰訊雲外賣伺服器 瀏覽:156
單片機1602顯示程序 瀏覽:259
php檢測網路 瀏覽:340
程序員面試金典第6版 瀏覽:722
內存2g編譯安卓 瀏覽:416
單片機小數點怎麼亮 瀏覽:417