单片机课程设计_16×16点阵式汉字显示
单片机课程设计(点阵显示汉字)

单片机原理与应用课程设计一、课程名称:16*16点阵显示实验二、学生信息:三、内容简介:利用实验系统16×16点阵实验单元,编制程序实现汉字点阵循环显示“感谢您的指导!”字样。
四、设备选取:计算机、字模取样软件、MCS-51 单片机实验系统、138译码电路、连线等。
五、实验步骤:按实验电路图连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与位于地址线A0引出孔所在位置下方的使能控制输出端G作对应连接,该端的寻址范围为FFE0~FFFFH。
⑴把点阵单元的片选信号CS插孔与译码输出插孔Y0相连;⑵用一8芯扁平电缆把点阵单元总线接口与数据总线(D0~D7)任一接口相连;⑶用一根双头实验线把点阵单元的写信号WR插孔与位于六位LED显示左下方的系统控制信号WR/IOWR相连。
⑷编译、装载、连续运行程序,点阵显示模块应循环显示“感谢您的指导!”字样。
六、实验流程图略七、实验电路图八、实验程序:;===========27个汉字移位循环显示主程序===================== ORG 0000HLJMP XB13;==========点阵扫描子程序====================X01A: CLR A ;清列值MOV 0EH, A ;指向零列X023: MOV A, 0EH ;取列值CLR CSUBB A, #10H ;减16(十进制数)JC X0D2 ;末满16列继续扫描下一列RET ;本次扫描完毕返回主程序X0D2: MOV 0F0H, #02H ;0FOH是寄存器B的地址MOV A, 0EHMUL AB ;当前列值与“2”进行十进制调正MOV 82H, A ;调正结果送数据指针DPTRMOV 83H, 0F0H ;(82H、83H分别是DPL、DPH的地址)LCALL XB1F ;取与当前列对应的扫描代码MOV 20H, A;=====================LCALL XB4E ;扫描代码送高八位锁存器;=====================MOV A, 0EH ;取列值MOV 0F0H, #02H ; 0FOH是寄存器B的地址MUL AB ;当前列值与“2”进行十进制调正ADD A, #01H ;调正结果加1送数据指针DPTRMOV R7, ACLR AADDC A, 0F0H ; 0FOH是寄存器B的地址MOV 82H, R7MOV 83H, A ;(82H、83H分别是DPL、DPH的地址)LCALL XB1F ;取与当前列对应的扫描代码;============存储列代码========PUSH DPH ;扫描代码送低八位锁存器PUSH DPLMOV DPTR,#0FFE0H ;0FFE0H是列代码2MOVX @DPTR,A;====================MOV A, #01H ;代码扫描从第一行开始MOV R6, #00HMOV R0, 0EH ;取与当前代码扫描对应的列值INC R0 ;列指针加1SJMP X083X07E: CLR C ;当前代码扫描对应行的查找RLC A ;行高八位左移一位XCH A, R6RLC A ;行低八位带进位左移一位XCH A, R6X083: DJNZ R0, X07E ;不为当前代码扫描对应行返上继续调正;====================MOV DPTR,#0FFE2H ;当前行码送高八位锁存器MOVX @DPTR,AMOV DPTR,#0FFE1H ;当前行码送低八位锁存器MOV A,R6MOVX @DPTR,AMOV R6,#80H ;当前行锁定显示250u秒DJNZ R6,$;====================CLR A ;关闭显示MOV DPTR,#0FFE1H ;0FFE1H是行扫描2MOVX @DPTR,A ;行高八位锁存器清零INC DPTR ;DPTR指向行扫描1MOVX @DPTR,A ;行低八位锁存器清零POP DPLPOP DPH;====================INC 0EH ;列指针加1AJMP X023 ;继续下1行;=========行扫描===========X097: CLR AMOV DPTR,#0FFE1HMOVX @DPTR,AINC DPTRMOVX @DPTR,A;====================X0A0: CLR A ;清扫描个数寄存器MOV R5, A ;从第一个开始扫描X0A2: MOV A, R5 ;取当前扫描个数(R5放扫描个数)CLR C;========= 确定要显示的汉字个数===========SUBB A, #09H ;共扫描9个汉字(图案)JNC X0A0 ;扫描个数满9个返回从第一个开始MOV A, R5;========= 确定显示为循环方式============MOV DPTR,#STLS ;指向汉字表首址MOV 0F0H, #20H ; 设定以完整的一个汉字为最小循环单位放入B寄存器MUL ABADD A, DPLMOV 0AH, AMOV A, DPHADDC A, 0F0HMOV 09H, ACLR AMOV R4, A ;R4放扫描次数X0BD: MOV A, R4CLR CSUBB A, #64H ;每个汉字扫描64次JNC X0CF ;当前汉字扫描次数满64次转MOV R2,09HMOV R1, 0AHACALL X01AINC R4 ;扫描次数加1SJMP X0BDX0CF: INC R5 ;扫描个数加1指向下一个汉字SJMP X0A2;============ 汉字代码表======================================STLS:;-- 笑脸:宽度x高度=16x16 --DB 00H,00H,00H,00H,00H,00H,38H,1CH,44H,22H,82H,41H,00H,00H,00H,00HDB 00H,00H,00H,00H,08H,08H,04H,10H,02H,20H,01H,0C0H,00H,00H,00H,00H;-- 文字: 感--;-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --DB 00H,28H,00H,24H,3FH,0FEH,20H,20H,2FH,0A4H,20H,24H,2FH,0A8H,28H,98HDB 28H,92H,4FH,0AAH,40H,46H,80H,82H,01H,00H,48H,84H,48H,12H,87H,0F2H;-- 文字: 谢--;-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --DB 01H,08H,42H,08H,27H,88H,24H,88H,07H,0BEH,04H,88H,0E7H,88H,24H,0C8H DB 24H,0A8H,2FH,0A8H,21H,88H,2AH,88H,34H,88H,28H,88H,02H,0A8H,01H,10H;-- 文字: 您--;-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --DB 09H,00H,09H,00H,11H,0FCH,32H,04H,54H,48H,99H,50H,11H,48H,12H,44HDB 14H,44H,11H,40H,10H,80H,02H,00H,51H,04H,51H,12H,90H,12H,0FH,0F0H;-- 文字: 的--;-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --DB 10H,40H,10H,40H,20H,40H,7EH,7CH,42H,84H,42H,84H,43H,04H,42H,44HDB 7EH,24H,42H,24H,42H,04H,42H,04H,42H,04H,7EH,04H,42H,28H,00H,10H;-- 文字: 指--;-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --DB 11H,00H,11H,04H,11H,38H,11H,0C0H,0FDH,02H,11H,02H,10H,0FEH,14H,00H DB 19H,0FCH,31H,04H,0D1H,04H,11H,0FCH,11H,04H,11H,04H,51H,0FCH,21H,04H;-- 文字: 导--;-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --DB 00H,00H,3FH,0F0H,20H,10H,20H,10H,3FH,0F0H,20H,04H,20H,04H,1FH,0FCH DB 00H,20H,00H,20H,0FFH,0FEH,08H,20H,04H,20H,04H,20H,00H,0A0H,00H,40H;-- 文字: !--;-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --DB 00H,00H,10H,00H,10H,00H,10H,00H,10H,00H,10H,00H,10H,00H,10H,00HDB 10H,00H,10H,00H,00H,00H,00H,00H,10H,00H,10H,00H,00H,00H,00H,00H;-- 心形:宽度x高度=16x16 --DB 00H,00H,00H,00H,3AH,2CH,41H,42H,40H,82H,40H,02H,40H,02H,20H,04HDB 10H,08H,08H,10H,04H,20H,02H,40H,01H,80H,00H,00H,00H,00H,00H,00H;========================程序初始化==========================XB13: MOV R0, #7FHCLR AXB16: MOV @R0, ADJNZ R0, XB16MOV 81H, #20HJMP X097;============查找与当前列对应的汉字代码子程序====================XB1F: MOV A, 82H ;本次扫描首址与当前列值相加ADD A, R1 ;低八位相加MOV 82H, A ;送DPLMOV A, 83H ;高八位相加ADDC A, R2 ;再加低八位进位位CYMOV 83H, A ;送DPHCLR AMOVC A, @A+DPTR ;取汉字代码RET ; 返回;=====================XB4E: MOV C, 07HMOV ACC.0, CMOV C, 06HMOV ACC.1, CMOV C, 05HMOV ACC.2, CMOV C, 04HMOV ACC.3, CMOV C, 03HMOV ACC.4, CMOV C, 02HMOV ACC.5, CMOV C, 01HMOV ACC.6, CMOV C, 00HMOV ACC.7, C;=====================PUSH DPHPUSH DPLMOV DPTR,#0FFE3H ;0FFE3列代码1MOVX @DPTR,APOP DPLPOP DPHRET;-------------------------------END九、课程总结:通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,懂得了理论联系实际只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是正确的理论,从而提高自己实际动手能力和独立思索的能力。
基于mcs-51的16×16汉字点阵显示

引言单片微型计算机(Single-Chip Microcomputer)简称单片机。
它是在一块芯片上集成了中央处理器、随机存储器、只读存储器、定时/计时器及I/O接口电路等部件,构成一个完整的微型计算机。
8051是MCS-51系列单片机的典型产品,包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。
本文是利用MCS-51系列单片机及LED电子显示管组成的16*16汉字显示硬件电路及软件程序来显示所想要显示的汉字第一章概述1.1 MCS-51系列单片机简介1.1.1MCS-51单片机内部结构8051是MCS-51系列单片机的典型产品,包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,其内部结构图如图1-1所示。
图1-1 8051内部结构图现在我们分别加以说明:中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
数据存储器(RAM):8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
并行输入输出(I/O)口:8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。
点阵16-16显示汉字

doc文档摘<br />要<br />LED 显示器由于其价格低廉,体积小,功耗低,可靠性好得到广泛使用, LED 点阵显示电子广告牌随处可见.现在市场上各类基于LED 的显示屏较多, 但大部分产品为单一模式的LED 显示屏,其在显示内容的更换及显示屏的重组等方面都存在不便之处.随着信息化社会的迅速发展,LED 显示屏正在向显示内容丰富,信息更改方便等方面发展.本系统基于单片机(AT89C51)控制显示汉字采用16×16 LED 点阵. 关键词: 关键词:LED 点阵;汉字; 信息;单片机<br />目<br />录<br />1 课题描述.................................................................................................1 2 设计过程.................................................................................................2 2.1 硬件电路设计...............................................................................2 2.12 硬件电路组成.......................................................................2 2.14 汉字显示原理及字库代码获取方法...................................3 2.2 程序设计.. (5)2.21 程序流程图..........................................................................5 2.22 程序清单...............................................................................6 3 测试.........................................................................................................9 4总结....................................................................................................10<br />参考文献................................................................................................... 11<br />1 课题描述<br />目前,国内的LED 点阵显示屏大部分是单显示型,其显示的内容相对较少, 显示花样较单一.一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM 芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制.国内的另一种LED 显示屏——可编程序型LED 显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点.随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富,信息量大,信息更换速度快等特点.因此传统的LED 显示屏控制系统已经越来越不能满足现代广告宣传业的需要. 而利用PC 机通信技术控制LED 显示屏,则具有显示内容丰富,信息更换灵活等优点. 本课题基于单片机(A T89C51)控制汉字显示采用16×16 LED 点阵. 开发工具:DICE-51 仿真开发系统,Proteus 仿真软件.<br />1<br />2 设计过程<br />设计过程主要分为:硬件电路设计,程序设计<br />2.1 硬件电路设计2.12 硬件电路组成<br />本系统以AT89C51 单片机为核心芯片的电路来实现, 主要由AT89C51 芯片, 时钟电路,复位电路,列扫描驱动电路(74HC154),16×16 LED 点阵5 部分组成,如图1 所示.使用8×8 点阵构建16×16 点阵,构造方法如图 2.<br />图1<br />图2<br />2<br />2.13 基本电路工作原理<br />AT89C51 是一种带4 kB 闪烁可编程可擦除只读存储器(Falsh Programmable and Erasable Read OnlyMemory,FPEROM)的低电压,高性能CMOS 型8 位微处理器,俗称单片机.该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容. 由于将多功能8 位CPU 和闪烁存储器组合在单个芯片中, 能够进行 1 000 次写/擦循环, 数据保留时间为10 年. 他是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.因此,在智能化电子设计与制作过程中经常用到AT89C51 芯片. 时钟电路由AT89C51 的18,19 脚的时钟端(XTALl 及XTAL2)以及12 MHz 晶振X1,电容C2,C3 组成,采用片内振荡方式. 复位电路采用简易的上电复位电路,主要由电阻R1,R2,电容C1,开关K1组成,分别接至AT89C51 的RST 复位输入端. LED 点阵显示屏采用16×16 共256 个象素的点阵.我们把行列总线接在单片机的IO 口,然后把上面分析到的扫描代码送人总线,就可以得到显示的汉字了.但是若将LED 点阵的行列端口全部直接接入89S51 单片机,则需要使用32 条IO 口,这样会造成IO 资源的耗尽,系统也再无扩充的余地.因此,我们在实际应用中只是将LED 点阵的16 条行线直接接在P2 口和P3 口, 至于列选扫描信号则是由4-16 线译码器74HC154 来选择控制, 这样一来列选控制只使用了单片机的4 个IO 口,节约了很多IO 资源,为单片机系统扩充使用功能提供了条件. 汉字扫描显示的基本过程是这样的:通电后由于电阻R1,电容C1 的作用, 使单片机的RST 复位脚电平先高后低,从而达到复位;之后,在C2,C3,X1 以及单片机内部时钟电路的作用下,单片机89C51 按照设定的程序在P2 和P3 接口输出与内部汉字对应的代码电平送至LED 点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4 接口输出列选扫描信号(低电平驱动),从而选中相应的象素LCD 发光,并利用人眼的视觉暂留特性合成整个汉字的显示.<br />2.14 汉字显示原理及字库代码获取方法<br />我们以UCDOS 中文宋体字库为例,每一个字由16 行16 列的点阵组成显示. 即国标汉字库中的每一个字均由256 点阵来表示.我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像.事实上这个汉字屏不仅可以显示汉字,也可以显示在256 象素范围内的任何图形.如查用8 位的AT89C51 单片机控制,由于单片机的总线为8 位,一个字需要拆分为2 个部分. 为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码. 汉字可拆分为上部和下部,上部由8×16 点阵组成,下部也由8×16 点阵组成. 本例通过列扫描方法首先显示左上角的第一列的上半部分,即第0 列的P2.0~<br />3<br />P2.7 口,方向为P2.0 到P2.7,显示汉字"大"时,P2.5 点亮,由上往下排列, 为:P2.0 灭,P2.1 灭,P2.2 灭P2.3 灭,P2.4 灭,P2.5 亮,P2.6 灭,P2.7 灭. 即二进制00000100,转换为十六进制为04h.上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从P3.7 向P3.0 方向扫描,这一列全部为不亮,即为00000000,十六进制则为00h.依照这个方法转向第二列, 第三列, …, 直至第十六列的扫描, 一共扫描32 个8 位, 可以得出汉字"大"的扫描代码,由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上. 上述方法虽然能够让我们弄清楚汉字点阵代码的获取过程,但是依靠人工方法获取汉字代码是一件非常繁琐的事情.为此,我们经常采用字库软件查找字符代码,软件打开后输入汉字,点"检取",十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到程序中即可,如图 3 所示.<br />图2 可见,汉字点阵显示一般有点扫描,行扫描和列扫描 3 种.为了符合视觉暂留要求,点扫描方法的扫描频率必须大于16×64=1 024 Hz,周期小于1 ms 即可. 行扫描和列扫描方法的扫描频率必须大于16×8=128 Hz, 周期小于7.8 ms 即可,但是一次驱动一列或一行(8 颗LED)时需外加驱动电路提高电流,否则LED 亮度会不足.<br />4<br />2.2 程序设计2.21 程序流程图<br />软件程序主要由开始,初始化,主程序,字库组成.其中主程序和子程序的流程图如图 4 和图 5所示<br />图3 主程序流程图<br />5<br />图表4 子程序流程图<br />2.22 程序清单<br />ORG LJMP ORG MOV SETB MOV MOV LCALL CLR MOV ADD MOV MOV ADDC MOV DJNZ LJMP SETB 0000H MIN 0030H SP,#60H P1.0 30H,#10H DPTR,#TAB MIC C A, DPL A, #32 DPL,A A, DPH A, #00H DPH, A 30H,L1 MIX P1.0<br />6<br />MIN: MIX:<br />L1:<br />MIC:<br />LP: LOOP:<br />MOV MOV MOV MOV<br />31H, #80 32H,#16 R1,#1EH R2,#00H<br />EN: MOV A,R2 MOVC A, @A+DPTR MOV P2,A INC R2 MOV A,R2 MOVC A,@A+DPTR MOV P3,A INC R2 MOV A, R1 MOV P1,A LCALL DEL SETB P1.0 RR A DEC A RL A MOV R1,A DJNZ 32H,EN DJNZ 31H,LOOP RET MOV 34H,#2 MOV R4, #250 DJNZ R4,$ DJNZ 34H,DL0 RET TAB: ;计db 02H,00H,02H,00H,42H,00H,33H,0FEH db 00H,04H,02H,08H,02H,10H,02H,00H db 02H,00H,0FFH,0FFH,02H,00H,02H,00H db 02H,00H,06H,00H,02H,00H,00H,00H; ;算db10H,10H,20H,10H,0C0H,11H,5FH,0D2H db 75H,7CH,55H,50H,55H,50H,35H,50H db0D5H,50H,55H,50H,75H,7FH,5FH,0D0H db 40H,10H,40H,30H,00H,10H,00H,00H; ;机db08H,20H,08H,0C0H,0BH,00H,0FFH,0FFH db 09H,01H,08H,82H,00H,04H,3FH,0F8H<br />7<br />DEL : DL0:<br />db 20H,00H,20H,00H,20H,00H,7FH,0FCH db 20H,02H,00H,02H,00H,0EH,00H,00H; ;科db24H,08H,24H,10H,24H,60H,25H,80H db 7FH,0FFH,0C5H,00H,44H,80H,00H,40H db24H,40H,12H,40H,00H,40H,0FFH,0FFH db 00H,80H,01H,80H,00H,80H,00H,00H; ;学db02H,20H,0CH,20H,88H,20H,69H,20H db 09H,20H,09H,22H,89H,21H,69H,7EH db09H,60H,09H,0A0H,19H,20H,28H,20H db 0C8H,20H,0AH,60H,0CH,20H,00H,00H; ;与db00H,10H,00H,10H,00H,10H,0FFH,10H db 11H,10H,11H,10H,11H,10H,11H,10H db11H,10H,11H,32H,11H,11H,11H,02H db 33H,0FCH,11H,00H,00H,00H,00H,00H; ;机db08H,20H,08H,22H,08H,41H,0FFH,0FEH db 08H,80H,08H,01H,11H,81H,11H,62H db11H,14H,0FFH,08H,11H,14H,11H,64H db 31H,82H,10H,03H,00H,02H,00H,00H; ;术db04H,08H,04H,08H,04H,10H,04H,20H db 04H,40H,04H,80H,05H,00H,0FFH,0FFH db05H,00H,44H,80H,24H,40H,34H,20H db 04H,10H,0CH,18H,04H,10H,00H,00H; ;史db08H,10H,08H,20H,08H,0C0H,0BH,00H db 0FFH,0FFH,09H,00H,08H,90H,00H,20H db08H,0C0H,0BH,00H,0FFH,0FFH,09H,00H db 08H,0C0H,18H,60H,08H,40H,00H,00H; ;明db04H,44H,0CH,0C6H,35H,44H,0C6H,48H db 0CH,48H,00H,0FCH,3EH,80H,2AH,80H db6AH,80H,0ABH,0FFH,2AH,80H,2AH,88H db 7EH,84H,21H,0F8H,00H,80H,00H,00H; ;祥db04H,44H,0CH,0C6H,35H,44H,0C6H,48H db 0CH,48H,00H,0FCH,3EH,80H,2AH,80H db6AH,80H,0ABH,0FFH,2AH,80H,2AH,88H db 7EH,84H,21H,0F8H,00H,80H,00H,00H END<br /> 8<br />3 测试<br />在完成编写程序的编译和仿真之后,运行测试结果每个字显示完后向右移, 依次显示"陕西理工学院计算机科学与技术史明祥" ,如图6 显示"林"时的结果.<br />图5<br />9<br />4总<br />结<br />这次课程设计我从硬件,软件,仿真系统下应用以前学习的汇编语言编程基础以及微机原理和单片机的一些知识,综合起来才完成了这个基于单片机的汉字显示控制设计. 在本次的课程设计中,主要运用了我以前所学的汇编语言和微机原理方面的知识,通过对程序的不段修改和调试,最终,实现了所要达到的效果.并且的这次设计过程中对硬件设计有了更深的认识,获得了很大的收获. 最后,感谢老师的细心指导,希望这个关于16*16 点阵显示的设计和实现能够为他人所用和扩展.<br />10<br />参考文献<br />[1] 戴梅萼.《微型计算机技术及应用》清华大学出版社. [2] 李学礼.《基于Proteus 的8051 单片机实例教程》电子工业出版社. [3]李华.单片机实用接口技术北京航空航天工业出版社[4]张菊鹏.计算机硬件技术基础(第二版)清华大学出版社[5] 孙德文.微型计算机及其接口技术经济科学出版社<br />11。
单片机课程设计16×16led点阵显示

16×16LED点阵显示摘要单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。
所以研究LED显示有实用的意义。
LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
本设计是4个16×16点阵LED电子显示屏的设计。
整机以美国ATMEL公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。
通过该芯片控制一个行驱动器74LS154和八个列驱动器74HC595来驱动显示屏显示。
该电子显示屏可以显示各种文字或单色图像,全屏能显示4个汉字,采用16块8 x 8点阵LED显示模块来组成4个16x16点阵显示模式。
显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。
关键词:AT89C51单片机 LED 16*16点阵显示动态显示目录第一章绪论 (1)1.1 设计课题背景知识 (1)1.2 问题提出 (3)1.3 LED显示屏的发展 (4)第二章功能要求及方案论证 (6)2.1 功能要求 (6)2.1 功能要求 (6)第三章系统电路的设计 (9)3.1 设计框图及介绍 (9)3.2 51系列单片机简介 (9)3.3 单片机最小应用系统电路设计 (13)3.4 LED点阵介绍 (14)3.5 LED显示方式 (14)3.6 点阵的移动 (17)3.7 点阵的颜色 (21)3.8 LED阵列驱动电路 (21)3.9 单片机延时子程序 (22)第四章系统程序的设计 (24)4.1 显示驱动程序 (24)4.2 系统主程序 (25)第五章调试及性能分析 (32)5.1 开发环境介绍 (32)5.2 理论性能分析 (32)5.3 系统调试 (33)第六章总结 (34)致谢 (35)附录 (36)一. 程序代码 (36)系统主程序 (37)二.主要芯片介绍 (42)三.点阵左移显示的流程图 (46)四.元件清单 (47)五.参考文献 (47)六.仿真电路图 (48)第一章绪论1.1 设计课题背景知识单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
1616点阵汉字显示设计

单片机原理及接口技术设计报告设计的重点和难点重点和难点一、单片机I/O口或以扩展锁存器的方式控制点阵显示。
单片机I/O口和扩展锁存器相结合的方式控制16×16点阵显示汉字。
I/O口分别提供字形代码(列码)、扫描信号(行码),凡字形代码位为“1”、行扫描信号为“1”点亮该点,否则熄灭;通过逐行扫描循环点亮字形或曲线。
二、单片机与16×16点阵块之间接口电路设计及编程。
16×16点阵块共阳的接法:把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起。
点阵显示汉字的编程需要查表指令,也就是MOVC A,@A+DPTR指令,DPTR作为基址寄存器时,其值为16位。
编写查表程序时,首先把字模的首址送入DPTR中,再将要查找的数据序号送入A中,然后就可以使用该指令进行查表操作,并将结果送累加器A中。
使点阵显示器显示“绥化学院”四个字。
三、LED点阵显示系统显示汉字的取模。
一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。
首先显示的是左上角的第一列的上半部分,亮的点为“1”,不亮的点为“0”由上往下排列组成了8位二进制数,将其转换为16进制。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,仍设计成由上往下扫描。
然后单片机转向上半部第二列。
这一列完成后继续进行下半部分的扫描。
依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出32个16进制数就是汉字字模。
2.设计工作原理16×16点阵显示的工作原理要显示文字或图形,控制与组成这些文字或图形的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。
16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,16×16的点阵需要256/8=32个锁存器。
89S51单片机的16×16点阵汉字显示的设计

• 134•针对LED 点阵显示汉字需要占用单片机多个并行口的问题,提出了基于89S51单片机的16×16点阵汉字显示设计,利用74HC138和74HC595对单片机并行口进行扩展,从硬件设计、软件设计方案等关键环节,分别进行了详细讨论。
随着单片机技术的发展,LED 点阵屏作为文字和图形显示的新型媒体,由于亮度高、耗能低、色彩鲜艳、寿命长等特点,迅速出现在学校、医院、车站等场所。
但LED 点阵显示需要占用单片机多个并行口,而通用移位寄存器74HC595T 和译码器74HC138,可以实现对单片机IO 的扩展,从而节约了大量的并口资源。
本设计详细介绍了74HC138和74HC595芯片在1616×16点阵LED 显示屏的应用。
1 电路总体设计16×16点阵汉字显示电路如图1所示,它由一片16×16点阵LED 显示屏、两片74HC138构成的行控制单元、两片74HC595构成的列控制单元及AT89S51单片机构成。
列控制单元用于输入数据,而行控制单元用于逐行扫描。
图1 系统总体结构1.1 16×16点阵工作原理本设计采用的是共阴16×16点阵显示模块。
它由256只发光二极管按一定规律安装成方阵,从内部结构如图2所示,可以看出,总共有16行和16列,每行的发光二极管阴极相连,每列的发光二极管阳极相连。
在行和列的交叉处有一个发光二极管,要使其中任一个二极管发光,则其对应行为低电位,而对应的列为高电位即可。
1.2 行控制单元行控制单元的控制原理是:先使第一行Y 0为低电平,其余行为高电平,显示第一行数据;然后第二行Y 1为低电平,其余行电平,显示第二行数据。
按照这个规律每行以较快的速度不断进行刷新,由于发光二极管的余辉效应和人的视觉暂留现象两个因素,给人的印象就是一组静态的数据,不会产生闪烁感。
动态显示能够节省I/O 端口,且功耗低。
本设计采用74HC138三位译码器。
16x16点阵显示汉字

LOOP:MOV R7,#00
;初始化列显示数据
MOV R6,20H
MOV R1,#16H
;是否显示完成一个汉字
MAIN:MOV A,R6
;主程序入口
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
INC R6
MOV A,R6
MOVC A,@A+DPTR
MOV P2,AINC R616*16 Nhomakorabea阵显示汉字
1
判断点阵是共 8*8点阵连接 阴还是共阳级 为16*16点阵
端口连接方法 和显示原理
测试哪个方向 是行,哪个方 向是列
是否可完成一 个汉字显示及 字模软件应用
动态显示汉字 原理
2
8*8点阵连接为16*16点阵
3
4
端口连接方法和显示原理
因为单片机的I/O口是有限的,所以LED汉字的显示 使用到了动态扫描,一般行数据用到了P0,P2口,列 数据用到了P1口并且用了一个4-16线译码器。因为 我们每次只需要点亮一列并延时一段时间,就可以使 我们认为汉字是一直在显示的。
DJNZ 22H,LOOP2
AJMP START
DELAY:MOV R4,#01
;延时程序
D1:MOV R3,#20
DJNZ R3,$
DJNZ R4,D1
RET
TAB: XXXXXXXXXXXXXXXXXXXXXXXXXXX
13
14
制作:W.K.
15
DELAY:MOV R1,#2 D1: MOV R2,#10
DJNZ R2,$ DJNZ R1,D1 RET TAB: DB 0x10,0x80,0x10,0x80,0x50,0x80,0x50, 0xFC,0x7D,0x54,0x52,0x54,0x90,0x54, 0x10,0x94 DB 0x1C,0x94,0xF1,0x24,0x52,0x24,0x10, 0x44,0x10,0x44,0x10,0x84,0x11,0x28, 0x10,0x10 END
LED 点阵显示设计(单片机课程设计)

LED 点阵显示设计利用LED 点阵(16*16 个发光二极管)交替显示自己名字的每个汉字。
一、预备知识:目前, LED 电子显示屏广泛应用于各种公共场所, 如南通大学新校区图书馆底楼LED 大屏幕、新校区学生食堂各种显示菜价的LED 电子屏等, 在车站、码头、机场、商场、医院、宾馆、银行、证券市场等更是随处可见LED 电子显示屏的身影。
实验箱上由4 块8*8 LED 点阵模块组成1 个16*16 的LED 点阵, 每个LED 发光管其实就是1 个像素点, 而通常汉字显示时所需像素点就是16*16。
汉字显示需要“字模生成软件”生成显示的点阵数据, 通常“字模生成软件”支持使用指定字体、指定取点模式及字节排列模式, 支持字体加粗、斜体、删除线、下划线等设置等。
“字模生成软件”的具体使用见课程设计讲解视频。
二、设计目的1.了解、掌握LED 点阵显示的控制原理, 为后续的LCD 显示控制打下基础;2.熟悉、掌握串行输入并行输出移位寄存器的使用;3.掌握单片机串行接口扩展原理和编程方法。
三、设计内容1.设计LED 点阵模块显示控制电路的原理图;2.设计程序流程图;3、编程调试, 在LED 点阵模块上交替显示自己名字的每个汉字, 交替间隔时间控制在0.5~1 秒之间。
四、参考接线LED 点阵模块显示控制所用导线较多, 可参见LED 点阵模块原理说明及实验箱电路原理图。
五、设计步骤程序:ORG 0000HLJMP MAINMAIN:MOV SP,#6FHMOV B,#80HMOV R0,#0MOV R3,#100MAIN_LOOP:MOV DPTR,#LED_TABMOV R1,#8MOV R2,#8MAIN_LOOP_H:MOV A,BMOV P2,ARR AMOV B,ALCALL FASONGLCALL FASONGLCALL DELAYDJNZ R1,MAIN_LOOP_H MOV P2,#00HMAIN_LOOP_L:MOV A,BMOV P1,ARR AMOV B,ALCALL FASONGLCALL FASONGLCALL DELAYDJNZ R2,MAIN_LOOP_L MOV P1,#00HDJNZ R3,MAIN_LOOP MOV R3,#100MAIN_LOOP1:MOV R1,#8MOV R2,#8MOV DPTR,#LED_TAB1 MAIN_LOOP_H1:MOV A,BMOV P2,ARR AMOV B,ALCALL FASONGLCALL FASONGLCALL DELAYDJNZ R1,MAIN_LOOP_H1 MOV P2,#00HMAIN_LOOP_L1:MOV A,BMOV P1,ARR AMOV B,ALCALL FASONGLCALL FASONGLCALL DELAYDJNZ R2,MAIN_LOOP_L1DJNZ R3,MAIN_LOOP1MOV R3,#100MAIN_LOOP2:MOV R1,#8MOV R2,#8MOV DPTR,#LED_TAB2MAIN_LOOP_H2:MOV A,BMOV P2,ARR AMOV B,ALCALL FASONGLCALL FASONGLCALL DELAYDJNZ R1,MAIN_LOOP_H2 MOV P2,#00HMAIN_LOOP_L2:MOV A,BMOV P1,ARR AMOV B,ALCALL FASONGLCALL FASONGLCALL DELAYDJNZ R2,MAIN_LOOP_L2MOV P1,#00HDJNZ R3,MAIN_LOOP2 LJMP MAINFASONG:MOV A,@R0MOVC A,@A+DPTRCLR TIMOV SBUF,AJNB TI,$CLR TIINC DPTRRETDELAY:MOV R7,#4DL Y_LOOP:DJNZ R6,$DJNZ R7,DL Y_LOOP RETDELAY2:MOV R7,#250DL Y_LOOP2:MOV R6,#250DJNZ R6,$DJNZ R7,DL Y_LOOP2 RETLED_TAB:DB …….LED_TAB1:DB …….LED_TAB2: DB……..END原理图:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要 (1)Abstract (2)1设计原理 (3)1.1 MCS-51单片机的结构及编程方法 (3)1.2 16*16点阵LED原理 (5)1.3 3-8译码器原理 (6)2.设计方案介绍 (7)2.1 设计总体思路 (7)2.2 与题目相关的具体设计 (7)2.3程序设计流程图 (8)3.源程序,原理图和仿真图 (9)3.1程序清单(见附录) (9)3.2电路图 (9)3.2.1电路原理图 (9)3.2.2电路图分析 (9)3.3仿真图 (10)4性能分析 (11)5.总结和心得 (12)6.参考文献 (13)附录:程序代码 (14)摘要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。
包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。
在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。
关键词:MCS-51;LED;单片机AbstractAs a popular display device component, LED dot-matrix display board consists of several independent LED (Light Emitting Diode). The LED dot-matrix display board can display the number or sign, and it is usually used to show time, speed, the state of system etc. This paper introduces a kind of simple 16x16 LED display screen design process based on MCS-51 single chip minicomputer . The detail hardware scheme, software flow and assemble language programmer design and so on is followed. The display part can be cascaded to meet the need. The practice proves the design is low-cost and effective.Key words: MCS-51;LED;MCU1设计原理1.1 MCS-51单片机的结构及编程方法MCS-51单片机的组成: CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。
8051单片机的组成框图(1)cpu中央处理器由运算器和控制器组成,是8位的cpu,具有布尔运算和8位寻址功能。
运算器完成算术运算和逻辑运算。
CPU根据PC中的地址将欲执行指令的指令码从存储器中取出,存放在IR中,ID对IR中的指令码进行译码,定时控制逻辑在OSC 配合下对ID译码后的信号进行分时,以产生执行本条指令所需的全部信号。
(2)存储器MCS-51单片机按程序存储器可分为内部无ROM型(如8031)和内部有ROM型(如8051)两种,连接时引脚有区别。
程序存储器结构如右图所示:程序存储器:一般将只读存储器(ROM)用做程序存储器。
可寻址空间为64KB,用于存放用户程序、数据和表格等信息。
数据存储器:一般将随机存储器(RAM)用做数据存储器。
可寻址空间为64KB。
MCS-51数据存储器可分为片内和片外两部分。
(3)特殊功能寄存器(SFR)MCS-51有21个特殊功能寄存器(也称为专用寄存器),包括算术运算寄存器、指针寄存器、I/O口锁存器、定时器/计数器、串行口、中断、状态、控制寄存器等,它们被离散地分布在内部RAM的80H~FFH地址单元中(不包括PC),共占据了128个存储单元,构成了SFR存储块。
其字节地址可被8整除的SFR 可位寻址。
SFR反映了MCS-51单片机的运行状态。
80C51内部结构(4)I/O接口I/O接口是MCS-51单片机对外部实现控制和信息交换的必经之路,用于信息传送过程中的速度匹配和增加它的负载能力。
8051内部有4个8位并行接口P0, P1, P2, P3,有1个全双工的可编程串行I/O接口。
(5)定时器/计数器8051内部有两个16位可编程序的定时器/计数器,均为二进制加1计数器,分别命名为T0和T1。
(6)中断系统8051可处理5个中断源(2个外部,3个内部)发出的中断请求,并可对其进行优先权处理。
外部中断的请求信号可以从P3.2, P3.3引脚上输入,有电平或边沿两种触发方式;内部中断源有3个,2个定时器/计数器中断源和1个串行口中断源。
8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP 等电路组成。
1.2 16*16点阵LED原理下图为8×8点阵LED外观及引脚图,其等效电路如下图所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y轴。
因为在当前Proteus仿真库中找不到16*16的LED点阵,所以在该设计中可以用4块8*8的LED连线来代替,这点不难理解。
点阵LED扫描法介绍:点阵LED一般采用扫描式显示,实际运用分为三种方式:(1)点扫描;(2)行扫描;(3)列扫描。
若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。
若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms 即可符合视觉暂留要求。
此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。
1.3 3-8译码器原理由于3-8译码器74LS138的原理及功能我们都已经很熟悉,在这里就不重复累赘了。
2.设计方案介绍2.1 设计总体思路本次课程设计的要求是在16×16点阵的显示器件上滚动显示,汉字由于要用16*16点阵显示汉字,而80C51的I/O接口是8位的,我们可以用4个8*8点阵来组成。
由于80C51的I/O口不多(只有4组,32个),为了节约I/O口,我们用74HC138(3线-8译码器)作为点阵的列驱动,P2口和P0口作为数据线。
为了显示16*16的点阵汉字,我们需建一个表先将要显示的汉字的点阵码存起来,然后编写一个合适的查表程序就可以按给定要求显示汉字。
2.2 与题目相关的具体设计1).汉字的显示:可以采用扫描的方式,先使一个I/O口产生一个选行(列)信号(通过74HC138),先选中一行,对选中的行进行扫描,然后用另外2组I/O 口输送数据,这样一个字的1/16就送到LED点阵上了,接着选下一行,这样经过16次就可以显示一个字了,再适当延时使显示的字清晰。
2).汉字的移动:在LED上显示一个汉字并延时后,可以通过增加所取表的地址,这样下一次LED上显示的字就移动了一个点阵,可以通过适当的设计来控制汉字移动循环的的次数。
3).键盘控制汉字:可以用单片机的P3口实现键盘的控制作用P3.0到P3.3作为行扫描信号,P3.4到P3.7作为列扫描信号,这样的话4行4列可以形成16个按键。
每个按键可以对应相应的汉字显示。
2.3程序设计流程图系统主程序流程图显示驱动程序流程图3.源程序,原理图和仿真图3.1程序清单(见附录)3.2电路图3.2.1电路原理图3.2.2电路图分析该原理图中89C51单片机为基础一共分成三大部分:汉字显示部分,汉字移动部分以及键盘选择部分。
P1.0到P1.3接两个74LS138给16*16点阵提供选行信号。
P0.0到P0.7接16*16点阵的上半块作为数据线,给16*16点阵上部提供数据,点亮相应的LED,P2.0到P2.7接16*16点阵的下半块作为数据线,给16*16点阵下部提供数据,点亮相应的LED。
74LS138的八个输出Y0到Y7一次连到4个8*8LED用于对行进行扫描与选通。
P3.0到P3.7用作键盘扫描输入输出,接16个按键,P3.0到P3.3为行扫描信号,P3.4到P3.7为列扫描信号。
通过键盘部分可以进行汉字选择,一个按键对应一个不同的字。
就有16种不同的汉字。
3.3仿真图4性能分析程序通过keil软件编译生成.hex文件加载到protues软件的原理原理图中能够进行仿真,该程序段要实现以下功能:1、点阵式汉字显示电路;2、单个汉字滚动显示功能;3、多个汉字滚动显示功能;4、4×4键盘进行文字选择;5、显示内容可以保存在存储器中;系统开始显示后,汉字先从左向右移动,汉字显示很清晰明亮,效果很不错。
用键盘进行汉字选择依次显示不同汉字。
既可以单个汉字滚动显示,又可以多个汉字滚动显示。
显示内容可以保存在存储器中。
P1.0到P1.3接两个74LS138给16*16点阵提供选行信号。
P0.0到P0.7接16*16点阵的上半块作为数据线,给16*16点阵上部提供数据,点亮相应的LED,P2.0到P2.7接16*16点阵的下半块作为数据线,给16*16点阵下部提供数据,点亮相应的LED。
74LS138的八个输出Y0到Y7一次连到4个8*8LED用于对行进行扫描与选通。
P3.0到P3.7用作键盘扫描输入输出,接16个按键,P3.0到P3.3为行扫描信号,P3.4到P3.7为列扫描信号。
通过键盘部分可以进行汉字选择,一个按键对应一个不同的字。
那马就有16种不同的汉字显示。
基本上实现了上述功能。
5.总结和心得作为一名电信专业的大三学生,我觉得这个单片机是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是专业课。
我们在课堂上掌握的仅仅是专业课的理论知识,学习单片机已经有一年了,已经掌握了单片机的原理和如何用汇编语言编写程序,但是很少有机会取实践。
我想做类似的课程设计,就为我们提供了良好的实践平台,这样能使我们对单片机及其应用认识和应用更加熟练,为我们以后走向社会工作打下良好基础。
在做单片机课程设计的过程中,我感触最深的当属查阅大量的设计资料了。
为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。
为了写好程序,完成任务需查阅很多的资料,首先要先搞懂原理,比如8*8点阵的组成及其是如何工作的,汉字在16*16点阵是如何显示的,键盘是如何扫描,怎样实现汉字滚动显示,只有搞懂这些才能更好的设计出一个完善的系统。