首页 89c51单片机课设

89c51单片机课设

举报
开通vip

89c51单片机课设吉林工程技术师范学院 目录 1 目录 2 第一章 绪论 2 1.1课题描述 3 1.2设计目的 3 1.3 设计内容 3 1.4 设计所需原件简介 3 1.4.1 AT89C51 5 1.4.2 74HC595 5 1.4.3 ULN2003 6 1.4.4 LED点阵介绍 8 第二章 系统硬件设计 8 2.1 总体硬件设计 9 2.2 字模设计 11 第三章 软件设计 11 3.1 软件设计简介 11 3.2 设计流程图 12 3.3 仿真结果...

89c51单片机课设
吉林工程技术师范学院 目录 1 目录 2 第一章 绪论 2 1.1课题描述 3 1.2设计目的 3 1.3 设计内容 3 1.4 设计所需原件简介 3 1.4.1 AT89C51 5 1.4.2 74HC595 5 1.4.3 ULN2003 6 1.4.4 LED点阵介绍 8 第二章 系统硬件设计 8 2.1 总体硬件设计 9 2.2 字模设计 11 第三章 软件设计 11 3.1 软件设计简介 11 3.2 设计流程图 12 3.3 仿真结果 13 第四章 心得与体会 14 致谢 15 参考文献 16 附录 第一章 绪论 课题描述 单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。在现代工业控制和一些智能化仪器仪 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。所以研究LED显示有实用的意义。LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。 LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。 现代LED的发展很快,很多研究领域非常已经深刻,所以想利用自己学的单片机知识简单的研究一下用单片机驱动的LED显示汉字,以达到学以致用和实践相结合的目的,同时巩固加深自己的单片机知识。用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,就可以得到满意的显示效果。因而采用点阵式图文显示屏显示经常需要变化的信息,是非常有效的。 点阵大小可以有16×16、24×24、32×32、48×48等不同规格,也有单色、双色、和多色几种,最常用的是单色图文屏。单色屏多使用红色或橘红色或橙色LED点阵单元。双色图文屏和多色图文屏,在LED点阵的每一个“点”上布置有两个或多个不同颜色的LED发光器件。换句话说,对应于每种颜色都有自己的显示矩阵。显示的时候,各颜色的显示点阵是分开控制的。事先设计好各种颜色的显示数据,显示时分别送到各自的显示点阵,即可实现预期效果。每一种颜色的控制方法和单色的完全相同,因此掌握了单色图文显示屏的原理,双色屏和多色屏就不难理解了。 设计目的 本次课程设计的目的: (1)学会使用点阵LED管。 (2)掌握汉字字模软件的使用。 (3)掌握用点阵LED显示汉字的控制方法。 1.3 设计内容 设计内容: 了解SPI总线工作原理和74HC595的工作时序,并能够用程序控制74HC595输出。学会点阵LED的动态扫描过程。能够显示静止的汉字或英文或图像。能够让屏幕或上或下或左或右动起来。 1.4 设计所需原件简介 1.4.1 AT89C51 AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含4k bytes的反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司高密度、非易失性存储技术生产,兼容 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89C51引脚图如图1-1 所示。 图1-1 AT89C51引脚图 单片机是在一块硅片上集成了各种部件的微型机,这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。8051单片机的基本结构见图1-2。 图1-2 8051单片机的基本结构 AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个十六位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。 1.4.2 74HC595 74HC595是硅结构的CMOS器件,兼容低电压TTL电路。是具有8位移位寄存器和一个存储器,三态输出功能。8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。 特点: 8位串行输入/8位串行或并行输出存储状态寄存器,三种状态。 输出寄存器(三态输出:就是具有高电平、低电平和高阻抗三种输出状态的门电路。)可以直接清除 100MHz的移位频率。 1.4.3 ULN2003 ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。其外部引脚图如下: 图1-3 ULN2003的引脚图 ULN2003的特点如下: 它的每一对复合晶体管都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。 它的工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。它的内部构造如下图: 图1-4 ULN2003的内部构造 1.4.4 LED点阵介绍 8×8单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的叉点上。本设计是一种实用的汉字显示屏的制作,制作的是双色点阵。考虑到元器件的易购性,没有使用8×8的点阵发光二极管模块,而是直接使用了256个高亮度发光管,组成了16行16列的发光点阵。实际使用时可以根据这个原理自行扩充显示的字数。8*8点阵内部结构如图1-5 图1-5 点阵内部构造 4个8×8点阵级联构成16×16点阵如下图1-6 图1-6 16×16点阵的构成 LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以16×16点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;….第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。 系统硬件设计 2.1 总体硬件设计 显示屏分成屏体和控制器两部分,屏体的主要部分是显示阵列以及有行列驱动电路。根据安装环境的空间以及考虑成本造价,决定使用多大尺寸的显示屏,从而决定了显示模块的数量,这里以8×8点阵为例,模块单位为256点阵,即需要16块点阵模块。采用扫描方式进行显示时,分成两步,对于每行有一个行驱动器,各行的同名列共用一个列驱动器,由单片机给出行选通信号,从第一行开始依次对各行进行扫描,对于列,根据各列所存数据,确定相应的列驱动器是否将该列与行接通,如果接通,那么该行该列的LED将亮,以同样方法进行显示全部各行都扫描一遍之后,再从第一行开始,进行下一个周期的扫描。只要一个扫描周期的时间比人眼1/25秒的滞留时间短,就不会感觉出闪烁显示数据从驱动芯片到显示模块是以并行方式传输的,但显示数据从单片机到驱动芯片是以串行方式传输的,由于串行传输的控制电路简单,设计容易,缺点是串行数据传输需要很长的时间,不过这可以由软件来弥补,也可考虑单片机的控制速度。显示驱动电路由74HC595组成。 74HC595输入端是8位串行移位寄存器,输出端是8位并行缓存器具有显示锁存功能。 本次课程设计选用硬件Proteus仿真。电路图如下: 图2-1 硬件设计图 2.2 字模设计 本次课程设计取模采用字模软件进行取模。如下图所示: 图2-2字模软件取模 取出的字模如下: /*-- 文字: 孙 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x20,0x7E,0x20,0x04,0x20,0x08,0x20,0x10,0x20,0x11,0x28,0x1D,0xA4,0x31,0x24, 0x52,0x22,0x92,0x22,0x14,0x22,0x10,0x20,0x10,0x20,0x50,0xA0,0x20,0x40,0x00,0x00, /*-- 文字: --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: 昊 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x00,0x00,0x3F,0xFC, 0x01,0x00,0x01,0x00,0xFF,0xFE,0x02,0x80,0x04,0x40,0x18,0x30,0xE0,0x0E,0x00,0x04, 软件设计 3.1 软件设计简介 本次课程设计我采用51系列单片机编程的C语言KeilC51编程。 (1)用C51进行点偏激的软件开发,具有如下优点; (2)可读性好。 (3)模块化开发与资源共享。 (4)可移植性好。 (5)生成的代码效率高。 3.2 设计流程图 根据硬件及软件设计次程序的流程图如下: 图3-1流程图 3.3 仿真结果 图3-2仿真结果1 图3-3 仿真结果2 第四章 心得与体会 随着这两周的学习,课程设计也接近了尾声。经过两周的奋战我的课程设计终于完成了。通过课程设计不仅对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次课程设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。     在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。    不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。 致谢  在此要感谢我的指导老师李悦老师对我悉心的指导,感谢老师给我的帮助。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。对我未来的学习和生活产生很大的影响。 在此,再次感谢我的学校和李老师。 参考文献 [1] 胡连柱, 姜宝山. 简析单片机软硬件的抗干扰设计技术, 安徽电子信息职业技术学院学报, 2005,01. [2] 徐明龙, 王赤虎. 利用单片机实现的模拟信号和数字信号单线混合传输, 电子设计应用, 2004, 1. [3] 徐梅. 单片机系统常用抗干扰 措施 《全国民用建筑工程设计技术措施》规划•建筑•景观全国民用建筑工程设计技术措施》规划•建筑•景观软件质量保证措施下载工地伤害及预防措施下载关于贯彻落实的具体措施 , 高校实验室工作研究, 2006, 4 [4] 林丽君,黎小桃 单片机原理及其应用,江西高校出版社,2008,2 [5]董晓红.单片机原理及接口技术,西安:西安电子科技大学出版社,2006 [6] THDPJ-1/2/3/4型单片机开发综合实验指导 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf ,浙江天煌科技实业有限公司 [7] 吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用,北京:清华大学出版社,2002 附录 程序如下: #include #define uchar unsigned char #define uint unsigned int sbit outen = P1^7; sbit latch = P1^6; /////////////////////////显示内容/////////////////////////////// /*-- 文字: 孙 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ uchar code sun[16][2]={ 0x00,0x20,0x7E,0x20,0x04,0x20,0x08,0x20,0x10,0x20,0x11,0x28,0x1D,0xA4,0x31,0x24, 0x52,0x22,0x92,0x22,0x14,0x22,0x10,0x20,0x10,0x20,0x50,0xA0,0x20,0x40,0x00,0x00 }; /*-- 文字: --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ uchar code xiao[16][2]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; /*-- 文字: 昊 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ uchar code hao[16][2]={ 0x00,0x00,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x00,0x00,0x3F,0xFC, 0x01,0x00,0x01,0x00,0xFF,0xFE,0x02,0x80,0x04,0x40,0x18,0x30,0xE0,0x0E,0x00,0x04 }; uchar code zero1[16][2]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; //////////////////////////////////////////////////////////////// uchar idata buffer[16][8]; uchar *pc[16]; void display(uint); //显示 void delay(uint); //延时 void move(void); void clean(void); //清空显存 void slogan(uchar m); void LeftMove(uchar *p); void LoadNoSmoking(uchar *p); /*###########子函数##########*/ void clean(void){ uchar i,j; for(i=0;i<16;i++) for(j=0;j<8;j++) buffer[i][j]=0x00; } ////////////////////////////// void delay(uint t){ int i,j; for(i=0;i>7; } buffer[i][6]=buffer[i][6]<<1; } } ////////////////////////////// void display(uint t){ uint i; uchar j,k,a; uchar *disp; for(i=0;i>1; // delay(2); outen=1; } P0=0; a=0x80; for(j=0;j<8;j++){ disp=&buffer[j+8]+5; for(k=0;k<6;k++){ SBUF=*disp--; while(!TI){;} TI=0; } latch=1; //delay(1); latch=0; //delay(1); P2=a; outen=0; delay(6); a=a>>1; //delay(2); outen=1; } } } /////////////////////////////////// void LeftMoveTw(uchar *p) //该函数针对的是【12】【2】的取模方式 { uchar i; buffer[0][7]=buffer[1][7]=buffer[14][7]=buffer[15][7]=0x00; for(i=0;i<12;i++) buffer[i+2][7]=*(p+2*i); //装载高8位 for(i=0;i<8;i++){ //左移8次,并显示 move(); display(1); } for(i=0;i<12;i++) buffer[i+2][7]=*(p+1+2*i); //装载低4位 for(i=0;i<4;i++){ //左移4次,并显示 move(); display(1); } } ////////////////////////////////// void HxLeftMove(uchar *p){ //该函数针对的是【16】【2】的取模方式 uchar i; for(i=0;i<16;i++) buffer[i][6]=*(p+2*i); //装载高8位 for(i=0;i<8;i++){ //左移8次,并显示 move(); display(1); } for(i=0;i<16;i++) buffer[i][6]=*(p+1+2*i); //装载低8位 for(i=0;i<8;i++){ //左移8次,并显示 move(); display(1); } } //////////////////////////////////////// void Loadbuffer(uchar *p,uchar location){ uchar i; for(i=0;i<16;i++) { buffer[i][2*location+0] = *(p+2*i); buffer[i][2*location+1] = *(p+1+2*i); } } /////////////////////////////// void slogan(uchar m){ uchar i; for(i=0;i
本文档为【89c51单片机课设】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_463701
暂无简介~
格式:doc
大小:676KB
软件:Word
页数:26
分类:工学
上传时间:2012-03-01
浏览量:31