PC机与单片机串行通信实现点阵字符显示的设计.docx
《PC机与单片机串行通信实现点阵字符显示的设计.docx》由会员分享,可在线阅读,更多相关《PC机与单片机串行通信实现点阵字符显示的设计.docx(23页珍藏版)》请在冰豆网上搜索。
PC机与单片机串行通信实现点阵字符显示的设计
PC机与单片机串行通信-实现点阵字符显示的设计
毕业论文(设计)
2014年5月10日
论文独创性声明
本人所呈交的毕业论文(设计)是我个人在指导教师指导下进行的研究工作及取得的成果。
除特别加以标注的地方外,论文中不包含其他人的研究成果。
本论文如有剽窃他人研究成果及相关资料若有不实之处,由本人承担一切相关责任。
本人的毕业论文(设计)中所有研究成果的知识产权属三亚学院所有。
本人保证:
发表或使用与本论文相关的成果时署名单位仍然为三亚学院,无论何时何地,未经学院许可,决不转移或扩散与之相关的任何技术或成果。
学院有权保留本人所提交论文的原件或复印件,允许论文被查阅或借阅;学院可以公布本论文的全部或部分内容,可以采用影印、缩印或其他手段复制保存本论文。
加密学位论文解密之前后,以上声明同样适用。
论文作者签名:
年月日
PC机与单片机串行通信
实现点阵字符显示的设计
摘要
随着我国经济的快速发展,LED点阵被越来越广泛的应用到我们的日常生活中。
LED就是lightemittingdiode,发光二极管的英文缩写,简称LED。
LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。
LED点阵显示屏制作简单,安装方便,不仅可以用于室内环境还可以用于室外环境,环境适应能力强,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。
本系统设计是由硬件电路和软件电路综合完成,第一部分采用了AT89C51单片机控制点阵动态刷新显示,第二部分采用了计算机上的串口调试助手与单片机通信,通过虚拟串口,可以实现单片机与串口调试助手的连接,从而完成单片机与串口调试助手的UART通信,实现控制点阵字符显示的目的。
为了提高系统的可靠性,采用Proteus仿真软件对硬件模块进行仿真。
此次设计基本完成了设计要求,能够在PC端的串口助手的控制下输出字母、数字、以及一些简单的符号。
本系统主要是基于Proteus以及Keil平台综合完成,实现软硬结合,缩短了系统的开发时间,减少了系统的误差。
【关键词】单片机,LED点阵,串口通信。
SerialCommunicationbetweenPCandMCU
Realizedcharacterdisplay
Abstract
Withtherapiddevelopmentofoureconomy,theLEDlatticeismoreandmorewidelyusedinourdailylife.LEDislightemittingdiode,ledEnglishabbreviations,referredtoasLED.LEDdotmatrixscreenthroughtheLED(lightemittingdiode),thelamplighttodisplaytext,images,animation,video,eachcomponenthasthemoduledisplaydevice,usuallyconsistingofadisplaymodule,controlsystemandpowersystem.LEDdotmatrixdisplayscreenhastheadvantagesofsimplemanufacture,convenientinstallation,notonlycanbeusedforindoorenvironmentcanalsobeusedinoutdoorenvironment,strongadaptivecapacitytoenvironment,iswidelyusedinvariouspublicplaces,suchasautostopdevice,displayadsandbillboards.
Thedesignofthesystemiscomposedofhardwarecircuitandsoftwarecircuitsynthesis,thefirstpartofthedesignusesAT89C51tocontroldynamicrefreshofthedotmatrix,Thesecondpartusesthecomputerserialdebuggingassistantcommunicationwithsinglechipcomputer,thevirtualserialport,canrealizethesinglechipisconnectedwiththeserialdebuggingassistant,thuscompletingtheUARTcommunicationofMCUandserialdebuggingassistant,toachievethepurposeofcontrolcharacterdotmatrixdisplay.Inordertoimprovethereliabilityofthesystem,usingProteussimulationsoftwaresimulationofthehardwaremodules.Thebasicdesigniscompletedthedesignrequirements.Thedesigncanoutputletters,numbers,symbolsandsomesimpleserialportinthePCcontrolassistant.ThissystemismainlyProteusandKeilplatformbasedontherealizationofcomprehensive,combinationofhardwareandsoftware,shortenthesystemdevelopmenttime,reducesthesystemerror.
【KeyWords】MCULEDdotmatrixSerialcommunication.
1绪论
1.1研究背景、目的和意义
当今世界,随着科学技术的不断发展,电子技术在现代工业和生活中得到了广泛的应用,点阵式显示装置因为其出色的显示效果和优秀的环境适应能力,功耗低,使其作为一种重要的媒介方式,已广泛应用于金融证券,体育,国防等众多领域。
也正因为如此,点阵显示屏的研发和生产也得到了迅速的发展。
该设计涉及范围广泛的计算机和电源技术,芯片技术,数据通信技术,显示技术,存储技术,系统软件技术,接口和驱动技术。
中国经济的迅速发展,信息传播有了更高的要求,相信在不久的将来,随着LED电子显示屏技术的不断发展,其显示的信息大,寿命长,功耗低,重量轻,占用空间小尺寸,高稳定性,以及使操作方便,安装和维护等特点,会使LED显示设备在社会和经济发展中发挥越来越重要的作用。
使用微控制器控制这种显示设备,以显示中国文字和表情,字符等信息。
会在今后的社会中成为主流。
1.2系统的应用
我们生活的各个方面都离不开LED设备,LED设备用途广泛,可以用于各种电子设备之中,其主要应用于火车站,红绿灯,汽车站,和证券市场,文化中心,信息中心和多功能腕表,等多种可穿戴电子设备中,应用前景非常广泛。
下面主要介绍LED点阵在显示设备中的应用。
用于显示屏的LED点阵屏一般选用单色和双色点阵,单色点阵价格低,做出来的显示屏价格也低,常用于做数字和简单文字显示,常见的是银行门口的信息牌。
双色点阵有多种颜色的组合,何以实现较为复杂的显示效果,最为常见的是红绿信号灯。
而我们在市中心或购物中心所见到的全彩屏是由三基色混合而成,通过红,蓝,绿三种单色LED的不同组合,再根据电流的大小或直流电流的占空比和幅度来调节它的发光亮度,每种颜色比例不同可设计成七中颜色的变换,以达到显示的要求。
1.3Proteus的介绍
Proteus是Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA仿真软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器支持8051、AVR、ARM等,在编译方面,它也支持Keil和MATLAB等多种编译。
由于Proteus将普通的电路绘制和仿真功能完美结合,并且支持的元器件种类繁多,完全能够满足本次的设计需求,所以在此次设计中主要采用了Proteus进行电路绘制和在线仿真工作。
1.4Keil4的介绍
Keil4全称为KeiluVision4,是Keil公司的开发工具,属于KeilC51编译器的一种,KeilC51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种Keil的主要功能包括ANSIC编译器、汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-timekernel)。
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil4提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
由于Keil4能完美的实现单片机上C语言开发的功能,并且与Proteus可以很好的进行联合仿真,所以在此次设计中采用Keil4完成对AT89C51单片机内核的编程,并将编译生成的hex文件导入Proteus实现Keil4与Proteus的联合仿真。
2系统的总体设计
2.1方案介绍
本次设计主要分为单片机的选择,LED点阵驱动,PC与单片机的通信三个部分。
PC机与单片机串行通信实现点阵字符显示的设计主要由上位机也就是PC端的串口调试助手发送数字信息,通过虚拟串口将单片机的RXD和TXD端与串口的RXD和TXD两端相连接,通过UART通信的方式实现PC端与单片机的通信[1]。
PC端串口调试助手以9600波特率发送给单片机,单片机以9600波特率接受串口助手所发送的数据,当单片机接收到数据信息时,通过程序的解码得到相应的信息之后,单片机选择相应的显示信息,再通过控制点阵动态刷新输出对应的字符。
图2.1PC机与单片机串行通信实现点阵字符显示的设计流程图
2.2主控芯片的选择
单片微型计算机简称单片机,它是将中央处理器(CPU)、存储器(RAM,ROM)、定时/计数器和各种接口电路都集成到一块集成电路芯片上的微型计算机。
随着计算机技术尤其是单片机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、湿度等参数进行检测和控制。
PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。
因此如何实现PC机与单片机之间的通信具有非常重要的现实意义。
因为其成本低廉又有很高的实用性,目前已经被大量的应用与我们日常生活中,因为考虑到成本和实用性方面,此次选择常用的AT89C51。
2.3AT89C51的介绍
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS8位微处理器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路,俗称单片机[2]。
单片机的可擦除只读存储器可以反复擦除1000次。
AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
在此次设计中使用单片机采集串口通信得来的UART信号。
因为单片机只能接受数字信号,对外来的模拟信号不会接受,所以要对接收来的数字信号加以识别,就可以保证实验中不会发生错误。
整个单片机系统的功能主要是在单片机AT89C5l控制下,实现对经过预处理后的信号进行采集和处理。
主要特性如下:
1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051
2.工作电压:
5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
3.工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
4.用户应用程序空间为8K字节,片上集成512字节RAM
5.通用I/O口(32个),复位后为:
P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
6.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RXD/P3.0,TXD/P3.1)直接下载用户程序,数秒即可完成一片
7.具有EEPROM功能
8.具有看门狗功能
9.共3个16位定时器/计数器。
即定时器T0、T1、T2
10.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
11.通用异步串行口(UART),还可用定时器软件实现多个UART
12.工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级)
AT89C51单片机的工作模式
1.掉电模式:
典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序
2.空闲模式:
典型功耗2mA
3.正常工作模式:
典型功耗4mA~7mA
4.掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备
图2.2、AT89C51引脚图
3系统硬件设计
3.1LED点阵电路设计
对于LED点阵来说,以简单的8×8点阵为例,它共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮。
所以对于8×8的点阵来说仅仅需要用单片机的两组接口分别控制行和列,我们就可以输出相应的字符了。
目前以LED半导体发光器件为显示介质的大型显示屏已广泛地被应用。
其控制驱动方式各种各样,也各具特色。
因为8×8点阵可以显示所有字符及少数汉字的显示,所以此次采用单色的LED点阵一块。
在LED发光管的驱动设计上也有许多的方式。
由于大型的点阵显示屏是由上万个或几十万个LED发光单元组成,这也就需要大量的驱动电路来支持。
那末驱动电路设计的好坏就直接影响系统的生产制造成本和显示的效果及系统的运行性能。
设计一个即能满足控制驱动要求,同时使用器件少成本底的单元控制驱动方案是必要的。
以LED8×8点阵模块(共阳极)为显示器件的显示屏为例,众所周知以LED8×8点阵模块为显示器件的显示屏其工作方式是扫描式的,驱动电路可分为行和列。
每一行的模块(可以是四个、六个或更多)的行可以并联形成八条行线。
由于控制等方面的原因一般是将一个较大的显示系统分为几个标准化的小单元。
每个小单元是完全一样的,这将有利于灵活组屏和方便生产调试[3]。
对于标准单元的设计应本着这样的原则:
较少的输入引入,方便的级联。
串行控制驱动方式就是显示的数据是通过串行方式送入驱动电路。
其特点是单元内的线路连接简单,这给印刷电路板的设计带来了方便。
同时也减少了印刷电路板的布线密度,从而为生产和调试带来了有利的一面。
当然,单元的可靠性也相应的提高了。
由于行的组成是几个模块并联形成的,因此驱动的功率要求是比较大的。
行的驱动一般是采用PNP(用于共阳方式)功率三极管,行的逻辑控制可选用三—八译码方式和直接行线控制方式。
译码方式是应用三条行控制线控制一个三—八译码器(如74LS138等),八选一顺序控制八条行线。
并行控制驱动方式就是显示的数据是通过并行(8位)方式送入驱动电路。
每送入一个字节就完成了一个模块的一个行的数据置入,其优点是数据的刷新速度块,这就减轻了上一级控制系统的压力。
在同样的数据处理量的前提下,对处理速度要求的降低,就意味着对系统投入的降低。
同时处理速度的降低也相应地提高了系统的稳定性。
在并行控制驱动方式下,我们可以选用锁存芯片,采用首尾相连的方式将控制、驱动一并形成。
也可以将这一方式称其为并行移位锁存方式。
这一设计方案的特点是设计线路简洁,控制方便快速。
系统的整体投入成本比较低,这一设计方案将大大地提高系统的性能价格比[4]。
但并行控制驱动方式的缺点是由于数据是并行输入的,这就使得单元内的线路连接复杂。
因此,这一方式一般不采用。
图3.1LED点阵电路引脚图
3.2UART串口通信设计
PC机与单片机串行通信实现点阵字符显示,还需要的的是PC与单片机之间的信息交互,其中也牵扯到了一些通信协议和通信方式的选择。
在众多通信协议中我选择了UART,UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输,它最基础也最稳定,便于操作。
而通信方式的选择,有线串行通信和无线蓝牙传输,串行通信是指数据按位顺序传送的通信。
串行数据传送的特点是通信线路简单最多只需一对传输线即可实现通信成本低,但速度慢。
其通信线路既能传送数据信息又能传送联络控制信息它对信息的传送格式有固定要求具体分为异步和同步两种信息格式,与此相应有异步通信和同步通信两种方式。
在串行通信中对信息的逻辑定义与不兼容需要进行逻辑电平转换计算机与外界的数据传送大多是串行的其传送的距离可以从几米到几千公里。
而通信方式又分为异步传送和同步传送,异步传送方式异步传送的特点是数据在线路上的传送是不连续的在线路上数据是以一个字或称字符为单位来传送的。
异步传送时各个字符可以是接连传送的也可以是间断传送的,这完全由发送方根据需要来决定的。
另外,在异步传送时,同步时钟脉冲并不传送到接收方,即双方各用自己的时钟源来控制发送和接收。
同步传送方式同步传送是一种连续传送数据的方式。
在通信开始以后,发送端连续发送字符,接收端也连续接收字符,直到通信告一段落。
同步传送时,字符与字符之间没有间隙,也不用起始位和停止位。
计算机与单片机之间以串口方式进行通讯[5]。
计算机将所要显示的字母的内码经串口发送给控制电路,控制电路从字母中取出字符排列组合单片机中使用的,串行通信通常都是异步方式的同样基于稳定的原因我选择的是有线串行通信,再通过编程就可以解决通信的问题。
图3.2UART串口通信引脚图
3.3时钟电路
片内电路与片外器件构成一个时钟产出电路,CPU的所有操作操作均在时钟脉冲同步下进行。
片内振荡器的振荡频率非常接近晶振频率,一般在1.2MHz~12MHz之间选取。
C5,C6是反馈电容,其值再5pF~33pF之间选取,典型值为33pF。
本电路选用的电容为30pF,晶振频率为12MHz。
这样就确定了单片机的4个周期分别是:
振荡周期=1/12us;
机器周期(SM)=1us;
指令周期=1~4us;
在引脚XTAL1和XTAL2外接晶体振荡器,就构成了内部震荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生震荡时钟脉冲。
内部震荡方式的外部电路如图3.3所示:
图3.3时钟电路
3.4复位电路
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。
一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。
由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。
本系统复位电路如图3.4所示:
图3.4复位电路
4软件设计
4.1主程序流图
主程序首先对系统环境初始化,置位总中断允许位EA,打开串行口中断标志位ES,允许打开定时器T0中断ET0,初始化UART,初始化定时器T0,设置刷新时间为20ms,串口中断接收传入的值,主程序进行判断如果存在就通过修改二维数组的行标来实现该值的改变,并且进行点阵的动态刷新。
如果并没有匹配到对应的值则不会改变保持上次的输出结果[6]。
主程序框图如下:
图4.1主程序流程图
4.2程序代码
参考程序[7][8][9]:
#include//器件配置文件
#defineuint8unsignedchar
#defineuint16unsignedint
uint8a;//用于接收传入的值
uint8i=1;//二维数组的行变量
codeuint8led[9][8]={{0x81,0x3C,0x6A,0x5E,0x5E,0x6A,0x3C,0x81},//显示笑脸
{0xFF,0xFF,0x7D,0x00,0x00,0x7F,0xFF,0xFF},//显示1
{0xFF,0x79,0x38,0x1C,0x0C,0x20,0x31,0xFF},//显示2
{0xFF,0xBD,0x24,0x24,0x24,0x00,0x99,0xFF},//显示3
{0xFF,0xC7,0xC3,0x49,0x00,0x00,0x4F,0xFF},//显示4
{0xFF,0xFF,0xFF,0x20,0x20,0xFF,0xFF,0xFF},//显示惊叹号
{0xFF,0xFF,0xCF,0xB7,0xB7,0xCF,0xFF,0xFF},//显示句号
{0xFF,0x03,0x01,0xCC,0xCC,0x01,0x03,0xFF,},//显示A
{0x81,0x7C,0x3A,0x5E,0x5E,0x3A,0x7C,0x81},//显示哭脸
};
/*
*定时器1初始化
*/
voidtimer0_init()
{
TMOD|=0x01;
TMOD&=0xfd;
TH0=0xFC;
TL0=0x67;
TR0=1;
}
voidint_init()
{
ES=1;
ET0=1;
EA=1;
}
/*
*UART初始化
*/
voidUART_init(void)
{
SCON=0x50;
PCON&=0x7F;