|
一直有人問(wèn),如何在HD44780類型的液晶或VFD屏幕上顯示內(nèi)容。然后就是如何從電腦上發(fā)送內(nèi)容到液晶或VFD屏幕上。
我以前走了不少?gòu)澛罚院笠矔?huì)有不少電子愛好者會(huì)做些小工具玩。
我說(shuō)說(shuō)我自己的個(gè)人看法。
剛開始一般是有了一些電子元件,比如HD44780類型lcd1602,1602的vfd屏幕,128×64,128×32點(diǎn)陣等等.就想把鬧鐘顯示出來(lái)。我當(dāng)時(shí)的最終目的是想在電腦聽音樂(lè)的時(shí)候,把歌詞發(fā)送出來(lái)...
如果沒(méi)有入門單片機(jī)的話,用lcd1602這種液晶,直接連接到電腦的并口,并加5v電就可以驅(qū)動(dòng)了,不加的話就從并口io取電。不過(guò)背光不一定可以哦,因?yàn)椴⒖谥?v的10ma的電流。串口也有10ma,不過(guò)是12v的10ma,
為什么并口可以直接驅(qū)動(dòng)lcd1602呢?因?yàn)椴⒖谄鋵?shí)有一部分io是輸出狀態(tài)的,有一部分是輸入狀態(tài)的,就單片機(jī)簡(jiǎn)單io操作一樣。
io讀寫就是輸出的1,0,或判斷輸入1,0。
電腦上的串口跟并口,其實(shí)都是IO操作,也就是單片機(jī)的io操作了,讀寫速度可以達(dá)到20us左右的哦,沒(méi)有單片機(jī)的時(shí)候,用并口或串口當(dāng)作幾個(gè)io就可以了。用來(lái)操作18b20,紅外接收頭,24cxxx存儲(chǔ)芯片,avr的isp都可以的哦,
就連10年前就有的并口驅(qū)動(dòng)ps1手柄(其實(shí)是用spi協(xié)議的),而且有人利用串口的IO讀寫,加個(gè)運(yùn)放就可以測(cè)量電壓了。
如果沒(méi)有單片機(jī),或者沒(méi)有單片機(jī)的下載器,不怕燒電腦的情況下,完全可以用并口或串口做單片機(jī)實(shí)驗(yàn)。
把液晶連接到并口上了,不會(huì)在電腦上編寫上位機(jī)怎么辦?
題外話,用usb芯片轉(zhuǎn)并口或串口的,即使是pl2303,F(xiàn)T232RL芯片,傳數(shù)據(jù)是可以,但想用來(lái)做io操作的話,請(qǐng)三思,PonyProg2000這個(gè)軟件可以用電腦上的串口或并口,直接下載avr芯片或讀寫24cxx存儲(chǔ)芯片,但是用usb轉(zhuǎn)串口來(lái)連接的話,我自己測(cè)試寫個(gè)熔絲都要【一兩分鐘】,寫內(nèi)容的話,網(wǎng)上有耐心的人測(cè)試過(guò)要2小時(shí)左右,但是【沒(méi)有出錯(cuò)】。我估計(jì)usb轉(zhuǎn)串口操作io的話要200ma到400ma一次,而不是電腦主板上自己的20us左右。
如果是用avr轉(zhuǎn)串口的更別想了。
LCD Smartie這個(gè)軟件提供的并口連接HD44780液晶方法,是用8bit的,要連接很多線,不過(guò)LCD Smartie提供顯示的內(nèi)容很多。
有些軟件提供了跟LCD Smartie不同的并口連接HD44780液晶方法,有的可以用4bit,可以少連接4跟線,提供顯示的內(nèi)容很少。
不過(guò)都證明了并口可以直接操作HD44780液晶。
我一直都當(dāng)LCD Smartie只是一個(gè)協(xié)議轉(zhuǎn)換程序。它把電腦上需要顯示的各種內(nèi)容,按一定模式傳送到下位機(jī)屏幕上,同過(guò)插件,可以支持各種液晶屏幕硬件。
它提供有一個(gè)【lcd_smartie-5.3.2_final-src】開源的版本。里面有利用并口io驅(qū)動(dòng)HD44780液晶的代碼,跟兩家生產(chǎn)液晶屏幕硬件公司的兩種協(xié)議,就是把屏幕裝在電腦光驅(qū)位上的信息盒這樣的,現(xiàn)在一些鍵盤上也有屏幕了,通過(guò)插件,一樣可以自定義顯示內(nèi)容。
其中里面的Matrix Orbital協(xié)議代碼,比較規(guī)范,在ULCD_MO.pas文件中,參考后覺(jué)得可以利用它的框架設(shè)計(jì)一個(gè)比較規(guī)范的協(xié)議。
然后怎么設(shè)計(jì)硬件呢?
我之前走了不少?gòu)澛罚褪窍瓤紤]硬件,才考慮協(xié)議,直到我定下來(lái)協(xié)議,硬件很快就設(shè)定好了。
用電腦的并口驅(qū)動(dòng)1602的液晶的話,不開背光又難看,開背光還需要另外加5v電源,連接的線也太粗了。
用了vfd屏幕的人都會(huì)立刻不想要液晶了,因?yàn)関fd是顯像管,點(diǎn)發(fā)光的,不是背景發(fā)光的,無(wú)可代替,加濾片,跟汽車玻璃膜一樣,還可以顯示出橙色,藍(lán)色。建議有條件一定要留一塊vfd給自己用。
用串口的話,數(shù)據(jù)線細(xì)點(diǎn),但是還是要加5v電,其實(shí)串口的1602液晶,一直用在路由一體機(jī)上,在電腦機(jī)房可以經(jīng)?吹剑琇inux系統(tǒng)下有很多軟件支持串口1602液晶,前幾年開始有usb轉(zhuǎn)串口的成熟芯片出了,pl2303等等,但是是貼片的,不是很好焊。
后來(lái)avr芯片可以模擬usb設(shè)備了。直接模擬一個(gè)rs232串口,我做了一個(gè),直接短路avr的rs232輸出輸入,測(cè)試確實(shí)能自發(fā)自收。
我之前做有一個(gè)用avr芯片加max232芯片連接電腦的下位機(jī),編好程序后,確實(shí)可以用LCD Smartie中的Matrix Orbital協(xié)議驅(qū)動(dòng),如果用avr模擬成usb串口再驅(qū)動(dòng)1602液晶行不行呢。
當(dāng)時(shí)已經(jīng)有好幾個(gè)用avr模擬usb設(shè)備驅(qū)動(dòng)1602液晶的了,有幾個(gè)Linux是在系統(tǒng)下用的,有一個(gè)LCD2USB開發(fā)有插件可以在win系統(tǒng)下的LCD Smartie使用。但是都不是模擬成usb轉(zhuǎn)串口,如果模擬成串口的話,開發(fā)上位機(jī)方便得多,而不需要而外的dll文件做中介。
我看了LCD2USB提供的插件代碼,發(fā)現(xiàn)LCD Smartie的框架其實(shí)很簡(jiǎn)單,如果用里面的Matrix Orbital協(xié)議,很方便驅(qū)動(dòng)一個(gè)下位機(jī)的屏幕,有多方便,暫時(shí)在二樓...
想通思路后,開始做一個(gè)用avr驅(qū)動(dòng)1602lcd的硬件,當(dāng)時(shí)我用的avr硬件都是ATTINY2313,結(jié)果發(fā)現(xiàn),用avr模擬成其他設(shè)備用的代碼少點(diǎn),還夠驅(qū)動(dòng)1602,模擬成串口的話,差不多就2k了,去掉緩沖,就容易出錯(cuò),1602用4bit驅(qū)動(dòng),代碼又要多點(diǎn),怎么弄都放不下
ATTINY2313,最后只有用m8重新做硬件,又折騰了一陣子。
最后還是把硬件搭好了,程序也編好了,兩年前得到的結(jié)論是:用avr轉(zhuǎn)串口后,再驅(qū)動(dòng)1602這種lcd是確實(shí)可行的,至少我認(rèn)為如此。
在實(shí)現(xiàn)的過(guò)程得到了,重要的數(shù)據(jù):
avr模擬usb設(shè)備的協(xié)議現(xiàn)在名字是V-USB,它的例子沒(méi)有提供usb有效復(fù)位的代碼,把程序?qū)懭隺vr芯片然后在插入電腦上的usb插座,電腦當(dāng)然可以識(shí)別出硬件來(lái),但是我編程序的時(shí)候,隨時(shí)要修改,不想修改一次拔一次usb插頭啊。
需要自己編一段代碼,不把usb插頭,avr芯片復(fù)位后,電腦會(huì)重新找到硬件。
usb標(biāo)準(zhǔn)的只能提供500ma左右的電流,剛好可以驅(qū)動(dòng)小的VFD屏幕,燒了自己負(fù)責(zé),舊電腦可能200ma都不到。
usb的通訊協(xié)議要求1000ms內(nèi)通信要回復(fù),意思是usb設(shè)備需要1000ms回一次話,而顯示HD44780類型的lcd是需要一定時(shí)間的。也就是說(shuō),avr模擬串口后,可以利用的時(shí)間很少,比如,18b20轉(zhuǎn)換一次溫度要800ms。
但我一直都不滿意usb轉(zhuǎn)串口是要裝驅(qū)動(dòng),跟在上位機(jī)需要設(shè)置com1,com2位置這樣的,而且當(dāng)時(shí)我的1602液晶的數(shù)據(jù)口是單排16針的,我覺(jué)得很不合理,雙排插針2*8的就合理了,建議如果要搭硬件,盡量用2*8插針的,這樣可以用排線。
不過(guò)現(xiàn)在我已經(jīng)會(huì)做avr轉(zhuǎn)usb的HID設(shè)備,就是免驅(qū)動(dòng)設(shè)備,有了usb免驅(qū)動(dòng)設(shè)備,跟通信協(xié)議,可以用電腦控制許多東西了,編寫上下位機(jī)又很方便。有時(shí)間的話,我也許會(huì)陸續(xù)公布我的avr做的Hid設(shè)備。
說(shuō)完兩年前的事情了,接下來(lái)的就頭疼了,兩年前我用delphi2007編程,現(xiàn)在是用delphi2010。delphi2010是Unicode的,解決了很多問(wèn)題,帶來(lái)相當(dāng)多好處跟方便,方便,如果是新寫代碼的話?墒侨绻匦戮幾g以前的代碼,需要重新修改,花的時(shí)間肯定比重新編還要多
。不重新編寫的話,如果代碼修復(fù)不完整,錯(cuò)誤未發(fā)現(xiàn),會(huì)帶來(lái)各種隱患。
delphi2010的帶來(lái)Unicode是無(wú)可代替的,我不會(huì)像有些人留戀delphi2007,因?yàn)閐elphi2010編寫的代碼更加規(guī)范,可以讓自己按照更嚴(yán)格的規(guī)范來(lái)要求自己。
一:如果有l(wèi)cd_smartie的經(jīng)驗(yàn),做有usbasp的實(shí)驗(yàn)板的話,可以在usbasp上加個(gè)lcd1602上去,修改Yuki_M8_usb_lcd代碼,我是用2+4=任意六IO驅(qū)動(dòng)1602lcd的,4bit比8bit需要一倍多一點(diǎn)時(shí)間驅(qū)動(dòng)。avr轉(zhuǎn)串口,只能利用1000ms不到的時(shí)間,就得返回請(qǐng)求。
二:如果有l(wèi)cd_smartie的經(jīng)驗(yàn),已經(jīng)有并口或串口lcd的話,可以編譯lcd_smartie-5.3.2_final-src_YUKI_2010-3-21看能不能使用。
三:2008-10-18_M8_USB_LCD 只是我Yuki_M8_usb_lcd代碼中的硬件設(shè)置,板子不太實(shí)用的。
四:如果有Proteus(單片機(jī)仿真)這個(gè)軟件的經(jīng)驗(yàn),我沒(méi)有用過(guò)里面usb仿真功能,但是。!另外配合一個(gè)【Virtual Serial Port Driver 6.0.1.115】仿真電腦串口的工具,就有了一個(gè)超強(qiáng)組合,可以自己搭建一個(gè)avr+rs232+lcd1602的實(shí)驗(yàn)板,在Proteus軟件加虛擬串口運(yùn)行,然后運(yùn)行l(wèi)cd_smartie,一樣可以連接到Proteus仿真的串口1602lcd,一樣可以實(shí)現(xiàn)調(diào)試通過(guò),只是一切都是虛擬的,我試過(guò)可以的。
五:AVR模擬usb轉(zhuǎn)串口,在Windows下需要安裝驅(qū)動(dòng),如果是win03系統(tǒng)請(qǐng)用【avrcdc_inf_2009-08-24\raw_Win2003】目錄下的驅(qū)動(dòng),不然直接藍(lán)屏。
|
|