微机字符发生器实验报告.docx_第1页
微机字符发生器实验报告.docx_第2页
微机字符发生器实验报告.docx_第3页
微机字符发生器实验报告.docx_第4页
微机字符发生器实验报告.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

键入文字 微机字符图形发生器实验要求一、任务利用模拟示波器显示字符图形,并能通过按键对显示内容进行修改。二、要求1. 在示波器屏幕上以点阵形式显示字符图形,分辨率达到9690。2启动后在屏幕上显示“字符图形”四个汉字,并把光标置于左下角。3用功能键修改屏幕显示。功能与按键的对应关系如下:表1按键与功能对应表键名功能说明F1光标左移不清除原位置上的字符F2光标右移不清除原位置上的字符F3换行光标移到下一行第一列F4清除屏幕光标移到左上角F5光标左移清除原位置上的字符F6光标右移清除原位置上的字符F7上卷动一行卷出内容不保留F8下卷动一行卷出内容不保留4从键盘输入6个字符,能在屏幕上清楚地显示出来。字符与键值对应关系如下:表2字符与键值对应表键名F9F10F11F12F13F14字符ABCDEF实验报告一、前言示波器是电子电路实验和科学技术研究中不可缺少的调试仪器。而字符图形显示器被广泛地应用于工业生产、科学研究和日常生活中,其显示原理与示波器相似。因此,有必要将两者结合起来,研究示波器波形形成原理以及字符图形的显示规律。本实验报告介绍了在示波器上显示字符图形以及通过按键修改显示内容的具体实现方法,并给出了示波器上显示的实验结果。二、字符图形发生器基本原理一个字符可以用它的点阵来显示,一般一个ASCII码字符用5X7点阵来显示。为了美观,在字符显示时,字符间要留有一定的空间,一般在字符的左右间留一个空格,而上下行留有两个空格,这样一个字符占用6X9个点阵。使用模拟示波器能够显示字符图形点阵。模拟示波器有三个输入接口:X,Y,Z。分别用于行扫描、列扫描和亮度控制。X、Y扫描信号相互配合,扫描整个示波器显示区,扫描完一次即为一帧。Z信号控制相应的X、Y坐标处的像素点的亮暗,以显示字符或图形。字符点阵图形发生器的基本原理图如图1所示。图1字符图形发生器原理图三、方案论证与比较1.控制电路选择方案一:系统控制电路采用计数器模块实现,事先将需要显示的字符图形存储于字符数据存储器(E2PROM)中,控制电路计数输出二进制数码通过D/A转换形成示波器X、Y轴扫描电压,同时将该二进制数码作用于字符数据存储器的地址线上,取出相应字模作为示波器Z轴输入控制信号。电路框图如图2所示。图2方案一电路框图该方案电路搭建简单,X、Y、Z信号同步性高,但只能显示固定的字符图形,无法做到通过键盘控制实时修改示波器显示内容,对于本设计要求是不适用的。方案二:采用FPGA作为核心控制电路,通过读取键盘输入信号,实时改变字符数据存储器内的数据,从而修改示波器显示内容。电路框图如图3所示。图3方案二电路框图采用FPGA作为核心控制器具有高速、高精度、高稳定的特点,但由于FPGA不具有掉电保护功能,需要采用FLASH存储器在线从配置的方法,增大了电路的复杂性,同时对于本设计要求的键盘控制功能,采用VHDL语言实现难度较大。方案三:采用单片机作为系统的核心控制器,一方面根据键盘输入改变显示区存储器内的数据,改变示波器显示内容;另一方面控制外部扫描信号发生电路,使X、Y、Z信号同步。该方案利用单片机的程序存储器(ROM)存储初始化显示图形和固定字模,数据存储器(RAM)存储示波器显示区数据,有效利用存储空间。同时采用汇编代码编程,能准确控制指令执行时间,有助于实现X、Y、Z信号的同步。2.扫描信号发生电路选择设计要求实现9690分辨率的点阵显示,从扫描范围和扫描速度两方面考虑,对X、Y扫描信号发生电路的设计有以下三种方案。方案一:X扫描信号采用锯齿波,Y扫描信号采用阶梯波,均通过模拟器件搭建。该方案能够产生锯齿波,但是产生阶梯波难度很大。根据设计要求,一帧有90行,那么需要产生90级阶梯波,用+5V电压,那么每一级就需要50多mv,用RC电路来产生的时候,对RC精度要求很好,对干扰控制要求严,总体实现难度大。方案二:X、Y扫描信号均采用阶梯波,通过D/A转换器实现。该方案对于小分辨率(扫描速度较低)的点阵显示是可行的,并且在时序上的同步性很好。但是对于本设计要求来说,很难实现。本设计要求9690分辨率,即每帧近10000个像素点。为保证50Hz的显示刷新率,则显示每个像素点的时间间隔不能大于2us,即D/A转换器(X扫描信号)最多2us必须上升一个台阶。但是51单片机(12M晶振)的执行速度为(至少)1us一条指令,同时D/A转换器转换也需要时间(例如DAC0832的建立时间为1us),所以该方案在显示速度上很难达到要求。方案三:X扫描信号采用锯齿波(模拟器件),Y扫描信号采用阶梯波(D/A转换)Y扫描信号用D/A转换器实现,输出阶梯波没有用模拟器件做起来那么复杂,较为简单易行,且在速度要求上也较为宽裕。而通过模拟器件产生锯齿波作为X扫描信号也是可行的。那么关键就在于两者的时序同步问题,这一点可以通过利用单片机的汇编语言进行较为精确的时序控制(加上NOP操作指令等办法)。X、Y扫描信号时序如图4所示。图4X、Y扫描信号时序3.实施方案根据以上分析,采用方案如下:采用单片机作为核心控制器,通过汇编语言编程精确控制XYZ信号同步。X扫描信号采用模拟器件产生的锯齿波,Y扫描信号采用D/A转换器产生的阶梯波,Z信号通过移位寄存器输出。系统框图如图5所示。图5系统框图通过外部晶振产生时钟信号控制移位寄存器移位输出字模,保证显示的稳定。单片机通过P3.1口和P0口控制锯齿波和阶梯波的产生,单片机利用P3.0口读取移位寄存器的数据载入时钟(WR)作为同步信号控制输出字模与扫描信号的同步。三、硬件电路设计硬件电路一共由5部分组成,分别是:晶振分频电路、锯齿波发生器、阶梯波发生器、串行移位寄存电路和按键扫描电路。下面分别对每一部分进行详细介绍。1.晶振分频电路根据视觉残留效应,为使人眼分辨不出画面的抖动,则画面刷新率应达到50Hz,即每帧输出时间为20ms。由于设计要求每帧输出969010000点,因此每点输出时间为2us,即需要500KHz时钟信号来控制移位寄存器移位输出字模。在本系统中使用4MHz的石英晶体产生固定频率的方波信号,后面连接74LS93进行8分频,输出500KHz的CLK信号,之后再连接74LS92进行6分频,输出500/6KHz的WR信号。电路图如图6所示。图6 晶振分频电路分频产生的CLK信号作为移位寄存器的移位时钟,WR信号作为移位寄存器的载入数据时钟,使得移位寄存器每2us移出一位数据,产生一个像素点,而每移出6位数据(完成一个字符1行的输出)则从单片机载入新的数据。同时WR信号通过P3.0口反馈回单片机,作为单片机编程时的同步信号。2.锯齿波发生器(X扫描信号)锯齿波发生器由两部分组成:电平转换电路和积分电路,电路图如图7所示。运放U1A构成电平转换电路,把05V的TTL电平转换为12V电压。运算放大器LF353的反相输入端接P3.1口,正相输入端接分压得到的+2.5V电压。这样当P3.1口输出为0时,转换成+12V;输出为1时,转换成-12V。运放U2A构成锯齿波发生电路,利用运算放大器对电容进行充放电。同时,利用二极管的导通特性,实现了电容充电和放电时不同的速度,从而产生锯齿波。锯齿波输出接模拟示波器X端,用于行扫描。图7锯齿波发生器电路图根据设计要求,锯齿波上升扫描时间应大于2us96200us,回扫下降时间可取为10us。再根据电容积分公式 VO=-1R*C*t0t1 VI dt+V0 ,可估算出积分电容为0.01u时,上升电阻约为27K,下降电阻约为1K。锯齿波仿真结果如图8所示。为了实现每一行扫描信号起始端的同步,将P3.1口输出经过一个由WR信号作为时钟信号的D触发器后再接入锯齿波发生电路。此时要注意在编程时根据P3.0口读取的WR信号进行相应的延时。图8锯齿波仿真结果3.阶梯波发生器(Y扫描信号)通过单片机软件编程,使用DAC0832产生阶梯波,作为示波器Y轴扫描信号。DAC0832的片选信号和写信号由单片机地址译码产生,数据输入口D0D7接单片机的P0口。电路图如图9所示。图9阶梯波发生器电路图4.移位寄存器电路(Z信号)移位寄存器电路由74LS166构成,并行数据输入口接单片机的P1口,移位时钟接分频电路产生的CLK信号,载入数据时钟接分频电路产生的WR信号。电路图如图10所示,它将单片机输出的8位数据(仅高6位有效)移位输出,每2us输出一位,每12us从P1口载入一次数据。9011三极管电路起到电平转换作用,它将移位寄存器输出的TTL电平转换为0V、12V电压作为示波器Z轴信号。当Q7输出为1时,Z轴信号为0V,示波器屏幕显示亮点;当Q7输出为0时,Z轴信号为12V,示波器屏幕显示暗点。图10移位寄存器电路5.按键扫描电路由于本设计要求按键数目较多,可采用扫描键盘,利用可编程器件8279与单片机相连,能够方便地读取按键状态。电路图如图11所示,其中按键中断请求IRQK连接单片机INT0中断口(P3.2)。图11按键扫描电路图四、软件设计软件设计思路:在RAM存储器中开辟96/690=1440 Bytes大小的空间作为显示存储区,软件编程配合行列扫描信号将显示存储区中的字模顺序地输出到移位寄存器输出显示。输出完一次显示存储区内容(即完成一帧扫描)后,将输出指针移回显示存储区开头,不断重复输出。在每帧扫描完毕后读取按键状态,并根据按键状态修改显示存储区中的内容即可改变示波器显示的内容。1.主程序主程序流程图如下:开始系统初始化N阶梯波上升一级帧结束?启动锯齿波上升输出显示区字符码进行移位显示 N行结束?YY锯齿波回扫锯齿波、阶梯波回扫按键处理子程序图12主程序流程图在主程序中,首先完成了系统的初始化,包括:寄存器初始值设置、键盘控制器8279初始化、DAC初始化、锯齿波初始化和显示存储区初始化(存入“字符图形”)。然后,主程序不断循环读取并输出显示存储区字符码。为保证显示稳定,应保证每2个字符码输出之间的时间间隔约为12us,并且在每行扫描开始处通过同步信号WR进行行同步。每完成一帧输出后,主程序调用一次按键处理子程序,然后开始下一帧输出。2.按键处理子程序按键处理子程序流程图如下:图13按键处理子程序流程图在按键处理子程序中,查询按键状态,若有按键按下,则读取键值并转入相应的字符键子程序或功能键子程序;否则直接返回主程序。3.字符键子程序字符键子程序流程图如下:图14字符键子程序流程图字符键功能的实质是在当前光标指向的显示存储区地址内存入相应的字符码(9字节)。需要注意的是对光标移位时特殊情况的处理(行末换行、页末上卷一行)。修改示波器屏幕显示内容是通过修改显示存储区相应地址处的字符码数据来实现的,无论是字符键还是功能键,其原理都是如此。各个功能键子程序的处理流程可能比字符键要复杂,但大致原理相同,在此不再赘述。五、实验结果和总结1.实验结果能够在示波器上清晰稳定地显示“字符图形”四个汉字,显示结果如下所示:图15“字符图形”显示结果各字符键和功能键的功能均能很好实现。2.同步策略实验刚开始时,没有采用特别的行同步手段,结果示波器显示内容横向抖动十分厉害。后来通过采用以下同步策略,最终使显示结果稳定了下来。编程时通过软件调试,确保每两次单片机将字模输出给移位寄存器的时间间隔大致为12us。P3.1口输出锯齿波控制信号经过一个由WR信号触发的触发器后再连入锯齿波发生电路。使用P3.0口读入WR信号作为同步信号,在每行行扫描开始前,在程序中通过连续使用“JB P3.0,$”和“JNB P3.0,$”两条指令来捕捉WR信号的上升沿,从而实现行同步。3.心得体会一个设计的实现可能有多种方案,在动手操作之前应该广泛查阅文献,并对各种方案进行反复论证,比较其优劣,最终选择出能够满足设计要求、可行性高且易于实现的方案。不能主观臆断,想当然的就开始搭建电路。例如本次实验中,我一开始就想着要使用两片DAC0832分别进行行列扫描,结果发现DAC0832在建立时间上难以满足设计要求,使得整个方案必须从头来过,耽误了不少时间。本实验的整个系统较为复杂,任何一点细小的错误都可能导致

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论