新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機與74HC164靜態顯示接口

        51單片機與74HC164靜態顯示接口

        作者: 時間:2016-11-23 來源:網絡 收藏
        單片機應用系統中,顯示器顯示常用兩種方法:靜態顯示和動態掃描顯示。所謂靜態顯示,就是每一個顯示器都要占用單獨的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機只要把要顯示的字形代碼發送到接口電路,就不用管它了,直到要顯示新的數據時,再發送新的字形碼,因此,使用這種方法單片機中CPU的開銷小??梢蕴峁﹩为氭i存的I/O接口電路很多,這里以常用的串并轉換電路74LS164為例,介紹一種常用靜態顯示電路,以使大家對靜態顯示有一定的了解。

        MCS-51單片機串行口方式0為移位寄存器方式,外接6片74LS164作為6位LED顯示器的靜態顯示接口,把8031的RXD作為數據輸出線,TXD作為移位時鐘脈沖。74LS164為TTL單向8位移位寄存器,可實現串行輸入,并行輸出。其中A、B(第1、2腳)為串行數據輸入端,2個引腳按邏輯與運算規律輸入信號,共一個輸入信號時可并接。T(第8腳)為時鐘輸入端,可連接到串行口的TXD端。每一個時鐘信號的上升沿加到T端時,移位寄存器移一位,8個時鐘脈沖過后,8位二進制數全部移入74LS164中。R(第9腳)為復位端,當R=0時,移位寄存器各位復0,只有當R=1時,時鐘脈沖才起作用。Q1…Q8(第3-6和10-13引腳)并行輸出端分別接LED顯示器的hg···a各段對應的引腳上。在給出了8個脈沖后,最先進入74LS164的第一個數據到達了最高位,然后再來一個脈沖會有什么發生呢?再來一個脈沖,第一個脈沖就會從最高位移出,搞清了這一點,下面讓我們來看電路,6片7LS164首尾相串,而時鐘端則接在一起,這樣,當輸入8個脈沖時,從單片機RXD端輸出的數據就進入到了第一片74LS164中了,而當第二個8個脈沖到來后,這個數據就進入了第二片74LS164,而新的數據則進入了第一片74LS164,這樣,當第六個8個脈沖完成后,首次送出的數據被送到了最左面的164中,其他數據依次出現在第一、二、三、四、五片74LS164中。

        驅動程序:

        入口:把要顯示的數分別放在顯示緩沖區60H-65H共6個單元中,并且分別對應各個數碼管LED0-LED5。

        出口:將預置在顯示緩沖區中的6個數成相應的顯示字形碼,然后輸出到顯示器中顯示。

        顯示程序如下:

        DISP:MOVSCON,#00H;初始化串行口方式

        MOVR1,#06H;顯示6位數

        MOVR0,#65H;60H-65H為顯示緩沖區

        MOVDPTR,#SEGTAB;字形表的入口地址

        LOOP:

        MOVA,@R0;取最高位的待顯示數據

        MOVCA,@A+DPTR;查表獲取字形碼

        MOVSBUF,A;送串口顯示

        DELAY:JNBTI,DELAY;等待發送完畢

        CLRTI;清發送標志

        DECR0;指針下移一位,準備取下一個待顯示數

        DJNZR1,LOOP;直到6個數據全顯示完。

        RET

        SETTAB:;字形表

        DB03H9FH27H0DH99H49H41H1FH01H09H0FFH

        ;0123456789消隱碼

        測試用主程序

        ORG0000H

        AJMPSTART

        ORG30H

        START:MOVSP,#6FH

        MOV65H,#0

        MOV64H,#1

        MOV63H,#2

        MOV62H,#3

        MOV61H,#4

        MOV60H,#5

        LCALLDISP

        SJMP

        如果按圖示數碼管排列,則以上主程序將顯示的是543210,想想看,如果要顯示012345該怎樣送數?

        你們只接了一個數碼管,想想應該很容易吧。

        74LS165是一個8位并入串出的移位寄存器,原理一樣。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 聂荣县| 双桥区| 闵行区| 新泰市| 自贡市| 炎陵县| 靖宇县| 会东县| 汪清县| 湄潭县| 扎囊县| 廊坊市| 龙口市| 上蔡县| 宁南县| 武冈市| 织金县| 唐海县| 乌兰浩特市| 迁安市| 维西| 苍梧县| 新野县| 岳西县| 会昌县| 扎赉特旗| 望城县| 灵石县| 芦山县| 浑源县| 上林县| 泰顺县| 延安市| 东阿县| 海晏县| 永福县| 琼中| 乌鲁木齐市| 罗田县| 沙雅县| 吉木萨尔县|