新建8x8点阵显示课程设计_第1页
新建8x8点阵显示课程设计_第2页
新建8x8点阵显示课程设计_第3页
新建8x8点阵显示课程设计_第4页
新建8x8点阵显示课程设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大单片机原理与接口技术课程设计目录第一章系统基本原理及功能要求31.1 系统基本原理31.2 设计思想31.3设计任务及目的 41.4设计方框图4第二章硬件设计62.1单片机最小系统62.1.1 AT89S51基本参数62.1.2 复位电路82.1.3 晶振电路92.2开关调整单元102.3 LED点阵显示单元112.4 LED点阵驱动单元 12第三章 软件设计143.1循环右移程序设计 143.2点阵显示程序设计 143.3按键检测程序设计 163.4 按键消抖及键盘程序设计 173.5主程序设计流程图 173.6全部程序18第四章仿真及调试19194.1元器件列表204.2 Kei

2、l介绍与它的使用 20第五章体会与小结22附录I电路仿真图23附录II总程序24相关参考文献32第一章系统的基本原理及功能要求1.1系统的基本原理MCS-51单片机作为主控芯片,控制整个电路的运行。其外围电路主要有两部 分:复位电路和晶体振荡器。复位电路的功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消 复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。该设计采用含有二极管 的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降 (电池电压不足) 等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源

3、毛刺也可令系统可靠复位。晶体振荡电路:MCS-51单片机中有一个用于构成内部振荡器的高增益反相放 大器,引脚XTAL1和XTAL2分别为该反向放大器的输入端和输出端。 这个反向放 大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电 路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响 振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。如果使 用石英晶体,电容应该使用30pF-10pF。1.2设计思想点阵内部结构及外形如下,8X8点阵共由64个发光二极管组成,且每个发

4、光 二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,贝U相应的二极管就亮;如要将第一个点点亮,贝U9脚接高电平13脚接低电平,则第一个点就亮了 ;如果要将第一行点亮,则第9脚要接高电平,而(13、 3、4、10、& 11、15、16)这些引脚接低电平,那么第一行就会点亮;如要将 第一列点亮,则第13脚接低电平,而(9、14、& 12、1、7、2、5)接高电平, 那么第一列就会点亮。LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以8*8点阵为例,把所有同一行的发光管的阴极连在一起, 把所有同一列的发

5、光管的阳极连在一起 (共阴 的接法),先送出对应第1列发光管亮灭的数据并锁存,然后选通第 1列使其燃 亮一定的时间,然后熄灭;再送出第2列的数据并锁存,然后选通第2列使其燃 亮相同的时间,然后熄灭;第8列之后,又重新燃亮第1列,反复轮回。当 这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到 显示屏上稳定的图形。该方法能驱动较多的 LED,控制方式较灵活,而且节省 单片机的资源。LED点阵显示模块进行的方法有两种:1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式): 此时用一个P 口输出列码决定哪一列能亮(相当于位码),用另一个P 口输出行 码(列数据),决定

6、该列上哪个LED亮(相当于段码)。能亮的列从左到右扫描 完8列(相当于位码循环移动8次)即显示出一个完整的图像。2)竖直方向(丫方向)扫描,即逐行扫描方式(简称行扫描方式):此时 用一个P 口输出决定哪一行能亮(相当于位码),另一个P 口输出列码(行数据, 行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于 段码)。能亮的行从上向下扫描完8行(相当于位码循环移位8次)即显示一帧 完整的图像。1.3设计任务及目的采用MCS51作为主控芯片,采用6个8*8点阵LED,显示左右滚动图形,数 字或汉子。采用AT89S51单片机作为整个控制搭电路的核心,并编制软件程序, 实现动态轮

7、流显示。通过此设计来巩固单片机硬件系统的设计及软件系统的编 程,通过设计将平时所学知识付诸实践,提高动手能力。1.4设计方框图如图1.1设计方框图与仿真电路图,单片机主芯片 89S51的P0 口和锁存器 74LS373相连,而锁存器的另一端与显示屏的一边八个引脚相连,显示屏的另八个引脚与总线连接又与编译器 74LS138相连,系统采用行列扫描显示法,即单片 机控制行驱动器和列驱动器来实现控制 LED两端的电压,控制LED勺点亮和熄灭。电源行驱动器列驱动器1卩 1ff18X8LED显示点 阵*图1.1设计方框图第二章硬件设计2.1单片机最小系统2.1.1 AT89S51的基本参数可 C 卄 Hr

8、lx ;泽 n wU = =ULILILIULILLJLILLI = LLJTH PSEIM二J PN 了 (Al B) & A1l 3戸卩& 夙叩3) m戸工毎 a 1 二I 尸 N 3 (A 11) ZZI NN (A1OJ 二I F*2L 1 _ R.Ori a F* 11, -IFM .吕p I. aF=*1uS (VMIV SCJi PT & (Ft4nK FM 7RST cr xr 1=*3. o ZU HM1XN (AO23 TH PG 3 (AO 3.) l PO.1; x1=(temp&0x04)2; x2=(temp&0x08)3; x3=(temp&0x10)4; x4=

9、(temp&0x20)5; x5=(temp&0 x40)6; x6=(temp&0x80)7;for(i=0;i8;i+) a=a+(xii);return a;/循环右移/右移一位后取每个位/位组合成一个字节3.2点阵显示程序设计如以下程序,是显示数字“ T的右移滚动,利用if条件,也可以很快的 切换到其他显示的内容。void dis(i nt x,char z,un sig ned char y) 1:r;2:L;3:U;4:D;x显示的数字,z滚动方向,y滚动次数char ii=0;char i=0;P1_7=1;if(x=1)p0=0x10;/数字1显示对应的列if(z=1)/若向右

10、滚动,显示列依次右移for(i=0;i6)temp_temp=1;p2=temp_temp;if(z=3)/向右滚动if(y=0)if(p2y)p2=p2+9-y;else p2=p2-1;Dis(); /显示函数,I/O 口给出具体电平 temp_temp+;3.3检测按键程序设计如下面程序,它是检测按键是否按下来控制具体显示的内容, 当按键按下, 执行相应的显示程序和循环程序,则可观察到显示屏的滚动现象,若按键没有按 下,系统就不会正常显示工作,达不到预期效果。int main(v oid)un sig ned int i,aaa; char j;un sig ned int xx; i=

11、0;while(1)if(P2_6=0)if(P2_3=0) for(j=0;j8;j+)if(P2_3=1)dis(1,1,j);break;/循环显示/检测按键,若按下,显示1/检测按键,若按下,开始滚动/依次滚动8次/若滚动按键未按下,停止滚动if(j=0)|(j=1)|(j=2)xx=600;elsexx=168;for(i=0;i0;x-) for(y=10;y0;y-);武汉理工大单片机原理与接口技术课程设计这里设置按键及操作状态是:1:当按下按键时,单片机检测到第一个低电平信号,随即调用delay函数以延时20毫秒左右。2: delay函数结束后,若手没有放开,开关为低电平,此时

12、程序进入while( 1)的死循环,程序便停留在此处;若手放开了,则程序进入松手检测,单片机检测 到开关为高电平,则执行下一步程序,否则一直停留在死循环里。3.5主程序设计流程图开始显示“1”(或“ Z ”或“ 4”)按键SW1 (或SW2或SW3)是否按下YES显示不滚动的“ 1 ”按键SW4是否按 下NOYES武汉理工大单片机原理与接口技术课程设计图3.2主程序流程图3.6全部程序见附录II25第四章4.1元器件列表仿真及调试名称规格数量单片机最小系统AT89S51、万用板等1套点阵显示屏MATRIX8x8共阳极6块驱动器74LS3736个电阻110K欧6个译码器74LS1381个SW开关

13、低手柄4个导线普通若干按钮BUTTON2个日日振器CRYSTAL1个4.2 Keil C51介绍及使用本设计中源程序程序的编写与调试是在 Keil C51集成环境uVision中进行的。 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系 统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势, 因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows界面,界面友好,操作简单。另外重要的一点是只要看一下编译后生成 的汇编代码,就能体会到 Keil C51生成的目标代码效率非常之高,多数语句生 成

14、的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。(1)建立一个新的工程:单击“ Ptoject”菜单,在弹出的下拉菜单中选择 “ New Project”选项。然后选择你要保存的路径,输入工程的名字然后点击保存。 这时会弹出一个对话框,要求你选择单片机的型号,根据你所用的单片机来选择, Keil C51几乎支持所有的51内核的单片机,在本设计中选择的是 AT89S51。(2) 编写程序:单击“ File”菜单,在下拉菜单中选择“ New”,这时编辑 窗口会出现一个Textl窗口,光标在该窗口中闪烁,首先保存该空白文档,单击 菜单上的“ File”,在弹出的下拉菜单中选择“

15、Save AS选项,在出现的对话框 中键入欲使用的文件名并同时键入正确的后缀名(本设计中为.c),然后保存。回 到编辑界面后,单击“ Target T前面的“ + ”,然后在“ Source Group 1上单击 右键,在弹出菜单中选择“ Add Files to Group Source Group 1,选中设计所需 要的源程序文件,然后单击“ Add”,这时注意到“ Source Group T文件夹中多 了若干个子项,子项的多少跟所增加的源程序的多少相同。这时就可以键入应用 程序了。Keil C51会自动识别关键字,并以不同的颜色提醒用户加以注意,这 样会使用户少犯错误,有利于提高编程效

16、率。(3) 编译并生成HEX文件:程序编写完成以后,单击“ Ptoject”菜单,在 下拉菜单中选择“ Built Target”选项,或者使用快捷键F7。编译成功后右击“Target 1”在弹出菜单中选择“ Options For Target Target 1,在弹出的对话框中选择“Output”选项中的“ Creat HEX File”选项使程序编译后产生 HEX代码,供下 载器软件使用。第五章体会与小结本设计的是一个8x8的点阵LED图文显示屏,能够在目测条件下 LED显 示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无 串扰。图形或文字显示有静止、移入移出等显示

17、方式。本系统具有硬件少,结构 简单,容易实现,性能稳定可靠,成本低等特点。总结本文的研究工作,主要做了下面几点工作:一、通过查阅大量的相关资料,详细了解了 LED的发光原理和LED显示 屏的原理,清楚地了解了 LED显示屏与其它显示屏相比较有那些优点,明确了 研究目标。并且通过对单片机资料的查阅和应用, 更进一步增加了对单片机知识 的理解和运用能力。并证实了自己的思路:“查资料一思考总结-运用一找出差 错,再查资料和向别人询问一再次运用”的正确性。二,本文设计的LED显示屏能够实现在目测条件下 LED显示屏各点亮度均 匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。三,本文列出了

18、系统具体的硬件设计方案,硬件结构电路图,软件流程图和 具体汇编语言程序设计与调试等方面。总体来说这次的课程设计很成功,达到了预想的目的:学到了知识,提高了能力, 完成了任务。有点缺憾是时间有限,不能进一步深入和扩散学习和研究。希望有 时间可以对程序和电路图作更进一步的改进, 譬如实现点阵的上下移动,对角线 移动,三色显示等。T rB當8聶谭:ssssIJo澄書霑IE-B53.11HMS -亘武汉理工大单片机原理与接口技术课程设计附录II 总程序#i nclude AT89X51.H/ 头文件unsigned char p0,p2=1;pO 显示列,p2 显示行char lbl=1;un sig

19、 ned char temp_temp=1;void Delay(void) / 延时int i;for(i=0;i1;x1=(temp&0x04)2;x2=(temp&0x08)3; x3=(temp&0 x10)4;x4=(temp&0x20)5; x5=(temp&0 x40)6;x6=(temp&0x80)7;for(i=0;i8;i+)a=a+(xi1;P2_2=(p2&0x04)2; P0_0=p 0&0x01;P0_仁(p 0&0x02)1;循环右移/右移一位后取每个位/右移一位后取每个位 右移一位后取每个位/位组合成一个字节/给出每个I/O 口对应电平行和列对应的I/O 口P0

20、_2=(p0&0x04)2;P0_3=(p0&0x08)3;P0_4=(p0&0x10)4;P0_5=(p0&0x20)5;P0_6=(p0&0x40)6;P0_7=(p 0&0x80)7;/ Delay();void delay(unsigned char k) 延时程序 un sig ned int i,j;for(j=0;jk;j+) for(i=0;i1000;i+)void dish(i nt x) 显示行p2=x-1;if(x=1)else if(x=2) else if(x=3) else if(x=4) else if(x=5) else if(x=6)else if(x=7)

21、 else if(x=8)II滚动函数,d=1,向右滚void turn(char d) 1:R;2:L;3:U;4:D; if(d=1)p0=right(p0);/Dis();/delay(10);else if(d=2) else if(d=3) else if(d=4)void dis(int x,char z,unsigned char y) 1:r;2:L;3:U;4:D;x 显示的数字,z 滚动方向,y滚动次数char ii=0;char i=0;P1_7=1;if(x=1)p0=0x10;数字1对应的列if(z=1)若向右滚动,显示列依次右移for(i=0;i6) temp_te

22、mp=1; p2=temp_temp; if(z=3)/向右滚动if(y=0) if(p2y) p2=p2+9-y; elsep2=p2-1;Dis();显示函数,I/O 口给出具体电平temp_temp+; _else if(x=2)显示字母 Zdish(2);p0=0x7e;字母Z对应的列,此处相当于第二行显示的列if(z=1) for(i=0;iy;i+)向右滚动p0=right(p0);Dis();显示函数,I/O 口给出具体电平Delay();dish(3); 显示第三行p0=0x04;第三行对应的列if(z=1)for(i=0;iy;i+) p0=right(p0);Dis();/

23、显示函数,I/O 口给出具体电平Delay();dish(4); 显示第四行p0=0x08;第四行对应的列if(z=1)for(i=0;iy;i+) p0=right(p0);Dis(); /显示函数,I/O 口给出具体电平Delay();dish(5); 显示第五行p0=0x10;第五行对应的列if(z=1)for(i=0;iy;i+) p0=right(p0);Dis();/显示函数,I/O 口给出具体电平Delay();p0=0x20;第六行对应的列dish(6); 显示第六行if(z=1)for(i=0;iy;i+) pO=right(pO);Dis(); /显示函数,I/O 口给出具

24、体电平Delay();延时Delay();Delay();Delay();Delay();dish(7); 显示第七行p0=0x7e;第七行对应的列if(z=1)for(i=0;iy;i+) p0=right(p0);Dis();Delay();else if(x=3)else if(x=4)显示数字 4p0=0x08;for(ii=2;ii8;ii+) if(ii=3)/显示第3行p0=0x08|0x10;/第三行对应列if(z=1)for(i=0;iy;i+) p0=right(p0);else if(ii=4)/显示第四行 p0=0x08|0x20; 第四行对应列 if(z=1)for(

25、i=0;iy;i+) pO=right(pO);else if(ii=5)/显示第五行p0=0x7c;第五行对应列if(z=1)for(i=0;iy;i+) pO=right(pO);elsep0=0x08;其余几行对应的列if(z=1)for(i=0;iy;i+) p0=right(p0);dish(ii);Dis(); 显示函数,I/O 口给出具体电平if(ii=4)Delay();Delay();Delay(); / 延时Delay();else if(x=5)else if(x=6)else if(x=7)else if(x=8)else if(x=9)int ma in (void)/按键检测程序un sig ned int i,aaa;char j;un sig ned int xx;i=0;while(1) /循环显示if(P2_

温馨提示

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

评论

0/150

提交评论