摘要:本系统以ADuC841为主芯片,通过AD采样,将幅度为0~1V,频率小于1KHZ的信号转换成数字信号,存储在单片机的内存中,存储深度为10k,并由ADuC的DAC模块输出到示波器上显示,同时在LCD屏上显示出稳定的波形。该系统能够实现单次存储,连续稳定显示和实时存储,实时显示的功能。
关键词:ADuC841;ADC; DAC; LCD;动态波形
一、 系统方案论证
1. A/D采样
ADuC841片上ADC是快速(420kS/s),8通道12位,单电源供电的ADC模块。该模块由多路开关,采样/保持电路,片上参考电源,校准电路和ADC本身等组成。由于它具有精度高,性能强等优点,故选择由单片机上的ADC模块直接采样。
2. D/A转换
ADuC841片上集成有两个通道的12位电压输出DAC,每个通道的DAC均有轨到轨输出的缓冲放大器,放大器能够驱动10千欧/100pF的负载,输出范围可以设置在0~Vref或0~AVdd。经单片机ADC采样后的数据存储到内存中,直接就可以用DAC转换出来,故选择单片机上的DAC模块直接转换。
3. LCD液晶显示屏
实验板的液晶模块由STC单片机控制,STC与ADuC841采用IIC通信,由于STC代码有待改进,绘图功能不理想,本文采用ADuC841直接驱动LCD,键盘则仍由STC驱动。
二、理论分析及相关计算
1. A/D采样
这里我们主要是对ADC的专用寄存器进行设置,首先ADCCON1=0xBC(10111100),使ADC上电处于工作状态,并选择内部参考电源,为了保证ADC的正常工作,ADC的工作时钟频率必须等于或低于8.38MHZ,并且采样时间不短于三个ADC时钟周期。在这里我们选择PLL分频数为2,模数转换的时钟数为4,满足实验要求;接着ADCCON2主要是选择转换的通道,这里我们选择3通道。
2.D/A转换
ADuC841的DA模块使用起来很简单,这里我们选择DAC1,它的输出范围为0V~Vref,所以DACCON=0x16。
3. LCD液晶显示屏
液晶模块采用的驱动芯片是ST7920,该芯片适合字符显示,但是在图形应用中有如下不足:
1) CLEAR指令只能清除DDRAM,不能清除存储图形数据的GDRAM,GDRAM只能通过逐字节写0方式清除,故当液晶屏显示完一帧图像,需要更新时,刷新速度会很慢。
2) 在串行模式下,ST7920只能写入数据,不能读出数据,因此给绘图带来诸多不便,比如画点时写入的数据覆盖先前的数据,导致单行不能显示连续的点。
解决方案是将GDRAM映射到单片机可读写的存储区域,即开辟显示缓存,可供选择的区域有ADuC841的internal XRAM和外部RAM HM62256,考虑到读写速度,选择前者。同时在LCD实时显示时,需将采样数据作缓冲,故开辟128*2字节的缓冲区,存储区分配如图(1)所示
本实验LCD显示动态波形的方式有两种:
1) 一点一点地显示,同时对显存作相应改动,满一屏后GDRAM清零,然后再画点。
2) 在显存中预先设置一帧图像信息,然后写入GDRAM,显示第二帧时,重复前述步骤。
由于ST7920中GDRAM的清零只能通过逐字节写0实现,而每显示一点又要对GDRAM做相应操作,并且写GDRAM的速度远小于读写internal XRAM的速度,因此同样显示一屏图像,方式1的速度不如方式2,经实际验证确实如此。
显示方式确定后就是要提高LCD刷新一帧图像的速度。优化的关键是提高对ST7920写数据的速度,查阅ST7920的数据手册知串行时钟高电平与低电平最短维持时间均为200ns,故应让ADuC841产生串行时钟的周期尽量接近400ns,时间过长将影响LCD的响应速度,解决方案是采用较为精确的内嵌汇编的延时函数。
三、 系统框图及流程图
1.电路框图
2.软件流程图
四、系统测试
1.输入信号
输出信号
五、实验结论
通过测试之后,发现本系统能很好的完成单次存储,连续稳定显示和实时存储,实时显示的功能,达到了设计要求。
参考文献:
[1]李刚,林凌.易学易用高性能SoC单片机ADuC841 [M].西安:西安交通大学出版社,2006.
[2]李建忠.单片机原理及应用 [M].西安:西安电子科技大学,2002.
[3]龚运新.单片机C语言开发技术[M].北京:清华大学出版社,2006.
(作者单位:华中师范大学物理学