8255A控制八位七段LED数码管
微機(jī)實(shí)驗(yàn)六
文章目錄
- 微機(jī)實(shí)驗(yàn)六
- 前言
- 八位七段LED數(shù)碼管
- 驅(qū)動(dòng)方式
- 靜態(tài)顯示
- 動(dòng)態(tài)顯示
- 實(shí)驗(yàn)所用七段數(shù)碼管
- 相關(guān)參數(shù)
- 字形代碼表
- 實(shí)驗(yàn)連線步驟:
- 匯編程序(.ASM)
- 程序初始化
- 數(shù)據(jù)段定義
- 代碼段定義
- 實(shí)驗(yàn)流程圖:
- 總結(jié)
前言
本博客僅做學(xué)習(xí)筆記,如有侵權(quán),聯(lián)系后即刻更改
科普:八位七段數(shù)碼管
八位七段LED數(shù)碼管
驅(qū)動(dòng)方式
LED數(shù)碼管要用驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字
動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。
靜態(tài)顯示
靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。
靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。
靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O端口多
如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來(lái)驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O端口才32個(gè),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。
動(dòng)態(tài)顯示
LED數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一
動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,
另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),單片機(jī)對(duì)位選通COM端電路的控制,
所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。
通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。
在輪流顯示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,
實(shí)驗(yàn)所用七段數(shù)碼管
相關(guān)參數(shù)
七段數(shù)碼管為共陰型
√
段碼采用同相驅(qū)動(dòng)
√
輸入端加高電平,選中的數(shù)碼管亮
√
位碼加反相驅(qū)動(dòng)器,位碼輸入端高電平選中。
√
字形代碼表
實(shí)驗(yàn)連線步驟:
(1): 關(guān)閉實(shí)驗(yàn)箱電源,按照下面原理圖連線;
(2): 將8255的A0,A1,RST 接至 擴(kuò)展總線區(qū)A0,A1,RESET;
(3): 將8255的/RD,/WR 接至 擴(kuò)展總線區(qū)/IOR,/IOW;
(4): 將8255的/CS 接至 I/O地址區(qū)/220H—22FH;
(5): 將8255的PA7~PA0 接至 七段數(shù)碼管顯示區(qū)DP~A;
(6): 將8255的PB7~PB0 接至 七段數(shù)碼管顯示區(qū)S7~S0;
匯編程序(.ASM)
程序初始化
;使用8255連接7段數(shù)碼管顯示器 8255A口連接段碼,h-a插孔連接PA7-PA0;B口連接位碼,s7-s0插孔連接PB7-PB0。 .model small .486數(shù)據(jù)段定義
DATA SEGMENT io_address EQU 220H LEDCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH BUF DW ? DATA ENDS代碼段定義
code segment assume cs:code,ds:DATA start: cli ;全稱為Clear Interupt,該指令的作用是禁止中斷發(fā)生mov ax, data mov ds,ax設(shè) 置 8255工作方式 0
mov al, 80hmov dx, 223hout dx, al設(shè)置顯示緩沖區(qū)首址
TTT: mov ch,10lea si, LEDCODE ;lea指令獲取偏移地址設(shè)置顯示初始位置
tt1: mov bl,[si]and bl, 7fhMOV cl,01H調(diào)用顯示子程序
lll: CALL DISP ;call是調(diào)用子程序指令。;顯示到最左邊嗎?jnc lll ;jnc指令用于對(duì)進(jìn)位位進(jìn)行判斷從而決定程序走向;JNZ LLL ;條件轉(zhuǎn)移指令,結(jié)果不為零(或不相等)則轉(zhuǎn)移。;指針增 1inc si;全部顯示完畢嗎?dec ch ;DEC是減1指令jnz tt1 ;條件轉(zhuǎn)移指令,結(jié)果不為零(或不相等)則轉(zhuǎn)移。JMP TTT ;jmp為無(wú)條件轉(zhuǎn)移,可以只修改IP,也可以同時(shí)修改CS和IPproc是定義子程序的偽指令,位置在子程序的開(kāi)始處,它和endp分別表示子程序定義的開(kāi)始和結(jié)束兩者必須成對(duì)出現(xiàn)。
DISP PROCpush dx push ax mov al,bl lp1: mov dx,IO_ADDRESS out dx,al mov al,cl E: mov dx,IO_ADDRESSinc dx out dx,al ;將AL的值寫入dx端口call delaysal cl,1 ;SAL(算術(shù)左移)和SAR(算術(shù)右移)pop ax POP DXRET ;ret指令的內(nèi)部操作是:棧頂字單元出棧,其值賦給IP寄存器。即實(shí)現(xiàn)了一個(gè)程序的轉(zhuǎn)移,將棧頂字單元保存的偏移地址作為下一條指令的偏移地址。DISP ENDPDELAY PROCPUSH CXPUSH DX kk2: MOV DX,50 kk1: MOV CX,800Hkk: LOOP KKdec dxjnz kk1 ;;條件轉(zhuǎn)移指令,結(jié)果不為零(或不相等)則轉(zhuǎn)移。pop dxPOP CXRET DELAY ENDPCODE ends end start實(shí)驗(yàn)流程圖:
總結(jié)
小小勵(lì)志
有些事你現(xiàn)在不做,一輩子都不會(huì)做了。
如果你想做一件事,全世界都會(huì)為你讓路。
《搭車去柏林》
總結(jié)
以上是生活随笔為你收集整理的8255A控制八位七段LED数码管的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 爬取链家网站的北京租房信息
- 下一篇: arcgis弧段怎么加很多点_arcgi