數碼管顯示
最近因為對突然對電子感興趣,前幾天在路過電子**時買了乙個數碼管。因為以前總是紙上談兵,根本沒實驗過,連數碼見都沒見過,所以開始覺得將這塊數碼管顯示出來是非常具有挑戰性的工作。
今天正好有空,拿來了我的數碼管,並在網上看了一些資料,才發現並不是想象中的那麼難,其實更準確的說是太簡單了。不到半天就將完成了程式的編寫。下面是這次程式設計的總結。
先來了解一下數碼管的構造,數碼管分共陽極和共陰極兩種。所謂共陽極就是所有二極體的陽極是連在一起的,而陰極則不連;共陰極數碼管正好相反:它的所有陰極相連。這兩種數碼管的原理圖如下:
它的第2~9
針對應著資料暫存器的0~
70x378
。並口的針18~
25為接地訊號。所以我將並口與我的數碼管按下錶連線起來:
並口針號
數碼管管腳號2g
3f4a
5b6e
7d8c
9cp18(接地)
共極18
(接地)共極
基於這樣的連線,我寫了乙個迴圈
100次顯示0~
9的程式,該程式在
ma**6.11
下編譯,在
dos下執行成功,源**如下:
.386p
stack segment use16
db 256 dup (0)
stacklen = $
stack ends
code segment use16
assume ss:stack, cs:code
start:
mov ax, stack
mov ss, ax
mov sp, stacklen
mov bx, 100
next:
mov dx, 378h
mov al, 01111110b ;0
out dx, al
call mywait
mov dx, 378h
mov al, 11001000b ;1
out dx, al
call mywait
mov dx, 378h
mov al, 00111101b ;2
out dx, al
call mywait
mov dx, 378h
mov al, 11101101b ;3
out dx, al
call mywait
mov dx, 378h
mov al, 01001011b ;4
out dx, al
call mywait
mov dx, 378h
mov al, 11100111b ;5
out dx, al
call mywait
mov dx, 378h
mov al, 01110111b ;6
out dx, al
call mywait
mov dx, 378h
mov al, 11001100b ;7
out dx, al
call mywait
mov dx, 378h
mov al, 01111111b ;8
out dx, al
call mywait
mov dx, 378h
mov al, 01101111b ;9
out dx, al
call mywait
dec bx
jnz next
mov ah, 4ch
int 21h
mywait proc near
push ax
push cx
mov ax, 1ffh
nextwait:
mov cx, 0ffffh
loop $
dec ax
jnz nextwait
pop cx
pop ax
retmywait endp
code ends
end start
數碼管顯示
一 區分數碼管的類別 共陰數碼管 即所有數碼管的陰極接在一起。要使某個數碼管點亮,只需置上高電平,中該位置 1 共陽數碼管 即所有數碼管的陽極接在一起。要使某個數碼管點亮,只需置上低電平,中該位置 0 二 單個數碼管顯示 a h 表示單個數碼管上面的8個led。根據共陰共陽的特性,點亮相應的led,...
數碼管顯示
數碼管由8個led組成,對應乙個i o口的輸出.根據連線方式不同分為共陽和共陰數碼管 可以看到,由於結構不同,共陽和共陰使led亮起的輸出電平也不同,如下是兩種連線方式對應的16進製製碼 當我們要對多個數碼管進行控制的時候,不僅需要控制顯示內容 段碼 還要控制顯示的位置 位碼 簡單一點的方法可以用另...
LED數碼管顯示
在電梯 家用電器中,隨處可見數碼管顯示的應用。一般是7個發光管組成8字形的排列,可以顯示0 9的數字。我們可以給這7個發光管編號,以便區分它們 我們給出了乙個用於模擬這個顯示過程的程式,並提供了源 輸入數字,可以在控制台示意這些數字的對應數碼管顯示的效果,亮的管顯示為 不亮的管顯示為 程式的主要用途...