引言
频率特性测试仪又称为扫频仪,或频率响应分析仪,它利用矩形具有内刻度的示波管作为显示器,来直接显示被测电路的幅频特性曲线。但由于示波管的使用,使得整个仪器在外形上显得庞大,笨重,如bt-3gii型的扫频仪重量达到10kg,不方便移动式测量。为此,本设计针对其显示部分,将示波管用lcd代替。适用于便携式仪器仪表中。
硬件设计
本设计所选的液晶显示器是深圳天马微电子公司的tm320240efg,它是一款内藏sed1335控制器的点阵式图形液晶显示模块。lcd控制器选用的是epson公司的sed1335,内部拥有一个160种5×7点阵字符的字符发生器,能分区管理64k的显示存储器,并同时能管理自定义字符发生器。模块tm320240efg的对外接口实质上就是控制器sed1335与mcu的接口。在单片机的选型上,考虑到系统功能与电路的简洁,采用atmel公司推出的avr单片机at90s8535,内嵌8路10位adc,可直接输入模拟电压信号。
at90s8535与tm320240efg接口采用间接访问方式进行连接。单片机通过控制sed1335完成对图形液晶模块的控制。所谓间接访问方式,就是把tm320240efg作为终端接在at90s8535的某个并行i/o接口上,at90s8535通过对该i/o接口的操作,间接地实现对tm320240efg的控制。间接访问方式的接口电路与时序无关。
在电路中,at90s8535使用8位并行pc口作为数据线与模块的数据线db0~db7连接,另外还需要一个3位并行接口作为时序控制信号线/rd,/wr和a0。把pb口中的pb0作为写信号接至tm320240efg的写控制信号/wr上;pd口中的pd3作为读信号接至tm320240efg的读控制信号/rd上;pd4作为数据类型选择信号与模块的a0连接。由于这些并行接口在mcu系统中有自己的地址,所以tm320240efg的片选信号/cs可以不使用,直接接地选通。液晶驱动电源vee取值为-20v,利用单片dc-dc转换器mc34063从逻辑电源转换生成负电源。电路中lcd电源控制端v0用来调节显示屏灰度,电位器r3作为调节液晶显示对比度使用。
adc的0通道输入经过检波后的采样信号,带宽为10khz,经rc滤波去除交流分量。5.1v稳压管起保护作用,高于5.1v的输入信号被限幅在5.1v之内。该输入波形的x轴方向扫描频率为50hz,周期为20ms,12ms工作期,8ms消隐期。外部中断管脚int0输入50hz的方波,作为同步脉冲。mcu的晶振选为6m。
屏幕规划
该液晶屏为320×240点阵,将坐标原点(0,0)定在整个液晶屏的左上角,向右为x坐标,向下为y坐标。为美观起见,四周边框留出空白区域,实际显示曲线的区域为x方向从第24点到264点,共240个点距,30字节;y方向从第16点到208点,共192个点距,24字节。为方便观测,在显示区内绘制坐标轴,用虚线等间距地将横向分作10小格,竖向分作8小格。
在进行图形显示时,起初我们采用的是单层显示方法,但由于要求实时显示,必须考虑屏幕的刷新问题。由于此液晶屏属多点阵,刷新满屏需花费很长一段时间,刷新完后还要在屏幕上重新绘制出坐标轴,增加了mcu的操作负担,而且频繁的满屏刷新还会引起屏幕的闪烁现象发生。因此采取的解决方法为:显示时分作两层显示,*层为文本属性,第二层为图形属性。将不需刷新的坐标轴、汉字显示在文本层,首地址$0000。将实时动态更新的幅频特性曲线显示在图形层,首地址$1000,并通过两层的逻辑“或”操作进行合成显示,以达到图文并茂的显示效果。这样,在刷新时,文本层上的坐标轴和汉字可以保持不变,所需刷新的仅为图形层上的曲线。实际测试结果表明,分层显示的设计思路是正确的。
软件设计
绘制曲线在软件设计上关键是画点和消点的程序。
adc采用单次转换模式,总的转换周期数为14,总的转换时间70~280ms,预分频器的分频因子选为32,故adc时钟频率为6m/32=187.5khz。所以每一次的转换时间是14/187.5k=74.666ms,此adc转换时间是在6m的晶体振荡频率下zui快的采样时间。若选小于32的分频因子,则总的转换时间太快,将小于70ms,不能实现。考虑到实际需要,adc转换时间越快越适宜,故不采用64以上分频。
用ox来记录x方向字节数,初始值为$00,随点的右移从1到30递增。当ox=30时,说明x方向已到达有效显示区的尾部。code记录点在字节中所处位置,画奇数点时code从$80开始右移,画偶数点时code从$40开始右移,每次移动2位,移完一字节后,ox加1。
adc能转换的zui大量程电压是电路基准电压vref的值,这里调节的是4v。1v占48个点距。某一时刻,输入信号zv(z≤4),则其在屏幕上y向的位置是208-z×48。mcu内嵌的adc为10位精度,采样结果转化成点的高度的计算表达式为:
208-(ad值)×(4/1024)×48=208-(ad值)×3/16(1)
考虑到输入信号的扫描时间和mcu的ad转换时间,整个屏幕在x方向要显示240点,只能采取隔列扫描的方法,分两帧画*屏,*帧画奇数点,第二帧画偶数点。先在工作期12ms内采样数据,进行120次ad转换,将其转换结果按顺序存入片内sram中,所以需要100ms启动adc一次。同时,把信号的消隐期8ms加以利用,在整个20ms周期内画120个奇数点,20ms/120=166.666ms,我们设定每隔161.333ms画一个点。画点的具体方法为:从sram中取出ad值,将每组的ad采样结果用式(1)进行计算,转化成y方向坐标,得到点的高度值,送入寄存器oy中。由于屏幕上一横行是320个点,即40字节,显示区距离左边框为3字节,可计算出该点的地址,结果存于寄存器r7:r6中,表达式为:
r7:r6=oy*40+3+$1000+ox(2)
接着再确定该点在此字节中的位数,调用绘点程序即可。画完一屏的奇数点后,等待下一个同步脉冲到来,然后,在同样的扫描时间内,用同样的方法绘制出120个偶数点。这样,全屏显示的时间仅为40ms,人的肉眼观测到的是一条连续的曲线,不会出现隔列的效果。另外,考虑到屏幕的刷新问题,每次画点前,都要在此列先消点。消点和画点的方法类似,程序中用ox1和code1与画点加以区别,这里不再累述。
程序中用寄存器r25作标志状态寄存器,各标志位说明如下:
r25(3):两帧画*屏。r25(3)=0,*帧画奇数点;r25(3)=1,第二帧画偶数点;
r25(4):在t/c1中断里置位r25(4)=1,表明显示时间已到,可以进行画点显示;
r25(5):在adc转换结束中断里置位r25(5)=1,表明adc转换结束,已采样到数据并存入sram中。
整个程序应用4个中断。20ms同步脉冲上升沿触发外部中断ext_int0,在中断服务程序中,清r25(4,5)=0,并使能两定时器t/c0和t/c1。采用t/c0定时中断,每100us中断一次,在中断服务程序中,启动ad转换。同时采用t/c1输出比较匹配a中断,每161.333us中断一次,置位画点时间到达的标志。adc转换结束中断,在中断服务程序中读取采样值ad,置位r25(5)。
复位时间问题
在整个设计过程中,程序调试用的是avr单片机的在线仿真器ice200。但将调试好的程序经编译后烧到片子里,液晶屏却不能正常显示了。查找原因,主要是单片机和液晶屏的复位时间相差太大引起的。对于at90s8535来说,超过50ns的低电平就会引起系统复位;而lcd的控制器sed1335,复位需要1ms以上的复位电平。所以需在程序的初始化部分,加一定的延时,以使lcd正常工作。回过头来再思考一下在线仿真能通过的原因。仿真器上电和液晶屏上电同步,在调试环境里,下载程序所花时间较长,能够满足lcd的复位时间要求,故在程序运行以后,可使lcd正常显示。
目前,兼顾功能和价格两方面,大量中、仪器仪表已经广泛使用lcd作为其显示输出设备。本文将点阵式图形液晶显示模块和avr单片机at90s8535相结合,使频率特性测试仪的显示输出由原来的示波管改为液晶屏,符合现阶段传统仪器向智能仪器转型的发展趋势,很有市场竞争力。