導航:首頁 > 操作系統 > 單片機編程數碼管

單片機編程數碼管

發布時間:2022-06-25 16:20:46

『壹』 單片機編程:用數碼管和led實現,用數碼管倒計時10秒,LED左移閃爍一次,如此交替下去

#include<reg52.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitled=P3^3;//P3^3--LED--電源,這樣接法,即低電平點亮
//P0接數碼管的段
//P2接數碼管的位

//共陰數碼管的段定義,0~9
//ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共陽數碼管的段定義,0~9
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

voidDelay(uintn){
while(n--)
//voidDelay1ms()//@11.0592MHz
{
unsignedchari,j;

_nop_();
i=2;
j=199;
do
{
while(--j);
}while(--i);
}
}

voidmain(void){
ucharj=10,m=0;
while(1){
P2=1;//共陽。如果共陰,要取反
P0=table[j/10%10];//j值的十位數
Delay(5);

P2=2;//共陽。如果共陰,要取反
P0=table[j%10];//j值的個位數
Delay(5);

m++;
if(m==97){//前面顯示佔用約10毫秒,所以100次就是1秒
if(j==0){//倒計時到0
P2=0;//關閉數碼管
for(m=0;m<5;m++){//LED閃爍
led=0;
Delay(100);
led=1;
Delay(100);
}
j=11;
}
j--;
m=0;
}
}
}


//經過測試的。。。

『貳』 請教51單片機的數碼管編程問題

有最後的 while (1);,你的單片機就不斷循環空等,輸出會保持,所以第一個數碼管正確顯示6。

沒有最後的 while (1);,你的單片機會繼續執行往下的代碼(是沒定義的或不確定的),也就是" 跑飛"了,
跑飛的後續結果通常是不確的,出現你描述的現象一點不奇怪

『叄』 C51單片機數碼管程序設計,

#include
#define
uchar
unsigned
char
uchar
code
table[11]
=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
//共陰
void
delay(uint
i)//延時時間約為
10ms
*
x
{
uchar
x;
for(x=0;x<=1827;x++);
}
void
main(void)
{
uchar
i
=
0;
for(i=0;i<11;i++)
{
p0
=
table[i];
//
i
值的
個位數
if(i==10)
p2=0x01;
//點亮最後一個數碼管
p2
=
0x0f;
//點亮四個數碼管
delay(100);
//
延時1s
}
}
說明:若接法不一樣,則賦值也不一樣。

『肆』 單片機編程 數碼管0.5進位怎麼編程

不太明了意圖,但數碼管顯示時,一般都要設置顯示暫存,例如:8位數碼管顯示時,程序里要有
unsigned char d[8];另外還有顯示數據轉換程序,以2位顯示為例,待顯示數N,則有d[1]=N/10;
d[0]=N%10;此時如果需要4舍5入時,程序如下:
***************
d[0]=N%10;

if(d[0]>=5)
{d[1]=(N/10)+1;d[0]=0;}
else

d[1]=N/10;
d[0]=N%10;
**************
還要根據數據類型定義N,如果是小數數據最好是放大成整數進行運算,而後再根據實際情況顯示小數點。

『伍』 在單片機編程過程中,針對共陰極數碼管0和1的字形碼為什麼

00111111b。單片機c語言編程是基於C語言的單片機編程。單片機的C語言採用C51編譯器(簡稱C51)。在單片機編程共陰極數碼管的字型編碼應為:00111111b。

『陸』 51單片機四位一體共陽極數碼管顯示編程

不清楚你的電路構成如何,因此先按下面的假設執行段碼及位碼的輸出;
其中,延時值可根據實驗效果予以調整;
設 P0 為輸出七段碼(共陽極數據);
四位數碼管有4個陽極,設位碼分別與P2.4--P2.7對應,並且=1時表示可點亮數碼管;
sbit wma1=b2^4; //對應左起第1個數碼管的陽極

sbit wma2=b2^5; //對應左起第2個數碼管的陽極
sbit wma3=b2^6;
sbit wma4=b2^7;
void main()
{
wma1=0; wma2=0; wma3=0; wma4=0;
while(1)
{
P0=table[0]; wma1=1; delay(10); wma1=0;
P0=table[1]; wma1=2; delay(10); wma2=0; P0=table[2]; wma1=3; delay(10); wma3=0; P0=table[3]; wma1=4; delay(10); wma4=0; P0=table[4]; wma1=1; delay(10); wma1=0; P0=table[5]; wma1=2; delay(10); wma2=0; P0=table[6]; wma1=3; delay(10); wma3=0; P0=table[7]; wma1=4; delay(10); wma4=0;
}
}

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

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

『捌』 單片機數碼管編程 匯編語言,急

U16INC	MACRO	U16,;;16位無符號型變數加1
LOCALZZ
INC U16+1
MOV A,U16+1
JNZ ZZ
MOV U16+1,#0
INC U16
ZZ:
ENDM

U16MOV MACRO U16,VAL;;16位無符號型變數賦值
MOV U16+1,#LOW(VAL)
MOV U16,#HIGH(VAL)
ENDM

U16DAYV MACRO U16,VAL,;;16位無符號型變數判斷大小,最後根據Cy判斷
MOV A,U16+1
CLR C
SUBB A,#LOW(VAL)
MOV A,U16
SUBB A,#HIGH(VAL)
ENDM

WX1 EQU P2.0
WX2 EQU P2.1
WX3 EQU P2.2
WX4 EQU P2.3

S4 EQU P1.3
S5 EQU P1.4

LED1 EQU P1.6;;兩個LED
LED2 EQU P1.7

JDQ EQU P1.5;;繼電器

SMGBZ1 EQU 0X30
DS1 EQU 0X31

ZT EQU DS1+4
JSBZ1 EQU ZT+1;0-39的計數
JSBZ2 EQU ZT+2;計時標志,用於閃爍和計時
JSBZ3 EQU JSBZ2+2;;繼電器通斷兩次的計時和計數

ORG 0
JMP MAIN
ORG 0XB
JMP TimeInterupt

MAIN:
MOV SP,#0X70
MOV R0,#0x70
CLR A
MA1: MOV @R0,A ;數據全清0
DJNZ R0,MA1
CALL JDQLC_STOP
CALL Time0Init

;主循環
LOOP: CALL AJPD
CALL RUN
JMP lOOP

;主運行函數
RUN: MOV A,ZT
CJNE A,#1,RR1
JMP RUN1
RR1: CJNE A,#2,RR2
JMP RUN2
RR2: RET

;;0-39循環
RUN1:
MOV DS1+0,#0X10
MOV DS1+1,#0X10
MOV A,JSBZ1
MOV B,#10
DIV AB
MOV DS1+2,A
MOV DS1+3,B

U16DAYV JSBZ2,1000
JC RUN1_1
U16MOV JSBZ2,0
INC JSBZ1
MOV A,JSBZ1
CJNE A,#39+1,RUN1_1
MOVJSBZ1,#0
RUN1_1:
RET

;;FFFF閃爍
RUN2: U16DAYV JSBZ2,500
JC RUN2_1
MOV DS1+0,#0X10
MOV DS1+1,#0X10
MOV DS1+2,#0X10
MOV DS1+3,#0X10
SETB LED1
SETB LED2
U16DAYV JSBZ2,1000
JC RUN2_2
U16MOV JSBZ2,0
JMP RUN2_2
RUN2_1:
MOV DS1+0,#0X0F
MOV DS1+1,#0X0F
MOV DS1+2,#0X0F
MOV DS1+3,#0X0F
CLR LED1
CLR LED2
RUN2_2:
CALL JDQLC

RET

;按鍵判斷
AJPD:
JNB S4,AJ1
JNB S5,AJ2
RET
AJ1: JNB S4,$
MOV ZT,#2
CALL JDQLC_START
RET
AJ2: CALL JDQLC_STOP
SETB LED1
SETB LED2
JNB S5,$
MOV ZT,#1
MOV JSBZ1,#0
U16MOV JSBZ2,0
RET

JDQLC_START:
U16MOV JSBZ3,0
RET
JDQLC_STOP:
U16MOV JSBZ3,30000
SETB JDQ
RET
;繼電器通斷兩次
JDQLC:
U16DAYV JSBZ3,1000
JNC JDQ_1
CLR JDQ;通1s
RET
JDQ_1: U16DAYV JSBZ3,1500
JNC JDQ_2
SETB JDQ;斷0.5s
RET
JDQ_2: U16DAYV JSBZ3,1500+1000
JNC JDQ_3
CLR JDQ;通1s
RET
JDQ_3: U16DAYV JSBZ3,3000
JNC JDQ_4
SETB JDQ;斷
JDQ_4: RET


;;定時器初始化
Time0Init:
MOV TMOD,#0X01
MOV TH0,#HIGH(65536-1000)
MOV TL0,#LOW(65536-1000)
SETB TR0
SETB ET0
SETB EA
RET

;;數碼顯示
SMXS:
INC SMGBZ1
MOV A,SMGBZ1
SUBB A,#4
JC SMXS1
MOV SMGBZ1,#0

SMXS1:
MOV P2,#0XF0
MOV A,SMGBZ1
ADD A,#DS1
MOV R0,A
MOV A,@R0
MOV DPTR,#TABD
MOVC A,@A+DPTR
MOV P0,A
MOV DPTR,#TABW
MOV A,SMGBZ1
MOVC A,@A+DPTR
MOV P2,A
RET

TABD:;段碼
DB0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
DB0X88,0X83,0XC6,0XA1,0X86,0X8E,0XFF,0XBF
TABW:;位碼
DB0xF1,0xF2,0xF4,0xF8


;;定時器0中斷
TimeInterupt:
PUSH PSW
PUSH ACC

MOV TH0,#HIGH(65536-1000)
MOV TL0,#LOW(65536-1000)
CALL SMXS
U16INC JSBZ2
U16DAYV JSBZ3,30000
JNC TimeOut
U16INC JSBZ3


TimeOut:
POP ACC
POP PSW
RETI

END

『玖』 51單片機控制的數碼管原理是什麼

利用引腳輸出高低電平來控制數碼管的8個子管的亮滅,達到數字和小數點顯示的效果,通常要給每個數字做一個轉換表,以便在編程的時候忽略轉換過程,達到快速編程的目的,轉換表一般採用枚舉的方式,具體轉換數字和你電路裡面的連接方式有關系,用二進制寫出來,再換算成16進制就好了。

『拾』 單片機中如何通過編程來獲取LED數碼管的段碼

一般是在程序中附加一節段碼表,然後在程序中根據要顯示的字元用查表的方法查得段碼,然後送到LED數碼管的段選端。

閱讀全文

與單片機編程數碼管相關的資料

熱點內容
java布局實例 瀏覽:626
51單片機頻率計的 瀏覽:27
帶伺服器的電腦怎麼用 瀏覽:999
什麼app可以調整手機幀率 瀏覽:315
說苑pdf 瀏覽:874
安裝包加密有什麼用 瀏覽:584
舍利子靈力演算法 瀏覽:501
javacalendar天數 瀏覽:567
anyview閱讀器java 瀏覽:361
怎麼降為安卓10 瀏覽:996
javaweb程序設計郭 瀏覽:249
gm聲望命令 瀏覽:486
pdf轉換器電腦版免費 瀏覽:43
解壓歌曲什麼歌最好 瀏覽:153
諾貝爾pdf 瀏覽:969
雲伺服器快速安裝系統原理 瀏覽:790
蘋果騰訊管家如何恢復加密相冊 瀏覽:118
手機軟體反編譯教程 瀏覽:861
sqlserver編程語言 瀏覽:650
gpa國際標准演算法 瀏覽:238