单片机课程设计完整版.doc_第1页
单片机课程设计完整版.doc_第2页
单片机课程设计完整版.doc_第3页
单片机课程设计完整版.doc_第4页
单片机课程设计完整版.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理课程设计课题名称: 基于红外控制的8X8点阵设计 专业班级: 电子信息工程0701班 学生学号: * 学生姓名: * 指导教师: * 设计时间: 2010年6月21日至6月26日 基于红外控制的8X8点阵设计1、设计要求:设计一个基于STC89C54RD单片机的8X8点阵电路,选用8X8点阵LED显示器,一个发光二极管控制点阵中的一个点,延时时间为1ms,并通过红外控制点阵显示不同的花样。2、方案选择2.1 单片机的选择方案一,选择STC89C51RD单片机。但它内部ROM较小。方案二,选择STC89C54RD单片机。它内部ROM相对较大。由于点阵显示很多字符需要大量的编码,固选用内部ROM比较大的STC89C54RC单片机。2.2 电流驱动元件的选择方案一,选择8550三极管驱动行扫。8550三极管驱动电流比较大,能驱动8X8点阵,但三极管是分立元件,稳定性较差,且开关速度可能会影响点阵显示。方案二,选择74HC245三态输出的八组总线收发器。74HC245为集成芯片,稳定性高,速度快,价格便宜。综上所述,电流驱动元件选出用74HC245。2.3 红外发射接收装置的选择方案一,集成发射接收芯片。但这类芯片一般都相对较贵,且电路较复杂。方案二,选择红外对管。它的外形跟普通发光二极管相似,价格便宜,电路简单。综上所述,对本设计来说,选用红外对管作为发射接收装置。3、系统硬件设计3.1 单片机最小系统的设计单片机最小系统采用最用的设计方法,但复位电路本设计取消了手动复位,只保留了上电复位电路。 图3.1.1 单片机最小系统图3.2 8X8点阵显示模块的设计3.2.1 8x8点阵原理图3.2.1.1是一种8x8点阵单色行共阳模块的内部结构图,其单点工作电压为1.8 V,正向电流为8-10 mA。当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮;而当其某一列线为高时,其行列交叉的点为暗;当某一行线为低电平时,无论列线如何, 对应这一行的点全部为暗。图3.2.1.1 行共阳8x8点阵内部结构图3.2.2 8x8点阵驱动模块74HC245为八路收发器,在发送和接收两个方向上都具有正相三态总线兼容输出,能提供最大15mA的高电平电流。用74HC245来驱动8x8点阵的行,单片机的P0口经过470的电阻接到点阵的列上。图3.2.2.1 8x8点阵驱动模块3.3 红外发射接收模块的设计3.3.1 红外发射模块采用简易的红外发射装置,用一个按键控制NPN8050三极管开、关,使红外管发射红外信号。图3.3.1.1 红外发射模块原理图3.3.2 红外接收模块采用简易的红外接收装置,红外接收管,接收到红外信号使Q2的基极由高电平变为低电平送到单片机处理。同时PNP三极管8550导通,发光二极管D3亮。图3.3.2.1 红外接收模块原理图3.4系统总原理图见附录一4、系统软件设计4.1 软件设计流程图本系统的软件设计流程图如图4.1.1所示Y系统初始化开 始调用初始显示子程序进入while(1)循环是否收到红外控制信号调用下一个显示子程序N图4.1.1 软件设计流程图4.2 总程序见附录二5、课程设计心得体会通过这次课程设计 ,我获得了很深刻的体会,知道了理论和实际的距离,也知道了理论联系实际调的重要性,我们三人一起从设计软件,硬件,最后把实物做出来,从中学到了很多书本上和课堂上无法学到的知识,比如电路元器件的选购、电路元器件的分辨、电路的设计制作、电路故障的排除等等。经过这次课程设计,我们自己的动手能力增强了。更让我们认识到学习就应该采取理论与实践结合的方式。这样既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。所以这次课设我们获得了很多。6、参考文献1 单片机原理及其接口技术(第2版),胡汉才主编,清华大学出版社,20052 Protel 99Se电路设计实用教程(第1版),余家春主编,中国铁道出版社,20043 C语言程序设计教程(第2版),杨路明主编,北京邮电大学出版社,20054 51单片机C语言教程(第1版),郭天祥主编,电子工业出版社,20095单片机C语言程序设计实训(第1版),彭伟主编,电子工业出版社,2009附录一系统总原理图 附录二总程序如下:#include #include #define uchar unsigned char#define uint unsigned intsbit symbol=P32;uchar num,flag;uint temp;uchar code hang=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;uchar code xin=0x00,0x36,0x49,0x41,0x41,0x22,0x14,0x08;uchar code OK=0x00,0x04,0x65,0x96,0x96,0x65,0x04,0x00;uchar code z=0x00,0x7E,0x04,0x08,0x10,0x20,0x7E,0x00;uchar code h=0x00,0x22,0x22,0x22,0x3E,0x22,0x22,0x22;uchar code a=0x00,0x08,0x14,0x22,0x3E,0x22,0x22,0x00;uchar code n=0x00,0x24,0x34,0x34,0x2C,0x2C,0x24,0x00;uchar code g=0x00,0x3C,0x44,0x40,0x5C,0x44,0x3C,0x00;uchar code l=0x00,0x20,0x20,0x20,0x20,0x20,0x3C,0x00;uchar code o=0x00,0x1C,0x22,0x41,0x41,0x41,0x22,0x1C;uchar code s=0x00,0x1C,0x22,0x20,0x1C,0x02,0x22,0x1C;uchar code ii=0x00,0x08,0x00,0x08,0x08,0x08,0x08,0x08;uchar code jj=0x00,0x3C,0x08,0x08,0x08,0x28,0x18,0x00;uchar code u=0x00,0x22,0x22,0x22,0x22,0x22,0x1C,0x00;uchar code y=0x00,0x22,0x14,0x08,0x08,0x08,0x08,0x08;uchar code blank=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;uchar code ling=0x00,0x3C,0x24,0x24,0x24,0x24,0x24,0x3C;uchar code yi=0x00,0x08,0x18,0x08,0x08,0x08,0x08,0x1C;uchar code er=0x00,0x3C,0x04,0x04,0x3C,0x20,0x20,0x3C;uchar code san=0x00,0x3C,0x04,0x04,0x3C,0x04,0x04,0x3C;uchar code si=0x00,0x08,0x18,0x28,0x48,0x7E,0x08,0x08;uchar code wu=0x00,0x3C,0x20,0x20,0x3C,0x04,0x04,0x3C;uchar code liu=0x00,0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C;uchar code qi=0x00,0x3C,0x04,0x04,0x04,0x04,0x04,0x04;uchar code ba=0x00,0x3C,0x24,0x24,0x3C,0x24,0x24,0x3C;uchar code jiu=0x00,0x3C,0x24,0x24,0x3C,0x04,0x04,0x3C;void delay(uint x) /延时1ms程序 uint y ,z; for(y=x;y0;y-)for(z=114;z0;z-);void display_Start(uchar table8) /字符从右向左移开始子程序uchar i,j,k,temp;for(k=0;k8;k+) /在每个点阵里移动八下if(flag)break;for(j=0;j9;j+) /延时if(flag)break;for(i=0;i(7-k);P0=temp;P2=hangi;delay(2);if(symbol=0) /判断是否接收到红外信号delay(5);if(symbol=0) while(!symbol);if(num=2)num=0;flag=1;elsenum+;flag=1; if(flag)break; P0=0xff; /消影P2=0x00; void display(uchar table18,uchar table28) /字符连续左移子程序uchar i,j,k,temp1,temp2;for(k=0;k8;k+) /在每个点阵里移动8下if(flag)break;for(j=0;j9;j+) /延时if(flag)break;for(i=0;i8;i+) temp1=table1i;temp1=temp1(7-k);temp=temp1|temp2;P0=temp;P2=hangi;delay(2);if(symbol=0) /判断是否接收到红外信号delay(5);if(symbol=0)while(!symbol);if(num=2)num=0;flag=1;elsenum+;flag=1; if(flag)break;P0=0xff;P2=0x00; void show_word(uchar table8) /静态显示一个字符uchar i;for(i=0;i8;i+) /显示8行数据P0=tablei; P2=hangi;delay(2);P0=0xff; /消隐P2=0x00;_nop_();void main()uchar i,j;display_Start(z); /显示“张老师好”的拼音display(z,h);display(h,a);display(a,n);display(n,g);display(g,l);display(l,a);display(a,o);display(o,s) ;display(s,h);display(h,ii);display(ii,h);display(h,a);display(a,o);display(o,blank);for(j=0;j3;j+) /显示“心”形for(i=0;i30;i+)show_word(xin);for(i=0;i30;i+)show_word(blank);for(i=0;i50;i+) /显示5、4、3、2、1倒数show_word(wu);for(i=0;i50;i+)show_word(si);for(i=0;i50;i+)show_word(san);for(i=0;i50;i+)show_word(er);for(i=0;i50;i+)show_word(yi);for(i=0;i=2)num=0;if(num=0)flag=0;for(j=0;j3;j+)for(i=0;i30;i+)show_word(san);for(i=0;i30;i+)show_word(blank);if(num=0) /显示“杨洋”display_Start(y);flag=0;if(num=0)display(y,a);if(num=0) display(a,n);if(num=0)display(n,g);if(num=0) display(g,y);if(num=0) display(y,a);if(num=0)display(a,n);if(num=0) display(n,g);if(num=0)display(g,blank);if(num=1)flag=0;for(j=0;j3;j+)for(i=0;i30;i+)show_word(yi);for(i=0;i30;i+)show_word(blank);if(num=1)/显示“周海军”display_Start(z);flag=0;if(num=1)display(z,h);if(num=1) display(h,o);if(num=1)display(o,u);if(num=1) display(u,h);if(num=1)display(h,a);if(num=1) display(a,ii);if(num=1)display(ii,jj);if(num=1) display(jj,u);if(num=1) display(u,n);if(num=1) display(n,blank);if(num=2)flag=0;for(j=0;j3;j+)for

温馨提示

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

评论

0/150

提交评论