基于AT89S52的8*8点阵设计.doc_第1页
基于AT89S52的8*8点阵设计.doc_第2页
基于AT89S52的8*8点阵设计.doc_第3页
基于AT89S52的8*8点阵设计.doc_第4页
基于AT89S52的8*8点阵设计.doc_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于AT89S52单片机8*8点阵设计 毕业设计报告课题:基于AT89S52的8*8点阵设计系 部: 机电工程系专 业: 机电一体化班 级: 机电074班姓 名: 虞 风学 号: 0702043417指导老师: 周 芸20103 目录绪论-1引言-2第一章 系统基本原理及功能要求-3 2.1 设计思想-3 2.2 功能要求-4第二章 硬件设计-5 3.1 单片机的最小系统-5 3.1.1 电源模块-5 3.1.2 复位电路-6 3.1.3 晶振电路-6 3.2 键盘调整单元-7 3.3 LED阵列显示单元-8 3.4 LED阵列驱动单元-9 3.5 74hc573的基本参数-10 3.6 AT89S52的基本参数-12第三章 软件设计-134.1 阵列跑马灯程序设计-134.2 按键去抖及键盘程序-144.3 主程序设计-144.4 本设计的全部程序-15第四章 安装机及调试-225.1 元器件列表-225.2 调试中出现的常见问题-22结束语-23谢词-24参考文献-25摘要单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。广大工程技术人员通过学习有关单片机的知识后,也能依靠自己的力量来开发所希望的单片机系统,并可获得较高的经济效益。正因为如此,在我国,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、家用电器等各个方面。在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字。汉字显示方式是先根据所需要的汉字提取汉字点阵(如1616 点阵),将点阵文件存入ROM,形成新的汉字编码;而在使用时则需要先根据新的汉字编码组成语句,再由MCU根据新编码提取相应的点阵进行汉字显示。此次设计采用8*8点阵,相对而言比较简单。关键词:单片机,8*8点阵序言1976年Intel公司推出的以一款8位单片机MCS-48,宣告了单片机时代的到来。短短几十年里,单片机技术获得了长足的发展,在越来越广泛的领域内大显身手。单片机系统的开发是硬件、软件相结合的过程。要完成单片机系统的开发,不仅需要掌握编程技术,还需要针对实际应用选择合理的单片机芯片和外围器件, 并因此为基础,设计硬件电路。通过具体的实例来学习单片机系统开发是一条科学的途径。设计内容本设计共分为四章,描述了单片机8*8点阵的具体设计方法以及调试过程第一章为系统基本原理及功能要求,介绍了设计思路,具体的工作方式,以及本设计功能要求第二章为硬件设计,主要是单片机的最小系统,主要有电源电路、复位电路、键盘电路、显示电路、以及锁存器的工作方式等第三章为软件设计,主要为键盘程序,主程序,以及整个设计的程序等第四章为电路的安装及调试,列出了元器件列表以及在调试过程中的加工方法等本设计的特色,采用USB供电,方便快捷。线路布局合理,提供了扩展口,供其他电路使用。第一章 系统基本原理及功能要求2.1 设计思想LED 发光灯可以分为单色发光灯、双色发光灯、三色发光灯、面发光灯、闪烁发光灯、电压型发光灯等多种类型。按照发光灯强度又可以分为普通亮度发光灯、高亮度发光灯、超高亮度发光灯等。这种单个的发光灯适宜用做指示灯,如电源指示、电路状态指示灯,进而对能够转变成电信号的各种物理量进行指示。也可以用多个 LED发光灯组成固定的字符或图形进行显示,如大型剧场会堂的出入口及洗手间的显示。和很多应用术语一样,LED图文显示屏并没有一个公认的严格的定义,一般把显示图形和/或文字的LED显示屏称为图文屏。这里所说的图形,是指由单一亮度线条组成的任意图形,以便于不同亮度(灰度)点阵组成的图像相区别。图文显示屏的主要特征是只控制LED点阵中各发光器件的通断(发光或熄灭),而不控制LED的发光强弱。LED图文显示屏的外观可以做成条形,叫做条形图文显示屏(简称条屏),也可以按一定高度比例做成矩形的平面图文显示屏。其实条屏只不过是其宽度远大于高度的平面显示屏,在显示与控制的原理上并无区别。不论显示图形还是文字,都是控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光。通常事先把需要显示的图形文字转换成点阵图形,在按照显示控制的要求以一定的格式形成显示数据。对于只控制通断的图文显示屏来说,每个LED发光器件占据数据中的1位(1bit),在需要该LED器件发光的数据中相应的位填1,否则填0。当然,根据控制电路的安排,相反的定义同样时可行的。这样依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件。显示图形的数据文件,其格式相对自由,只要能够满足显示控制的要求即可。文字的点阵格式比较规范,可以采用现行计算机通用的字库字模。组成一个字的点阵,其大小也可以有1616、2424、3232、4848等不同规格。用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,就可以得到满意的显示效果。因而采用点阵式图文显示屏显示经常需要变化的信息,是非常有效的。图文显示屏的颜色,有单色、双色、和多色几种。最常用的是单色图文屏。单色屏多使用红色或橘红色或橙色LED点阵单元。双色图文屏和多色图文屏,在LED点阵的每一个“点”上布置有两个或多个不同颜色的LED发光器件。换句话说,对应于每种颜色都有自己的显示矩阵。显示的时候,各颜色的显示点阵是分开控制的。事先设计好各种颜色的显示数据,显示时分别送到各自的显示点阵,即可实现预期效果。每一种颜色的控制方法和单色的完全相同,因此掌握了单色图文显示屏的原理,双色屏和多色屏就不难理解了。为了吸引观众增强显示效果,可以有多种显示模式。最简单的显示模式是静态显示。这里所说的“静态显示模式”不同于静态驱动方式。与静态显示模式相对应,就有各种动态显示模式,它们所显示的图文都是能够动的。按照图文运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。产生不同显示模式的方法,并不意味着一定要重新编写显示数据,可以通过一定的算法从原来的显示数据直接生成。例如,按顺序调整行号,可以使显示图文产生上下平移;而顺序调整列显示数据的位置,就可以达到左右平移的目的;同时调整行列顺序,就能得到对角线平移的效果。其它模式的数据刷新,也可找到相应的算法。不过当算法太复杂,太浪费时间的话,也可以考虑预先生成刷新数据,存储备用。刷新的时间控制,要考虑运动图形文字的显示效果。刷新太慢,动感不显著;刷新太快了,中间过程看不清。一般刷新周期可控制在几十毫秒范围之内。2.2 功能要求:单片机上电,此时显示水平向左滚动显示“祝你生日快乐”,没有按键按下,则循环显示;当按键1按下时,则显示“I believe I can。”,显示完后自动跳转为“祝你生日快乐”,若按下第按键2是,则垂直显示“d p j”以及笑脸。第二章 硬件设计本设计选择AT89S52为核心控制元件,设计了一个关于LED阵列的应用课题,整个系统有单片机模块,8*8LED显示模块,键盘模块,电源模块,以及单片机的复位及晶振模块等组成,通过本项目展开,可对16*16以及16*64等系列的LED进行学习和研究。3.1 单片机的最小系统3.1.1电源模块单片机采用USB供电,电源电压为+5v,电流为100500毫安,满足芯片的工作条件。如图3-1图3-1电源电路3.1.2复位电路R1为1k R2为10k C1为10uf。如图3-2图3-2复位电路3.1.3晶振电路在单片机的XTAL1 XTAL2外接11.0592MHZ的晶振,就构成了自激振荡器并在单片机内部产生时钟脉冲信号,C1和C2作用是稳定频率和快速启振,电容值取为30uf。如图3-3图3-3晶振电路3.2按键调整单元图3-4键盘电路S1接P1.0口,S2接P1.1口。如图3-4(1)当按下S1时转变图样为水平滚动的英文,英文滚动结束时当按下S2时,为垂直滚动的汉字。同样反过来也可以。(2)这里存在按键抖动,可用硬件去抖,也可以用软件去抖,因为硬件去抖所需要的零件较多,所占的电路面积较大,增加了电路的成本和复杂度,所以采用软件去抖,下一张详解。3.3 LED整列LED阵列是将多个LED以矩阵方式排成为一个器件,其中各LED阵列的引脚有规律地连接。如图3-5图3-5 LED阵列对于共阳型8*8LED阵列而言,每行的LED的阳极连接在一起,即为行引脚;而每列LED的阴极连接在一起,极为列引脚,通常是站在行的角度来看,所以成为共阳型。若需要点亮其中的LED,则需要行信号与列信号交集。若需要第一行、第二列的LED点亮,则需要将第一行的阳极接高电平,第二列的阴极接低电平,这样才能形成一个正向回路,该LED才会被点亮。假如送到行引脚的信号为扫描信号,在如图 所示的8行信号中只有一个为高电平,其余为低电平,则成为高电平扫描。换而言之,任何时间里只有一行的LED可能会亮。而所要点亮的信号则有列引脚送入低电平信号,即显示信号。当信号切换的足够快时,我们将感觉到整个LED阵列是亮的,而不是只亮其中一行而已。若连接到行引脚的是LED的阴极,则成为“共阴极”若要点亮这种LED阵列,其行引脚必须采用低电平扫描,而列引脚为高电平信号。3.4 LED阵列的驱动电路图3-6 LED驱动电路若要正向点亮一片LED,至少也要得1020毫安,如果电流不够大,则LED不够亮,而89S52的输出/输入口,其高电平输出电流不是很高,大不了12毫安而已,因此很难直接高电平驱动LED。这是后就需要额外的驱动电路。这里采用高电平扫描,就是任何时间只有一个高电平信号,其他为低电平。一行扫描完后再把高电平转到其他临近行,扫描信号接到一个NPN晶体管的基极,同样这个晶体管提供8个LED同时亮,所需要的电流约160毫安。此时选用常用的CS9013等即可,当高电平的扫描信号输入后,晶体管的射极电流将流入行LED的阳极,即可满足行中的LED点亮的条件。如图3-63.5 74hc573的功能及基本参数如图3-7 74hc573芯片74HC573 跟LS/AL573 的管脚一样,如图3-7。器件的输入是和标准CMOS 输出兼容的;加上拉电阻,他们能和LS/ALSTTL 输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存,具体功能如表3-1。输出能直接接到CMOS,NMOS 和TTL 接口上操作电压范围:2.0V6.0V低输入电流:1.0uACMOS 器件的高噪声抵抗特性功能表输入输出输出使能所存使能DQLHHHLHLLLLX不变HXXZX=不用关心 Z=高阻抗 表3-1 74hc573功能表表3-2 74hc573具体参数锁存器在此电路中可用也可不用,把它放在这里的目的是为了将来电路做扩展用。倘若在单片机的两侧安装扩展口做其他功用时,而又用不到点阵显示的时候,可将锁存器的控制端置为低电平,这样单片机无论输出什么信号,就不会通过锁存器到达另一端,也就不会影响其它元件正常工作。此时,若不用9013作为点阵显示的驱动电路时,则可直接用74hc573作为驱动元件连接到对应的阵列脚,因为管脚的输出电流为35毫安,如表3-2。而此时的发光二级管亮度明显没有原来的亮!3.6AT8952的基本简介和参数图3-8 AT89S52芯片主要性能l 与MCS-51单片机产品兼容l 8K字节在系统可编程Flash存储器l 1000次擦写周期l 全静态操作:0Hz33Hzl 三级加密程序存储器l 32个可编程I/O口线l 三个16位定时器/计数器l 八个中断源l 全双工UART串行通道l 低功耗空闲和掉电模式l 掉电后中断可唤醒l 看门狗定时器l 双数据指针l 掉电标识符外围硬件跟单片机连接情况如图3-8。第二章 软件设计软件采用c语言编写,用Keil Uvsiion2进行调试及烧写,程序中延时函数的延时时间在调试中得出。4.1 跑马灯的程序设计在LED阵列里,可以通过动态显示方式让所要显示的文字或图形水平移动或垂直移动。在8*8LED阵列,其左移就是显示不同的字型,以“祝你生日快乐”为例,将扫描信号接到89S52的P0口,将显示信号接到89S52的P2口,每次扫描一个视窗(8条扫描线),从jin0开始为第一个扫描视窗,第一个扫描视窗显示完毕后,再以jin1开始为第二个扫描视窗,直到第jin77个视窗显示完毕,再由第一个视窗开始扫描。因此,我们在jin阵列里,总共放置85组,显示数据。流程图如图4-9图4-9跑马灯流程图4.2 按键去抖及键盘程序键盘程序检测程序放在主程序中,在主程序中详细列出按键流程。按键按下或者松开时,会产生1020毫秒的抖动,如图4-10,利用硬件抑制抖动,一定会增加电路的复杂性与成本,现在只需在读入第一个状态的输入信号时,执行1020毫秒的延时程序即可。当按键被按下的瞬间,程序将执行delay函数,这个函数就是一个延时子程序。void delay(unsigned char x) int a,b;for(a=x;a0;a-) for(b=10;b0;b-);图4-10 键盘抖动情况这里设置按键及操作状态是:1:当按下按键时,单片机检测到第一个低电平信号,随即调用delay函数以延时20毫秒2:delay函数结束后,若手没有放开,开关为低电平,此时程序进入while(1)的死循环,程序便停留在此处;若手放开了,则程序进入松手检测,单片机检测到开关为高电平,则执行下一步程序,否则一直停留在死循环里。主程序设计主程序中,首先对锁存器进行设置,其次是键盘的检测程序,检测按键是否按下。若没有按键按下,则循环显示“祝你生日快乐”的水平滚动的显示子程序,一旦有按键按下,则便转向相应的子程序进行处理,处理结束再返回。流程图如图4-11图4-11 主程序流程图本设计的全部程序如下:#include#includesbit dula=P16; /锁存器的控制端sbit key=P10; /按键sbit key1=P11;void delay(unsigned char x); /延时函数void shengri(); /祝你生日快乐子程序void lian1();void believe1();unsigned char i,d,j,k,m,n,e;unsigned char code jin=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x14,0xfd,0x16,0x80,0x4e,0x3a,0x7a,0x8e,0xc0,/祝0x00,0x00,0x00,0x00,0x08,0x04,0x7f,0x20,0x14,0x23,0x7e,0x02,0x16,0x20,/你0x00,0x00,0x00,0x00,0x08,0x46,0x54,0x7f,0x54,0x44,/生0x00,0x00,0x00,0x00,0x7f,0x49,0x49,0x7f,/日0x00,0x00,0x00,0x00,0x0c,0xff,0x04,0x88,0x90,0x54,0x34,0x1f,0x34,0x5c,0x90,0x80,/快0x00,0x00,0x00,0x00,0x4c,0x2a,0x49,0xff,0x09,0x28,0x40,/乐0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;unsigned char code dpj=0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xdf,0xdf,0xc3,0xdd,0xdd,0xcd,0xd3,/d0xe1,0xdd,0xdd,0xdd,0xe1,0xfd,0xfd,0xfd,/p0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xf3,/j0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,;unsigned char code believe=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0xff,0x81, /I0x00,0x00,0x00,0xff,0x90,0x88,0x88,0x70, /b0x00,0x7c,0x92,0x92,0x92,0x9c,/e0x00,0xff,/l0x00,0xfb,/i0x00,0x7c,0x92,0x92,0x92,0x9c,/e0x00,0x0e,0x30,0xc0,0x30,0x0e,/v0x00,0x7c,0x92,0x92,0x92,0x9c,/e0x00,0x00,0x00,0x81,0xff,0x81, /I0x00,0x00,0x00,0x7c,0x82,0x82,0x82,/c0x00,0x70,0x8a,0x8a,0x4a,0xfc,/a0x00,0xfe,0x04,0x02,0x02,0xfc,/n0x00,0x00,0x00,0x08,0xfe,0x09,0x09,/f0x00,0xff,/l0x00,0x8e,0x90,0x90,0x50,0x3e,/y0x00,0x00,0x80,0x60, /,0x00,0x00,0x00,0x00,0x81,0xff,0x81, /I0x00,0x00,0x00,0xff,0x90,0x88,0x88,0x70, /b0x00,0x7c,0x92,0x92,0x92,0x9c,/e0x00,0xff,/l0x00,0xfb,/i0x00,0x7c,0x92,0x92,0x92,0x9c,/e0x00,0x0e,0x30,0xc0,0x30,0x0e,/v0x00,0x7c,0x92,0x92,0x92,0x9c,/e0x00,0x00,0x00,0x81,0xff,0x81, /I0x00,0x00,0x00,0x7c,0x82,0x82,0x82,/c0x00,0x70,0x8a,0x8a,0x4a,0xfc,/a0x00,0xfe,0x04,0x02,0x02,0xfc,/n0x00,0x00,0x00,0x08,0x7f,0x88,0x88,/t0x00,0x7c,0x82,0x82,0x82,0x7c,/o0x00,0x7e,0x80,0x80,0x40,0xfe,/u0x00,0x7c,0x82,0x82,0x82,/c0x00,0xff,0x08,0x04,0x04,0xf8,/h0x00,0x00,0x00,0x08,0x7f,0x88,0x88,/t0x00,0xff,0x08,0x04,0x04,0xf8,/h0x00,0x7c,0x92,0x92,0x92,0x9c,/e0x00,0x00,0x00,0x86,0x89,0x91,0x61,/s0x00,0xff,0x30,0x48,0x84,/k0x00,0x8e,0x90,0x90,0x50,0x3e,/y0x00,0x00,0x00,0xdf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;unsigned char code lian8=0xff,0xff,0x00,0xff,0xff,0x81,0xff,0xff,0xff,0x99,0x66,0xff,0xff,0xbd,0xc3,0xff,0x99,0x66,0x66,0xff,0xff,0xbd,0xdb,0xe7; /笑脸void main() dula=1;while(1) shengri(); if(key=0) delay(50); /按键前期去抖 while(!key); delay(50); /按键后期去抖while(!key); xiao1(); lian1(); if(key1=0) delay(50); while(!key1); delay(50);while(!key1); believe1(); void delay(unsigned char x) /延时程序 int a,b;for(a=x;a0;a-) for(b=10;b0;b-);void xiao1() e=9; for(j=0;j0;k-) for(i=0;i0;n-) for(k=100;k0;k-) for(i=0;i8;i+) /扫描周期 P0=0xff; P2=0; P0=dpji+j; P2=d; delay(10); d=_crol_(d,1); e=9; void lian1() d=0x01; /初始扫描信号 for(j=0;j3;j+) for(k=0;k5;k+) for(i=0;i100;i+) for(m=0;m8;m+) P0=0xff; P2=0; P0=lianjm; P2=d; delay(10); d=_crol_(d,1); m=0,j=0; void shengri() while(key&key1) for(j=0;j0;k-) for(i=0;i8;i+) P0=0xff; P2=0; P2=jini+j; P0=d; delay(10); d=_crol_(d,1); if(key=0)break; /key按下时跳转画面 if(key1=0)break; /key1按下时跳转画面 void believe1() for(j=0;j0;k-) for(i=0;i8;i+) P0=0xff; P2=0; P2=believei+j; P0=d; delay(10); d=_crol_(d,1); 第四章 安装及调试5.1 元器件件列表,如表3名称数值数量R1R101K10R11R182K8R1910K1发光二极管(红)I=15毫安64三极管(9013)874hc5731AT89S521晶振11.0592HZ1C3 .C430P2C1 .C210UF/25V2USB接口1单片机插槽(49)1自锁开关1按键 S1 S2 S33表35.2 安装及调试中出现的问题和解决方案1:采用万能板单面排版手工布线,偶尔出现一排等熄灭,经万用表检查为虚焊问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论