北京交大单片机课程设计1616点阵doc.docx
《北京交大单片机课程设计1616点阵doc.docx》由会员分享,可在线阅读,更多相关《北京交大单片机课程设计1616点阵doc.docx(13页珍藏版)》请在冰豆网上搜索。
北京交大单片机课程设计1616点阵doc
北京交大单片机课程设计16×16点阵(DOC)
一、设计任务书
(一)实验目的
1、了解点阵式LED显示原理。
2、熟悉PROTEUS软件电路仿真的使用。
3、掌握单片机与16×16点阵块之间接口电路设计及编程。
4、掌握74HC154芯片工作原理及与单片机的接口电路设计。
(二)设计任务及要求
---1-
利用已学单片机知识,根据点阵式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芯片方正常工作,产生输出。
---2-
图二、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发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
---3-
(二)、汉字的点阵显示原理及字库代码获取方法
实验中,每一个汉字由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,20H44H,20H,44H,20H,7FH,0FCH,44H,22H44H,22H,44H,22H,44H,22H,44H,22H44H,22H,00H,22H,00H,2EH,00H,00H
依靠人工方法获取汉字代码是非常繁琐的事情,为此,我们采用点阵显示字库软件来直接提取字符代码。
汉字点阵显示一般有点扫描、行扫描、列扫描3种。
本实验采用行扫描软件提取汉字字符图面如下。
---4-
图五、点阵显示字库软件提取程序
三、软件设计
(一)设计流程
软件程序主要由开始、初始化、主程序、字库组成,程序设计流程图如下所示。
开始初始化查汉字上部数据及显示查汉字下部数据及显示延时并调整指针N是否显示完Y
图六、程序设计流程图
(二)汇编语言实现如下:
ORG0000H;16*16点阵显示AJMPMAIN
ORG0030H;以下程序从空间地址0030H开始存放,腾出中断向量等所需空间MAIN:
MOVDPTR,#TAB;字码表初址赋值;以下字符单字循环MOVR1,#00H;列控制码
---5-
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行控制口INCR2MOVA,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行控制口INCR2MOVA,R2
MOVCA,@A+DPTR;取当前列显示字码的第二个字节MOVP2,A;送9-15行控制口INCR2
---6-
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行控制口INCR2MOVA,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=1msDELAY1:
MOVR7,#10DELAY2:
DJNZR7,DELAY2DJNZR6,DELAY1RETRETTAB:
;单字循环字符
---7-
DB00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00H;DB00H,00H,04H,04H,04H,08H,04H,10HDB04H,20H,0FFH,0FEH,00H,00H,00H,00HDB00H,00H,0FFH,0FCH,02H,02H,04H,02HDB08H,02H,10H,02H,00H,1EH,00H,00H;北DB00H,00H,20H,04H,20H,08H,27H,90HDB24H,0A0H,24H,82H,0A4H,81H,64H,0FFHDB24H,80H,24H,80H,24H,0A0H,27H,90HDB20H,08H,20H,04H,00H,00H,00H,00H;京DB00H,00H,10H,02H,11H,02H,12H,02HDB16H,04H,99H,08H,50H,90H,30H,60HDB10H,60H,10H,90H,19H,08H,16H,04HDB12H,02H,11H,02H,10H,02H,00H,00H;交DB02H,02H,82H,04H,63H,0F8H,00H,04HDB00H,02H,4FH,0FAH,4AH,42H,4AH,42HDB6AH,42H,5FH,0FAH,5AH,52H,6AH,4AHDB4FH,0FAH,00H,02H,00H,02H,00H,00H;通DB00H,00H,04H,02H,04H,04H,04H,08HDB04H,10H,04H,20H,04H,0C0H,0FFH,00HDB04H,0C0H,04H,20H,04H,10H,04H,08HDB04H,04H,04H,02H,04H,02H,00H,00H;大DB02H,00H,0CH,40H,08H,40H,48H,40HDB2AH,40H,1AH,40H,0AH,42H,4AH,41HDB3AH,0FFH,0BH,40H,0AH,40H,18H,40HDB2AH,40H,4CH,40H,08H,40H,00H,00H;学
;从右向左移动字符
DB00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00H;DB00H,00H,04H,04H,04H,08H,04H,10HDB04H,20H,0FFH,0FEH,00H,00H,00H,00HDB00H,00H,0FFH,0FCH,02H,02H,04H,02HDB08H,02H,10H,02H,00H,1EH,00H,00H;北DB00H,00H,20H,04H,20H,08H,27H,90HDB24H,0A0H,24H,82H,0A4H,81H,64H,0FFHDB24H,80H,24H,80H,24H,0A0H,27H,90HDB20H,08H,20H,04H,00H,00H,00H,00H;京DB00H,00H,10H,02H,11H,02H,12H,02HDB16H,04H,99H,08H,50H,90H,30H,60H
---8-
DB10H,60H,10H,90H,19H,08H,16H,04HDB12H,02H,11H,02H,10H,02H,00H,00H;交DB02H,02H,82H,04H,63H,0F8H,00H,04HDB00H,02H,4FH,0FAH,4AH,42H,4AH,42HDB6AH,42H,5FH,0FAH,5AH,52H,6AH,4AHDB4FH,0FAH,00H,02H,00H,02H,00H,00H;通DB00H,00H,04H,02H,04H,04H,04H,08HDB04H,10H,04H,20H,04H,0C0H,0FFH,00HDB04H,0C0H,04H,20H,04H,10H,04H,08HDB04H,04H,04H,02H,04H,02H,00H,00H;大DB02H,00H,0CH,40H,08H,40H,48H,40HDB2AH,40H,1AH,40H,0AH,42H,4AH,41HDB3AH,0FFH,0BH,40H,0AH,40H,18H,40HDB2AH,40H,4CH,40H,08H,40H,00H,00H;学
DB02H,20H,02H,20H,02H,20H,22H,20HDB12H,20H,0AH,3EH,06H,20H,02H,20HDB02H,20H,02H,20H,02H,30H,42H,28HDB42H,24H,42H,22H,7CH,20H,00H,00H;北DB00H,40H,00H,80H,3FH,0FEH,00H,00HDB00H,00H,0FH,0F8H,08H,08H,08H,08HDB0FH,0F8H,00H,80H,04H,90H,08H,88HDB10H,84H,20H,82H,00H,0A0H,00H,0C0H;京DB00H,20H,00H,40H,00H,80H,7FH,0FEHDB04H,20H,08H,10H,18H,18H,24H,24HDB02H,40H,01H,80H,01H,80H,02H,40HDB04H,20H,08H,10H,70H,0EH,00H,00H;交DB00H,02H,1FH,0E4H,09H,04H,06H,00HDB1FH,0E0H,12H,20H,1FH,0E7H,12H,24HDB12H,24H,1FH,0E4H,12H,24H,16H,24HDB1AH,24H,00H,0AH,7FH,0F1H,00H,00H;通DB00H,80H,00H,80H,00H,80H,00H,80HDB00H,80H,7FH,0FEH,00H,80H,00H,80HDB01H,40H,01H,40H,02H,20H,04H,10HDB08H,08H,10H,04H,60H,02H,00H,00H;大DB00H,00H,20H,88H,11H,10H,09H,20HDB7FH,0FEH,20H,02H,17H,0F1H,02H,00HDB01H,00H,01H,00H,7FH,0FEH,01H,00HDB01H,00H,01H,00H,01H,40H,01H,80H;学;从左向右移动字符
DB00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00H;
---9-
DB00H,00H,00H,1EH,10H,02H,08H,02HDB04H,02H,02H,02H,0FFH,0FCH,00H,00HDB00H,00H,00H,00H,0FFH,0FEH,04H,20HDB04H,10H,04H,08H,04H,04H,00H,00H;北DB00H,00H,00H,00H,20H,04H,20H,08HDB27H,90H,24H,0A0H,24H,80H,24H,80HDB64H,0FFH,0A4H,81H,24H,82H,24H,0A0HDB27H,90H,20H,08H,20H,04H,00H,00H;京DB00H,00H,10H,02H,11H,02H,12H,02HDB16H,04H,19H,08H,10H,90H,10H,60HDB30H,60H,50H,90H,99H,08H,16H,04HDB12H,02H,11H,02H,10H,02H,00H,00H;交DB00H,00H,00H,02H,00H,02H,4FH,0FAHDB6AH,4AH,5AH,52H,5FH,0FAH,6AH,42HDB4AH,42H,4AH,42H,4FH,0FAH,00H,02HDB00H,04H,63H,0F8H,82H,04H,02H,02H;通DB00H,00H,04H,02H,04H,02H,04H,04HDB04H,08H,04H,10H,04H,20H,04H,0C0HDB0FFH,00H,04H,0C0H,04H,20H,04H,10HDB04H,08H,04H,04H,04H,02H,00H,00H;大DB00H,00H,08H,40H,4CH,40H,2AH,40HDB18H,40H,0AH,40H,0BH,40H,3AH,0FFHDB4AH,41H,0AH,42H,1AH,40H,2AH,40HDB48H,40H,08H,40H,0CH,40H,02H,00H;学
DB04H,40H,04H,40H,04H,40H,04H,44HDB04H,48H,7CH,50H,04H,60H,04H,40HDB04H,40H,04H,40H,0CH,40H,14H,42HDB24H,42H,44H,42H,04H,3EH,00H,00H;北DB02H,00H,01H,00H,7FH,0FCH,00H,00HDB00H,00H,1FH,0F0H,10H,10H,10H,10HDB1FH,0F0H,01H,00H,09H,20H,11H,10HDB21H,08H,41H,04H,05H,00H,03H,00H;京DB04H,00H,02H,00H,01H,00H,7FH,0FEHDB04H,20H,08H,10H,18H,18H,24H,24HDB02H,40H,01H,80H,01H,80H,02H,40HDB04H,20H,08H,10H,70H,0EH,00H,00H;交DB40H,00H,27H,0F8H,20H,90H,00H,60HDB07H,0F8H,04H,48H,0E7H,0F8H,24H,48HDB24H,48H,27H,0F8H,24H,48H,24H,68HDB24H,58H,50H,00H,8FH,0FEH,00H,00H;通DB01H,00H,01H,00H,01H,00H,01H,00HDB01H,00H,7FH,0FEH,01H,00H,01H,00HDB02H,80H,02H,80H,04H,40H,08H,20H
---10-
DB10H,10H,20H,08H,40H,06H,00H,00H;大DB00H,00H,11H,04H,08H,88H,04H,90HDB7FH,0FEH,40H,04H,8FH,0E8H,00H,40HDB00H,80H,7FH,0FEH,00H,80H,00H,80HDB00H,80H,00H,80H,02H,80H,01H,80H;学END
在Keil软件中完成程序编写、调试和编译之后,生成最终的可支持单片机工作的HEX文件,如图六所示。
经过不断调试和修改,以上程序可以实现预定的功能和要求。
图七、Keil软件程序编写、调试和编译
四、Proteus软件仿真
Proteus软件不仅能仿真单片机外围电路或没有单片机参与的其它电路的工作情况,也能仿真单片机CPU的工作情况。
因此在仿真和程序调试时,是从工程的角度直接看程序运行和电路工作的过程和结果。
从某种意义上看,Proteus仿真基本接近于工程应用。
事实上,为完成本实验,实验过程中,我首先是通过Proteus软件仿真设计了电路图,并进行了大量的修改和调试,才确定了实验的最终的电路图和设计程序。
由此,才开始购买元器件并焊接电路板,最终成功在电路板上显示点阵式汉字,实现了本实验的目的和要求。
Proteus软件仿真图如下所示。
---11-
图八、Proteus软件电路仿真
需要说明的是,Proteus软件仿真中,单片机无需连接时钟电路和复位电路,软件默认单片机已具备正常工作的条件。
同时,Proteus软件中,并未提供16×16点阵,实际电路设计中采用了4个8×8点阵合并而成。
图中点阵中间显示中多余的红色和蓝色竖线是8×8点阵的管脚高低电平显示所致,并不影响实际的电路仿真结果。
其中,红色代表管脚处为高电平,蓝色代表管脚处为低电平。
五、电路板元器件选择
实验所用电路板焊接元器件清单如下:
元件编号U1LED1IC2IC3,IC4R2C1K1X1C2,C3电路板规格参数AT89C5116×16LED点阵74HC15410KΩ排阻1KΩ22μF/16V按键开关12MHz晶振20pF15cm*10cm电路板使用个数1112111121时钟电路元件承载体复位电路作用说明核心控制芯片组成汉字显示屏4线-16线译码器上拉电阻六、实验体会
---12-
本次实验前后共耗时两周有余。
前期首先确定实验课题,并对课题进行探讨研究和资料搜索。
中期,则在确定点阵式显示器设计的课题基础上,了解点阵式显示器的显示原理,设计实验电路原理图,并编写程序在Keil软件中编译和调试,随后根据已编写的汇编程序,在Protues软件中仿真实现模拟显示结果。
在仿真过程中,随时根据仿真的显示结果,修改和调整原汇