當前位置:首頁 » 編程語言 » 點亮數碼管的c語言

點亮數碼管的c語言

發布時間: 2022-11-01 06:59:41

㈠ 請教單片機控制數碼管顯示數字c語言程序問題,滿意加分

if(8==j) j=0;
錯在這里改if(j==8){j=0;}還有就是你的程序也有問題,程序運行時P0=0x01的情況不會出現,因為P0=0x01<<(j++);後進入switch的P0隻會從0x02開始~粗心了吧~還有就是你用的什麼數碼管?不是用的那種共陽、共陰8位數據端的數碼管?是8421那種?下面修改後的程序(數碼管採用的是共陽的數碼管)#include <reg51.h>#define uchar unsigned charuchar led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
main()
{
int i;
char j=0;
while(1)
{
switch(P0)
{
case 0x01: P2=led[0];break;
case 0x04: P2=led[1];break;
case 0x02: P2=led[2];;break;
case 0x08: P2=led[3];;break;
case 0x10: P2=led[4];;break;
case 0x40: P2=led[5];;break;
case 0x20: P2=led[6];;break;
case 0x80: P2=led[7];;break;
}
for(i=0;i<10000;i++);//延時時間隨意寫的
if(j<7) {j++;P0=0x01<<j;}else{P0=0x01;j=0;}
}
}
如果還有問題~就留給郵箱~我發模擬和程序給你~上面的程序是隨手打的~可能有錯哈~不過思路是對的~

㈡ 51單片機數碼管,下面是數碼管原理圖,求簡單的C語言程序點亮數碼管

你試著將所有的都置1,或者為0,加上控制端 共四種情況 就會出來了 左邊的8個口就是數碼管8字 中的7個橫豎管 加上一個 點 共八個 右邊為哪個數碼管的控制端
畢竟不知道是共陰極還共陽極的數碼管

㈢ 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;
}
}

㈣ 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();
}
}
}

㈤ 怎麼用c語言編寫數碼管1234和5678來回閃爍

1.51單片機C語言實現循環8個流水燈左移三次,後右移三次。
常式:

#include<reg51.h>//51單片機頭文件
#include<intrins.h>//包含有左右循環移位子函數的庫
#defineuintunsignedint//宏定義
#defineucharunsignedchar//宏定義
sbitbeep=P2^3;
voiddelay(uintz)//延時函數,z的取值為這個函數的延時ms數,如delay(200);大約延時200ms.
{//delay(500);大約延時500ms.
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidmain()//主函數
{
uchara,i,j;
while(1)//大循環
{
a=0xfe;//賦初值
for(j=0;j<3;j++)for(i=0;i<8;i++)//左移三次
{
P1=a;//點亮小燈
beep=0;//開啟蜂鳴器
delay(50);//延時50毫秒
beep=1;//關閉蜂鳴器
delay(50);//再延時50毫秒
a=_crol_(a,1);//將a變數循環左移一位
}
a=0x7f;
for(j=0;j<3;j++)for(i=0;i<8;i++)//右移三次
{
P1=a;//點亮小燈
beep=0;//開啟蜂鳴器
delay(50);//延時50毫秒
beep=1;//關閉蜂鳴器
delay(50);//再延時50毫秒
a=_cror_(a,1);//將a變數循環右移一位
}
}
}


2.51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8031單片機,後來隨著Flash rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。

㈥ C語言單片機代碼 數碼管動態顯示

你這數組裡面16組數分別為0~f的共陰數碼管的編碼,你說只需要數碼管顯示0~6,那麼多餘的就沒有用到,或者 在別的函數裡面有用到 你仔細看你的程序……
P0=table[1],意思就是說 往P0裡面送table這組數裡面的第2個數也就是0x06,0x06正好是共陰數碼管顯示1的編碼。所以數碼管就會顯示1,同理 table[2]就是顯示2的編碼,需要注意的是table[0]指定的是table裡面的第一個數。

熱點內容
一個文件夾一個窗口 發布:2025-01-09 20:02:08 瀏覽:478
java的indexof 發布:2025-01-09 19:51:14 瀏覽:610
光遇ios國際服怎麼登錄安卓 發布:2025-01-09 19:44:24 瀏覽:778
手機如何破解無線密碼 發布:2025-01-09 19:36:52 瀏覽:49
java貓 發布:2025-01-09 19:35:13 瀏覽:130
linux埠號命令 發布:2025-01-09 19:21:55 瀏覽:530
輸入虛擬手機伺服器地址怎麼填 發布:2025-01-09 18:58:50 瀏覽:349
dede換資料庫 發布:2025-01-09 18:53:23 瀏覽:263
sql2000資料庫置疑修復 發布:2025-01-09 18:35:54 瀏覽:411
塊設備塊緩存 發布:2025-01-09 18:35:46 瀏覽:485