一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 20784|回复: 44
收起左侧

如何设计从电脑发送内容到LCD或VFD屏幕。

  [复制链接]
发表于 2010-3-21 04:29 | 显示全部楼层 |阅读模式
本帖最后由 狗狗百里游 于 2010-8-16 18:51 编辑

如何设计从电脑发送内容到LCD或VFD屏幕。

一直有人问,如何在HD44780类型的液晶或VFD屏幕上显示内容。然后就是如何从电脑上发送内容到液晶或VFD屏幕上。
我以前走了不少弯路,以后也会有不少电子爱好者会做些小工具玩。
我说说我自己的个人看法。
刚开始一般是有了一些电子元件,比如HD44780类型lcd1602,1602的vfd屏幕,128×64,128×32点阵等等.就想把闹钟显示出来。我当时的最终目的是想在电脑听音乐的时候,把歌词发送出来...
如果没有入门单片机的话,用lcd1602这种液晶,直接连接到电脑的并口,并加5v电就可以驱动了,不加的话就从并口io取电。不过背光不一定可以哦,因为并口之有5v的10ma的电流。串口也有10ma,不过是12v的10ma,
为什么并口可以直接驱动lcd1602呢?因为并口其实有一部分io是输出状态的,有一部分是输入状态的,就单片机简单io操作一样。
io读写就是输出的1,0,或判断输入1,0。
电脑上的串口跟并口,其实都是IO操作,也就是单片机的io操作了,读写速度可以达到20us左右的哦,没有单片机的时候,用并口或串口当作几个io就可以了。用来操作18b20,红外接收头,24cxxx存储芯片,AVR的isp都可以的哦,
就连10年前就有的并口驱动ps1手柄(其实是用spi协议的),而且有人利用串口的IO读写,加个运放就可以测量电压了。
如果没有单片机,或者没有单片机的下载器,不怕烧电脑的情况下,完全可以用并口或串口做单片机实验。
把液晶连接到并口上了,不会在电脑上编写上位机怎么办?
题外话,用usb芯片转并口或串口的,即使是pl2303,FT232RL芯片,传数据是可以,但想用来做io操作的话,请三思,PonyProg2000这个软件可以用电脑上的串口或并口,直接下载avr芯片或读写24cxx存储芯片,但是用usb转串口来连接的话,我自己测试写个熔丝都要【一两分钟】,写内容的话,网上有耐心的人测试过要2小时左右,但是【没有出错】。我估计usb转串口操作io的话要200ma到400ma一次,而不是电脑主板上自己的20us左右。
如果是用avr转串口的更别想了。

LCD Smartie这个软件提供的并口连接HD44780液晶方法,是用8bit的,要连接很多线,不过LCD Smartie提供显示的内容很多。
有些软件提供了跟LCD Smartie不同的并口连接HD44780液晶方法,有的可以用4bit,可以少连接4跟线,提供显示的内容很少。
不过都证明了并口可以直接操作HD44780液晶。

我一直都当LCD Smartie只是一个协议转换程序。它把电脑上需要显示的各种内容,按一定模式传送到下位机屏幕上,同过插件,可以支持各种液晶屏幕硬件。
它提供有一个【lcd_smartie-5.3.2_final-src】开源的版本。里面有利用并口io驱动HD44780液晶的代码,跟两家生产液晶屏幕硬件公司的两种协议,就是把屏幕装在电脑光驱位上的信息盒这样的,现在一些键盘上也有屏幕了,通过插件,一样可以自定义显示内容。
其中里面的Matrix Orbital协议代码,比较规范,在ULCD_MO.pas文件中,参考后觉得可以利用它的框架设计一个比较规范的协议。
然后怎么设计硬件呢?
我之前走了不少弯路,就是先考虑硬件,才考虑协议,直到我定下来协议,硬件很快就设定好了。
用电脑的并口驱动1602的液晶的话,不开背光又难看,开背光还需要另外加5v电源,连接的线也太粗了。
用了vfd屏幕的人都会立刻不想要液晶了,因为vfd是显像管,点发光的,不是背景发光的,无可代替,加滤片,跟汽车玻璃膜一样,还可以显示出橙色,蓝色。建议有条件一定要留一块vfd给自己用。
用串口的话,数据线细点,但是还是要加5v电,其实串口的1602液晶,一直用在路由一体机上,在电脑机房可以经常看到,Linux系统下有很多软件支持串口1602液晶,前几年开始有usb转串口的成熟芯片出了,pl2303等等,但是是贴片的,不是很好焊。
后来avr芯片可以模拟usb设备了。直接模拟一个rs232串口,我做了一个,直接短路avr的rs232输出输入,测试确实能自发自收。
我之前做有一个用avr芯片加max232芯片连接电脑的下位机,编好程序后,确实可以用LCD Smartie中的Matrix Orbital协议驱动,如果用avr模拟成usb串口再驱动1602液晶行不行呢。
当时已经有好几个用avr模拟usb设备驱动1602液晶的了,有几个Linux是在系统下用的,有一个LCD2USB开发有插件可以在win系统下的LCD Smartie使用。但是都不是模拟成usb转串口,如果模拟成串口的话,开发上位机方便得多,而不需要而外的dll文件做中介。
我看了LCD2USB提供的插件代码,发现LCD Smartie的框架其实很简单,如果用里面的Matrix Orbital协议,很方便驱动一个下位机的屏幕,有多方便,暂时在二楼...
想通思路后,开始做一个用avr驱动1602lcd的硬件,当时我用的avr硬件都是ATTINY2313,结果发现,用avr模拟成其他设备用的代码少点,还够驱动1602,模拟成串口的话,差不多就2k了,去掉缓冲,就容易出错,1602用4bit驱动,代码又要多点,怎么弄都放不下
ATTINY2313,最后只有用m8重新做硬件,又折腾了一阵子。
最后还是把硬件搭好了,程序也编好了,两年前得到的结论是:用avr转串口后,再驱动1602这种lcd是确实可行的,至少我认为如此。
在实现的过程得到了,重要的数据:
avr模拟usb设备的协议现在名字是V-USB,它的例子没有提供usb有效复位的代码,把程序写入avr芯片然后在插入电脑上的usb插座,电脑当然可以识别出硬件来,但是我编程序的时候,随时要修改,不想修改一次拔一次usb插头啊。
需要自己编一段代码,不把usb插头,avr芯片复位后,电脑会重新找到硬件。
usb标准的只能提供500ma左右的电流,刚好可以驱动小的VFD屏幕,烧了自己负责,旧电脑可能200ma都不到。
usb的通讯协议要求1000ms内通信要回复,意思是usb设备需要1000ms回一次话,而显示HD44780类型的lcd是需要一定时间的。也就是说,avr模拟串口后,可以利用的时间很少,比如,18b20转换一次温度要800ms。

但我一直都不满意usb转串口是要装驱动,跟在上位机需要设置com1,com2位置这样的,而且当时我的1602液晶的数据口是单排16针的,我觉得很不合理,双排插针2*8的就合理了,建议如果要搭硬件,尽量用2*8插针的,这样可以用排线。

不过现在我已经会做avr转usb的HID设备,就是免驱动设备,有了usb免驱动设备,跟通信协议,可以用电脑控制许多东西了,编写上下位机又很方便。有时间的话,我也许会陆续公布我的avr做的Hid设备。

说完两年前的事情了,接下来的就头疼了,两年前我用delphi2007编程,现在是用delphi2010。delphi2010是Unicode的,解决了很多问题,带来相当多好处跟方便,方便,如果是新写代码的话。可是如果要重新编译以前的代码,需要重新修改,花的时间肯定比重新编还要多
。不重新编写的话,如果代码修复不完整,错误未发现,会带来各种隐患。
delphi2010的带来Unicode是无可代替的,我不会像有些人留恋delphi2007,因为delphi2010编写的代码更加规范,可以让自己按照更严格的规范来要求自己。


一:如果有lcd_smartie的经验,做有usbasp的实验板的话,可以在usbasp上加个lcd1602上去,修改Yuki_M8_usb_lcd代码,我是用2+4=任意六IO驱动1602lcd的,4bit比8bit需要一倍多一点时间驱动。avr转串口,只能利用1000ms不到的时间,就得返回请求。
二:如果有lcd_smartie的经验,已经有并口或串口lcd的话,可以编译lcd_smartie-5.3.2_final-src_YUKI_2010-3-21看能不能使用。
三:2008-10-18_M8_USB_LCD 只是我Yuki_M8_usb_lcd代码中的硬件设置,板子不太实用的。
四:如果有Proteus(单片机仿真)这个软件的经验,我没有用过里面usb仿真功能,但是!!!另外配合一个【Virtual Serial Port Driver 6.0.1.115】仿真电脑串口的工具,就有了一个超强组合,可以自己搭建一个avr+rs232+lcd1602的实验板,在Proteus软件加虚拟串口运行,然后运行lcd_smartie,一样可以连接到Proteus仿真的串口1602lcd,一样可以实现调试通过,只是一切都是虚拟的,我试过可以的。

五:AVR模拟usb转串口,在Windows下需要安装驱动,如果是win03系统请用【avrcdc_inf_2009-08-24\raw_Win2003】目录下的驱动,不然直接蓝屏。

lcd_smartie-5.3.2_final-src_YUKI_2010-3-21.rar (1.18 MB, 下载次数: 948)

RS232_LCD1602_Matrix_M16_Proteus_YUKI.rar (1.11 MB, 下载次数: 839)

Yuki_M8_usb_lcd_2010-3-17.rar (614.11 KB, 下载次数: 616)

Proteus仿真软件可以使用真正的串口,这个是能在Proteus下使用的虚拟串口。
Virtual Serial Port Driver 6.0.1.115
Proteus 虚拟串口.rar (3.03 MB, 下载次数: 1245)

lcd_smartie-5.3.2_final原版
lcd_smartie-5.3.2_final.zip (1.07 MB, 下载次数: 801)
 楼主| 发表于 2010-3-21 04:30 | 显示全部楼层
本帖最后由 狗狗百里游 于 2010-3-22 08:14 编辑

RS232_LCD1602_Matrix_M16_Proteus_YUKI.rar
Proteus目录下有仿真文件,跟lcd_smartie软件
串口收发函数,使用了http://jump.to/fleury网站上的UART Library库,
里面有大多数avr芯片的串口变量宏设定,有接收发送缓冲字节,人家的代码使用起来方便,非常规范。


手机拍的,有这么一回事就行了。

手机拍的,有这么一回事就行了。


Proteus_虚拟串口_使用lcd_smartie.PNG

RS232_LCD1602_Matrix_Proteus

RS232_LCD1602_Matrix_Proteus


虚拟出来的两个串口

虚拟出来的两个串口


虚拟出来的两个串口_互相发送接收

虚拟出来的两个串口_互相发送接收
 楼主| 发表于 2010-3-21 04:30 | 显示全部楼层
本帖最后由 狗狗百里游 于 2010-4-13 01:06 编辑

有网友提出问题
看了兄台的关于vfd显示的文章,有几个问题不太懂,想请教,我想给自己的电脑软驱位置弄个vfd屏,通过lcd smart显示一些效果,由于没有专业知识,问得问题比较菜,还望海涵.
1.我不知道我有没有看懂,文章里说并口可以驱动vfd屏,好像串口也可以,但是我这几天问到的好像能兼容lcd1602和hd44870的都是并口,据网上的卖家说,支持lcd1602以及44870都是并口屏,串口通信的都不支持,但是翻王老板以前的帖子,他卖过一款日本则武的vfd2002的大屏,支持lcd2002以及2004,(ct系列,卖价50),应该是串口.望解惑.
2.我近日有意购一个vfd2002,具体型号20T202DA1E_1,应该是王老板卖过的那款,淘宝的老板说可以直接接打印机的并口,但是我的打印机没有并口,只有串口,能接吗,(除加底板以外的方法)
3.如过不能直接接,给电脑加一块PCI转并口(打印机)接口卡,是不是能代替电脑主板原生并口的作用,可以直接接.
4.听说不管是并口还是串口,都只是虚拟驱动,不能实现完全的功能,不知道对于我所要弄的屏,有什么具体影响.(我看到老兄的文章里,好像只提到需要驱动,米有说功能方面的缺失)
5.一直看老兄文章,包括屏的介绍,都是说兼容lcd2002,我不知道是不是说,2002的屏通过lcd smartie这软件只能显示16*2,右边的4列今后是摆设.(这个问题尤其菜,主要是因为网上关于vfd2002的图片,显示字符从未满屏,再加上介绍也只说兼容lcd1602,没见过兼容lcd2002,才有此一问).
6.请恕在下不懂,并口和串口的传输速度怎么会比usb快,还是不是我理解的意思,能普及一下吗,大虾.
7.再问vfd屏接并口需不需要对并口定址

回答:
一:44870系列的用电脑主板上的并口接好线,跟外加5v是可以驱动的,全功能,不能用在usb转并口线上【原因其实是,并口用在打印机这些正常的设备,是完全没有问题的,但是,驱动hd44870系列液晶屏幕,需要高速,这个高速是cpu决定主板上的并口跟串口的速度,usb转的话,是usb芯片跟usb接口决定的速度,也就是小马的avr串口下载电路,用在usb串口中,会卡死】,PCI转并口的接口卡,没有用过,不知道。如果想用电脑主板上的串口,或usb转串口线的话,需要加单片机电路。
四:“听说不管是并口还是串口,都只是虚拟驱动,不能实现完全的功能”,如果是用并口的线路,或单片机的方案,都可以实现所有功能的,这只是字符lcd,vfd屏幕,只能显示字符,跟8个自定义图案
五,lcd smartie这软件可以设置lcd,vfd,是1602,还是2002,还是1604,还是2004,请放心使用....,如果设置成1602,用在2002的话,当然会有8个字符位子空出来,设置成1604的话,用1602显示,当然也会有两行看不到。
六。如果有王总卖的这块VFD,2002的
https://www.yleee.com.cn/viewthread.php?tid=1859&extra=page%3D1
如果按我的办法跳线好,加个电平转换,【一个三极管,两个个电阻】,或者【一个光耦,两个个电阻】,用在电脑主板上的串口,或者usb转串口电路上。在lcd_smartie-5.3.2_final版本中,选择【Crystalfontz (Serial)】,直接可以驱动,也就是不需要加单片机电路,有这块屏幕的可以试一下。只是我不知道,能不能用在winamp中显示波形图,因为那是用8个自定义字符组成的图案,如果lcd_smartie发出的指令不对,就不能显示图案,显示字符是没问题的。

还有一块不记得在哪里买的,pos机上用的2002,5v,串口,也是这个公司出的vfd,也是可以在lcd_smartie-5.3.2_final版本中,选择【Crystalfontz (Serial)】,直接驱动。
下图第四块。这几天我刚好把我的实验板装在V字形名片夹子上,效果还不错,打算,用V字形名片夹代替盒子做一个实验电源

照片-0034.jpg

下图第三块就是,老王的,可以改成串口驱动的2002vfd。我刚刚试过可以直接用lcd_smartie-5.3.2_final驱动

照片-0032.jpg
想玩lcd_smartie的朋友,如果不会用单片机的话,用主板并口,另外加5v电(建议在键盘一分二线中取5伏电),尽量用20个字符的4行的....屏幕大显示内容多。但是并口线很粗,也不便宜,
如果有成片用单品机做的,就一次过了,
或者弄到串口输入的vfd,如果电流小的,可以用usb转串口电路,从usb取电,就很理想了。电流大的话,会烧电脑主板的哦...



六,平常说的速度是指连续传送字节的速度,usb1.0,1.1,usb转串口的都是这些,比如1兆速度,除以8,实际可以每秒128k字节,
主板的串口可以2兆以上速度,普通主板也可以256k速度,并口是8io口,跟加多少个io忘了,如果用在传输数据,每秒数据量,其实是串口的8倍以上。10几年前,10M网卡要几百块钱,上千块钱的时候,我在学校就用过串口,或者并口,连接两台电脑,传输数据,就跟现在局域网一样,当时串口连电脑太慢,还得花大把银子买并口线改造。所以usb转并口或串口还是比电脑主板上的慢。有些主板没有串口,但留有电路插座在主板上,只要用扩展板就可以把串口跟并口的插座引出来的,像以前的声卡,网卡一样。请详细查看主板说明书。
但是,要用并口驱动hd44870系列的液晶屏幕,不是以多少连续发送速度的,是以IO响应速度的,比如usb的规则是1秒至少要响应一次,但1秒之内最多估计也就能响应2到10次这样,它每响应一次就发送100K的字节都可以,所以可以100K×10等于1兆这样,驱动hd44870系列是要求IO口在1ms内响应,10ms估计也可以,意思是,要求并口的IO要有1秒响应100次的能力,usb转串口跟并口肯定死了,笔记本的扩展卡转并口串口,名牌的,肯定可以,电脑主板上另外买有芯片的并口或串口扩展卡,我就不知道了。
电脑主板上的并口跟串口速度,其实是cpu决定的,1000兆的cpu,主板上的并口或串口IO就可以1us响应一次(一秒理论响应1000000次,秒杀usb,设置IO的话,我的cpu是2500兆,设置串口IO高电平或低电平,跟读IO电平状态,3个命令完成花时间都是26 us到9 us 左右),所以完全可以驱动hd44870系列的液晶屏幕,跟下载c51,avr芯片,读一体化红外接收头啊,模拟声卡发出声音啊(以前的声卡几千块钱),读游戏机的手柄这样。

七.再问vfd屏接并口需不需要对并口定址,这个说法,应该是,并口其实也是可以有很多个的,如果有多个并口,就得在你使用的程序中定义好并口的名字,并口一并口二的说法,也就是并口地址,并口,串口,在windows上,其实都是一个特殊的文件,比如"C:\1.dat","D:\2.dat",这样,只是它们用特殊的符号表示。所以读写速度是cpu决定的。用电脑主板上的串口并口,要考虑短路会损坏主板,漏电什么的。
 楼主| 发表于 2010-3-21 07:20 | 显示全部楼层
4楼还没有人占位,我继续占好了。

这个软件貌似是德国人写的,代码里面有在中文系统下的非规范字符....意思是看起来是?,其实不是?,一保存代码就坏了。
需要用其他文本文件修改好代码,再用delphi编译,我改了好久。
代码原来用了几个控件,皮肤更换啊,跟上网获取网页更新,rss更新,游戏更新,邮件更新啊,如果电脑上不了网,会很卡。我全去掉了。
只是用来参考他的代码协议,跟代码技巧。
修改后的界面如下..........................
用m8做的转串口驱动1602屏幕,怎么有乱码,1602怎么能显示中文呢,别想了。不过稍微修改一下lcd的驱动代码可以用在别的屏幕上面。
运行五六个小时通讯也不会出错的,协议应该是可靠的,看怎么用而已。

1234.JPG

照片-0027.jpg

照片-0029.jpg

照片-0031.jpg
发表于 2010-3-21 08:26 | 显示全部楼层
专业,太强了。我只试过并口驱动VFD1602,不知道楼主有没有试过驱动6963之类的点阵屏,如果能驱动点阵屏的话,就更好玩了
发表于 2010-3-21 11:41 | 显示全部楼层
高手啊!希望楼主发完供我等小虾学习
发表于 2010-3-21 14:18 | 显示全部楼层
楼上的都是大虾,俺才是小虾。
发表于 2010-3-21 14:59 | 显示全部楼层
楼主强!   
楼主希望有人占楼,我就占,学习一下
发表于 2010-3-26 19:46 | 显示全部楼层
回复 1# 狗狗百里游
楼主知道否刷firmware到M8后还需要怎么操作才能使用LCD SMARTIE USB口正确输出到1602上显示的呀
发表于 2010-3-27 00:05 | 显示全部楼层
实话实说,没看懂。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-24 19:17 , Processed in 0.080368 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表