实验十:综合实验-基于单片机的示波器实现(超级详细).docx

上传人:新** 文档编号:551667183 上传时间:2023-01-08 格式:DOCX 页数:44 大小:2.67MB
返回 下载 相关 举报
实验十:综合实验-基于单片机的示波器实现(超级详细).docx_第1页
第1页 / 共44页
实验十:综合实验-基于单片机的示波器实现(超级详细).docx_第2页
第2页 / 共44页
实验十:综合实验-基于单片机的示波器实现(超级详细).docx_第3页
第3页 / 共44页
实验十:综合实验-基于单片机的示波器实现(超级详细).docx_第4页
第4页 / 共44页
实验十:综合实验-基于单片机的示波器实现(超级详细).docx_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《实验十:综合实验-基于单片机的示波器实现(超级详细).docx》由会员分享,可在线阅读,更多相关《实验十:综合实验-基于单片机的示波器实现(超级详细).docx(44页珍藏版)》请在金锄头文库上搜索。

1、实验十、综合实验 微机原理与接口实验综合实验基于LCD的简易示波器实现实验人: * 学 号: * 院 系:信息学院微电子学系目录实验目的1实验思路1实验原理3实验设计7电原理图7流程图8各模块流程图9实验仿真结果12实验遇到的问题及改进17改写后的C语言代码19实验结果及展示38实验总结4236【实验目的】 利用本学期学习的单片机及其接口知识,使用实验板上的外部设备自行设计一个实验。【实验思路】个人计划利用LCD液晶显示屏,制作一个示波器,所用的设备主要有51单片机,单片机片外存储器,LCD显示屏,AD芯片TLC549。预期实现功能为在LCD显示屏右侧显示自己的姓名或者示波器三个字,在屏幕左边

2、的方框内显示信号源输入的波形。同时仿照我们实际使用的示波器设计波形的上/下平移,幅值压缩/拉伸,以及波形的展宽/压缩,并且能够测量输入波形的幅度,绝对误差精度在0.1V以下。对于这个实验的难点,我个人认为主要在一下几个方面:1. LCD的使用;2. 对于获取到的ADC数据的存储与处理;3. 将离散的ADC采样的数据进行连接,构成平滑的曲线。4. 对输入波形幅度测量与显示关于LCD的使用,将在后面的实验原理中进一步介绍,这里主要就后两个难点进行讨论:根据LCD屏的大小为128*64,设计搭建一个90*60的方框作为波形显示窗口,考虑到在LCD显示时,每个显示Byte为8*1的一列(每128个组成

3、一页),所以简化设计,将第一页的最下面一行,以及第八页的最上面一行作为显示方框的上下边界,从而中间的六页为波形显示区域,占用的点数为90*48。考虑到需要采集90个样本,故设计使用片外存储器,依次存储90个数据。对于数据的处理,因为每个数据样本在显示时对应不同的时间点,所以为单独的一列,主要难度是将定位到对应列的确切的点上,所以需要自行设计一个函数能够把确切的点显示到对应的列上。横坐标是90个点,纵坐标是48个点,所以在AD转换后还需要进行数据处理,因为AD转换后的值是在00-FFH之间,所以需要把FFH/6=256/6=43个点。因此,形成一个缩小的映射,由于LCD的分辨率的原因,这个将是在

4、LCD的情况下最大的分辨率。具体的对应的位置可以通过如下方法算出:00-FFH的值被映射到00-2BH(0-43)的空间,所以,当被测信号电压大于等于参考电压,AD转换过来的值是FFH,则被对应为2BH,由于LCD的行是从上往下递增的,所以AD转换过来的值还需要进一步处理,用一个参考值减去转换值,得到显示的行值,即显示行值=参考值-AD转换映射值。而对参考值的改变,就可以改变显示波形的上下位置。因为0-256个AD转换值被映射到0-43个映射值,所以每5.9个点近似对应一行,初始设定每6个点对应一行,这样即可确定每个点所对应的行号,在根据其行号,可以推出其应该在哪一页中的哪一个位置,从而可以通

5、过对01H或是80H的循环移位得到该点在对应页中的准确位置。而如何将离散的点连成平滑的曲线,在这个计算中,我认为最重要的是不可出现如下图左边出现的情况。这样会造成显著的视觉上有台阶的感觉。所以在补充两个点之间的间隙时,我选择的方法是先判断下一个补充的点是否会与前一列的点在一行上,如果是的话,就不再补充,这样可以使得补充出来的曲线更加的平滑。这样的好处在显示方波的时候最为有效。【实验原理】一、AD芯片原理TLC549 8位串行A/D:TLC549是美国德州仪器(TI)公司生产的8位串行逐次比较型A/D转换芯片。通用微处理器通过串行控制线可实现对该芯片的控制。该芯片具有4MHz片内系统时钟和软、硬

6、件控制电路,转换时间最长17s, 转换速度为40 000次/s。总失调误差最大为0.5LSB,典型功耗值为6mW。器件如左图所示:其中1、3脚为参考电压输入,其中1脚REF+,3脚REF-,通常为保证器件工作良好,REF+电压应高于REF-电压至少1V,为减少误差,建议相差4.75V以上TLC549的工作时序图如下:从图中可以看出,其控制时序有如下特点:1. 将CS置低。内部电路在测得CS下降沿后,等待ten后自动将前一次转换结果的最高位(D7)位输出到DATA OUT端上。2. 前四个IO_CLOCK 周期的下降沿依次移出第2、3、4 和第5 个位(D6、D5、D4、D3),片上采样保持电路

7、在第4个IO_CLOCK 下降沿开始采样模拟输入。 3. 接下来的3个IO_CLOCK 周期的下降沿移出第6、7、8(D2、D1、D0)个转换位。4. 最后,片上采样保持电路在第8个I/O CLOCK 周期的下降沿后,开始A/D转换。第8个IO_CLOCK后,CS 必须为高,或IO_CLOCK保持低电平,这种状态二、LCD显示屏的工作原理LCD12864 分为两种,带字库和不带字库的,不带字库的显示汉字的时候可以选择字体,而带字库的液晶,只能显示GB2312 的宋体,当然也可以显示其他的字体,不过不是液晶本身字库中带的了,而是用图片的形式显示。由于该实验用的是带字库的LCD12864,所以这里

8、主要介绍这一类。字库型液晶显示可以分为串行方式和并行方式两种,通过引脚PSB 进行选择,它只有一个驱动芯片, 不像Proteus 中无字库液晶有两个驱动芯片。显示是整体显示,而不是左右屏的显示。LCD结构图如上所示:这类LCD的引脚如上图所示。本次实验所用的是周立功的实验箱,其LCD管脚内部已经固定连接好了,并运用并行的方式。从图中可以看出LCD12864的输入管件有14个,其中D0-D7直接与单片机的P0口相连,D/-I管脚为数据/命令判断管脚,R/-W管脚为读/写判断管脚,E为用于锁存数据与指令使能管脚,CS1/CS2为LCD左右屏片选管脚,RST为复位管脚且低电平有效。LCD显示屏主要有

9、以下几种操作:读信号,写信号,读数据,写数据(这里的数据为显示缓冲区中的数据)。其中在这里实验里主要使用的是读信号,写信号,写数据这三种操作,其对端口的输入要求如下:操作R/-WD/-IE读指令101写指令00下降沿读数据01下降沿LCD的显示原理:LCD指令中有开显示指令和关显示指令,LCD显示与否受控于这个软件控制开关,需要显示时向LCD中写入开显示指令即可开显示,也可以通过指令关闭LCD显示。因此实际应用中只需将待显示的内容写入显示缓冲区DDRAM后,打开显示开关即可。显示缓冲区地址与内容关系如下:行地址X称为页地址列地址Y具有地址计数器,在读写数据后有自动加一功能,从而指向下一个DDR

10、AM。显示器常用的指令码如下:D7D6D5D4D3D2D1D0功能描述00111111开显示00111110关显示11设置显示起始行(0-63)指定显示屏从DDRAM哪一行开始显示101110-7设置页地址01(0-63)设置列地址【实验设计】一、电原理图:二、实验流程图:因为这个实验中设计的模块比较多,故分模块进行流程图表示,其中AD芯片驱动以及延时模块比较简单不做涉及。主模块(MAIN):实现各模块的调用开始调用LCD初始化模块调用清屏函数调用汉字显示模块调用边框显示模块调用数据处理波形并显示波形调用显示被测波形幅值模块结束LCD初始化模块:YESRST置位,开启LCD等待5ms,LCD预

11、热输入开显示命令3FH设置初始显示行设置初始存储行地址设置初始存储列地址调用指令输入函数判断LCD忙NORS,RW清零,对P0传输命令EN复位等待几个周期后置位,命令传输完成NOYESRS清零,RW置位,进行读指令EN先清零后置位,读取P0数据P0.7=1该模块包含LCD_INIT,LCD_CMD(写命令函数),LCD_WRITE(写数据函数),BUSY(检查是否处于忙状态函数),SCREEN_CHOOSE(LCD屏幕选择函数),CLEAN_SCREEN(清屏函数)。汉字显示模块:汉字显示中用的行列,与单字节显示中所用的行列不同,单字节中的行列为具体的存储单元位置,汉字显示模块中的行列为16*

12、16的一个汉字显示区域在128*64的点阵中的位置。YES输入汉字显示所在的行,列,以及字符库中显示汉字的位置根据输入的汉字所在位置,确定汉字存储的首字节的地址根据输入的行地址,确定实际字节显示的行地址根据输入的列地址,确定实际字节显示的列地址向LCD输入行列地址向LCD输入数据是否输入16次行地址加1,列地址复原,再操作一遍NO单字节显示模块:与汉字显示模块基本一致,为单字节显示,即依次调用写指令函数(确定行地址和列地址)和写数据函数。NOYES设置输入行地址为0B8H,列地址为40H,数据为0FFH(绘制小竖线)增加行地址,R0减一R0赋值为6R0=0行地址加1,列地址为加1,数据为01H

13、(边框底部横线,屏幕1)R0赋值为3EHNOYES增加列地址,R0减一R0=0余下的边框绘制边框显示模块:定义显示屏宽度为90,高度为48,即可显示90个采样点的数据构成的波形。行地址从0B8H-0BEH,列地址从第一个屏幕的41H-7F,第二个显示屏的40H-5CH。数据处理波形显示模块:外部开关判断Button1(UP)按下:显示波形上移Button2(DOWN)按下:显示波形下移大于1YES小于1ADC采样及处理调用ADC采样函数MULTI=1预采样一个值,且等待50us(fs=20kHz)取下一个采样点在当前采样点与前一个点之间加入其平均值将采样点存入片外存储器中该模块为示波器实验的核

14、心模块,设计ADC数据采集和读取,根据外部按键情况进行数据操作,将数据转换成波形等等,下面将把该模块中的几大重要函数进行流程图分析Button3(INSERT)按下:显示波形横向变窄(采样率下降)Button4(MULTI)按下:显示波形幅度减小判断是否输出了90个点,如果输出满了90个点,则返回模块开始阶段,重新取数通过循环补1移位,填补当前点与前一点之间的空白点将当前点与前一点之间的空白补上,此处需要判断当前点在前一点的上面还是下面NOYES判断当前点与前一个点是否在同一行根据前面所得的数据点信息进行波形绘制根据需要移动的格数进行分类,确定该点在LCD中对应的行号和在所在byte的数据值将得到的结果除以5,可以得到需要移动的格数7FH减去DDATADDATA减去7FH小于YES大于DDATA=7FH将ADC输出数据幅值给DDATA数据移位量计算【实验仿真结果】1方波 2三角波 3正弦波 4波形幅度压缩5波形横向压缩6波形上移

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号