基于单片机的电子广告屏综述.docx
《基于单片机的电子广告屏综述.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子广告屏综述.docx(31页珍藏版)》请在冰豆网上搜索。
基于单片机的电子广告屏综述
济源职业技术学院
毕业设计
题目
基于单片机的电子广告屏
系别
专业
班级
姓名
学号
指导教师
日期
设计任务书
设计题目:
基于单片机的电子广告屏
设计要求:
1.在点阵模块上显示,每屏幕显示四个字。
2.在屏幕上显示“济源职业技术学院电气自动化专业。
。
。
。
。
。
。
。
。
制作”。
3.让“济源职业技术学院电气自动化专业。
。
。
。
。
。
制作”移动循环显示。
设计进度要求:
第一周:
在老师的指引下自选设计题目,指导老师对设计题目进行大致讲解;
第二周:
查资料,收集信息,写出初步设计方案;
第三周:
硬件电路设计;
第四周:
流程图的设计、程序设计;
第五周:
程序设计,并在PROTEUS中进行仿真调试;
第六周:
在PROTEUS中进行仿真调试;
第七周:
撰写设计论文。
第八周:
指导老师对设计报告进行检查、修改,设计论文定稿,准备答辩。
指导教师(签名):
目录
摘要
1总体方案设计1
2系统硬件设计2
2.1元件的选用2
2.2单片机AT89S512
2.3点阵模块5
2.4译码器74HC1546
2.5集成电路74HC5957
3系统软件设计10
3.1系统软件设计思路10
3.2系统程序设计10
4调试与仿真15
4.1伟幅仿真软件15
4.2Proteus仿真软件16
4.3字模软件21
致谢24
参考文献25
摘要
LED显示即为发光二极管显示,具有显示醒目、成本低、配置灵活、接口方便等特点。
目前,LED点阵显示器应用十分广泛,如广告活动字幕机,股票显示屏,活动布告栏等。
本设计的主要内容是汉字滚动LED点阵显示的设计,以实现设定汉字的滚动显示控制并进行软硬件交互仿真,即主要包括硬件设计和软件设计与分析和软、硬件交互仿真几个环节。
软件设计与分析环节中分析掌握硬件电路,熟悉LED点阵显示、综合89S51单片机的原理及特点,掌握字模软件取模方法,通过修改单片机程序控制显示汉字的滚动内容,实现循环显示或单次显示,保证显示的稳定性和完整性,完成“济源职业技术学院电气自动化技术专业王爽制作”21个字从屏幕中滚进左边之后,右边再次出现第一个字等滚动显示控制。
软、硬件交互仿真环节主要指将相应软件设计环节所得程序导入到Proteus仿真环境中进行调试,以实现字符的滚动显示,并向左移动循环显示的效果。
关键词:
点阵显示,AT89S51芯片,Proteus软件,字模库
1总体方案设计
硬件电路由AT89S51单片机、点阵显示电路、驱动电路、晶振电路和复位电路等几部分组成。
使用四个8×8LED点阵可构成一个16×16的LED点阵,可由单片机控制译码器74HC154输出控制行,列由集成电路74HC595串入并出构成列驱动电路,单片机的P1口输出LED的行并控制寄存器的移位。
在单片机中写入正确的程序后会在显示模块上显示“济源职业技术学院电气自动化技术专业王爽制作”并且向左移动循环显示的效果,电路如图1.1所示。
图1.1设计原理图
单片机的主要功能是:
存储程序、对存储程序进行相应的处理并从I/O口输出。
复位电路:
在单片机上有一输入复位引脚RST,外部用电容和电阻控制RST。
晶振电路:
是时钟电路的外接部分,为单片机提供时钟信号。
时钟周期就是单片机外接晶振的倒数。
驱动电路:
由于显示电路部分发光二极管比较多,而单片机所提供的+5V电源不足矣带动,所以要用三极管放大信号。
显示电路:
用以实现汉字显示的结果。
电源部分:
采用+5V的电源供电。
2系统硬件设计
2.1元件的选用
根据设计题目要求选用的主要是AT89S51芯片和点阵显示模块,总体设计分为5个模块:
使系统恢复初始状态的复位电路模块;稳定频率和选择频率的晶振电路模块;驱动电路模块;储存系统程序的89S51芯片以及显示效果的LCD点阵显示模块,这5个功能模块电路组成了我们的设计。
2.2单片机AT89S51
1.性能、特点
AT89S51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器的8位COMS微控制器,使用高密度,非易失存储技术制造,并且与AT89C51引脚和指令系统完全兼容。
芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对存储器重复编程。
AT89S51具有多种功能的8位CPU与闪存结合在一个芯片上,为很多嵌入式控制应用提供了非常灵活而又便宜的方案。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中。
AT89S51是一种高效微控制器,主要特点有:
(1)与MCS-51微控制器产品系列兼容。
(2)片内有4KB可在线重复编程的快闪擦写存储器(FlashMemory)。
(3)存储器可循环写入/擦除1000次。
(4)存储数据保存时间为10年。
(5)宽工作电压范围:
Vcc可为2.7V~6V。
(6)全静态工作:
可从0HZ到16MHZ。
(7)程序存储器具有3级加密保护。
(8)128×8位内部RAM。
(9)32条可编程I/O线。
(10)两个16位定时器/计数器。
(11)中断结构具有5个中断源和2个优先级。
(12)可编程全双工串行通道。
(13)空闲状态维持低功耗和掉电状态保存存储内容。
2.主要管脚
P0口(39脚至32脚):
是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用。
P1口(1脚至8脚):
是准双向8位I/O口。
由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P2口(21脚至28脚):
是准双向8位I/O口。
在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。
P3口(10脚至17脚):
是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。
P3各口的第二功能定义如图2.1所示。
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(外部数据存储器读脉冲)
图2.1引脚图
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
XTAL1和XTAL2分别为反向放大器的输入和输出。
3.复位电路
AT89C51单片机的复位是由外部的复位电路来实现的。
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
单片机复位的条件是:
必须使RST/Vpd或RST引脚(9)加上持续两个机器周期(即24个振荡周期)的高电平。
例如,若时钟频率为12MHz,每机器周期为1us,则只需2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
单片机常用的复位电路如图2.2所示。
图2.2按键复位电路
图2.2为按键复位电路。
该电路除具有上电复位功能外,若要复位,只需按图中的SW1键,此时电源VCC经电阻R1、R6分压,在RESET端产生复位高电平。
4.晶振电路
石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。
本设计所用的晶体振荡电路,如图2.3晶体振荡电路。
此晶振电路所选用的石英晶振频率为12MHZ。
时钟周期就是单片机外接晶振的倒数,例如12MHz的晶振,它的时间周期就是(1/12us),是计算机中最基本的、最小的时间单位。
图2.3晶振电路
在一个时钟周期内,CPU仅完成一个最基本的动作。
对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。
由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。
显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。
但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。
我们学习的51系列单片机的时钟范围是1.2MHz-12MHz。
2.3点阵模块
LED点阵显示模块是由一串发光或不发光的点状显示器按矩阵的方式排列组成的,其发光体是(LED发光二极管)。
目前,LED点阵显示器应用十分广泛,如广告活动字幕机,股票显示屏,活动布告栏等。
LED点阵显示器的分类有多种方法:
按阵列点数可以分为5×7、5×8、6×8、8×8,按发光颜色可以分为单色、双色、三色,按极性排列方式又可以分为共阴极和共阳极。
如图2.4所示,只要让某些LED发光二极管点亮,就可以组成数字、字母、图形、汉字等,但要显示汉字则需要多个LED点阵显示器组合,最常见的组合方式有15×14、16×15、16×16等。
在设计中选用的是极性排列为共阴极的8×8LED点阵显示器,采用16×16的组合方式。
由于设计要求让同时显示4个字,每个16×16矩阵显示一个字,则需要4个16×16矩阵组成(即16个8×8LED矩阵)。
图2.4点阵显示结构图
2.4译码器74HC154
译码器是能实现将表示特定意义信息的二进制代码功能的集成电路。
译码器的输入为二进制代码,输出为与输入代码对应的特定信息,它可以是脉冲,也可以是电平。
而在此次设计中应用的是输出高电平。
1.74HC154引脚图及功能
图2.574HC154引脚图
功能如下:
1-1113-17:
译码器输出端。
(outputs(activeLOW))
12:
GND接地端(ground(0V))
18-19:
使能输入端(enableinputs(activeLOW))
20-23:
地址信号输入端(addressinputs)
24:
VCC电源(positivesupplyvoltage)
在设计中由单片机P1口输出信号控制译码器的20—23号管脚(地址信号输入端),经译码器后由译码器输出端控制显示电路,译码器输出低电平(0)有效。
2.译码器功能
由表2.1可知,所示当使能输入端G1、G2均接低电平时,输入信号DCBA高电平有效且按8421码实现加一时,输出0-15端实现低电平并左移。
例如:
当G1G2=0,DCBA=0001时,输出端Y1输出有效。
当使能输入端G1、G2其中任意一端接高电平时,不论输入断如何,均输出高平。
表2.174HC154译码器功能表
2.5集成电路74HC595
列驱动电路由集成电路74HC595构成。
它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。
1.引脚及功能
74HC595的引脚如图2.6所示:
图2.674HC595引脚图
QA--QH:
八位并行输出端,可以直接用于输出控制。
QH1:
级联输出端。
在设计中将它接下一个595的SER端。
SER:
串行数据输入端。
SRCLR:
清零端。
低电平时将移位寄存器的数据清零。
通常接Vcc。
SRCK:
数据输入端。
上升沿时数据寄存器的数据移位,下降沿移位寄存器数据不变。
G:
高电平时禁止输出(高阻态)。
RCK:
上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变,将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲更新显示数据。
2.集成电路功能
74HC595的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器,引脚SER是串行数据的输入端。
如表2.2所示引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SER的下一个数据打入最低位。
移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。
RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入到输出锁存器。
引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。
SRCLR信号是移位寄存器的靖0输入端,当其为低时移位寄存器的输出全部为0。
由于SRCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。
芯片的输出端为QA~QH.最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。
表2.274HC595真值表
输入管脚
输出
SER
SRCK
SCLR
RCK
G
×
×
×
×
H
QH-QA输出为高阻态
×
×
×
×
L
QH-QA输出有效值
×
×
L
×
×
移位寄存器清零
L
↑
H
×
×
移位寄存器存储L
H
↑
H
×
×
移位寄存器存储H
×
↓
H
×
×
移位寄存器状态保持
×
×
×
↑
×
输出存储寄存器锁存移位寄存器中的状态值
×
×
×
↓
×
输出存储器状态保持
3系统软件设计
3.1系统软件设计思路
由于设计要求要显示21个字,每次显示4个字需用用6屏显示,所以要有以下程序:
1.主程序:
是程序的基本结构框架。
开始先清除屏幕,以防出现乱码。
2.显示程序:
此次设计所选用的是LED矩阵是16×16点阵组合,每一屏需要128个数据码。
3.读码程序:
读程序的作用是当第一数据码输出后能够查询送出下一个,并保证数据连续循环送出。
4.移动程序:
当第一屏显示结束后能实现向左移动。
3.2系统程序设计
1.主程序
主程序框图如图3.1所示。
图3.1主程序框图
ORG00H
START:
MOVA,#00H
MOVP0,A
MOVP2,A;清屏
CALLDIS;调显示子程序
CALLMOVE;调移动子程序
JMPSTART;循环
如图3.1所示,当程序开始运行后,系统现对点阵显示器进行初始化。
然后清屏,为输出数据做准备。
然后调用中文显示程序,在显示屏上显示数据,延时过后调显示下一屏显示数据,再调用移动子程序将数据进行向左移动,如此循环。
2.显示程序
图3.2显示程序框图
如图3.2所示,当程序运行至显示程序时,会在字库中查找字符码并计算字模地址,在计算一列的位置后,程序依次从字库中调出一列字模的数据输出到显示屏上,直到这一屏写完为止。
写完一页后,程序会进行清屏、换屏。
然后继续依次调一列字模数据输出到显示屏上,直到写完这一页。
程序可以不停运行,可以用延时来控制每幕停留时间,程序如下:
DIS:
MOVR2,#06H;每个画面四个字,21个字分6次显示
MOV20H,#00;取码指针暂存地址20H初值为00
D4:
MOVR4,#00H;扫描指针设初值
MOVR1,#0FFH;每幕停留的时间
D5:
MOVR6,#64;每幕4个字64个数据码
MOVR0,20H;取码指针存入R0
D2:
LCALLREAD1;调用取码子程序
INCR4;扫描下一列
DJNZR6,D2;显示一幕?
MOVR4,#00;清除扫描指针
DJNZR1,D5;每幕停留时间到了吗?
MOV20H,R0;保留取码指针存入20H地址
DJNZR2,D4;6幕显示完毕了?
RET
3.读码子程序
根据硬件设计需要设计如3.3所示读码程序框图
编写如下读码子程序:
READ1:
MOVA,R4;扫描指针载入A
MOVP1,A;P1扫描输出
MOVA,R0;取码指针载入A
MOVDPTR,#TABLE;查表
MOVCA,@A+DPTR;取上半部数据码
MOVP0,A;输出至P0显示
INCR0;取下一个码
MOVA,R0;取码指针载入A
MOVDPTR,#TABLE;查表
MOVCA,@A+DPTR;取下半部数据码
图3.3读码子程序框图
MOVP2,A;输出至P2显示
INCR0;取下一个码
MOVR3,#25;延时
DJNZR3,$
MOVA,#00H
MOVA,#00H;清屏
MOVP0,A
MOVP2,A
RET
4.移动子程序
MOVE:
MOV20H,#00;取码指针暂存地址20H初值为00
MOVR4,#00H;扫描指针设初值
M1:
MOVR1,#0FFH;每幕停留的时间
图3.4移动程序框图
M2:
MOVR6,#64;每幕4个字64个数据码
MOVR0,20H;取码指针存入R0
M3:
CALLREAD1;调用取码子程序
INCR4;扫描下一列
DJNZR6,M3;显示一幕?
MOVR4,#00;清除扫描指针为00
DJNZR1,M2;每幕停留的时间到了吗?
MOVA,20H;取码指针载入A
ADDA,#08;取码指针加8
MOV20H,A;取码指针再存如20H
XRLA,#336;21个字是否都左移完毕了?
JNZM1
RET
4调试与仿真
4.1伟幅仿真软件
伟幅WINDOWS调试软件提供了一个全集成环境,具有统一的界面,它的项目文件有仿真器的设置、模块和包含文件。
其仿真器的设置有仿真器类型设置、仿真头设置、CPU设置、显示格式设置和产生的目标文件类型等设置。
在设计中用到的是软件调试的一种,先将源程序输入,编译成功后将文件添加到Proteus软件中已经设计好的项目中,仿真运行,调试无误后,将调试好的程序存入磁盘中。
将编好的程序通过伟福仿真软件来验证。
先打开伟福仿真软件的界面,选择仿真器、仿真头和CPU的类型。
其设置如图4.1所示:
图4.1仿真器的选择
然后点目标文件,在生成BIN和HEX文件(即二进制和十六进制文件)前选择对号,其设置如图4.2所示,设置完成后点“好”。
图4.2目标文件的设置
然后在伟福里面输入编译好的程序进行调试,经改正错误后运行,如图4.3所示:
图4.3编译通过后的界面
4.2Proteus仿真软件
1.Proteus仿真软件的使用
(1)在桌面上找到快捷图标
,双击打开,或在开始菜单\程序\
下的
。
(2)软件运行后会自动打开一个空白文件,用户也可以在文件菜单下选择“新建设计”,在出新的选择窗口中选择
,来新建一个空白文件。
(3)放置元件
设计仿真图中的元件列表如表4.1所示:
表4.1元件列表
类别
数量
元件
MicroprocessorICs
1
89S51
Optoelectronics
8
MATRTX8×8GreenLED
TTL74HCserise
2
74HC154
TTL74HCserise
1
74HC04
Resistors
1
Respack-8
1)选择元件
在最左侧的工具栏中选择
图标,并选择
中的P按钮,将会出现选择元件对话框。
在该对话框左侧选择
,然后在右侧的窗口中双击选择AT89S51单片机,使该元件出现在
下面的列表中,至此列表中应该出现一个元件。
按此方法添加LED,在对话框左侧选
在右侧窗口选择8×8
,或者
(有4种颜色,可随便选择)。
再添加排阻元件。
在对话框左侧选
,在右侧选择
。
至此在
下面应该出现3种元件
2)放置元件
在对象选择器
中添加元件之后,就要在原理图中放置元件。
在对象选择器中单击AT89C52单片机,然后在原理图中点左键放置该元件,点右键可以撤销放置本元件的操作。
3)移动元件
在原理图编辑窗口,右击选择对象,在出现的菜单中选择第1项拖曳功能,移动元件到目标位置后,单击左键固定元件,在空白处再单击左键结束移动操作。
4)删除元件
用右键双击该元件即可。
如果不小心删除了,用恢复按钮恢复。
5)调整元件方位
右击元件,在菜单中选择相应的旋转方式。
6)编辑元件
左键双击元件,出现对话框后可以修改(一般很少修改)。
(4)连线
ISIS环境没有专门的连线工具。
在2个元件间连线很简单,只需要直接单击2个元件的连接点,ISIS即可自动定出走线路经并完成2个连接点的连线操作。
如果觉得连线不合适,也可以自己定,方法是在需要拐弯的地方单击,然后再连接另一个元件的连接点。
注意放置拐点的地方鼠标会呈现X样式。
布线结束后如果需要改变连线的样式,可以用左键拖动拐点即可改变。
(5)调入文件
在源代码菜单中选择第1项
,在出现的窗口中选择编译器
,再选择源代码文件名下面的
按钮,在出现的窗口中改变地址选择已经编译好的“济源.asm”文件并确定。
(6)调试点击窗口左下角的
按钮,可以观察到程序的效果。
2.Proteus提供的资源
(1)Proteus软件提供的元件资源
Proteus软件提供了30多个元件库,数千种元件,涉及到数字和模拟、交
流和直流等,具体情况如表4.2所示。
表4.2Proteus中的主要元器件库
库名
元件类型或系列
库名
元件类型或系列
AnalogICs
电源电路、555、电压基准芯片等
MicroprocessorICs
处理器,有51系列、6800系列、PIC16系列等
DataConverters
A/D转换、D/A转换芯片
Transistors
三极管,有2N、BC、FZT\IRF等系列及场效应管等
Diode
稳压二极管,有1N,3EZ,BAS,BZX,MMBZ等系列
Optoelectronics
发光二极管,数码管有16seg、7seg系列,LM液晶系列、点阵系列等
(2)Proteus提供的仿真仪表资源
在Proteus软件包中,包含了大量的不同类型的高质量测试仪表,同类仪表可以重复使用,不存在使用数量的问题,具体情况如表4.3所示。
表4.3Proteus提供的仿真仪表
名称
虚拟仪器
名称
虚拟仪器
Oscilloscope
示波器
Signalgenerator
信号发生器
Logicanalyzer
逻辑分析仪
Patterngenerator
序列发生器
Countertimer
计数/定时器
DC/ACvoltmeter
直流(交流)
电压表
Virtualterminal
串口
终端
DC/ACammeter
直流(交流)电流表
SPIDebugger
SPI总线调试器
I2CDebugger
I2C总线调试器
除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。
这些虚拟仪器仪表具有理想的参数指标