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

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

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

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

2、TLC549。预期实现功能为在LCD 显示屏右侧显示自己的姓名或者示波器三个字,在屏幕左边的方框内显示信号源输入的波形。同时仿照我们实际使用的示波器设计波形的上/下平移,幅值压缩/拉伸,以及波形的展宽/压缩,并且能够测量输入波形的幅度,绝对误差精度在 0.1V 以下。对于这个实验的难点,我个人认为主要在一下几个方面:1. LCD 的使用;2. 对于获取到的 ADC 数据的存储与处理;3. 将离散的 ADC 采样的数据进行连接,构成平滑的曲线。4. 对输入波形幅度测量与显示关于 LCD 的使用,将在后面的实验原理中进一步介绍,这里主要就后两个难点进行讨论:根据 LCD 屏的大小为 128*64,

3、设计搭建一个 90*60 的方框作为波形显示窗口,考虑到在 LCD 显示时,每个显示 Byte 为 8*1 的一列(每 128 个组成一页),所以简化设计,将第一页的最下面一行,以及第八页的最上面一行作为显示方框的上下边界,从而中间的六页为波形显示区域,占用的点数为 90*48。考虑到需要采集 90 个样本,故设计使用片外存储器,依次存储 90 个数据。对于数据的处理,因为每个数据样本在显示时对应不同的时间点,所以为单独的一列,主要难度是将定位到对应列的确切的点上,所以需要自行设计一个函数能够把确切的点显示到对应的列上。横坐标是 90 个点,纵坐标是 48 个点,所以在 AD 转换后还需要进行

4、数据处理,因为 AD 转换后的值是在 00-FFH 之间,所以需要把 FFH/6=256/6=43 个点。因此,形成一个缩小的映射,由于 LCD 的分辨率的原因,这个将是在 LCD 的情况下最大的分辨率。具体的对应的位置可以通过如下方法算出:00-FFH 的值被映射到 00-2BH(0-43)的空间,所以,当被测信号电压大于等于参考电压,AD实验十、综合实验 2转换过来的值是 FFH,则被对应为 2BH,由于 LCD 的行是从上往下递增的,所以AD 转换过来的值还需要进一步处理,用一个参考值减去转换值,得到显示的行值,即显示行值=参考值-AD 转换映射值。而对参考值的改变,就可以改变显示波形的

5、上下位置。因为 0-256 个 AD 转换值被映射到 0-43 个映射值,所以每5.9 个点近似对应一行,初始设定每 6 个点对应一行,这样即可确定每个点所对应的行号,在根据其行号,可以推出其应该在哪一页中的哪一个位置,从而可以通过对 01H 或是 80H 的循环移位得到该点在对应页中的准确位置。而如何将离散的点连成平滑的曲线,在这个计算中,我认为最重要的是不可出现如下图左边出现的情况。这样会造成显著的视觉上有台阶的感觉。所以在补充两个点之间的间隙时,我选择的方法是先判断下一个补充的点是否会与前一列的点在一行上,如果是的话,就不再补充,这样可以使得补充出来的曲线更加的平滑。这样的好处在显示方波

6、的时候最为有效。实验十、综合实验 3【实验原理】一、AD 芯片原理TLC549 8 位串行 A/D:TLC549 是美国德州仪器(TI)公司生产的 8 位串行逐次比较型 A/D 转换芯片。通用微处理器通过串行控制线可实现对该芯片的控制。该芯片具有 4MHz 片内系统时钟和软、硬件控制电路,转换时间最长 17s, 转换速度为 40 000次/s。总失调误差最大为0.5LSB,典型功耗值为 6mW。器件如左图所示:其中 1、3 脚为参考电压输入,其中 1 脚 REF+,3 脚 REF-,通常为保证器件工作良好,REF+电压应高于 REF-电压至少1V,为减少误差,建议相差 4.75V 以上TLC5

7、49 的工作时序图如下:从图中可以看出,其控制时序有如下特点:1. 将 CS 置低。内部电路在测得 CS 下降沿后,等待 ten 后自动将前一次转换结果的最高位(D7)位输出到 DATA OUT 端上。2. 前四个 IO_CLOCK 周期的下降沿依次移出第 2、3、4 和第 5 个位(D6、D5、D4、D3),片上采样保持电路在第 4 个 IO_CLOCK 下降沿开始采样模拟输入。3. 接下来的 3 个 IO_CLOCK 周期的下降沿移出第 6、7、8(D2、D1、D0)个转换位。4. 最后,片上采样保持电路在第 8 个 I/O CLOCK 周期的下降沿后,开始A/D 转换。第 8 个 IO_

8、CLOCK 后,CS 必须为高,或 IO_CLOCK 保持低电平,这种状态实验十、综合实验 4二、LCD 显示屏的工作原理LCD12864 分为两种,带字库和不带字库的,不带字库的显示汉字的时候可以选择字体,而带字库的液晶,只能显示 GB2312 的宋体,当然也可以显示其他的字体,不过不是液晶本身字库中带的了,而是用图片的形式显示。由于该实验用的是带字库的 LCD12864,所以这里主要介绍这一类。字库型液晶显示可以分为串行方式和并行方式两种,通过引脚 PSB 进行选择,它只有一个驱动芯片, 不像 Proteus 中无字库液晶有两个驱动芯片。显示是整体显示,而不是左右屏的显示。LCD 结构图如

9、上所示:实验十、综合实验 5这类 LCD 的引脚如上图所示。本次实验所用的是周立功的实验箱,其 LCD 管脚内部已经固定连接好了,并运用并行的方式。从图中可以看出 LCD12864 的输入管件有 14 个,其中 D0-D7 直接与单片机的 P0 口相连,D/-I 管脚为数据/命令判断管脚,R/-W 管脚为读/写判断管脚,E 为用于锁存数据与指令使能管脚,CS1/CS2 为 LCD 左右屏片选管脚,RST 为复位管脚且低电平有效。LCD 显示屏主要有以下几种操作:读信号,写信号,读数据,写数据(这里的数据为显示缓冲区中的数据) 。其中在这里实验里主要使用的是读信号,写信号,写数据这三种操作,其对

10、端口的输入要求如下:操作 R/-W D/-I E读指令 1 0 1写指令 0 0 下降沿读数据 0 1 下降沿LCD 的显示原理:实验十、综合实验 6LCD 指令中有开显示指令和关显示指令,LCD 显示与否受控于这个软件控制开关,需要显示时向 LCD 中写入开显示指令即可开显示,也可以通过指令关闭LCD 显示。因此实际应用中只需将待显示的内容写入显示缓冲区 DDRAM 后,打开显示开关即可。显示缓冲区地址与内容关系如下:行地址 X 称为页地址列地址 Y 具有地址计数器,在读写数据后有自动加一功能,从而指向下一个 DDRAM。显示器常用的指令码如下:D7 D6 D5 D4 D3 D2 D1 D0

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

12、实验 9LCD 初始化模块:该模块包含 LCD_INIT,LCD_CMD(写命令函数),LCD_WRITE(写数据函数),BUSY(检查是否处于忙状态函数) ,SCREEN_CHOOSE(LCD 屏幕选择函数),CLEAN_SCREEN(清屏函数)。汉字显示模块:汉字显示中用的行列,与单字节显示中所用的行列不同,单字节中的行列为具体的存储单元位置,汉字显示模块中的行列为 16*16 的一个汉字显示区域在 128*64 的点阵中的位置。YES输入汉字显示所在的行,列,以及字符库中显示汉字的位置根据输入的汉字所在位置,确定汉字存储的首字节的地址根据输入的行地址,确定实际字节显示的行地址根据输入的列地址,确定实际字节显示的列地址向 LCD 输入行列地址向 LCD 输入数据是否输入 16 次行地址加 1,列地址复原,再操作一遍NOYESRST 置位,开启 LCD等待 5ms,LCD 预热输入开显示命令 3FH设置初始显示行设置初始存储行地址设置初始存储列地址调用指令输入函数判断 LCD 忙NORS,RW 清零,对 P0传输命令EN 复位等待几个周期后置位,命令传输完成 NOYESRS 清零,RW置位,进行读指令EN 先清零后置位,读取 P0 数据P0.7=1实

展开阅读全文
相关资源
相关搜索

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

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