单片机实时数据采集显示系统设计毕业论文(编辑修改稿)内容摘要:

KS0108 处于正常工作状态, RESET=0。 ( 4) L5~ L0 为显示起始行的地址,取值在 0~ 3FH(1~ 64)范围内。 ( 5) P2~ P0 确定当前所要选择的页面地址,取值在 0~ 7H,代表 1~ 8 页。 ( 6) C5~ C0=0~ 3FH(1~ 64)代表某一页面上的某一单元地址,随后的一次读或写 数据将在这个单元上进行。 KS0108 控制器与 8255A 的接口电路如 图 8 所示 [6]。 图 8 KS0108 控制器与 8255A的接口电路 指令名称 控制状态 指令代码 DI R/W D7 D6 D5 D4 D3 D2 D1 D0 显示开关设置 0 0 0 0 1 1 1 1 1 D 显示起始行设置 0 0 1 1 L5 L4 L3 L2 L1 L0 页面地址设置 0 0 1 0 1 1 1 P2 P1 P0 列地址设置 0 0 0 1 C5 C4 C3 C2 C1 C0 读取状态字 0 1 BUSY 0 ON/OFF RESET 0 0 0 0 写显示数据 1 0 数据 读显示数据 1 1 数据 单片机实时数据采集显示系统设计 10 DB0~ DB8 与 PB0~ PB7 相连接送数据,用 8255A 的 PC2 来选通此控制器,让其进行工作,用 PC1 和 PC0 分别控制读 /写选择端和命令 /数据选择端。 CS1 和 CS2 控制屏的显示范围,这里有单片机的引脚进行控制。 HD44780 与 8255A 的接口电路 HD44780 是一种点阵液晶显示控制器,用来控制字符液晶显示器,目前应 用比较广泛。 它有以下特点:  内置 CGROM 字符发生器,含 192 个固定字符,可供用户显示调用;  内置 CGRAM字符发生器,用户通过编程设计最多 8 个自定义字符,存放其中,供显示调用;  内置 DDRAM 显示数据存储器,可以存放最多 80 个显示字符,把 CGROM 或CGRAM 中的显示数据调入 DDRAM,便可在显示屏上显示, DDRAM 中的单元和显示屏的位置存在一一对应关系;  自动复位上电功能;  双向 8 位或 4 位总线接口;  丰富的控制指令:清显存、光标位置设置、数据输入时光标或数据移位设置、开或关显示屏等;  HD44780 模块有两个寄存器,一个用来输入指令,另一个用来读写数据。 指令用来告诉模块怎样存放或哪里存放数据 [6]。 Proteus 中内置 HD44780 控制器的字符液晶显示器如下图 9 所示。 图 9 HD44780 控制器的字符液晶显示器 RS: 命令或数据选择端,当 RS=0 时,总线上传送的是命令;当 RS=1 时,总线上传送的是数据。 RW:读 /写选择端,当 RW=0 时,为写操作;当 RW=1 时,为读操作。 D0~ D7:总线数据,可以传送命令,也可以传送数据,由 RS 来控制。 HD44780 控制器与 8255A 的接口电路如图 10 所示。 单片机实时数据采集显示系统设计 11 图 10 HD44780 控制器与 8255A的接口电路 由于 8255A 在此设计中只用到了 A 口和 B 口 用作数据端口, 因而 C 口就作了控制端口,从而 有图可知 HD44780 控制器的 使能端 E 和命令或数据选择端 RS 受 8255A的 PC5 和 PC7 控制。 D0~ D7 与 PA0~ PA7 相连接,将数据送入显示器进行显示。 4 系统软件设计 系统主程序 软件设计时,需要先搞清楚总体的设计方案,从而用流程图来展示主程序。 当信号输入时,主程序启动,根据内部设定的条件逐步运行,达到设计目的。 主程序执行的流程图如下图 11 所示。 开 始初 始 化显 示 设 定 值启 动 A / D 转 换数 值 处 理显 示 实 际 温 度 显 示 温 度 曲 线 图 图 11 主程序执行流程图 单片机实时数据采集显示系统设计 12 由上的流程图可知 ,程序先从主函数开始即 main() 函数。 在主函数中进行变量的定义和赋值,以及子函数的调用指令,即所谓的初始化。 之后进行定义数组,将所要显示的设定值赋予此数组,这样一上电就可显示设定值,也就定义了显示范围。 此后调用A/D 转换子函数,进行模 /数转换,由于单片机只能处理 8 位数据,所以要进行两次数据的送入单片机,即所谓的数值处理。 12 位转换值通过 8255A 进行 I/O 扩展,后同时送入液晶显示器进行温度曲线图和温度数值的实时显示 [7]。 AD1674 转换程序 AD1674 是 12 位 AD 转换器, AT89C51 只能一次接收 8 位数据,所以要分两次转换。 首先要对其进行初始化,使得 CE=0 关闭数据采集,后令 CE=1,CS=0, RC=1, 12/8 =1,A0=0, 允许高八位数据并行输出,读取转换结果的高 8 位,后送入 P1 口,使 CE = 0,芯片使能关闭。 再令 CE=1,CS=0,RC=1, 12/8 =0,A0=1, 允许低 四 位数据并行输出,再读取转换结果的低 4 位,关闭芯片,再对读取的数据进行整合成 12 位数据。 之后对数值进 行判断,进行正确的显示。 由此得出流程图如图 12 所示。 开 始初 始 化A 0 = 1 ?高 8 位 数 据低 4 位 数 据显 示 正 值B ia o z h iw e i= 0。 整 合 数 值显 示 负 值否 是否是 图 12 AD1674 转换流程图 LCD12864 显示程序 温度曲线显示程序 温度曲线显示程序流程图如图 13 所示。 单片机实时数据采集显示系统设计 13 LCD12864写 指 令LCD12864写 数 据LCD12864读 指 令LCD12864读 数 据画 坐 标显 示 温 度 曲 线 图查 忙 图 13 温度曲线显示程序流程图 执行此程序前先要检查 LCD 是否在忙,若忙不执行,不忙执行写指令,准备数据的写入,有了写命令后,进行数据的写入。 数据写入之后,此控制器要读取其值以便进行显示,所以执行读指令 和读数据。 数据读入正确后,执行坐标函数,进行描点,之后可得显示图形。 LCD12864 的读 /写依靠控制端 CS1 和 CS2 进行控制,而 CS1 和 CS2是由单片机的 和 进行控制,此端口控制屏的显示范围。 其最主要的是坐标函数,需要规定首行和首列,以及页码。 规定好后进行描点,而点的代码通过点阵取模软件绘图获得 [8]。 汉字显示程序 汉字显示程序流程图如图 14 所示。 LCD12864写 指 令页 列 值 设 置LCD12864写 数 据曲 线 图 汉 字 显 示画 坐 标显 示 温 度 曲 线 图初 始 化 图 14 汉字显示函数流程图 单片机实时数据采集显示系统设计 14 此部分程序主要是执行汉字显示函数 void show(),在这显示之前,先需要对要显示的汉字进行初始化,之后执行 LCD12864 写指令,后再 设定汉字的页码,因而在此设定显示首页地址为 0xb8, 首列地址为 0x40,列地址会自动加 1,执行后执行曲线图点阵代码,即所获得需要的汉字,后执行显示函数,这样得以实现曲线图的显示功能,从而完成此部分设计 [8]。 LCD1602 字符显示程序 此部分程序包括对 1602 的初始化函数、写命令函数、写数据函数和 LCD1602的实时显示函数几部分组成,所以可得流程图如图 15 所示。 开 始1 6 0 2 初 始 化显 示 正 值B ia o z h iw e i= 0。 显 示 负 值否 是1 6 0 2 写 命 令1 6 0 2 写 数 据 图 15 LCD1602 字符显示流程图 由流程图可知要想显示数值,首先要定义变量,之后进入主函数 main()。 接下来要规定哪一行进行显示,在这里选择第一行,占用前 16 个字节进行温度值的显示,这就是 1602 的初始化。 定义好预设值后要进行显示这就需要取值,每一位显示什么,这需要对采集转换好的数值进行处理,将每一位取出来,综合后实时显示。 完成之后要先执行 1602 写命令和写数据函数,当打开屏幕时,通过判断温度标志位为 1 还是 0,进行正确数值的显示,当标志位为 0 时显示负温度值,为 1 时显示正温度值,这 样完成显示。 5 系统仿真 软件介绍 进行系统仿真之前首先要完成硬件和软件两部分,在此之前先要了解一些软件。 ( 1) C51 集成开发软件 Keil C 此软件是美国 Keil Software 公司出品的 51 系列兼容单片 机 C 语言软件开发系统,与汇编相比, C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学单片机实时数据采集显示系统设计 15 易用。 Keil 提供了包括 C 编译器 、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的 完整开发方案 ,因此使用起来十分方便 [9]。 ( 2) Proteus 软件 Proteus 是由 Labcenter Electronics 开发的功能强大的单片机仿真软件,与其他的仿真软件相比较,在下面的优点:  能仿真模拟电路、数字电路、数模混合电路;  能绘制原理图、 PCB 图;  几乎包括实际中所有使用的仪器 其最大的亮点在于能够对单片机进行实物级的仿真。 从程序的编写,编译到调试,目标版的仿真一应俱全。 支持汇编语言和 C 语言的编程 ,还可配合 Keil C 实现程序的联合调试,将 Proteus 中绘制的原理图 作为实际中的目标板,而用 Keil C 集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同,并且支持多显示器的调试 [5]。 ( 3)点阵取模软件 此软件是为了进行液晶显示而设计的,只要输入所需要的图片或汉字,点击取模方式,就可得到所需要的点阵代码,之后写入 LCD 模块中指定的位置执行显示函数就可以实现所需要的功能。 例如将其显示汉字“赵”字,这样需要先在输入口输入此字,后选择输出格式,从而获得所需代码,获取图如图 16 所示 [8]。 图 16 取字代码获取图 Proteus 仿真 打开 Proteus ISIS,进入 Proteus ISIS 编辑环境,将所需要的元器件调用出来后进行正确连接,连接好后进行保存。 在点阵取模软件中绘制所需要的图形和汉字,之后选择取模方式,在这里选择 C51单片机实时数据采集显示系统设计 16 方式获得点阵代码。 在 KeilμVision4编程软件中进行 C 语言程序的编写,然后在 Keil 中生成的“ *.hex”程序文件。 步骤是 选择工程管理窗口的 Target1,再选择 ProjectOption for Target‘ Target1’,打开工程属性设置对话框,共有 8 个选项卡,主要设置工作包括在 Target选 项卡中设置晶振频率。 选择 Output 选项卡,然后选中 Create HEX File, 其它选项卡内容一般可取默认值。 工程设置后按 F7 键(或点击编译工具栏上相应图标)进行编译 生成“ *.hex”十六进制的 目标文件。 HEX 文件生成窗口 如图 17 所示 [10][11]。 图 17 HEX 文件生成窗口 将在 Keil C 中生成的 .hex 文件加载入 Proteus ISIS 中的 AT89C51 中,点击开始进行仿真,手动调节滑动变阻器可改变数值,实现在一定范围内的数值显示 ,仿真结束后点击其左下角的 stop 键结束仿真 , 系统仿真结果 图如图 18 所示 [12] [13]。 图 18 系统结果仿真图 如图所示显示的温度值为负值,数值为 度,即小数点后一位数。 实时温度曲线图就正如 LCD1 所示,调节图中的滑动变阻器可以更改数值,这样不停地改变实现实时数据的更新与显示,从而完成温度数值范围在 30~ +30 之间的显示 [13]。 单片机实时数据采集显示系统设计 17 结束语 本论文主要介绍了如何将采集到的温度值进行实时显示,这里主要包括数值和曲线显示。 在此设计采用的只是一种方案,还有多种方案可以采用,比如:在设计的过程中采用的 12 位并行 A/D 转换器可以换成 12 位串行的,或者直接采用 DS18B20 温度传感器进行设计等等。 在此设计的过程中元器件的选取要合适且控制方便,因而选择了最基础的且最常用的单片机型号,这样在设计时就方便了很多。 设计存在的缺陷: ( 1)在设计显示模块时选用了 LCD 显示,没能很好地解决功耗问题。 在技术方面还显得很落后; ( 2)显示数值不够精确,在这方面对数值的处理有待提高; ( 3) LCD 显示部分只做了最基础的显示,还可以进行较丰富的显示,在这方面可以有更深的思考和研究。 本设计的目的在于对液晶显示模块的应用,因此在设计的过程中就需要更加深 刻的认识此种设计思路,分模块进行研究,从而实现更广范围的应用。 单片机实时数据采集显示系。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。