新闻中心

EEPW首页 > 物联网与传感器 > 设计应用 > C51程序控制激光广告仪系统

C51程序控制激光广告仪系统

作者:苏州卡欧电子股份有限公司,平川时间:2004-06-18来源:电子设计应用收藏
摘 要: 本文用AT89C51和C51程序来实现激光器扫描动态图像,解决了用计算机时较难解决的图像封口问题,对现有振镜实时,能输出简单动态图像。通过良好的实现情况,只要提高的速度和存贮器容量,即可显示复杂的动态图像。

关键词:单片机;;控制

引言
当前,激光技术发展日趋完善,在基础研究、医疗、机械、通讯等领域广泛应用。目前多采用计算机进行可视化激光器控制,因为计算机有很高的速度和很大的存贮空间,可以控制大的系统。在控制中小型系统时,计算机的优势并不明显,而且软硬件复杂、成本较高。
采用简单的控制系统来取代计算机这样复杂的系统,可以解决以上问题。在一般控制系统中,单片机可以代替计算机,其中被广泛使用的是AT89C51单片机,它具有结构简单、价格便宜、控制性能良好、操作方便等优点。
该控制系统,本质上是控制四路TTL电源电平,这方面作者作了一些有效尝试。
本文利用单片机及C51程序控制激光器,使其在显示屏上描述图像。图像原始数据由AUTOCAD 等相关软件生成PLT文件,再转化成C51数据模式。该控制系统主体控制程序是C51程序,由它控制激光描绘出相应的图像。

单片机控制的激光广告仪系统
硬件系统组成
控制系统主要分为以下四个部分。
控制部分:AT89C51单片机,8MHz晶振。运行控制程序,向两个芯片发送控制指令,完成芯片的选择和数据的发送。
部分:两个DAC芯片DAC0832LCN。完成数字信号向模拟信号的转换,在确认被选中后,对送上端口的8位数字信号进行转换。
信号放大部分:两组双运算放大器HA17741。将数字图像转换成电压量,然后输出两路电源给光学扫描系统,控制X,Y轴振镜。
开关电源: 通过单片机的p1.4和p1.5端口,输出“1”或“0”来关闭和打开两路红绿激光电源。
三色激光广告仪系统原理简图和构成
原来的三色激光广告仪中的控制系统由计算机完成,现在由单片机来取代,如图1所示。单片机通过导入其中的C51程序来控制四路电平的输出。光学振镜扫描系统(上海通用扫描公司生产,型号为6001S)中X、Y轴振镜步进机接受从运算放大器输出的模拟电压信号。正常的输入电压范围为±10V,系统设定±40o光学扫描角,单片机控制系统中输出电压范围为± 5V,所以对应的光学扫描角为±20o,这样的角度范围满足实验要求。
其余SW1,SW2两路控制激光电源,一路是670nm的红色激光,另一路是532nm的绿色激光。运行程序控制激光发光及激光颜色,最后在演示屏幕上显示所要求的图像。


图1 三色激光广告仪系统原理简图


图2 双极性输出电路图


图3 C51语音程序流程图


图4 动态显示的椭圆和静态矩形

?同步输出
两路D/A输出要求严格同步,采用图中接法,把数字量的输入锁存两路D/A转换输出,实现同步控制X、Y轴振镜步进机。
当振镜的响应频率远远低于CPU数据传输速率,同步和异步之间的输出差异将忽略,该系统也可采用异步输出。
?双极性输出
振镜的转动不仅与输出模拟电压大小有关,而且与输出模拟电压的极性有关。所以在每个DAC后要用两个运算放大器来实现双极性输出,如图2所示。双极性输出是在单极性输出的基础上再加一级电压放大器,最终输出的电压为。
本系统中VREF=+5V,所以输出的双极性电压范围为±5V。当单片机向DAC0832输出的数字量为0H(0)时,VOUT2=-5V;当输出的数字量为80H(128)时,VOUT2=0;当输出的数字量为FFH(255)时,VOUT2=+5V。
软件系统
?AUTOCAD 的PLT文件
获得图像的原始数据一个基本方法,就是通过AUTOCAD 生成的PLT文件,PLT文件记录了图像在屏幕上坐标值。一般来讲,对圆弧而言,就是若干个微小的线段连接而成,每一个线段都有起始两点,由于圆弧是许多微小线段构成,所以坐标点很多,当激光扫描这些坐标点时,就能显示相关的图形。PLT文件是HP绘图仪的命令语句, PLT 文件由几乎可读的ASCII码组成,容易生成和调试。
对其中一些重要参数的解释:
IN (initial):初始化,设置所有参数,将画笔移至原点。
SC (scale):定标,坐标值的范围。
LT (line type):线型,一般为实线。
SP (select pen):选择笔型。
PU (pen up):起笔。
PD (pen down):落笔。
PA (pen allocate):定位笔,其后数据是X、Y轴坐标。
从使用角度,真正有用的是PA后的X、Y轴坐标,也是必须转换的数据部分,这也是PLT文件主体部分,集中了大量数据,提取PA后的坐标值简化成TXT文件,再拷贝到C51程序中。
?TURBO C++ 相关程序段和解释
该TURBO C++ 转换程序主要功能是对PLT文件中的图像数据进行转换,把不适合的PLT文件数据格式转换成适合的数据格式。C51语言数据格式为0至255的十六进制的数据,如:34,d6,fe 等格式,255对应的十六进制的数为 ff。PLT文件的数据在零到数万正负之间,因此必须要对数据进行转换。
?C51程序流程图和解析
C51程序是控制激光器的主体程序,分成三个主要部分:选择DAC芯片,数据指针指向数据表,数据输出转换。
这些数据代表电压值,由于单片机数据位是8位,电压的输出在± 5V之间。把电压分成256份(28)。80h对应的是0V,ffh 对应的是+5V,00h对应的是- 5V。其输出的电压值精度就是10/256V,约为39mV。
流程图如图3所示。C51语言相关程序段和解释:
1.打开激光器:把p1.4和p1.5 端口置成低电平来打开红绿两路激光器, 当然也可打开其中任一路颜色的激光器,颜色合成就是通过打开不同颜色的激光器来实现的。
P1^=16:打开 5 V 电源,开绿激光器,关红激光器;
P1=0xfd:打开 5 V 电源,开红激光器,关绿激光器。
2.存贮图形数据:
unsigned char data x[]={0x3f,0x44,0x54,0x66,0x43,0x60};
unsigned char data y[]={0x3f,0x44,0x54,0x66,0x43,0x60}
其中,x[]和y[]分别代表图形的X轴和Y轴的坐标,由上述的PLT文件中的数据转化而来。
3.选择第一DAC:当DAC的片选端口为低电平时,即选中。
P1^=8:即选中第一个芯片、不选第二个芯片;
P1=0xfb:即选中第二个芯片、不选第一个芯片。
4. x[]和y[]的值分别送到P0端口被DAC锁存:
P0=x[i];
P0=y[i]
5. x[]和y[]的值同时由DAC转换输出。
6. 延时:光学振镜偏转时需要一定的时间,所以在给振镜端口送电平时,太快则振镜来不及响应,太慢则影响图形显示速度,因此电平之间的延时要取适当。延时值的设置相对于所用设备而言,如DAC、运算放大器等,因此延时须考虑所用设备的性能。

实验结果
控制系统经过调试,单片机可以控制激光广告仪输出动态图像。在实验调试中,使用了绿色激光完成了动态椭圆缩放和静态矩形的演示。动态显示的实现原理是控制激光以适当的时间间隔依次显示大中小三个不等的椭圆,调整显示速度可造成动态效果,实现椭圆的缩放。图4所示显示大中小三个不等椭圆和矩形照片组。
通过图中照片的效果,给出如下几点说明:
1、椭圆圆弧光滑连贯:说明图像中数据都被显示出来,失真很小,在人眼观察的允许范围之内,从矩形直角和圆弧封口的显示能看出图像中数据已经按要求显示。如果椭圆的圆弧不光滑连贯或直角的角度不标准,即存在失真,说明图像中有坐标点丢失。针对控制系统来说,就是由坐标点代表的电压值没有全部送到光学振镜,或者光学振镜对端口电压来不及反应,而造成图像失真。在实验中所用光学振镜是0.5V/机械偏转角,如果往振镜端口传输数据太快,即延时太短,光学振镜来不及反应,而造成数据丢失。延时长的话,会影响输出图像连贯性,不是整个图像。因此必须要考虑选择适当的延时,在该控制系统中延时几微秒即满足振镜时间要求。
2、显示图像的点数:图像复杂程度一般是由其点数决定,图形越复杂,其描述的点数也必然越多,因此图像越复杂就越难显示。这里存在两个原因,第一,存放数据的存贮器容量有限制,不能存贮很多的数据,需要做相应的扩展。第二,振镜偏有转速和时间响应限制。对人眼来说,要看到是一个完整的连续的图像,当数据很多时将花费很多时间,使人观测到的是不完整的图像,而造成失真。第三单片机数据位是8位对应256状态,当数据很多时必须提高数据位。
3、图像拉丝:即在显示两个或多个图形时,在图形之间存在不必要的连线。由于没有关闭激光器而使得本来没有联系的图形联系在一起,这不是图形失真。在程序中及时关闭激光器,就能解决这个问题,这要求激光电源有比较好的时间响应。

结语
该控制系统的良好实现情况表明,单片机系统能实时控制激光广告仪。该控制系统比较突出的优点:第一、顺利地解决以前计算机较难解决的图像封口这一麻烦的问题,用矢量法描述图形时,8位数据精度已经满足解决图像封口要求,排除了因为数据精度不够而引起图像封口的可能。第二、有比较好响应速度,能够满足目前光学振镜的响应时间,能按要求进行实时控制。第三、由于C51编程简单,代码率高,而对于机器的配置要求不高,降低了激光广告仪的成本。对于激光在其他方面的应用,也可采用单片机取代计算机实现控制。现在所做的控制系统存贮容量是4K,已能描绘一些简单动态图像。当采用高速的CPU和高容量Flash存贮器时,就能显示复杂的图像,乃至可能做成激光电视和激光电影。■

参考文献
1 戴梅萼.微型计算机原理及技术应用.清华大学出版社.1999(1)
2 何立民.单片机应用系统设计.北京航空航天大学出版社.1996(3)
3 周叶,高荣芳.数据结构与C++.西安交通出版社.1999(11)
4 宛延.C++语言和面向对象程序设计.清华大学出版社.1998(10)
5 李华等.MCS-51系列单片机使用接口技术.北京航空航天大学出版社.2001(5)
6 梁合庆.从80x86C语言到8051C语言.南京神脉技术公司出版.1997(6)


c++相关文章:c++教程


双控开关相关文章:双控开关原理


评论


相关推荐

技术专区

关闭