<video id="fj17p"><progress id="fj17p"><nobr id="fj17p"></nobr></progress></video>

      <sub id="fj17p"></sub>

        <thead id="fj17p"><meter id="fj17p"></meter></thead>
        <address id="fj17p"><meter id="fj17p"><cite id="fj17p"></cite></meter></address>

          <th id="fj17p"></th>
          <th id="fj17p"><meter id="fj17p"><dfn id="fj17p"></dfn></meter></th>
          <track id="fj17p"><address id="fj17p"></address></track>

          <nobr id="fj17p"></nobr>

          <th id="fj17p"><progress id="fj17p"><listing id="fj17p"></listing></progress></th>

              (玩電子) 電子技術學習與研究
              當前位置:單片機教程網 >> 基礎教程 >> 瀏覽文章

              23課:LED數碼管靜態顯示接口與編程

              作者:佚名   來源:本站原創   點擊數:x  更新時間:2007年08月14日   【字體:

                 在單片機系統中,常常用LED數碼數碼管顯示器來顯示各種數字或符號。由于它具有顯示清晰、亮度高、使用電壓低、壽命長的特點,因此使用非常廣泛。

              引言:還記得我們小時候玩的“火柴棒游戲”嗎,幾根火柴棒組合起來,能拼成各種各樣的圖形,LED數碼管顯示器實際上也是這么一個東西。

              八段LED數碼管顯示器


              <單片機靜態顯示接口>

                 八段LED數碼管顯示器由8個發光二極管組成。基中7個長條形的發光管排列成“日”字形,另一個賀點形的發光管在數碼管顯示器的右下角作為顯示小數點用,它能顯示各種數字及部份英文字母。LED數碼管顯示器有兩種不一樣的形式:一種是8個發光二極管的陽極都連在一起的,稱之為共陽極LED數碼管顯示器;另一種是8個發光二極管的陰極都連在一起的,稱之為共陰極LED數碼管顯示器。如下圖所示。`

                 共陰和共陽結構的LED數碼管顯示器各筆劃段名和安排位置是相同的。當二極管導通時,對應的筆劃段發亮,由發亮的筆劃段組合而顯示的各種字符。8個筆劃段hgfedcba對應于一個字節(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二進制碼就能表示欲顯示字符的字形代碼。例如,對于共陰LED數碼管顯示器,當公共陰極接地(為零電平),而陽極hgfedcba各段為0111011時,數碼管顯示器顯示"P"字符,即對于共陰極LED數碼管顯示器,“P”字符的字形碼是73H。如果是共陽LED數碼管顯示器,公共陽極接高電平,顯示“P”字符的字形代碼應為10001100(8CH)。這里必須注意的是:很多產品為方便接線,常不按規則的辦法去對應字段與位的關系,這個時候字形碼就必須根據接線來自行設計了,后面我們會給出一個例程。

                 在單片機應用系統中,數碼管顯示器顯示常用兩種辦法:靜態顯示和動態掃描顯示。所謂靜態顯示,就是每一個數碼管顯示器都要占用單獨的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機只要把要顯示的字形代碼發送到接口電路,就不用管它了,直到要顯示新的數據時,再發送新的字形碼,因此,使用這種辦法單片機中CPU的開銷小。能供給單獨鎖存的I/O接口電路很多,這里以常用的串并轉換電路74LS164為例,介紹一種常用靜態顯示電路,以使大家對靜態顯示有一定的了解。

                 MCS-51單片機串行口方式押為移們寄存器方式,外接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各段對應的管腳上。關于74LS164還能作如下的介紹:所謂時鐘脈沖端,其實就是需要高、低、高、低的脈沖,不管這個脈沖是怎么來的,比如,我們用根電線,一端接T,一端用手拿著,分別接高電平、低電平,那也是給出時鐘脈沖,在74LS164獲得時鐘脈沖的瞬間(再講清楚點,是在脈沖的沿),如果數據輸入端(第1,2管腳)是高電平,則就會有一個1進入到74LS164的內部,如果數據輸入端是低電平,則就會有一個0進入其內部。在給出了8個脈沖后,最先進入74LS164的第一個數據到達了最高位,然后再來一個脈沖會有什么發生呢?再來一個脈沖,第一個脈沖就會從最高位移出,就象車站排隊買票,欄桿就那么長,要從后面進去一本人,前面必須要從前面走出去一本人才行。

                  搞清了這一點,下面讓我們來看電路,6片7LS164首尾相串,而時鐘端則接在一起,這樣,當輸入8個脈沖時,從單片機RXD端輸出的數據就進入到了第一片74LS164中了,而當第二個8個脈沖到來后,這個數據就進入了第二片74LS164,而新的數據則進入了第一片74LS164,這樣,當第六個8個脈沖完成后,首次送出的數據被送到了最左面的164中,其他數據依次出現在第一、二、三、四、五片74LS164中。有個問題,在第一個脈沖到來時,除了第一片74LS164中接收數據外,其他各片在干嗎呢?它們也在接收數據,因為它們的時鐘端都是被接在一起的,可是數據還沒有送到其他各片呢,它們在接收什么數據呢?。。。。。。其實所謂數據不過是一種說法而已,實際就是電平的高低,當第一個脈沖到來時,第一片164固然是從單片機接收數據了,而其它各片也接到前一片的Q8上,而Q8是一根電線,在數字電路中它只可能有兩種狀態:低電平或高電平,也就是“0”和“1”。所以它的下一片74LS164也相當于是在接收數據啊。只是接收的全部是0或1而已。這個問題放在這兒說明,可能有朋友不屑一顧,而有的朋友可能還是不清楚,這實際上涉及到數的本質的問題,如果不懂的,請仔細思考,并找一些數字電路的數,理解164的工作原理,再來看這個問題,或者去看看我的另一篇文章《27課:關于單片機的一些基本概念》的文章。務必搞懂,搞懂了這一點,你的級別就高過開始學習者,可謂入門者了。

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

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

              單片機led顯示程序如下:

              DISP: MOV SCON,#00H ;初始化串行口方式0

              MOV R1,#06H ;顯示6位數

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

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

              LOOP:

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

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

              MOV SBUF,A ;送串行口顯示

              DELAY: JNB TI,DELAY ;等待發送完畢

              CLR TI ;清發送標志

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

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

              RET

              SETTAB: ;字形表,前面有介紹,以后我們再介紹字形表的制作。

              DB 03H 9FH 27H 0DH 99H 49H 41H 1FH 01H 09H 0FFH

              ; 0 1 2 3 4 5 6 7 8 9 消隱碼

              單片機顯示測試用主程序

              ORG 0000H

              AJMP START

              ORG 30H

              START: MOV SP,#6FH

              MOV 65H,#0

              MOV 64H,#1

              MOV 63H,#2

              MOV 62H,#3

              MOV 61H,#4

              MOV 60H,#5

              LCALL DISP

              SJMP $

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

                 下面我們來分析一下字形表的制作問題。先就上述“標準”的圖形來看吧。寫出數據位和字形的對應關系并列一個表如下(設為共陽型,也就是對應的輸出位為0時筆段亮)

              如何,字形表會做了吧,就是這樣列個表格,根據要求(0亮或1亮)寫出對應位的0和1,就成了。做個練習,寫出A-F的字形碼吧。

              如果為了接線方便而打亂了接線的次序,那么字形表又該如何接呢?也很簡單,一樣地列表啊。以新實驗板為例,共陽型。接線如下:

              P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

              C E H D G F A B

              則字形碼如下所示:

              ;0 00101000 28H

              ;1 01111110 7EH

              ;2 10100100 0A4H

              ;3 01100100 64H

              ;4 01110010 72H

              ;5 01100001 61H

              ;6 00100001 21H

              ;7 01111100 7CH

              ;8 00100000 20H

              ;9 01100000 60H

              作為練習,大家寫出A-F的字形代碼。

                 本來這里是講解單片機數碼管顯示器的靜態接口的,到此應當可算結束了,但是我還想接著上面講到的數的本質的問題再談一點。單片機中有一些術語、名詞本來是幫助我們理解事物的,但有時我們會被這些術語的相關語義所迷惑,以致不能進一步認清他們的本質,由此一般陷入困惑的境界。只有深入地了解了74LS164的工作特性,才能真正理解何謂串行的數據。有興趣的朋友還能再看看我網站http://www.hvqh.net查找相關內容

              發表評論】【告訴好友】【收藏此文】【關閉窗口

              文章評論

              幸运飞艇群二维码2018

              <video id="fj17p"><progress id="fj17p"><nobr id="fj17p"></nobr></progress></video>

                  <sub id="fj17p"></sub>

                    <thead id="fj17p"><meter id="fj17p"></meter></thead>
                    <address id="fj17p"><meter id="fj17p"><cite id="fj17p"></cite></meter></address>

                      <th id="fj17p"></th>
                      <th id="fj17p"><meter id="fj17p"><dfn id="fj17p"></dfn></meter></th>
                      <track id="fj17p"><address id="fj17p"></address></track>

                      <nobr id="fj17p"></nobr>

                      <th id="fj17p"><progress id="fj17p"><listing id="fj17p"></listing></progress></th>

                          <video id="fj17p"><progress id="fj17p"><nobr id="fj17p"></nobr></progress></video>

                              <sub id="fj17p"></sub>

                                <thead id="fj17p"><meter id="fj17p"></meter></thead>
                                <address id="fj17p"><meter id="fj17p"><cite id="fj17p"></cite></meter></address>

                                  <th id="fj17p"></th>
                                  <th id="fj17p"><meter id="fj17p"><dfn id="fj17p"></dfn></meter></th>
                                  <track id="fj17p"><address id="fj17p"></address></track>

                                  <nobr id="fj17p"></nobr>

                                  <th id="fj17p"><progress id="fj17p"><listing id="fj17p"></listing></progress></th>

                                      美国一级黄页视频 动作 内蒙古时时彩开彩结果查询 成都麻将规则算账 国内期货平台哪个好 ag真人视线广告 极速快乐十分下载 林书豪的美国美女粉丝 西甲皇马巴萨 厦门学做甜品赚钱 贵州十一选五走势图 哈尔滨站街女信息2014 云南十一选五技巧规则 香港六合彩总公司 双色球走势图(近30期) 第1彩票安卓 掌中彩安卓