導航:首頁 > 編程語言 > led數碼顯示控製程序

led數碼顯示控製程序

發布時間:2023-12-11 06:22:51

❶ 匯編語言 編寫 程序 LED 燈顯示

開關控制指示燈顯示
MY8255_A EQU 0A860H;8255A口地址
MY8255_B EQU 0A861H;8255B口地址
MY8255_C EQU 0A862H;8255C口地址
MY8255_MODE EQU 0A863H;8255控制口地址

CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY8255_MODE
MOV AL,82H
OUT DX,AL ;將控制字82H寫入8255控制口,A口方式0輸出,B口方式0輸入, C口未用到。

A1: MOV DX,MY8255_B
IN AL,DX ;讀8255 B口內容
MOV DX,MY8255_A
OUT DX,AL ; 將前面讀到的B口內容送到A口,即A口內容=B口內容
CALL BREAK ;調用子程序BREAK
JMP A1;跳轉到A1

BREAK PROC NEAR ;BREAK子程序
MOV AH,1
INT 16H
JZ RETURN ;讀按鍵字元,ZF=1,則返回;ZF=0,則AL=字元
MOV AX,4C00H
INT 21H;返回DOS
RETURN:RET

BREAK ENDP

CODE ENDS
END START

;流水燈顯示
MY8255_A EQU 0b860H;8255A口地址
MY8255_B EQU 0b861H;8255B口地址
MY8255_C EQU 0b862H;8255C口地址
MY8255_MODE EQU 0b863H;8255控制口地址

DATA SEGMENT
LA DB ?;留出1個位元組
LB DB ?;留出1個位元組
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA
MOV DS,AX
MOV DX,MY8255_MODE
MOV AL,80H
OUT DX,AL ;控制字80H送入8255控制口,A口、B口都是方式0輸出,C口未用到。
MOV DX,MY8255_A
MOV AL,7FH
OUT DX,AL ;將7FH送入A口
MOV LA,AL ;將7FH送入LA存儲單元
MOV DX,MY8255_B
MOV AL,0FEH
OUT DX,AL ;將FEH送入B口
MOV LB,AL ;將FEH送入LB存儲單元
CALL DALLY
A1: MOV AL,LA
ROR AL,1 ;LA內容循環右移1次
MOV LA,AL
MOV DX,MY8255_A
OUT DX,AL ;將循環右移後的LA內容送A口,其目的是讓A口連接的LED燈依次向右循環點亮
MOV AL,LB
ROL AL,1 ;LB內容循環左移1次
MOV LB,AL
MOV DX,MY8255_B
OUT DX,AL ;將循環左移後的LB內容送B口,其目的是讓B口連接的LED燈依次向左循環點亮
CALL DALLY ;延時,讓一個LED燈發光穩定之後再點亮另一個
CALL BREAK ;調用BREAK子程序,看是否有鍵按下
JMP A1 ;跳轉到A1

DALLY: MOV CX,3FFH ;延時子程序
D1: MOV AX,0FFFFH
D2: DEC AX
JNZ D2
LOOP D1
RET

BREAK PROC NEAR ;是否有鍵按下
MOV AH,06H
MOV DL,0FFH
INT 21H
JE RETURN ;若無,則轉RETURN
MOV AX,4C00H
INT 21H ;返回DOS
RETURN:RET
BREAK ENDP

CODE ENDS
END START

❷ 單片機89c51一個6位LED數碼管顯示功能 程序,希望能准確點的程序,只顯示6位數字就好。

#include <reg51.h>
#include <intrins.h>

void delay(unsigned int i); //函數聲名

char DelayCNT;//定義變數

//此表為 LED 的字模, 共陰數碼管 0-9 -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段碼控制

//此表為8個數碼管位選控制, 共陰數碼管 1-8個 -
unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位選控制 查表的方法控制

/************主函數**********************/
main()
{
unsigned int i,LedNumVal=1 ; //變數定義
unsigned int LedOut[10]; //變數定義

DelayCNT=0;

while(1)
{
if(++DelayCNT>=20) //控制數字變化速度
{
DelayCNT=0; //20個掃描周期清零一次
++LedNumVal; //每隔20個掃描周期加一次
}

LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80;
LedOut[2]=Disp_Tab[LedNumVal%100/10];
LedOut[3]=Disp_Tab[LedNumVal%10];

LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位
LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位帶小數點
LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位
LedOut[7]=Disp_Tab[LedNumVal%10]; //個位

for( i=0; i<9; i++)
{
P0 = LedOut[i];
P1 = dispbit[i]; //使用查表法進行位選

/* switch(i) //使用switch 語句控制位選
{
case 0:P1 = 0x7F; break;
case 1:P1 = 0xbF; break;
case 2:P1 = 0xdF; break;
case 3:P1 = 0xeF; break;
case 4:P1 = 0xf7; break;
case 5:P1 = 0xfb; break;
case 6:P1 = 0xfd; break;
case 7:P1 = 0xfe; break;

} */

delay(150); //掃描間隔時間 太長會數碼管會有閃爍感
}

}
}

void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}

❸ 應怎樣編寫LED數碼管顯示程序

首先你的仔細看看電路圖,看一下數碼管是怎麼接的,接的是哪一個管腳,從而確定出位選和段選。所謂段選指的是數碼管顯示的內容,位選指的是哪幾個數碼管顯示。總之你一定要學會看懂電路圖。下面我給你一個例子啊,是根據我的電路板寫的。
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit la = P2^6;//段選決定顯示什麼內容
sbit wela = P2^7;//位選決定顯示哪幾個數碼管
sbit d1 = P1^0;//流水燈
uchar num;
//段碼表
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71};
void delay(uint z);
void main()
{
wela = 1;
P0 = 0xc0;
wela = 0;
while(1)
{
//顯示0~F
for(num=0; num<16; num++)
{
la = 1;
P0 = table[num];
la = 0;
delay(1000);
}
}
}
//延時函數
void delay(uint z)
{
uint x, y;
for(x=z; x>0; x--)
for(y=110; y>0; y--);
}

閱讀全文

與led數碼顯示控製程序相關的資料

熱點內容
win7和xp共享文件 瀏覽:883
蘋果4代音量鍵沒反應 瀏覽:827
怎樣打開tif文件 瀏覽:153
java下載文件zip 瀏覽:440
qq瀏覽器壓縮文件怎麼設密碼 瀏覽:526
黃埔數控編程哪裡好 瀏覽:406
mac109升級1010 瀏覽:691
在java的菜單如何導入文件 瀏覽:982
現在什麼網站銷量最高 瀏覽:760
angularjsclass定義 瀏覽:157
ug數控編程怎麼導出程序 瀏覽:466
cmdb文件 瀏覽:710
鵯文件夾 瀏覽:763
網路輿情應對的基本理念是什麼 瀏覽:433
word2007層次結構 瀏覽:456
去掉文件名的數字 瀏覽:713
word公司 瀏覽:710
淘寶店數據包怎麼上傳 瀏覽:341
pbt文件 瀏覽:204
HX基礎編程怎麼改變字體 瀏覽:876

友情鏈接