日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]用AT89S51單片機(jī)的P0.0/AD0-P0.7/AD7端口接數(shù)碼管的a-h端,8位數(shù)碼管的S1-S8通過74LS138譯碼器的Y0-Y7來控制選通每個數(shù)碼管的位選端。AT89S51單片機(jī)的P1.0-P1.2控制74LS138的A,B,C端子。在8位數(shù)碼管上從右向左循環(huán)顯示“12345678”。能夠比較平滑地看到拉幕的效果。

1. 用AT89S51單片機(jī)的P0.0/AD0-P0.7/AD7端口接數(shù)碼管的a-h端,8位數(shù)碼管的S1-S8通過74LS138譯碼器的Y0-Y7來控制選通每個數(shù)碼管的位選端。AT89S51單片機(jī)的P1.0-P1.2控制74LS138的A,B,C端子。在8位數(shù)碼管上從右向左循環(huán)顯示“12345678”。能夠比較平滑地看到拉幕的效果。

2. 電路原理圖

 

圖4.21.1

3. 系統(tǒng)板上硬件連線

(1. 把“單片機(jī)系統(tǒng)”區(qū)域中的P0.0/AD0-P0.7/AD7用8芯排線連接到“動態(tài)數(shù)碼顯示”區(qū)域中的a-h端口上;

(2. 把“三八譯碼模塊”區(qū)域中的Y0-Y7用8芯排線連接到“動態(tài)數(shù)碼顯示”區(qū)域中的S1-S8端口上;

(3. 把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0-P1.2端口用3根導(dǎo)線連接到“三八譯碼模塊”區(qū)域中的A、B、C“端口上;

4. 程序設(shè)計方法

(1. 動態(tài)數(shù)碼顯示技術(shù);如何進(jìn)行動態(tài)掃描,由于一次只能讓一個數(shù)碼管顯示,因此,要顯示8位的數(shù)據(jù),必須經(jīng)過讓數(shù)碼管一個一個輪流顯示才可以,同時每個數(shù)碼管顯示的時間大約在1ms到4ms之間,所以為了保證正確顯示,我必須每隔1ms,就得刷新一個數(shù)碼管。而這刷新時間我們采用單片機(jī)的定時/計數(shù)器T0來控制,每定時1ms對數(shù)碼管刷新一次,T0采用方式2。

(2. 在進(jìn)行數(shù)碼顯示的時候,要對顯示單元開辟8個顯示緩沖區(qū),每個顯示緩沖區(qū)裝有顯示的不同數(shù)據(jù)即可。

5. 程序框圖

主程序框圖

開 始

顯示緩沖區(qū)初始化

必要參數(shù)初始化

T0初始化,TH0,TL0裝入初值

T0工作并開中斷

等待中斷

 

中斷服務(wù)程序

T0中斷入口

通過查表方式,獲得顯示代碼送入P0

位選數(shù)據(jù)送P1

位選數(shù)據(jù)=8嗎?

位選數(shù)據(jù)加1

位選數(shù)據(jù)=0

CNT加1

0.4秒定時到了嗎?

CNT=9嗎?

CNT=0

根據(jù)CNT來決定顯示幾位數(shù)據(jù)

中斷返回

 

6. 匯編源程序

DISPBUF EQU 30H

DISPCNT EQU 38H

DISPBIT EQU 39H

T1CNTA EQU 3AH

T1CNTB EQU 3BH

CNT EQU 3CH

ORG 00H

LJMP START

ORG 0BH

LJMP INT_T0

START: MOV DISPCNT,#8

MOV A,#10

MOV R1,#DISPBUF

LP: MOV @R1,A

INC R1

DJNZ DISPCNT,LP

MOV DISPBIT,#00H

MOV T1CNTA,#00H

MOV T1CNTB,#00H

MOV CNT,#00H

MOV TMOD,#01H

MOV TH0,#(65536-1000) / 256

MOV TL0,#(65536-1000) MOD 256

SETB TR0

SETB ET0

SETB EA

SJMP $

INT_T0:

MOV TH0,#(65536-1000) / 256

MOV TL0,#(65536-1000) MOD 256

MOV A,DISPBIT

ADD A,#DISPBUF

MOV R0,A

MOV A,@R0

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P0,A

MOV A,P1

ANL A,#0F8H

ADD A,DISPBIT

MOV P1,A

INC DISPBIT

MOV A,DISPBIT

CJNE A,#08H,NEXT

MOV DISPBIT,#00H

NEXT: INC T1CNTA

MOV A,T1CNTA

CJNE A,#50,LL1

MOV T1CNTA,#00H

INC T1CNTB

MOV A,T1CNTB

CJNE A,#8,LL1

MOV T1CNTB,#00H

INC CNT

MOV A,CNT

CJNE A,#9,LLX

MOV CNT,#00H

MOV A,CNT

LLX: CJNE A,#01H,NEX1

MOV 30H,#8

LL1: LJMP DONE

NEX1: CJNE A,#02H,NEX2

MOV 31H,#8

MOV 30H,#8

LJMP DONE

NEX2: CJNE A,#03H,NEX3

MOV 32H,#8

MOV 31H,#8

MOV 30H,#8

LJMP DONE

NEX3: CJNE A,#04H,NEX4

MOV 33H,#8

MOV 32H,#8

MOV 31H,#8

MOV 30H,#8

LJMP DONE

NEX4: CJNE A,#05H,NEX5

MOV 34H,#8

MOV 33H,#8

MOV 32H,#8

MOV 31H,#8

MOV 30H,#8

LJMP DONE

NEX5: CJNE A,#06H,NEX6

MOV 35H,#8

MOV 34H,#8

MOV 33H,#8

MOV 32H,#8

MOV 31H,#8

MOV 30H,#8

LJMP DONE

NEX6: CJNE A,#07H,NEX7

MOV 36H,#8

MOV 35H,#8

MOV 34H,#8

MOV 33H,#8

MOV 32H,#8

MOV 31H,#8

MOV 30H,#8

LJMP DONE

NEX7: CJNE A,#08H,NEX8

MOV 37H,#8

MOV 36H,#8

MOV 35H,#8

MOV 34H,#8

MOV 33H,#8

MOV 32H,#8

MOV 31H,#8

MOV 30H,#8

LJMP DONE

NEX8: CJNE A,#00H,DONE

MOV 37H,#10

MOV 36H,#10

MOV 35H,#10

MOV 34H,#10

MOV 33H,#10

MOV 32H,#10

MOV 31H,#10

MOV 30H,#10

LL: LJMP DONE

DONE: RETI

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H

END

7. C語言源程序

#include

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x00};

unsigned char dispbitcode[]={0xf8,0xf9,0xfa,0xfb,

0xfc,0xfd,0xfe,0xff};

unsigned char dispbuf[8]={16,16,16,16,16,16,16,16};

unsigned char dispbitcnt;

unsigned int t02scnt;

unsigned char t5mscnt;

unsigned char u;

unsigned char i;

void main(void)

{

TMOD=0x02;

TH0=0x06;

TL0=0x06;

TR0=1;

ET0=1;

EA=1;

while(1);

}

void t0(void) interrupt 1 using 0

{

t5mscnt++;

if(t5mscnt==4)

{

t5mscnt=0;

P0=dispcode[dispbuf[dispbitcnt]];

P1=dispbitcode[dispbitcnt];

dispbitcnt++;

if(dispbitcnt==8)

{

dispbitcnt=0;

}

}

t02scnt++;

if(t02scnt==1600)

{

t02scnt=0;

u++;

if(u==9)

{

u=0;

}

for(i=0;i<8;i++)

{

dispbuf=16;

}

for(i=0;i {

dispbuf=8;

}

}

}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉