導航:首頁 > 操作系統 > 51單片機數碼管c語言

51單片機數碼管c語言

發布時間:2022-10-19 07:15:35

『壹』 運用51單片機實現4位8段LED數碼管的動態數字顯示,寫出C語言程序

動態顯示的是有固定格式的,賦值,開顯示,延時,關顯示,假設p0口接數據顯示位,p2口低4位接片選,
p2=tab[1];
//賦值
p3_0=0;
//開第一位顯示
for(i=0;i<200:i++);//延時
p3_0=1;
//關第一位顯示
p2=tab[2];
p3_1=0;
//開第二位顯示
for(i=0;i<200:i++);
p3_1=1;
這個程序就是讓兩個數碼管分別顯示1和2,注意程序開頭包含頭文件regx52.h,如果是包含reg52.h編譯不了的

『貳』 運用51單片機實現4位8段LED數碼管的動態數字顯示,寫出C語言程序

#include<reg51.h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,nn=0;
uchar dat[]={2,0,1,2,1,1,4,5,8,2};
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
number%=4;
switch(number)
{
case 0:P2=0x08;P0=distab[nn];
break;
case 1:P2=0x04;P0=distab[nn+1];
break;
case 2:P2=0x02;P0=distab[nn+2];
break;
case 3:P2=0x01;P0=distab[nn+3];
break;
default:break;
}
nn++;
nn%=7;
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}

『叄』 51單片機c語言設計,按鍵控制數碼管,依次按下顯示0到9循環

假設你的是共陽極數碼管,P0接數碼。按鍵接P2^0;

#include<reg52.h>
typedef unsinged int uint;
sbit key=P2^0;
unsigned char tab[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void denay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--)

}

void main()
{
uchar a;

while(1)
{
P0=tab[a];

if (key1==0)
{delay(10);
if(key==0)
{
while(!key1);

a++;
if(a==10) a=0;

}

}

}

『肆』 51單片機c語言版,編寫程序:單片機控制八位LED數碼管顯示20220204間隔兩秒後顯示2022

摘要 顯示程序和硬體關聯,如驅動方式、位數等,所以沒有統一的程序,假定動態顯示,大概思路如下:

『伍』 51單片機c語言設計,按鍵控制數碼管,依次按下顯示0到9循環

#include<reg51.h>

sbitk1=P1^0;

#define uint16 unsigned int

#define uchar unsigned char

uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay()
{

uint16 i=1000;

while(i--);
}

void main()

{

uchar n ;

P2=0xfe;

P1=0xff;

while(1)

{

if(k1==0)
{

if(n>=9) n=0;

else n++;

P0=shuzu[n];

while(!k1);

delay();

while(!k1);

}

}

}

(5)51單片機數碼管c語言擴展閱讀

51單片機的功能特性

1,可以模擬63K程序空間,接近64K 的16位地址空間;

2,可以模擬64Kxdata 空間,全部64K 的16位地址空間;

3,可以真實模擬全部32 條IO腳;

4,完全兼容keilC51 UV2 調試環境,可以通過UV2 環境進行單步,斷點, 全速等操作;

5,可以使用C51語言或者ASM匯編語言進行調試 ;

6,可以非常方便地進行所有變數觀察,包括滑鼠取值觀察,即滑鼠放在某 變數上就會立即顯示出它此的值;

7,可選 使用用戶晶振,支持0-40MHZ晶振頻率;

8,片上帶有768位元組的xdata,您可以在模擬時選 使用他們,進行xdata 的模擬;

9,可以模擬雙DPTR 指針;

10,可以模擬去除ALE 信號輸出. ;

11,自適應300-38400bps 的所有波特率通訊;

12,體積非常細小,非常方便插入到用戶板中.插入時緊貼用戶板,沒有連接電纜,這樣可以有效地減少運行中的干擾,避免模擬時出現莫名其妙的故障;

13,模擬插針採用優質鍍金插針,可以有效地防止日久生銹,選擇優質園腳IC插座,保護模擬插針,同時不會損壞目標板上的插座. ;

14,模擬時監控和用戶代碼分離,不可能產生不能模擬的軟故障;

15,RS-232介面不計成本採用MAX202集成電路,串列通訊穩定可靠,絕非一般三極體的簡易電路可比。

『陸』 51單片機的共陰數碼管怎麼顯示數字(c語言)知道

共陰極數碼管也就是說,當控制信號為1時該段LED點亮,8段數碼管的數字0~9定義為:
3FH,06H,5BH,4FH,66H
;01234
6DH,7DH,07H,7FH,6fh
;56789
以下為簡易8路搶答器的常式:
#include<reg51.h>
#define
uchar
unsigned
char
uchar
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbit
rstkey=P2^2;
sbit
speaker=P2^0;
void
delay()//延時約400毫秒
{
uchar
i,j;
for(i=0;i<200;i++)
for(j=0;j<250;j++);
}
main()
{
uchar
i,key;
P2=0xff;
while(1)
{
i=0;
P1=table[i];
while(1)
{
key=P3;
if(key!=0)break;
}
switch(key)
{
case
0x01:i=1;break;
case
0x02:i=2;break;
case
0x04:i=3;break;
case
0x08:i=4;break;
case
0x10:i=5;break;
case
0x20:i=6;break;
case
0x40:i=7;break;
case
0x80:i=8;break;
default:break;
}
P1=table[i];//顯示按下搶答器的號
P0=key;//顯示按下鍵號的LED
while(1)
{
if(rstkey==0)break;//主持人按下復位鍵則重新開始
speaker=~speaker;//否則蜂鳴器報警
delay();
}
}
}

『柒』 51單片機數碼管6秒倒計時c語言

#include <reg51.h>
#define KEY (P1&0x7)
#define SEG P2
#define WEI P3
typedef unsigned char uint8;
uint8 sec,min,ct,flag1,flag2;
uint8 code dis[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
// 0 1 2 3 4 5 6 7
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//0~F的段碼

// 8 9 A B C D E F
uint8 dis_buf[4];
bit keyp = 0;
void delay(uint8 m) //延時程序
{
uint8 i, j;
for(i = 0 ;i < m; i++)
for(j = 0;j < 128 ; j ++)
;
}

void init()
{
TMOD = 0x01;
TH0 = (65536 - 50000)/256;
TL0 = 65536 - 50000; //timer0 init

ET0 = 1;
EA = 1;

TR0 = 1;

}

void p_data(uint8 dat1,uint8 dat2) //數據處理
{
dis_buf[0] = dat1 / 10;
dis_buf[1] = dat1 % 10;
dis_buf[2] = dat2 / 10;
dis_buf[3] = dat2 % 10;

}

void display(uint8 flash) //顯示
{
uint8 i,wx = 1;
for(i = 0; i < 4 ; i++)
{
if(flash != 0)
{
if((i==(flash-1))&&(ct < 10))
{
SEG = 0x00;
}
else
SEG = dis[dis_buf[i]];
}
else
SEG = dis[dis_buf[i]];
WEI = ~(wx<<i);
delay(20);
SEG = 0x00;
}
}

void keyscan()
{
if(KEY != 7)
{
delay(5);
if(KEY != 7)
{
if(!keyp)
{
keyp = 1;
switch(KEY)
{
case 6:
flag1++;
break;
case 5:
flag2++;
break;
case 3:
flag2--;
break;
}
}
}
}
else
keyp = 0;
}

void main()
{
sec = 6;

init();
while(1)
{
keyscan();
p_data(min,sec);
display(flag1%5);

if(flag1!=0)
{
if(ct == 19)
ct = 0;
}
switch(flag1)
{
case 1:
sec = flag2;
if(flag2 > 5)
flag2 = 0;
if(flag2 == -1)
flag2 = 6;
break;
}

}
}

void t0() interrupt 1 using 1
{
TH0 = (65536 - 50000)/256;
TL0 = 65536 - 50000;

ct++;
if(ct > 19)
{
ct = 0;
sec--;
if(sec == 255)
{
sec = 6;

}
}
}

『捌』 51單片機的共陰數碼管怎麼顯示數字(c語言)

要讓51單片機共陰數碼管顯示數字,只需要將單片機的P2埠輸出數字對應的段碼即可。

以顯示數字「0」為例,c語言程序如下:

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

//數碼管的段碼編碼

Uchar table[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main(){//主函數

P0 = table[0];//顯示0,大家可以修改裡面的數據。

while(1);//程序不再執行其他步驟;

}

(8)51單片機數碼管c語言擴展閱讀:

數字0-9的對應段碼:

數字0 0x3f

數字1 0x06

數字2 0x5b

數字3 0x4f

數字4 0x66

數字5 0x6d

數字6 0x7d

數字7 0x07

數字8 0x7f

數字9 0x6f

『玖』 51單片機 c語言 按鍵和數碼管顯示

#include<reg51.h>
unsignedcharled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voidled_display(unsignedcharnum);
unsignedcharkey_scan();
sbitled1=P2^0;
sbitled2=P2^1;
voidmain()
{
unsignedcharled_key;
P1=0;
while(1)
{
led_key=key_scan();
led_display(led_key);
}
}
voidled_display(unsignedcharnum)
{
unsignedcharten,single;
intdelay;
ten=num/10;
single=num%10;
delay=100;
for(delay=200;delay>0;delay--)
{
P0=led[ten];
led1=0;
led1=1;
P0=led[single];
led2=0;
led2=1;
}
}
/////////////////////////////////////////
unsignedcharkey_scan(void)
{
unsignedchartemp,key;
P1=0xfe;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=1;
break;
case0xd0:key=2;
break;
case0xb0:key=3;
break;
case0x70:key=4;
}
returnkey;
}
P1=0xfd;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=5;
break;
case0xd0:key=6;
break;
case0xb0:key=7;
break;
case0x70:key=8;
}
returnkey;
}

P1=0xfb;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=9;
break;
case0xd0:key=10;
break;
case0xb0:key=11;
break;
case0x70:key=12;
}
returnkey;
}
P1=0xf7;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=13;
break;
case0xd0:key=14;
break;
case0xb0:key=15;
break;
case0x70:key=16;
}
returnkey;
}
}

你好!很高興為您解答!我有歡迎採納!!以上傳附件!!

『拾』 80C51單片機數碼管的顯示 C語言

用10個8段數碼管動態掃描顯示的:
#include
unsigned
char
const
dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
顯示段碼值0123456789
unsigned
char
code
seg[]={0,1,2,3,4,5,6,7,8,9};//分別對應相應的數碼管點亮,即位碼
/*------------------------------------------------
延時子程序
------------------------------------------------*/
void
delay(unsigned
int
cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函數
------------------------------------------------*/
main()
{
unsigned
char
i;
while(1)
{
P0=dofly[i];//取顯示數據,段碼
P2=seg[i];
//取位碼
delay(20000);
//掃描間隙延時,時間太長會閃爍,太短會造成重影,自己調試
i++;
if(10==i)
//檢測10位掃描完全?
i=0;
}
}

閱讀全文

與51單片機數碼管c語言相關的資料

熱點內容
打開加密軟體的方法 瀏覽:154
雲存儲伺服器可靠嗎 瀏覽:967
2核1g的雲伺服器能帶動游戲嘛 瀏覽:898
逆命20解壓碼 瀏覽:144
徐州辦犬證需要下載什麼app 瀏覽:1002
百保盾是什麼樣的app 瀏覽:699
文件和文件夾的命名規格 瀏覽:796
java命令行運行java 瀏覽:664
搜索pdf內容 瀏覽:497
程序員裝機必備的軟體 瀏覽:12
php微信第三方登錄demo 瀏覽:538
上海php工具開發源碼交付 瀏覽:793
哪裡有求購黃頁的源碼 瀏覽:194
商城礦機源碼礦場系統 瀏覽:198
單片機的led燈熄滅程序 瀏覽:224
洛陽python培訓 瀏覽:704
小鍵盤命令 瀏覽:194
單片機c語言返回主程序 瀏覽:816
dockerpythonweb 瀏覽:972
程序員演算法有多強 瀏覽:717