機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
用VB實(shí)現(xiàn)微機(jī)控制字符型液晶顯示
用VB實(shí)現(xiàn)微機(jī)控制字符型液晶顯示
 更新時(shí)間:2008-7-27 14:01:10  點(diǎn)擊數(shù):3
【字體: 字體顏色

  液晶顯示器(LCD)以低電壓、微功耗、超薄輕巧、接口簡(jiǎn)單、顯示內(nèi)容豐富諸多優(yōu)點(diǎn),在袖珍式電子產(chǎn)品的顯示系統(tǒng)中得到廣泛應(yīng)用。為此,本文介紹一種由微機(jī)與單片機(jī)之間通訊直接控制液晶顯示電路。微機(jī)在控制中,采用Visual Basic(簡(jiǎn)稱VB)編程,做出十分直觀的人機(jī)界面,操作方便,可直接將字符由微機(jī)的鍵盤輸入通過(guò)串行通訊口傳送到單片機(jī),再由單片機(jī)系統(tǒng)控制液晶顯示模塊,將字符顯示在液晶屏上。另外,單片機(jī)系統(tǒng)又將字符發(fā)送回到微機(jī)的人機(jī)界面上顯示,用于字符傳送過(guò)程的實(shí)時(shí)監(jiān)測(cè)。

一、硬件設(shè)計(jì)

 

 


系統(tǒng)電路如圖(1)。

 

 

圖(1

本系統(tǒng)關(guān)鍵的器件是AT89C51單片機(jī),一方面利用AT89C51單片機(jī)自身具有的串行通訊口,可以與微機(jī)的RS2329針)串行通訊口直接通訊。另一方面通過(guò)單片機(jī)控制液晶顯示模塊。AT89C51單片機(jī)系統(tǒng)在硬件設(shè)計(jì)上具有簡(jiǎn)單、方便等優(yōu)點(diǎn)。但由于微機(jī)的RS232標(biāo)準(zhǔn)接口的電平與AT89C51單片機(jī)接口的TTL電平規(guī)范不一致,所以采用MAXIM公司的MAX232電平轉(zhuǎn)換器,實(shí)現(xiàn)這兩種接口的電平相互轉(zhuǎn)換。

字符型液晶顯示模塊是一種用5x7點(diǎn)陣圖形來(lái)顯示字符的液晶顯示器。根據(jù)顯示的容量可以分為116個(gè)字、216個(gè)字、220個(gè)字等等。這里采用216個(gè)字的TC1602A液晶模塊。TC1602A采用標(biāo)準(zhǔn)的16腳接口,其中VSS為地電源,VDD5V正電源,V0為液晶顯示器對(duì)比度調(diào)整端,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。RS為寄存器選擇:RS1選擇數(shù)據(jù)寄存器;RS0選擇指令寄存器。R/W為讀寫信號(hào)線:R/W=1進(jìn)行讀操作;R/W=0進(jìn)行寫操作。當(dāng)RS0R/W0時(shí),可以寫入指令或者顯示地址;當(dāng)RS0R/W1時(shí),可以讀忙信號(hào);當(dāng)RS1R/W0時(shí),可以寫入數(shù)據(jù)。E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。D0~D78位雙向數(shù)據(jù)線。 TC1602A液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等。每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。 TC1602A液晶模塊內(nèi)部的控制器共有11條控制指令,它的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。

一、軟件設(shè)計(jì)

1、微機(jī)串口發(fā)送、接收的VB程序設(shè)計(jì)

VB程序設(shè)計(jì)包括人機(jī)界面設(shè)計(jì)如圖(2),主要利用VB6.0提供的串口控件MSCOMM32.OCX。該控件可方便地對(duì)串口狀態(tài)與89C51單片機(jī)之間串口通訊的格式和協(xié)議進(jìn)行設(shè)置。MSCOMM控件的屬性預(yù)設(shè)置為:Commport=2,Settings=9600,n,8,1”,Rthreshold=1,Sthreshold=1

VB程序設(shè)計(jì)如下:

Private Sub CmdExit_Click()                '使用命令按鈕控件

MSComm1.PortOpen = False                '關(guān)閉通訊端口

End                                    '結(jié)束系統(tǒng)

End Sub

Private Sub CmdSend_Click()               '使用命令按鈕控件

MSComm1.Output = textsend.Text & Chr(13)  '將發(fā)送區(qū)數(shù)據(jù)傳送出去

End Sub

Private Sub Command4_Click()              '使用命令按鈕控件

MSComm1.Settings = Trim(Text3.Text)       '改變通訊參數(shù)設(shè)置

End Sub

Private Sub ComReceive_Click()             '使用命令按鈕控件

  textreceive.Text = ""                     '清除接收區(qū)數(shù)據(jù)

End Sub

Private Sub Form_Load()

Text3.Text = CStr(MSComm1.Settings)       '顯示通訊參數(shù)設(shè)置

 MSComm1.CommPort = 2                 '判斷串行口

 On Error Resume Next

  Opcom(1).Value = True

 If MSComm1.PortOpen Then

 MsgBox "COM2被用,請(qǐng)選COM1!", vbExclamation + vbOKOnly, "系統(tǒng)信息"

Exit Sub

Else

  MSComm1.PortOpen = True             '打開通訊端口

 End If

End Sub

Private Sub MSComm1_OnComm()          'MSComm1_OnComm事件

Select Case MSComm1.CommEvent         '自動(dòng)接收數(shù)據(jù)

Case comEvReceive

textreceive.Text = textreceive.Text + Trim(MSComm1.Input)

Case comEvSend

End Select

End Sub

Private Sub Opcom_Click(Index As Integer)

On Error Resume Next

MSComm1.PortOpen = False                 '選擇串行口

MSComm1.CommPort = Index + 1

If MSComm1.PortOpen Then

  MsgBox "COM2被用,請(qǐng)選COM1!", vbExclamation + vbOKOnly, "系統(tǒng)信息"

Exit Sub

Else

  MSComm1.PortOpen = True

End If

End Sub

Private Sub txtSend_KeyPress(KeyAscii As Integer)

 KeyAscii = Asc(UCase(Chr(KeyAscii)))          'Enter鍵發(fā)送數(shù)據(jù)

 If KeyAscii = 13 Then

   MSComm1.Output = textsend.Text & Chr(13)

 End If


End Sub

圖(2

使用方法:

1)運(yùn)行軟件,選擇串口com1com2。

2)在參數(shù)設(shè)置下框設(shè)置波特率須與單片機(jī)設(shè)置相同,點(diǎn)擊“參數(shù)設(shè)置”有效。

3)在發(fā)送區(qū)輸入字符,最后要以“%!睘榻Y(jié)束標(biāo)志,再點(diǎn)擊“發(fā)送”或按Enter鍵即可。正常情況下,在接收區(qū)和液晶屏上會(huì)同時(shí)顯示出發(fā)送區(qū)輸入的字符。

4)、點(diǎn)擊“清除”可清除接收區(qū)的所有字符;點(diǎn)擊“結(jié)束”即退出本軟件。

2、單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)

單片機(jī)程序采用MCS51的匯編語(yǔ)言編程。包括二部分:①.與微機(jī)的串口通訊軟件。②.對(duì)字符液晶顯示模塊的顯示控制軟件。

1)、程序設(shè)計(jì)如下:

   RS         BIT      P3.4

   R_W       BIT      P3.5

   ENABLE   BIT      P3.3

   DB0_DB7  DATA    P1

              ORG     0000H

              LJMP    START

              ORG    0023H

              LJMP   UART1

              ORG    0030H

   START:     CLR    00H                 ;清串行通訊結(jié)束標(biāo)志位00H

              MOV   R0,    #40H         ;接收字符代碼首地址為40H

              MOV  TMOD,  #20H

              MOV   TH1,   #0FDH       ;設(shè)置波特率為9600

              MOV   TL1,   #0FDH

              MOV  SCON,  #50H         ;設(shè)串行口方式1,允許接收

              MOV   IE,    #90H          ;允許串行口中斷

  SETB   TR1

    LOOP:    JNB    00H,  LOOP          ;等待串行通訊結(jié)束

              CLR    ES                   ;關(guān)串行中斷

             LCALL  LCD                ; 液晶顯示接收的字符

    WAIT:    SJMP   START               ;  返回

  ;串行通訊中斷子程序

   UART1:    PUSH   PSW                                

              PUSH   ACC

              CLR    RI

              MOV   A,   SBUF         ;接收串行數(shù)據(jù)

              MOV   @R0,  A           ;存放到40H

              INC    R0

              CJNE   A,  #23H,  UART2  ;是否為結(jié)束字符#,23H#ASCⅡ碼

              SETB   00H                ;置位結(jié)束標(biāo)志 

              SJMP   UART4

   UART2:    MOV   SBUF,  A           ;回傳所收數(shù)據(jù)

   UART3:    JNB    TI,    UART3        ;等待發(fā)送完畢

              CLR    TI

   UART4:    POP     ACC

              POP     PSW

              RETI

   ;LCD顯示字符子程序

            ORG  0100H

     LCD:   MOV     SP,    #60H        

             CALL    Initial

             CALL    CLS

             MOV    A,    #80H         ;設(shè)顯示行為第一行

             CALL   Write

             MOV    R1,   #40h          ;取數(shù)據(jù)地址送R1

             CALL   STRING             ;調(diào)顯示字符子程序

             RET

   ;啟動(dòng)LCM顯示子程序

    Initial:    ACALL   DELAY             

              MOV    A,    #38H

              CALL   Write

              MOV    A,   #0EH

              CALL   Write

              MOV    A,  #06H

              CALL   Write

              RET

   ;查忙子程序

     Busy:    PUSH   ACC                

 BusyLoop:   CLR     ENABLE

                SETB    R_W

                CLR     RS

             SETB    ENABLE

             MOV    A,    DB0_DB7

             CLR    ENABLE

             JB      ACC.7,  BusyLoop

             POP    ACC

             CALL   DELAY

             RET

   ;寫顯示器控制指令到IR寄存器子程序

     Write:   CALL   Busy                

                CLR    ENABLE

                CLR    R_W

                CLR     RS

             SETB    ENABLE

             MOV    DB0_DB7,  A

             CLR     ENABLE

             RET

  ;寫數(shù)據(jù)到DR寄存器子程序

  LCDData:   CALL   Busy                

                CLR    ENABLE

                CLR    R_W

                SETB   RS

             SETB   ENABLE

             MOV   DB0_DB7,  A

             CLR    ENABLE

             RET

     CLS:    MOV   A,   #01H

             CALL  Write

             RET

  ;顯示字符子程序

  STRING:    PUSH   ACC                 

   LOOP1:    CLR    A

              MOV   A,   @R1        ;取顯示數(shù)據(jù)

              CJNE   A,   #25H,  PR ;是否為結(jié)束字符“%”,25H%ASCⅡ碼

              POP    ACC

              RET                        ; 結(jié)束返回

      PR:     CALL  LCDData              ;顯示字符

              INC    R1

              ACALL  DELAY

              SJMP    LOOP1              ;繼續(xù)顯示

      ; 延時(shí)子程序

  DELAY:   MOV    R6,   #100          

        D1:   MOV    R7,   #100

              DJNZ    R7,   $

              DJNZ    R6,   D1

              RET

END

2)、程序設(shè)計(jì)的流程圖如下:

①、主程序              ②、串行通訊中斷服務(wù)子程序

 

 

③、LCD控制顯示子程序                     ④、字符顯示子程序

 

一、總結(jié)

  本文給出的硬件和軟件均經(jīng)過(guò)實(shí)踐檢驗(yàn),制作簡(jiǎn)單,調(diào)試方便。對(duì)于目前廣泛應(yīng)用的液晶顯示技術(shù)的學(xué)習(xí)研究和開發(fā)有一定參考價(jià)值。對(duì)初學(xué)者來(lái)說(shuō),由字符型LCD入手比較容易,學(xué)成之后,可再進(jìn)一步開發(fā)用VB實(shí)現(xiàn)微機(jī)控制其它LCD模塊。

 

 

 

 

 

  • 上一篇: 簡(jiǎn)易數(shù)字電壓表的設(shè)計(jì)
  • 下一篇: 實(shí)例-1602LCD顯示步進(jìn)電機(jī)鍵控正反轉(zhuǎn)實(shí)驗(yàn)(C語(yǔ)言)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1