版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
15 15智能温控器的显示模块设计分析案例目录TOC\o"1-3"\h\u19272智能温控器的显示模块设计分析案例 1110831.1VGA显示 1274371.1.1VGA驱动原理 1246321.1.2字模生成 496511.1.3VGA显示字符 8244121.2数码管显示 8获取了环境的温度信息之后,需要把得到的温度测量结果显示出来。第二章已经说过,本设计中的温度信息将通过VGA显示器显示。除此之外,本设计还将引入7段数码管,作为智能温控器的副显示器,用来测试温度传感器采集到的环境温度信息。本章将着重介绍VGA显示。1.1VGA显示1.1.1VGA驱动原理VGA显示器采用逐行扫描的方式,比较容易理解,即从VGA显示屏幕的左上角开始,自左向右对每个点进行扫描,每扫描完一行之后,电子束就跳转到下一行左边第一个点;在此期间,CRT对电子束进行行消隐;每行结束时,用行同步信号进行同步;扫描完所有行形成一帧,然后用场同步信号进行同步,同时进行场消隐,并回到屏幕左上角开始下一帧的扫描[13]。如图4-1为VGA显示器的扫描轨迹。图4-1VGA扫描轨迹VGA行场扫描时序图如图4-2所示。图4-2VGA行场扫描时序图下面分别对场扫描和行扫描的时序进行介绍。如图4-3为VGA场扫描时序。图4-3VGA场扫描时序图图中各段描述如下[14]:a~b:场消隐期,即同步,还原扫描坐标。b~c:场消隐后肩,准备开始扫描。c~d:场显示期,扫描中,数据有效区域。d~e:场消隐前肩,完成扫描,准备同步。如图4-4为行扫描时序。图4-4VGA行扫描时序图图中各段描述如下:a~b:行消隐期,即同步,还原扫描坐标。b~c:行消隐后肩,准备开始扫描。c~d:行显示期,扫描中,数据有效区域。d~e:行消隐前肩,完成扫描,准备同步。本设计使用8寸的VGA显示器,其默认分辨率为800*600(4:3),刷新率是75Hz。对于这个分辨率和刷新率的VGA显示器,它的扫描行场时序的各种参数如下表所示:表4-1VGA行时序参数显示模式时钟行时序(扫描一行的时钟个数)同步脉冲显示后沿显示区域显示前沿帧长800*60075Hz49.5MHz80160800161056表4-2VGA场时序参数显示模式时钟列时序(行数)同步脉冲显示后沿显示区域显示前沿帧长800*60075Hz49.5MHz3216001625如表4-1和表4-2所示,行同步信号和场同步信号由同步脉冲(Sync)、显示后沿(BackPorch)、显示区域和显示前沿(FrontPorch)构成。因此,一个完整的帧图像的扫描时间,就是行时序帧长和场时序帧长的乘积:1056*625个时钟,即660000个时钟。刷新率为75Hz,表示每秒显示75个画面,所以每秒VGA的显示需要660000*75个时钟,即49500000个时钟。所以,800*600、75Hz的显示模式下,需要驱动时钟频率为49.5MHz。basys3开发板的晶振频率是50MHz,可以直接使用该时钟,也可以进行分频后使用49.5MHz的时钟。由于本设计使用的VGA显示器只能支持最高刷新率75Hz,故直接使用50MHz也无法显示出75Hz刷新率。1.1.2字模生成VGA显示器通过逐行扫描的方式显示内容,所以,要想实现VGA显示,要先知道每个像素点在VGA屏幕上的分布情况,即点亮相应的像素点,以实现相应内容的显示。所谓字模生成,就是把字符翻译成0和1数组的过程。本设计采用PCtoLCD2002完美版软件进行字模生成。PCtoLCD2002完美版软件界面如图4-5所示。图4-5PCtoLCD2002完美版软件界面生成字模之前,需要软件进行设置,如图4-6所示。图4-6PCtoLCD2002设置界面在这里,点阵格式选择阴码,即字符像素点亮,其余像素熄灭;取模方式选择逐行式,即生成的字模数组从左到右逐行显示;取模走向选择顺向,即高位在前低位在后;输出数制选择十六进制数;自定义格式中选择C51格式。设置完成后,我们可以生成一个字模进行查看效果,为了方便,这里选择8*16的数字“6”进行说明,如图4-7所示。图4-7数字“6”的字模下方对话框中会生成相应的数组,内容如下图所示。图4-8“6”对应数组从菜单栏可以看出“6”的长宽比为8*16,进而可以得知数组的每一行其实代表两行像素点,即“0x00,0x18”对应的是点阵的第二行。数组转换为二进制后的每一个元素就代表着一个像素,“1”表示点亮,“0”表示熄灭。“0x00,0x18”转换成二进制是“00011000”,表示中间两个像素点点亮,即数字“6”的最高处,可参考图4-7进行对比。在生成字模之前,有一点需要注意,就是英文长宽比与汉字的长宽比是不同的,对于数字来说也一样。如图4-5所示,当在菜单栏字宽字高处设置字宽和字高都是16时,其上方显示对应的英文长宽比为8*16,所以要注意调整字符的长宽比。这一点非常重要,笔者在一开始时并没有注意到这一细节,而是按照汉字的方式对数字和字母进行字模生成,由于汉字的宽度是数字和字母的两倍,VGA在对每个数字和字母扫描了一遍之后又扫描了一次,出现了字母重叠的情况,而且显示字母有残缺,导致VGA显示出错,检查了很多天才找到原因。一切设置完毕后,就可以生成字模的。温度的显示需要用到数字0~9以及温度单位“℃”,此外由于本温控器的分辨率为0.0625℃,所以还要用到小数点“.”。由于温度单位“℃”与数字0~9和“.”的长宽比不同,所以我们首先对数字“0~9”和“.”的字模进行生成,使用32*64的长宽比,如图4-9所示。图4-9数字0~9和“.”的字模为了适应数字的大小,我们调整长宽比为32*32,然后对“℃”的字模进行生成。图4-10“℃”的字模每个数字或符号对应的存储器数组独立储存,独立调用。只显示一串温度数值未免有些唐突和单薄,所以除了以上显示环境温度数值的字模,我们还需要在显示界面进行注明,即“当前温度”,使用32*32的长宽比,其字模如图4-11所示。图4-11“当前温度”字模这里我们直接将四个汉字一起生成字模,如果分别生成四个字母的字模,再按顺序依次调用四个汉字,势必会增加不必要的编程和调试工作,降低效率,浪费时间,显然是一种不明智的做法。1.1.3VGA显示字符生成字库后,则需要将温度的十六进制数转换成对应的二进制数,以像素的方式在VGA显示器上呈现。本设计使用800*600的VGA显示器,即每行有800个像素,共有600行。为了达到更好的显示效果,此处使字符从300行、150列左右开始,以使显示的字符在VGA显示器的中央区域。在字模数组中,“1”代表点亮,“0”代表熄灭。所以,当扫描到像素点的数值为“1”时,给该像素点赋予非黑的颜色即可,其余像素点赋予黑色。控制VGA显示的部分VerilogHDL程序语言如下:if(x_cnt>10'd300&&x_cnt<10'd557)begincase(y_dis)10'd151:if(char_line00[char_bit])vga_rgb<=8'b11100000;//红色elsevga_rgb<=8'b00000000;//黑色......10'd182:if(char_line1f[char_bit])vga_rgb<=8'b11100000;//红色elsevga_rgb<=8'b00000000;//黑色default:vga_rgb<=8'h00;endcaseend上述代码表示在(x,y)=(301,151)~(556,182)的区域显示“当前温度”四个字,显示颜色为红色,背景颜色为黑色。1.2数码管显示数码管是一种半导体发光器件,它的基本单元是LED发光二极管,设计中常用的LED数码管一般是七段式和八段式的,二者的区别只是七段比八段少了一个小数点,即一段发光二极管,其他部分相同。本设计使用的就是basys3开发板上自带的六位八段数码管,即六个由八个小的LED发光二极管构成的数码管,使用过程中通过控制不同LED发光二极管的亮灭来显示出不同的字形。八段数码管的引脚图如图4-12所示。图4-12八段数码管引脚图按照发光原理,数码管分为共阴极和共阳极两种类型。共阴极数码管就是把每个LED的阴极连在一起并接地,如果有一个LED的另一端被给到高电平,那么这个LED就会被点亮;共阳极数码管则是将LED的阳极连在一起,原理与共阴极类似,任一LED的另一端被给到低电平,它就会被点亮[15]。共阳极和共阴极的原理图如图4-13所示。图4-13共阴极(左)和共阳极(右)basys3开发板上的六位八段数码管类型为共阳极,如果使用了共阴极的方式数码管显示的图案将会非常混乱,笔者在设计的一开始就没有注意到这个问题,把basys3开发板上的八段数码管当成了共阴极进行编程,导致最终显示出的结果是一堆乱码,多浪费了很多不必要的时间。数码管的每个显示位除了小数点外都由七个分段组成一个“8”字形,且每个分段内部都嵌入了一枚微型LED提供照明,这些LED都可以单独点亮,所以通过点亮特定位置的LED可以实现任意一个显示位对共128钟可能的图案的显示,如图4-14所示。图4-14数码管的128种图案一般来说,在这128种图案中,只有对应于阿拉伯数字从“0”到“9”的10个图案的意义是最大的,同样,本设计中也只用到了这10种图案。前文说了共阳型数码管的运行原理,各个数字的使能方法及其对应的使能数据如表4-3所示(为例便于说明,此处以七段数码管为例)。表4-3数字0到9在数码管上的显示方法数字图案a段b段c段d段e段g段七段使能数据0点亮点亮点亮点亮点亮熄灭7’b11111101熄灭点亮点亮熄灭熄灭熄灭7’b01100002点亮点亮熄灭点亮点亮点亮7’b11011013点亮点亮点亮点亮熄灭点亮7’b11110014熄灭点亮点亮熄灭熄灭点亮7’b01100115点亮熄灭点亮点亮熄灭点亮7’b10110116点亮熄灭点亮点亮点亮点亮7’b10111117点亮点亮点亮熄灭熄灭熄灭7’b11100008点亮点亮点亮点亮点亮点亮7’b11111119点亮点亮点亮点亮熄灭点亮7’b1111011使能数据中,“1”代表点亮,“0”代表熄灭。对于多了小数点“.”的八段数码管,仅需要将上表中表示位数的“7”改为“8”,如果有小数点则在后面添“1”,否则添“0”。比如,如果要显示“1.”,则其使能数据为“8’b01100111”。然而,实际应用中的显示方法并非如此简单。经笔者多次尝试,如果要在最终的数据中加入小数点“.”使显示效果更加完美,则需要投入更大量的工程,因为它和温度数值的读取是不同的,DS18B20在检测环境温度时也只是读取了温度的二进制数值,十进制结果是系统根据每个数据的位置转化而来的,小数点是我们根据字节位置人为加入的,这一点可以参考第三章DS18B20温度传感器存储温度数据原理部分,或者直接查看串口助手显示的环境温度测量结果。我们要在数码管中加入小数点势必要耗费很大的力气,但小数点的存在与否对我们了解当前温度的影响并不大,毕竟我们的测温阈值有限,且在人体能够感知的范围之内,可以分辨出小数点在一串数字中的位置。所以,在综合考虑到设计效率和性价比之后,笔者决定此处省略小数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖北省广水市高二生物下册期末考试模拟考试卷及参考答案【完整版】
- 2026年云南省个旧市高二生物上册期末考试真题附答案(轻巧夺冠)
- 2025年江西省乐平市高二生物下册期末考试模拟卷AB卷附答案
- 2025年河北省霸州市高二历史上册期末考试模拟卷含完整答案【易错题】
- 2025年河南省卫辉市高二生物下册期末考试模拟测试卷及参考答案(巩固)
- 2025-2026学年赤壁杜牧 教学设计
- 2025-2026学年高职电子商务教学设计
- 2025年吉林省珲春市高二生物下册期末考试模拟测试卷【必考】附答案
- 2026年吉林省舒兰市高二生物下册期末考试模拟检测卷及答案(历年真题)
- 2025年湖南省冷水江市高二生物下册期末考试模拟检测卷附完整答案【考点梳理】
- 2026外研版八年级上册 Unit 2 Getting along 中考题型测试(语法选择题、完形填空、短文填空)
- 2026年国企综合管理岗招聘笔试试题(含完整答案解析)
- 2025年行政执法人员《行政执法知识》真题及答案解析
- 中化集团人才测评真题及答案
- 实施指南(2026)《YBT 6120-2023贝氏体非调质钢》
- 2025年及未来5年市场数据中国再生PET市场运行态势及行业发展前景预测报告
- 全国会计领军(后备)人才(企业类)选拔考试真题回忆
- 婴儿生长发育曲线解读
- 《深度学习原理及应用》课件全套 殷丽凤 第1-12章 感知机-预训练模型
- 垃圾分类与回收课件
- 餐馆转让协合同范例
评论
0/150
提交评论