北京交大单片机课程设计1616点阵DOC.docx
- 文档编号:9583190
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:21
- 大小:533.72KB
北京交大单片机课程设计1616点阵DOC.docx
《北京交大单片机课程设计1616点阵DOC.docx》由会员分享,可在线阅读,更多相关《北京交大单片机课程设计1616点阵DOC.docx(21页珍藏版)》请在冰豆网上搜索。
北京交大单片机课程设计1616点阵DOC
16×16点阵式LED
显示器的PROTEUS仿真与单片机设计
一、设计任务书
(一)实验目的
1、了解点阵式LED显示原理。
2、熟悉PROTEUS软件电路仿真的使用。
3、掌握单片机与16×16点阵块之间接口电路设计及编程。
4、掌握74HC154芯片工作原理及与单片机的接口电路设计。
(二)设计任务及要求
利用已学单片机知识,根据点阵式LED显示器的显示原理,自行设计电路,进行PROTEUS软件仿真测试,焊接电路板,完成16×16点阵式LED的显示结果。
要求:
在单片机的控制下点阵显示屏显示“电子设计”,显示方式分别为单字循环显示、左右滚动显示、上下滚动显示。
二、硬件电路设计
(一)硬件电路框图如下:
图一、16×16点阵显示硬件电路图
本实验采用以AT89C51单片机为核心芯片的驱动电路和显示电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HC154)、16×16LED点阵5部分组成,如图一所示。
时钟电路由AT89C51的18、19脚的时钟端(XTAL1及XTAL2)以及12MHz晶振X1、电容C2、C3组成,采用片内振荡方式。
复位电路采用简易的上电复位电路,主要由电阻R1,R2,电容C1,开关K1组成,分别接至AT89C51的RST复位输入端。
列扫描驱动电路由74HC154芯片实现,其管脚及功能真值表如图二所示。
74HC154是一个4-16线译码器,A、B、C、D是四个输入,Y0-Y15是十六个输出,且低电平有效。
使能端口G1、G2全为低电平时,74HC154芯片方正常工作,产生输出。
图二、74HC154芯片引脚说明及功能真值表
LED点阵显示屏采用16×16共256个象素的点阵,通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布,如图三所示。
图三、16×16点阵引脚排列图
16×16点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置0低电平,某一行置1高电平,则相应的二极管就亮。
16×16点阵的列输入为C0-C15,行输入为A0-A15。
要显示某一个字,首先要设计该字的点阵字形,编好行(或列)点阵码,然后在单片机的控制下对点阵进行逐行(或列)扫描。
本实验采用的是列扫描方式控制字符的显示。
若将LED点阵的行列端口全部直接接入AT89C51单片机,则需要使用32条IO口,这样会造成IO资源的耗尽,系统也再无扩充的余地。
因此,我们在实际应用中只是将LED点阵的16条行线直接接在P0口和P2口,至于列选扫描信号则是由4-16线译码器74HC154来选择控制,这样便大大节约了IO口资源。
同时考虑到P0口必需设置上拉电阻,我们采用10KΩ排电阻作上拉电阻。
实验中,汉字字符的显示过程如下:
在C2,C3,X1以及单片机内部时钟电路的作用下,单片机AT89C51按照设定的程序在P0和P2接口输出与内部汉字对应的代码电平送至IED点阵的行选线(高电平驱动),同时在P1.0、P1.1、P1.2、P1.3接口输出列选扫描信号(低电平驱动),从而选中相应的象素LED发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
(二)、汉字的点阵显示原理及字库代码获取方法
实验中,每一个汉字由16行16列的点阵组成显示。
我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。
事实上这个汉字显示屏不仅可以显示汉字,也可以显示在256象素范围内的任何图形。
如图四所示。
图四、汉字的点阵显示原理
实验中通过列扫描方法获取汉字的代码,用AT89C51控制显示。
由于单片机的总线只有8位,一个字需要拆分为2个部分。
汉字被拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。
如图四,本实验通过列扫描方法首先显示左上角的第一列的上半部分,即第0列的P0.7-P0.0口,显示汉字“毛”时,为全灭,即二进制00000000B,转换为十六进制为00H;第一列的下半部分,P2.7灭,P2.6灭,P2.5亮,P2.4灭,P2.3灭,P2.2灭,P2.1亮,P2.0灭,即二进制00100000B,转换为十六进制为20H。
如此,转向第二列、第三列,直至第十六列的扫描,一共扫描32个8位,这样就可以得出汉字“毛”的扫描代码为:
00H,20H,44H,20H,44H,20H,44H,20H
44H,20H,44H,20H,7FH,0FCH,44H,22H
44H,22H,44H,22H,44H,22H,44H,22H
44H,22H,00H,22H,00H,2EH,00H,00H
依靠人工方法获取汉字代码是非常繁琐的事情,为此,我们采用点阵显示字库软件来直接提取字符代码。
汉字点阵显示一般有点扫描、行扫描、列扫描3种。
本实验采用行扫描软件提取汉字字符图面如下。
图五、点阵显示字库软件提取程序
三、软件设计
(一)设计流程
软件程序主要由开始、初始化、主程序、字库组成,程序设计流程图如下所示。
图六、程序设计流程图
(二)汇编语言实现如下:
ORG0000H;16*16点阵显示
AJMPMAIN
ORG0030H;以下程序从空间地址0030H开始存放,腾出中断向量等所需空间
MAIN:
MOVDPTR,#TAB;字码表初址赋值
;以下字符单字循环
MOVR1,#00H;列控制码
MOVR3,#16;列数
MOVR4,#7;循环单片机仿真7个字符
MMC1:
MOVR5,#100;每屏反复显示10次
MOVR3,#16;列数
MMC2:
MOVR2,#0;取码指针
MMC3:
MOVP0,#00H;初始时关显示
MOVP2,#00H;初始时关显示
MOVA,R2
MOVCA,@A+DPTR;取当前列显示字码的第一个字节
MOVP0,A;送l-8行控制口
INCR2
MOVA,R2
MOVCA,@A+DPTR;取当前列显示字码的第二个字节
MOVP2,A;送9-15行控制口
INCR2
MOVP1,R1;送列控制码
INCR1
ACALLD1MS;调用一毫秒延时程序
DJNZR3,MMC3;一屏16列是否显示完
MOVR3,#16
DJNZR5,MMC2;未显示100次,继续
MOVP0,#00H;初始时关显示
MOVP2,#00H;初始时关显示
MOVR6,#32
MMC4:
INCDPTR;一屏反复显示100次完,字码表初值加32,显示下一汉字
DJNZR6,MMC4
DJNZR4,MMC1;7个字符未循环完,继续
;以下字符从右向左移动
MOVR1,#00H;列控制码
MOVR3,#16;列数
MOVR4,#208;移动单片机仿真13个字符,13*16=208列
MMC5:
MOVR5,#10;每屏反复显示10次
MOVR3,#16;列数
MMC6:
MOVR2,#0;取码指针
MMC7:
MOVP0,#00H;初始时关显示
MOVP2,#00H;初始时关显示
MOVA,R2
MOVCA,@A+DPTR;取当前列显示字码的第一个字节
MOVP0,A;送l-8行控制口
INCR2
MOVA,R2
MOVCA,@A+DPTR;取当前列显示字码的第二个字节
MOVP2,A;送9-15行控制口
INCR2
MOVP1,R1;送列控制码
INCR1
ACALLD1MS;调用一毫秒延时程序
DJNZR3,MMC7;一屏16列是否显示完
MOVR3,#16
DJNZR5,MMC6;未显示10次,继续
INCDPTR;一屏反复显示10次完,字码表初值加2,使之从右向左移动
INCDPTR
DJNZR4,MMC5;208列未移动完,继续
;以下字符从左向右移动
MOVR1,#0FFH;列控制码
MOVR3,#16;列数
MOVR4,#208;移动单片机仿真13个字符,13*16=208列
MMC8:
MOVR5,#10;每屏反复显示10次
MOVR3,#16;列数
MMC9:
MOVR2,#0;取码指针
MMC10:
MOVP0,#00H;初始时关显示
MOVP2,#00H;初始时关显示
MOVA,R2
MOVCA,@A+DPTR;取当前列显示字码的第一个字节
MOVP0,A;送l-8行控制口
INCR2
MOVA,R2
MOVCA,@A+DPTR;取当前列显示字码的第二个字节
MOVP2,A;送9-15行控制口
INCR2
MOVP1,R1;送列控制码
DECR1
ACALLD1MS;调用一毫秒延时程序
DJNZR3,MMC10;一屏16列是否显示完
MOVR3,#16
DJNZR5,MMC9;未显示10次,继续
INCDPTR;一屏反复显示10次完,字码表初值加2,使之从右向左移动
INCDPTR
DJNZR4,MMC8;208列未移动完,继续
AJMPMAIN;16列移动完,返回,重新开始显示
D1MS:
MOVR6,#50;50*10*2μs=1ms
DELAY1:
MOVR7,#10
DELAY2:
DJNZR7,DELAY2
DJNZR6,DELAY1
RET
RET
TAB:
;单字循环字符
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H;
DB00H,00H,04H,04H,04H,08H,04H,10H
DB04H,20H,0FFH,0FEH,00H,00H,00H,00H
DB00H,00H,0FFH,0FCH,02H,02H,04H,02H
DB08H,02H,10H,02H,00H,1EH,00H,00H;北
DB00H,00H,20H,04H,20H,08H,27H,90H
DB24H,0A0H,24H,82H,0A4H,81H,64H,0FFH
DB24H,80H,24H,80H,24H,0A0H,27H,90H
DB20H,08H,20H,04H,00H,00H,00H,00H;京
DB00H,00H,10H,02H,11H,02H,12H,02H
DB16H,04H,99H,08H,50H,90H,30H,60H
DB10H,60H,10H,90H,19H,08H,16H,04H
DB12H,02H,11H,02H,10H,02H,00H,00H;交
DB02H,02H,82H,04H,63H,0F8H,00H,04H
DB00H,02H,4FH,0FAH,4AH,42H,4AH,42H
DB6AH,42H,5FH,0FAH,5AH,52H,6AH,4AH
DB4FH,0FAH,00H,02H,00H,02H,00H,00H;通
DB00H,00H,04H,02H,04H,04H,04H,08H
DB04H,10H,04H,20H,04H,0C0H,0FFH,00H
DB04H,0C0H,04H,20H,04H,10H,04H,08H
DB04H,04H,04H,02H,04H,02H,00H,00H;大
DB02H,00H,0CH,40H,08H,40H,48H,40H
DB2AH,40H,1AH,40H,0AH,42H,4AH,41H
DB3AH,0FFH,0BH,40H,0AH,40H,18H,40H
DB2AH,40H,4CH,40H,08H,40H,00H,00H;学
;从右向左移动字符
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H;
DB00H,00H,04H,04H,04H,08H,04H,10H
DB04H,20H,0FFH,0FEH,00H,00H,00H,00H
DB00H,00H,0FFH,0FCH,02H,02H,04H,02H
DB08H,02H,10H,02H,00H,1EH,00H,00H;北
DB00H,00H,20H,04H,20H,08H,27H,90H
DB24H,0A0H,24H,82H,0A4H,81H,64H,0FFH
DB24H,80H,24H,80H,24H,0A0H,27H,90H
DB20H,08H,20H,04H,00H,00H,00H,00H;京
DB00H,00H,10H,02H,11H,02H,12H,02H
DB16H,04H,99H,08H,50H,90H,30H,60H
DB10H,60H,10H,90H,19H,08H,16H,04H
DB12H,02H,11H,02H,10H,02H,00H,00H;交
DB02H,02H,82H,04H,63H,0F8H,00H,04H
DB00H,02H,4FH,0FAH,4AH,42H,4AH,42H
DB6AH,42H,5FH,0FAH,5AH,52H,6AH,4AH
DB4FH,0FAH,00H,02H,00H,02H,00H,00H;通
DB00H,00H,04H,02H,04H,04H,04H,08H
DB04H,10H,04H,20H,04H,0C0H,0FFH,00H
DB04H,0C0H,04H,20H,04H,10H,04H,08H
DB04H,04H,04H,02H,04H,02H,00H,00H;大
DB02H,00H,0CH,40H,08H,40H,48H,40H
DB2AH,40H,1AH,40H,0AH,42H,4AH,41H
DB3AH,0FFH,0BH,40H,0AH,40H,18H,40H
DB2AH,40H,4CH,40H,08H,40H,00H,00H;学
DB02H,20H,02H,20H,02H,20H,22H,20H
DB12H,20H,0AH,3EH,06H,20H,02H,20H
DB02H,20H,02H,20H,02H,30H,42H,28H
DB42H,24H,42H,22H,7CH,20H,00H,00H;北
DB00H,40H,00H,80H,3FH,0FEH,00H,00H
DB00H,00H,0FH,0F8H,08H,08H,08H,08H
DB0FH,0F8H,00H,80H,04H,90H,08H,88H
DB10H,84H,20H,82H,00H,0A0H,00H,0C0H;京
DB00H,20H,00H,40H,00H,80H,7FH,0FEH
DB04H,20H,08H,10H,18H,18H,24H,24H
DB02H,40H,01H,80H,01H,80H,02H,40H
DB04H,20H,08H,10H,70H,0EH,00H,00H;交
DB00H,02H,1FH,0E4H,09H,04H,06H,00H
DB1FH,0E0H,12H,20H,1FH,0E7H,12H,24H
DB12H,24H,1FH,0E4H,12H,24H,16H,24H
DB1AH,24H,00H,0AH,7FH,0F1H,00H,00H;通
DB00H,80H,00H,80H,00H,80H,00H,80H
DB00H,80H,7FH,0FEH,00H,80H,00H,80H
DB01H,40H,01H,40H,02H,20H,04H,10H
DB08H,08H,10H,04H,60H,02H,00H,00H;大
DB00H,00H,20H,88H,11H,10H,09H,20H
DB7FH,0FEH,20H,02H,17H,0F1H,02H,00H
DB01H,00H,01H,00H,7FH,0FEH,01H,00H
DB01H,00H,01H,00H,01H,40H,01H,80H;学
;从左向右移动字符
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H;
DB00H,00H,00H,1EH,10H,02H,08H,02H
DB04H,02H,02H,02H,0FFH,0FCH,00H,00H
DB00H,00H,00H,00H,0FFH,0FEH,04H,20H
DB04H,10H,04H,08H,04H,04H,00H,00H;北
DB00H,00H,00H,00H,20H,04H,20H,08H
DB27H,90H,24H,0A0H,24H,80H,24H,80H
DB64H,0FFH,0A4H,81H,24H,82H,24H,0A0H
DB27H,90H,20H,08H,20H,04H,00H,00H;京
DB00H,00H,10H,02H,11H,02H,12H,02H
DB16H,04H,19H,08H,10H,90H,10H,60H
DB30H,60H,50H,90H,99H,08H,16H,04H
DB12H,02H,11H,02H,10H,02H,00H,00H;交
DB00H,00H,00H,02H,00H,02H,4FH,0FAH
DB6AH,4AH,5AH,52H,5FH,0FAH,6AH,42H
DB4AH,42H,4AH,42H,4FH,0FAH,00H,02H
DB00H,04H,63H,0F8H,82H,04H,02H,02H;通
DB00H,00H,04H,02H,04H,02H,04H,04H
DB04H,08H,04H,10H,04H,20H,04H,0C0H
DB0FFH,00H,04H,0C0H,04H,20H,04H,10H
DB04H,08H,04H,04H,04H,02H,00H,00H;大
DB00H,00H,08H,40H,4CH,40H,2AH,40H
DB18H,40H,0AH,40H,0BH,40H,3AH,0FFH
DB4AH,41H,0AH,42H,1AH,40H,2AH,40H
DB48H,40H,08H,40H,0CH,40H,02H,00H;学
DB04H,40H,04H,40H,04H,40H,04H,44H
DB04H,48H,7CH,50H,04H,60H,04H,40H
DB04H,40H,04H,40H,0CH,40H,14H,42H
DB24H,42H,44H,42H,04H,3EH,00H,00H;北
DB02H,00H,01H,00H,7FH,0FCH,00H,00H
DB00H,00H,1FH,0F0H,10H,10H,10H,10H
DB1FH,0F0H,01H,00H,09H,20H,11H,10H
DB21H,08H,41H,04H,05H,00H,03H,00H;京
DB04H,00H,02H,00H,01H,00H,7FH,0FEH
DB04H,20H,08H,10H,18H,18H,24H,24H
DB02H,40H,01H,80H,01H,80H,02H,40H
DB04H,20H,08H,10H,70H,0EH,00H,00H;交
DB40H,00H,27H,0F8H,20H,90H,00H,60H
DB07H,0F8H,04H,48H,0E7H,0F8H,24H,48H
DB24H,48H,27H,0F8H,24H,48H,24H,68H
DB24H,58H,50H,00H,8FH,0FEH,00H,00H;通
DB01H,00H,01H,00H,01H,00H,01H,00H
DB01H,00H,7FH,0FEH,01H,00H,01H,00H
DB02H,80H,02H,80H,04H,40H,08H,20H
DB10H,10H,20H,08H,40H,06H,00H,00H;大
DB00H,00H,11H,04H,08H,88H,04H,90H
DB7FH,0FEH,40H,04H,8FH,0E8H,00H,40H
DB00H,80H,7FH,0FEH,00H,80H,00H,80H
DB00H,80H,00H,80H,02H,80H,01H,80H;学
END
在Keil软件中完成程序编写、调试和编译之后,生成最终的可支持单片机工作的HEX文件,如图六所示。
经过不断调试和修改,以上程序可以实现预定的功能和要求。
图七、Keil软件程序编写、调试和编译
四、Proteus软件仿真
Proteus软件不仅能仿真单片机外围电路或没有单片机参与的其它电路的工作情况,也能仿真单片机CPU的工作情况。
因此在仿真和程序调试时,是从工程的角度直接看程序运行和电路工作的过程和结果。
从某种意义上看,Proteus仿真基本接近于工程应用。
事实上,为完成本实验,实验过程中,我首先是通过Proteus软件仿真设计了电路图,并进行了大量的修改和调试,才确定了实验的最终的电路图和设计程序。
由此,才开始购买元器件并焊接电路板,最终成功在电路板上显示点阵式汉字,实现了本实验的目的和要求。
Proteus软件仿真图如下所示。
图八、Proteus软件电路仿真
需要说明的是,Proteus软件仿真中,单片机无需连接时钟电路和复位电路,软件默认单片机已具备正常工作的条件。
同时,Proteus软件中,并未提供16×16点阵,实际电路设计中采用了4个8×8点阵合并而成。
图中点阵中间显示中多余的红色和蓝色竖线是8×8点阵的管脚高低电平显示所致,并不影响实际的电路仿真结果。
其中,红色代表管脚处为高电平,蓝色代表管脚处为低电平。
五、电路板元器件选择
实验所用电路板焊接元器件清单如下:
元件编号
规格参数
使用个数
作用说明
U1
AT89C51
1
核心控制芯片
LED1
16×16LED点阵
1
组成汉字显示屏
IC2
74HC154
1
4线-16线译码器
IC3,IC4
10KΩ排阻
2
上拉电阻
R2
1KΩ
1
复位电路
C1
22μF/16V
1
K1
按键开关
1
X1
12MHz晶振
1
时钟电路
C2,C3
20pF
2
电路板
15cm*10cm电路板
1
元件承载体
六、实验体会
本次实验前后共耗时两周有余。
前期首先确定实验课题,并对课题进行探讨研究和资料搜索。
中期,则在确定点阵式显示器设计的课题基础上,了解点阵式显示器的显示原理,设计实验电路原理图,并编写程序在Keil软件中编译和调试,随后根据已编写的汇编程序,在Protues软件中仿真实现模拟显示结果。
在仿真过程中,随时根据仿真的显示结果,修改和调整原汇编程序。
后期,根据完整的实验汇编程序和合理的实验电路原理图,焊接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京 交大 单片机 课程设计 1616 点阵 DOC