c語言數碼管程序
『壹』 51單片機,8個數碼管循環顯示1-9的c語言程序。
假設8個歷氏鎮數碼核鄭管肢粗公共端均接地,同時顯示1-9x0dx0a#include
『貳』 求用c語言寫的八位數碼管動態顯示程序,P0控制段,P2控制位。
#include"reg51.h"
#include "intrins.h" //_nop_();延老拿時函數用
#define uchar unsigned char
#define uint unsigned int
#define SEG_OUT P0 //段碼輸出口
#define BIT_OUT P2 //掃描口
sbit dot=P2^7; //LED小數點控制
uchar code tab[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
/* 共陽LED段碼表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */
uchar data dis_buff[8]={1,2,0,0,0,0}; //待顯示單元數據,共6個數據
unsigned long temp;
/*************1毫秒延時程序**************/
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<侍虧搭120;j++)
;
}
//
/***********LED顯空友示動態掃描函數**********/
display()
{
char k;
char m=0xfe;
for(k=0;k<8;k++) //8位LED掃描控制
{ BIT_OUT=0xff;
SEG_OUT=tab[dis_buff[k]];
BIT_OUT=m;
delay1ms(3);
m=(m<<1)|0x01;
}
dis_buff[0]=temp/10000000;
dis_buff[1]=(temp%10000000)/1000000;
dis_buff[2]=(temp%1000000)/100000;
dis_buff[3]=(temp%100000)/10000;
dis_buff[4]=(temp%10000)/1000;
dis_buff[5]=(temp%1000)/100;
dis_buff[6]=(temp%100)/10;
dis_buff[7]=temp%10;
}
/**************初始化程序****************/
void initiation()
{
TMOD=0x01;
TH0=-10000/256;
TL0=-10000%256; //10MS定時初值(T0計時用)
ET0=1;
TR0=1;
EA=1;
}
/****************定時器0中斷服務程序*****/
void init_timer0(void) interrupt 1
{
TH0=-10000/256;
TL0=-10000%256; //10MS定時初值(T0計時用)
t10ms++;
if(t10ms==100)
{
t10ms=0;
ts++;
if(ts==60)
{
temp++;
ts=0;
}
}
}
/****************主程序******************/
main()
{
initiation();
while(1)
{
display();
}
}
一秒加1
『叄』 C語言數碼管計數程序
#include<咐昌扮reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]=
{
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
};
sbit key1=P3^4;
uchar num=0;
void delay(uint z);
void main()
{
while(1)
{
P2=0xfe;
P0=table[num];
delay(50);
if(key1==0)
{
while(!key1);
num++;
};
if(num==10)
{
num=0;
};
}
}
void delay(uint z)
{
while(z--);
}
看衡灶看吧,一迅銷個道理。
『肆』 用C語言編制一個在8個數碼管上輪流顯示1~8的程序(單片機8051)
#include
<搭沒reg51.h>
#define
uint
unsigned
int
/坦枝啟/
宏定義
可以不用
#define
uchar
unsigned
char
sbit
//位申明
具體看你的數碼管是共陰還是共陽的
還有要用到的I/O口
char
tab[]={}
//顯示1--8的數碼管編碼;
voide
delay(uint
a)
//延遲a
ms
晶讓如振偉11.0592
{
uint
i,
j;
for(i=a;i>0;i--);
for(j=110;j>0;j--);
}
main()
{
while(1)
{
//在循環語句里執行顯示函數
}
}
說明:由於這個得看你的電路圖具體情況,上面只是一個框框,你可以自己該就可以!
『伍』 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);//程序不再執行其他步驟;
}
擴展跡返資料:
數字0-9的對應段碼:
數字0 0x3f
數字1 0x06
數字2 0x5b
數字3 0x4f
數字4 0x66
數字5 0x6d
數字6姿慧飢 0x7d
數字7 0x07
數字8 0x7f
數字9 0x6f
『陸』 單片機數碼管顯示0到999c語言程序怎麼編
#include<reg51.h>
unsigned char xs_d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int time=0,s,sz;delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
for(j=0;j<125;j++);
}INT_0()interrupt 0
{ delay(10);
if(INT0==0){sz++;<br> if(sz>2){sz=0;}
}
}
void T0_int()interrupt 1
{
TH0=(65535-50000)/256;//設置初值
TL0=(65535-50000)%256;
s++;
if(s>首喊20){s=0;<br> if(sz==1)time++;<br> if(time>999){time=0;}
if(sz==0){time=0;//清零<br>伏卜 }
(6)c語言數碼管程序擴展閱讀:
運算器由運算部件——算術邏輯單元(Arithmetic & Logical Unit,簡稱ALU)、累加器和寄存缺芹穗器等幾部分組成。
ALU的作用是把傳來的數據進行算術或邏輯運算,輸入來源為兩個8位數據,分別來自累加器和數據寄存器。ALU能完成對這兩個數據進行加、減、與、或、比較大小等操作,最後將結果存入累加器。
運算器有兩個功能:
(1) 執行各種算術運算。
(2) 執行各種邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。
運算器所執行全部操作都是由控制器發出的控制信號來指揮的,並且,一個算術操作產生一個運算結果,一個邏輯操作產生一個判決。
『柒』 c語言程序怎麼讓數碼管循環顯示0123-9012再到0123然後數碼管熄滅
1.首先你要有幾個函數可以顯示每個數碼管數字
voidled1Show(chardat);
voidled2Show(chardat);
voidled3Show(chardat);
voidled4Show(chardat);
dat為你要顯示此世的字元,函數是不是能復用,看你代碼
2.再寫一個統一顯示的函數
voidledShow(intdat)//dat為你要顯示的數字
{
led1Show(dat/1000);
led2Show(dat%1000/100);
led3Show(dat%100/10);
led4Show(dat%10);
}
3.在你的主函數中調用
intdat=123;
while(1)
{
ledShow(dat);
並螞dat++;
if(dat>9012)
絕扒埋dat=123;
delay_ms(500);//加個延時,要不然會刷新太快。
}
『捌』 51單片機顯示八位數碼管的C語言程序
1、最開始,我們虛桐先打開keil。