电子广告牌设计毕业设计.doc_第1页
电子广告牌设计毕业设计.doc_第2页
电子广告牌设计毕业设计.doc_第3页
电子广告牌设计毕业设计.doc_第4页
电子广告牌设计毕业设计.doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

太原工业学院毕业设计(论文)电子广告牌设计毕业设计目 录1 绪论1 1.1 LED点阵显示屏概述11.2研究内容22 总体结构和硬件电路设计42.1 总体框图及工作原理32.2 硬件电路设计52.2.1单片机选型52.2.2 单片机最小系统82.2.3LED点阵屏驱动设计102.2.4 串口通信电路设计133 单片机软件设计173.1 软件设计环境173.2 点阵屏显示程序173.2.1 驱动芯片的控制程序173.2.2 点阵屏显示的移动算法183.2.3 点阵屏动态扫描显示203.3 串口通信程序设计214 上位机软件设计254.1 上位机开发环境介绍254.2 汉字点阵的编码原理及提取方法254.2.1 汉字点阵的编码原理254.2.2 汉字点阵的提取方法264.3 上位机界面的设计274.4 VB程序编写284.4.1 字模转换程序284.4.2 串口传输程序285 设计仿真315.1 仿真软件的简介315.2 仿真软件的使用325.3 仿真结果336 总结35参考文献36致谢37附录3847太原工业学院毕业设计(论文)绪论1.1 LED点阵显示屏概述LED电子显示屏(Light Emitting Diode Panel)是由几百-几十万个半导体发光二极管构成的像素点,按矩阵均匀排列组成。利用不同的半导体材料可以制造不同色彩的LED像素点。目前应用最广的是红色、绿色、黄色。而蓝色和纯绿色LED的开发已经达到了实用阶段。 LED显示屏是一种通过控制半导体发光二极管的亮度的方式,来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。 LED显示屏因为其像素单元是主动发光的,具有亮度高,视角广、工作电压低、功耗小、寿命长、耐冲击和性能稳定等优点。因而被广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。LED显示屏的发展前景极为广阔,目前正朝着更高亮度、更高气候耐受性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。LED显示屏按颜色分为:单基色显示屏:单一颜色(红色或绿色)。 双基色显示屏:红和绿双基色,256级灰度、可以显示65536种颜色。 全彩色显示屏:红、绿、蓝三基色,256级灰度的全彩色显示屏可以显示一千六百多万种颜色。 LED显示屏按显示器件分为:LED数码显示屏:显示器件为7段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。 LED点阵图文显示屏:显示器件是由许多均匀排列的发光二极管组成的点阵显示模块,适于播放文字、图像信息。LED显示屏按使用场合分为:室内显示屏:发光点较小,一般3mm-8mm,显示面积一般零点几至十几平方米。 室外显示屏:面积一般几十平方米至几百平方米,亮度高,可在阳光下工作,具有防风、防雨、防水功能。 LED显示屏按发光点直径分类室内屏:3mm、3.75mm、5mm、 室外屏:10mm、12mm、16mm、19mm、21mm、26mm 室外屏发光的基本单元为发光筒,发光筒的原理是将一组红、绿、蓝发光二极管封在一个塑料筒内共同发光增强亮度。我国的LED显示屏市场从上世纪90年代后期开始一直保持着增长的势头,1998年-2000年间,年增长率基本在30%以上。2000年-2006年,每年的增长幅度在15%左右,2007年是近年增长最快的一年,增幅在40%以上。2007年,全国LED显示屏的市场规模达到了72亿元。近几年来都一直保持着一个迅猛的发展势头。随着LED器件材料性能的不断提高,LED显示屏的应用领域和应用深度都必将猛扩大和加深,其中全彩色显示屏、半导体照明交通信号、汽车等特种领域有巨大的市场,蕴含巨大的商机。图1.1 LED电子显示屏应用示例1.2 研究内容主要研究单片机控制系统的设计、LED显示屏驱动电路、单片机控制程序、VB上位机程序、串口通信部分程序、LED点阵屏的动态扫描技术。LED显示屏与PC的数据传输方式有串行和并行两种,而使用串行传输可有效减少硬件设计的复杂程度,同时传输率也能得到保证。数码管动态扫描技术早已得到广泛应用,以外的数码管显示还是停留在静态显示,即每一位数字显示都需要对应9个引脚控制,这无疑对硬件设计造成压力。如一个8*8的点阵屏也是用静态显示技术,那么最少需要65根控制引脚。采用动态显示技术后,能将引脚数减少到16根。远程控制即可以通过数据传输,控制端使用通信技术或者遥控技术,对目标器件进行控制。实现的功能:当在VB界面输入想要显示的汉字是,VB程序通过处理后讲信息发送给单片机,最后单片机将汉字显示在点阵屏幕上。并且当显示汉字多于两个时,进行左移的动态显示。2 总体设计与分析2.1 设计的总体框图LED点阵显示屏行驱动下位机上位机MAX232列驱动图2.1 系统组成框图上位机VB软件将要显示的汉字进行转化、提取,通过串口通信传递给单片机,单片机通过驱动电路将汉字显示出来。汉字点阵数据采用现成的字库芯片,需要通过汉字的机内码作地址来取出相应汉字的点阵字模数据。因此上位机软件的任务就是:将待显示的字符转换成对应的标准机内码,并把操作者对下位机显示方式、速度等进行设置的常数,通过RS232总线按一定的通信协议一起发送到下位机。MAX232的作用就是实现电平的转换,使得单片机和上位机之间能够正常通信。下位机为单片机,单片机将接收到的机内码通过驱动点亮点阵屏。由于采用的是88的点阵屏,所以要采用驱动的方式使得点阵屏能够正常的工作,显示汉字。两个汉字的点阵屏为1632的分辨率,行驱动是将16行转化成4行与单片机连接。列驱动将32列通过所选的芯片级联起来,与单片机连接起来。2.2硬件电路的设计2.2.1 单片机的选型51单片机的CPU实现了冯诺依曼所设想的计算机中的运算器和控制器的功能,是单片机最核心的部件。CPU包含:算术逻辑单元(ALU)、定时控制器、专用寄存器组。单片机的存储器特点之一就是将程序存储器和数据存储器分开,并有各自的寻址方式和寻址单元,这种结构叫做哈佛结构。与通用微机的存储结构不同,一般微机只有一个地址空间,可以随意安排ROM和RAM,访问数据段和代码段时采用同样的指令,这种传统的是存储器结构称之为普林顿斯结构。存储器主要包括:程序存储器ROM,单片机之所有强大的处理功能,就是需要软件程序的支持,而程序员将设计好程序经过编译后写入ROM,当单片机开始运行时,CPU就对ROM里面的指令进行调用,从而实现预期中的功能。片内RAM,虽然51单片机内设的RAM字节并不是很多,但却起着十分重要的作用。RAM又可以分为3个区域:工作寄存器区、位寻址区和便笺区(用户区)。51系列单片机拥有4个并行IO端口,分别为P0、P1、P2和P3,每个端口都是双向功能,即能够从端口输入数据和输出数据。51单片机还有定时器/计数器结构,中断系统。这两个功能在本系统中极为重要,定时器/计数器通过程序控制辅助数码管的倒计时显示;中断系统的外部中断接收红外对管的信号,响应中断处理程序。51单片机还具有一个全双工的可编程串行口,可以实现8位数据的发送和接受。它有两个在物理结构上独立的发送接受寄存器,同时具备发送接收功能,但是在本设计中不是主要说明对象,所以不作详细介绍。设计中使用51系列单片机为核心控制器,51型单片机是指由美国Intel公司生产的一系列单片机的总称,这一系列单片机包括了很多种类,如8031、8051、8751、8951、8032、8052和8952等,其中8051是最早,最典型的产品。目前所采用的8051并不限于Inter公司所生产的芯片,各大芯片生产厂商所推出的兼容芯片为主,如Amtel公司的89C51,STC公司的89S51等。2.2.1.1 STC89S52单片机结构设计使用的是STC89S52RC单片机,原因是此款单片机具有众多优点。l 加密性强,难解密l 超强抗干扰l 超低功耗 掉电模式:0.1Al 空闲模式:2mAl 正常工作模式:4mA7mAl 提供STC-ISP在线编辑系统,无需编辑器,无需仿真器,可省去购买编辑器、仿真器的昂贵资金,适合大众使用l 内置看门狗STC89S52RC的基本结构与8051相同,但是比传统的8051单片机拥有更多的内部Flash,最高可达64KB。片内SRAM容量同样是非常吸引的数字,最高可拥有1280Byte的SRAM。而且还内置EEPROM存储器、AD转换等功能。另外它还可以用串口直接仿真程序,不需要另外加用仿真器或者下载线。2.2.1.2 STC89S52单片机管脚功能 图2.2 89S52芯片管脚l VCC:接电源正极,一般输入电压为5V。l GND:接电源地端。l P0口:P0口为一个8位漏级开路双向I/O口,每个脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。l P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。l P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。l P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计数器0外部输入)P3.5 T1(计数器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)l RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。l ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。l /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。l /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。l XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。l XTAL2:来自反向振荡器的输出。2.2.2 单片机最小系统2.2.2.1单片机电源电路电源电路不单单是为单片机运行提供工作电压,还需要对单片机的外围电路提供工作电源。这里使用USB接口供电,这也是大多数单片机的供电方式。具有USB接口的设备一般工作电压都为5V。计算机上的USB接口(图3-2)可以输出稳定的+5V电压,最大额定电流为500mA,足以满足本设计的要求。在设计的时候,需要注意电路不能出现短路,以免损坏电脑的USB接口。图2.3 USB接口2.2.2.2 单片机振荡电路设计单片机的运行需要一个时钟频率,类似我们的计算机的CPU主频的高低,现在计算机的CPU一般用GHz来左单位。而我们的51单片机常用到的时钟频率有12MHz,11.0592MHz,这些时钟频率都是依靠外部晶振产生的。晶振连接到单片机的XTAL1、XTAL2引脚处。电路上的晶振旁有两个无极性电容,容量为33P。这两个电容称晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发,它会影响到晶振的谐振频率和输出幅度。 晶振的负载电容=(Cd*Cg)/(Cd+Cg)+Cic+C (3.1) 式中Cd,Cg为分别接在晶振的两个脚上和对地的电容,Cic(集成电路内部电容)+C(PCB上电容)经验值为3至5pf。设计需要考虑到串行通信的使用,为了减少误码率提高通信质量,因此选用11.059MHz晶振。图2.4 单片机振荡电路2.2.2.3 单片机复位电路设计复位是单片机的初始化操作。单片机系统在上电启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定的状态,并从这个状态开始,因而,复位是一个很重要的操作方式,但是单片机本身不能自动进行复位的,必须配合相应的外部复位电路才能实现。本设计采用的是上电加按键手动复位,如图所示。当复位按键按下后,复位端通过51欧姆的小店组与+5V电源接通,电容迅速放电,使得RST引脚为高电平;当复位键弹起后,+5V电源通过2K电阻对22F电容重新充电,RST引脚端出现复位正脉冲。其持续时间取决于RC电路的时间常数。图2.5 单片机复位电路2.2.3 LED点阵屏驱动设计2.2.3.1 1632LED点阵的设计显示一个简体汉字,至少需要1616点阵来描述。本设计采用4个88点阵的LED模块拼接成1616点阵的LED阵列。为了能更好的显示功能,模块多点是比较好的,但考虑到成本的问问题,所以本设计用8个88的LED模块拼接成3216的矩阵。即可以同时显示两个汉字。图2.6 16X16点阵设计图2.2.3.2 LED点阵屏行驱动设计设计的要求屏幕需要有3216的分辨率,若使用8*8的点阵模块,则需要使用4块。每一块点阵屏有16根引脚,4个点阵模块共有64根引脚。采用动态扫描显示技术,也需要使用48个控制端。单片机仅有的32个IO是不能满足设计的要求,而且单片机的IO负载只有20mA,这个负载能力只可以点亮一个LED发光二极管。因此,需要借助一些驱动芯片完成设计。1632LED的点阵屏需要2行16个引脚,为了节省引脚可以采用一个4-16显译码器 74HC154是一款高速CMOS器件,74HC154引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC154译码器可接受4位高有效二进制地址输入,并提供16个互斥的低有效输出。74HC154的两个输入使能门电路可用于译码器选通,以消除输出端上的通常译码“假信号”,也可用于译码器扩展。该使能门电路包含两个“逻辑与”输入,必须置为低以便使能输出端。任选一个使能输入端作为数据输入,74HC154可充当一个1-16的多路分配器。当其余的使能输入端置低时,地址输出将会跟随应用的状态。图2.7 74HC154引脚图将74HC154的A0-A3接到单片机的P1.0-P1.3口,Y0-Y15分别接点阵的每一行,这样就能控制点阵屏的每一行了。图2.8 点阵屏行驱动2.2.3.3 LED点阵屏列驱动设计驱动芯片作用是扩展单片机的IO口,同时为点阵屏提供工作电流。设计选用74HC595串入并出芯片。将点阵屏划分为16行、32列。下面对这款74系列的芯片作介绍:图2.9 74HC595引脚图上图为74HC595 是一款8 位的串入并出、串/ 并出移位寄存器和8位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入(SCLR和SCK) ,都是上升沿有效。当SCLK从低到高电平跳变时,串行输入数据(SDA) 移入寄存器;当SLCK从低到高电平跳变时,寄存器的数据置入锁存器。清除端(CLR) 的低电平只对寄存器复位(QH 为低电平) ,而对锁存器无影响。当输出允许控制(EN) 为高电平时,并行输出(Q0Q7) 为高阻态,而串行输出(QH) 不受影响。74HC595 最多需要5 根控制线, 即SER、RCK、SCK、SCLR 和G。其中第13引脚(G)连接到电源地,第10引脚(SCLR)连接电源正极。把其余三根线和单片机的I/ O 相接,第12引脚(RCK)连接到单片机的P35,第11引脚(SCK)连接到单片机的P36第12引脚(RCK)连接到单片机的P35,第14引脚(SER)连接到单片机的P37,即可实现控制。74HC595与点阵屏的列引脚连接前还需串联20欧姆的限流电阻,其中用是保护点阵屏中的LED发光二极管,延长点阵屏的显示寿命。图2.10 单片机列驱动上图为单片机列驱动部分的原理图。四个74LS595级联,四个部分的Q0-Q7总共32条引线分别为点阵屏的列,这样就可以通过单片机控制点阵屏的每一列了。2.2.4串口通信电路设计设计要求计算机与单片机能实现互相通信,而串口通信是单片机设计开发中最常用的通信接口。单片机内置Uart串口通信控制器,因此可以通过串口方便地与计算机进行数据的交换。2.2.4.1串口通信电路芯片介绍MAX232芯片是一款由美信(MAXIM)公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。常用于单片机的串口通信的电平转换。内部结构基本可分三个部分:1) 电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。2) 数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。3) 电源输入。15脚GND、16脚VCC(+5v)。本设计就是利用MAXIM公司的单电源芯片MAX232来完成单片机TTL到RS-232C电平的转换。MAX232是单电源双RS-232C发送/接收芯片。它符合所有的RS-232C技术规范,只要单一 +5V电源供电;片载电荷泵,具有升压、电压极性反转能力,能够产生 +10V 和 -10V电压V+、V- ;低功耗,典型供电电流5mA;内部集成2个RS-232C驱动器,内部集成2个RS-232C接收器。采用单一 +5V电源供电,外接只需4个电容,便可以构成标准的RS-232C通信接口,硬件接口简单,所以被广泛运用。MAX232的引脚排列及功能描述见表2.1(摘录自MAX232官方数据手册)表2.1 MAX232引脚功能脚号引脚名称引脚功能描述脚号引脚名称引脚功能描述1C1+泵电容1正极9R2OUT第二组TTL/CMOS电平输出2V+正电源滤波10T2IN第二组TTL/CMOS电平输入3C1-泵电容1负极11T1IN第一组TTL/CMOS电平输入4C2+泵电容2正极12R1OUT第一组TTL/CMOS电平输出5C2-泵电容2负极13R1IN第一组RS-232电平输入6V-负电源滤波14T1OUT第一组RS-232电平输出7T2OUT第二组RS-232电平输出15GND地8R2IN第二组RS-232电平输入16VCC电源+5V 图2.11 MAX232封装2.2.4.2 串口硬件电路设计MAX232的基本电路需要的4个电容为升压作用,将单片机输入的点评信号转换为12V的传输电平,以达到RS-232通信标准。将无极性104电容连接到MAX232的第1、3引脚,第4、5引脚,第6引脚经过104后连接电源地,第2引脚经过104后连接电源正极。引脚9与单片机的Rx(第10引脚)相连接,引脚10与单片机的Tx(第11引脚)相连接。经过电平转换后的信号,MAX232上的第7引脚连接到串行通信接口的第2针,第8引脚连接到串行通信接口的第3针。还需要将串行通信接口的第5引脚与MAX232电源共地连接。图2.12 串口电路设计3 单片机软件设计3.1 软件设计环境介绍本系统的处理器是兼容8051指令集的高速单片机STC12C5412AD。为此,首选Keil Vision作为其开发工具。Keil Vision是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。其功能强大,生成的代码紧凑,是目前世界上使用最广的51系列兼容单片机开发工具。本设计中,单片机软件是采用C51语言编写,C51语言是ANSI C的扩展集,其语法结构、关键字等与ANSI C绝大部分是相同的。与汇编相比,C51语言在功能上、结构性、可读性、可移植性、可维护性上有明显的优势3.2 点阵屏显示程序3.2.1 驱动芯片的控制程序8位数据从SER 口送入74HC595 ,在每个SCK的上升沿,SER 口上的数据移入寄存器。在SCK经过第9个上升沿, 数据开始从QH 移出。如果把第一个74HC595 的QH 和第二个74HC595 SER相接,数据即移入第二个74HC595 中,按照如此规律,数据会一个连接一个传下去。当数据全部按照移位送完后,给RCK 一个上升沿,寄存器中的数据即置入锁存器。此时如果G 为低电平,8位数据从Q0Q7 输出,把Q0Q7 与LED点阵的列项连接,当某行为低电平时,该行的LED等会按照输出电平点亮。程序流程图(图4.1)如下:开始YSCK置为低电平N输出数据到8位?数据移位从SER输入结束SCK置为高电平图4.1 74HC595控制程序流程图程序设计使用for循环8次,将1字节数据按照从低位到高位输出。开始将同步移位时钟置为低电平,向数据位输出1位数据,接着同步移位时钟置为高电平,对需要发送的字节作右移位处理。经过8次移位过程,完成1字节的发送。3.2.2 点阵屏显示的移动算法本设计的LED点阵屏幕,可以对信息实现动态显示,字符从右侧往左侧移动。移动算法分析: 显示的定义为uchar display32,这里表示了要显示一个完整的字符,需要32个字符型数据。为什么呢?因为显示一个完整的字符需要四块点阵,每个点阵有8行,每行八个点。就是说,一行的数据就占一个char,四块当然就是32个char型。这里变量i代表是第几个汉字,变量j带便的是该汉字的第几个char数据。下面是四块点阵的示意图:第一个char第三个char。第二个char。第十七个char。第十八个char。第三十二个char移动前:1111000011110000。11110000。11110000。11110000。11110000。1111000011110000。11110000移动后:11XXX1110000111100001。11100001。1110000x。1XXXX111100001。11100001。111000011110000x。1110000x图4.2 点阵屏移动分析示意图奇数次移动显示程序:for(j=0;j31;j+=2)/行显示,一共16行,mov为移动次数,smov为剩于移动次数SendByte(displayi+1j+1 smov);SendByte(displayi+1jsmov);SendByte(displayij+1 smov);SendByte(displayijsmov);偶数次移动显示程序:for(j=0;j31;j+=2)/行显示,一共16行SendByte(displayi+2jsmov);SendByte(displayi+1j+1smov);SendByte(displayi+1jsmov);SendByte(displayij+1smov);无论奇数次或者是偶数次移动,每次都向74HC595写入4字节数据,之后再开个该行的显示。经过16次行循环显示,则完成屏幕的一次显示。3.2.3 点阵屏动态扫描显示点阵屏的显示的方式的逐行扫描,从第一行开始显示,之后是第二行,最后是第十六行。这样的显示方式,有些类似电视机的显像管逐行扫描技术,它是指显示屏显示图像进行扫描时,从屏幕左上角的第一行开始逐行进行,整个图像扫描一次完成。因此图像显示画面闪烁小,显示效果好。按照这个原理,在某一时刻只能有一行LED二极管被点亮,为何我们看见的整张屏幕在显示信息呢?由于单片机通过对74系列的驱动芯片高速控制,点阵屏每行都处于高速扫描。因此,我们看到的是不会闪烁的显示画面。由于人眼的暂留效应以及LED二极管余晖效应,当屏幕的刷新频率高于50Hz时,此时人眼就会“误认”为屏幕是连续显示的。3.3 串口通信程序设计单片机使用串口通信,让上位机软件传送显示字模数据,并存储在单片机片内SRAM作为屏幕显示算法的调用。首先对串行通信作简单的介绍,串行通信可以分为同步通信和异步通信两类。同步通信是按照软件识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式。 l 同步通信 同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧有所不同,通常含有若干个数据字符。它们均由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。 l 异步通信 异步通信中,在异步通行中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。 接收端检测到传输线上发送过来的低电平逻辑0(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。以工作方式划分,又可以分为方式0、方式1、方式2及方式3,本设计主要使串行通信口工作在方式1。方式1为8位数据异步通信方式,一帧数据包含10位,即8未数据位、1个起始位和一个停止位。串口通信的工作方式通过SCON寄存器的第6、7位设置:位数76543210SCONSM0SM1SM2RENTB8RB8TIRI表4.1 SCON格式串口通信还需要借助定时器产生传输波特率,程序让定时器1工作在方式2,产生19200bps的波特率。定时的工作方式则在TMOD寄存器设置:位数76543210TMODGATEC/TM1M0GATEC/TM1M0表4.2 TMOD格式工作方式M1 M0功能说明方式00 013位定时器/计数器方式10 116位定时器/计数器方式21 0自动重装8位定时器/计数器方式31 1T0分为2个8位计数器,关闭T1表4.3 TMOD工作方式功能表实现串口通信的程序流程如下:设置定时器1工作方式开始设置定时器寄存器值打开定时器结束设置串口工作方式设置波特率加倍开发全局中断打开串口中断清除串口接收中断标志位图4.3 串口通信程序流程图串口部分程序void main() unsigned char i,j; unsigned int m=0; TMOD=0x20;/设置定时器 T1 方式 2 PCON=0x00;/使 SMOD 为 0 TL1=0x0Fd; TH1=0x0Fd;/波特率为 9600b/s EA=1;/开全局中断 ET1=0;/关 T1 中断 ES=1;/开串行中断 TR1=1;/开T1定时器 SCON=0x50;/串行方式 1 ,允许接收 flage=0;/标志位置0,发送片内字 gate1=1;/关闭显示,防止花屏 4 上位机软件设计4.1 上位机开发环境介绍VB是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美。设计使用VB编写上位机软件,主要实现功能有:1) 将输入汉字经过本地字库转换为字模数据。2) 通过串口通信发送到目标板上,刷新显示信息。4.2 汉字点阵的编码原理及提取方法4.2.1 汉字点阵的编码原理以UCDOS 中文宋体字库为例,每一个字由16 行16 列的点阵组成,即国标汉字库中的每一个字均由256 个点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256 像素范围内的任何图形。编码的时候,黑的地方为1 白的地方为0 ,依次从低到高,八位一组,从上到下的顺序,进行编码。由图5-1可见,“大”字的第一组和第二组编码分别为04H 和00H。 图5.1 汉字点阵字模示意图依照这个方法,继续进行下面的扫描,一共扫描32 个8 位,可以得出汉字“大”的扫描代码为: 04H ,00H ,04H ,02H , 04H , 02H , 04H , 04H , 04H , 08H , 04H , 30H , 05H,0C0H,0FEH,00H,05H,80H,04H,60H ,04H ,10H ,04H ,08H ,04H ,04H ,0CH ,06H ,04H ,04H ,00H ,00H由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码,只要输出扫描代码就可以在屏幕上显示出字体或图像。4.2.2 汉字点阵的提取方法知道汉字点阵的编码原理后,就可以通过计算机程序对汉字进行编码处理了,下面以16 16 点阵字库为例进行介绍。16 16 点阵汉字字库可以在中文操作软件(UCDOS) 中找到现成的文件。一般汉字字库均符合国家标准GB2312 - 80 的规定。在汉字系统中使用机内码形式存储汉字,国标码最高位置1 作为汉字的机内码。而国标码由两个字节组成,其中高字节表示区,低字节表示位。国标码和区位码都有94 个区,每个区又都有94 个位。19 区为图形区,1015 区未规定,1687 区存放一、二级汉字库(具体编码可查看WINDOWS根目录下的GB K. TXT 文件) 。国标码和区位码的关系是:国标码高字节= 区码+ 20H ;国标码低字节= 位码+ 20H。所以,机内码与国标码和区位码的关系是:机内码高字节= 国标码高字节+ 80H = 区码+ A0H ;机内码低字节= 国标码低字节+ 80H = 位码+ A0H。字模代码按照区位码的顺序在字库中以二进制格式存储,每个汉字占用32 个字节。因此只要找到汉字代码的起始位置,就可正确提取汉字点阵信息。对于不同的字库,汉字代码起始位置的计算方法可能存在差异,例如HZK16 若以ADDRESS 表示首地址,Q 表示区码,W 表示位码,经分析和实践得出HZK16 中汉字首址计算公式为:ADDRESS = 32 (Q - 1) 94 + (W - 1) ( 5.1)在VB 中,获取汉字区位码必须用到ASC() 函数和HEX( ) 函数,函数ASC( ) 返回一个IN TEGER 数据,代表字符串中首字母的字符代码。HEX() 函数返回代表十六进制数值的字符串。当汉字作为ASC() 函数的参数时,返回的是汉字机内码,经HEX() 函数转换即可得到汉字机内码的十六进制数,再通过上述的关系就可以得到汉字的首地址,有了汉字的首地址再从字库中提取汉字代码就容易了。4.3 上位机界面的设计软件需要的一个汉字显示输入文本窗体,和一个字模转换数据显示窗体。需要几个按钮,分别控制字模转换、发送。同时,还提供一个信息提示窗口,用于观察软件运行的状况。另外可以对串口的选择,要实现串口通信,还需要增加Microsoft Comm Control 6.0的控件。界面设计效果图如下:.2图5.2界面设计效果图VB的MSComm通信控件具有丰富的与串口通信密切相关的属性及事件,提供了一系列标准通信命令的接口,可以用它创建全双工的、事件驱动的、高效实用的通信程序。在本设计的实际运用中,对MSComm控件的属性设置如下:ComPort :12DTREnable :trueEOFEnable :falseHandshaking :0-comNoneInBufferSize :1024InputLen :0InputMode :1NullDiscard :falseOutBufferSize:512ParityReplace:0RThreshold :1RTSEnable :falseSettings :9600,n,8,1SThreshold :14.4 VB程序编写4.4.1 字模转换程序将一个汉字转换成32Byte的字模数据,一般经过如下过程:1) 用asc函数取得汉字的内码,并转成16进制AA。2) 取出内码高八位字节,转换为国标码bb。3) 打开汉字库数据文件,根据上面保存的国标码bb查找到对应的位置。4) 汉字的起始位置代码,读取32个字节。由于单片机中的显示缓存定义为每次显示15个汉字,其大小为15*32Byte。因此,每次转换字模需要为15*32个。如果输入超过15个汉字,则提示不能转换;如果输入少于15个汉字,则使用00数值填充,以达到每次转换后为15*32个字节。4.4.2 串口传输程序VB程序中,通过MSCOMM控件,可对PC机串行口进行方便、灵活的操作。为使程序模块化,结构化。在程序中把对COM口操作的指令封装为一个公共子过程,极大地方便了其它过程的调用。单字节发送子程序:Public Sub Sendbit(ByVal a As Integer) ;a为要发送的单字节数据If a 255 Thena = 255End IfIf a 0 Thena = 0End IfIf MSComm1.PortOpen = False ThenMSComm1.PortOpen = TrueEnd IfDim mm(0 To 0) As Bytemm(0) = aMSComm1.OutBufferCount = 0MSComm1.InBufferCount = 0If MSComm1.PortOpen = True ThenMSComm1.Output = mm()ElseMSComm1.PortOpen = TrueMSComm1.Output = mm()End IfEnd Subn字节接收子程序:Private Sub MSComm1_OnComm()Dim Buffer As VariantDim R(0 To n) As Integer ;n为接收字节数j = 0Buffer = MSComm1.InputFor il = LBound(Buffer) To UBound(Buffer)R(j) = Buffer(il)j = j + 1Next ilj = 0Dim R0 As IntegerDim R1 As IntegerDim R2 As IntegerDim R3 As IntegerDim Rn As IntegerR0 = R(0) ;首字节R1 = R(1) R2 = R(2) R3 = R(3)Rn = R(n) ;末字节End Sub5 设计仿真5.1 仿真软件的简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。PROTEUS 是单片机课堂教学的先进助手。PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。 课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。 随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计

温馨提示

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

最新文档

评论

0/150

提交评论