资源描述:
《汉字点阵显示proteus仿真new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第22卷第4期景德镇高专学报Vol.22No.42007年12月JournalofJingdezhenComprehensiveCollegeDec.2007基于Proteus的单片机汉字点阵显示设计与仿真①12石长华周杰(1、景德镇高专物理与应用电子系,江西景德镇333000;2、浮梁一中,江西景德镇333000)摘要:Proteus软件可进行单片机仿真,本文用Proteus软件设计汉字LED点阵静态显示,给出了完整设计电路和仿真程序源代码,通过仿真运行,在LED点阵中显示出"景高专"三个汉字。仿真结果表明Proteus软件在单片机应用设计中
2、具有重要的实用价值,能极大缩短产品开发周期,节约开发成本。关键词:Proteus;单片机;LED显示屏;汉字静态显示中图分类号:TN104.3文献标识码:A文章编号:1008-8458(2007)04-0001-03实验硬件条件下进行仿真实验,开发者也不必经历"原理图设计、PCB线路板制作、元件焊接、然后进行软件编程、通过仿真0引言器对系统硬件和软件调试"过程,可以直接用Proteus进行电Proteus最重要的特点是它能够把用户编写的应用软件作路设计和仿真运行程序,运行成功后再制作产品,缩短开发周用在微处理器上并和连接在该处理器外围模拟器件及
3、数字器期,节约开发成本。汉字点阵显示电路设计制作时,显示部分件协同仿真,就像在真正的单片机应用系统的硬件平台上执由8×8单色LED模块拼接而成,元件引脚较多,硬件制作繁行目标代码。支持的微控制器有51系列、Microchip的PIC系琐,应用Proteus进行仿真设计,极大缩短开发周期。下文用列、Atmel的AV系列、和ARM7/LPC2000。Proteus软件使用Proteus软件设计16×16三个汉字静态显示屏。彻底改变了传统单片机学习和开发方式,初学者可以在没有屏三部分,如图1.1所示,电路用Proteus的ISIS画出,具体画1汉字显
4、示电路设计[1]汉字点阵的控制电路采用C51系列单片机,硬件电路可法参见文献。分为单片机控制器、LED显示屏行列驱动电路、LED点阵显示①收稿日期:2007-08-20作者简介:石长华(1965-),男,安徽东至人,副教授,南京理工大学硕士,主要研究方向:电力系统及自动化。·2·景德镇高专学报2007年12月由于Proteus元件库中没有16×16LED模块,为了显示16sbitRCLK=P2^2;//74HC595输出数据锁存脚×16点阵汉字,每个汉字由四块8×8单色LED模块组成,三#defineLineCtrlP1个汉字需要用8×8LED
5、模块十二块。元件库中的四块8×voiddelay(unsignedintus)//延时子程序8LED组合时会出现元件脚与元件重叠,不利于接线仿真,图{中8×8LED模块是用“Library”菜单下的“Decompose”和while(us--);“MakeDevice”工具将元件拆解后再封装得到。图中各显示模}块引脚采用标号方式,减少了交叉接线。voidSendByte(unsignedchardat)//送一个字节的子程序[2]驱动电路采用动态扫描驱动方式,设计中使用六块{74HC595作为列驱动。74HC595具有一个8位串入并出的移uns
6、ignedchari;位寄存器和一个8位输出锁存器的结构,而且移位寄存器和for(i=0;i<8;i++)输出锁存器的控制各自独立,这使列数据的准备和列数据的{显示可以同时进行。行驱动由4-16译码器74HC154完成。SRCLK=0;单片机上电复位后,三个汉字的第一行数据(六个字节共if(dat&0x80)SDI=1;48位)由P2.1脚串行输出,六个字节的串行数据先进入U1else的数据输入端,在单片机P2.0脚的时序脉冲上升沿作用下串SDI=0;行进入六个列驱动集成块U1~U6,这个过程叫做装载一行数SRCLK=1;据。一行数据装载完成后
7、,P2.2脚输出一个上升沿,此脉冲控dat=dat<<1;制U1~U6将各自列数据输出去用以显示,同时单片机P1口}也送出控制信号,经U8译码选中它的第一脚X1,X1输出低}电平,使三个汉字的第一行显示出来。其余各行依次按这种voidDisplay(unsignedchar3dat1,unsignedchar3dat2,方式显示出来,这样三个汉字就静态出现在LED显示模块上。unsignedchar3dat3)//显示三个汉字各行数据子程序{2汉字显示程序设计unsignedchari;根据以上硬件电路和单片机控制原理,编程思路为:for(i=
8、0;i<16;i++)a先对相关变量进行初始化。{b装载三个汉字的第一行数据,并显示出来。SendByte(dat3[23i+1]);SendByte