广告灯的设计 单片机课程设计.docx
- 文档编号:23685687
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:16
- 大小:229.23KB
广告灯的设计 单片机课程设计.docx
《广告灯的设计 单片机课程设计.docx》由会员分享,可在线阅读,更多相关《广告灯的设计 单片机课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
广告灯的设计单片机课程设计
目录
第一章引言...........................................03
第二章总体设计方案...................................04
一:
设计要求..........................................04
二:
硬件设计方案......................................04
三:
软件设计程序......................................08
第三章调试及结果分析.................................14
一:
调试及结析结果分析................................14
二:
设计总结..........................................15
参考文献..............................................15
附录
(一)............................................16
附录
(二)..............................................
引言:
单片机具有体积小,可靠性高,功能强,灵活方便等许多优点,广泛应用于国民经济的各个领域。
单片机的应用,从根本上改变了传统的控制系统设计思想和设计方法,以前由模拟电路和数字电路实现的大部分电路,现在都能用单片机通过软件方法来实现。
单片机在工业控制中的应用,特别是在实时监测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
广告灯控制的出现,对广告夜景的美化和视觉享受,起到了十分重要的作用,也为一个城市商务区增添了一道亮丽的风景线。
STC89C52RC单片机简要介绍单片机应用系统由硬件系统和软件系统两部分组成。
硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。
软件系统包括监控程序和各种应用程序。
在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。
本系统采用单片机为中心器件来设计广告灯,单片机系统实用性强,操作简单,扩展性好,灵活多变。
可以利用其方便快捷的进行实验。
在单片机应用系统在其中配置的键盘可以是独立键盘,也可能是矩阵键盘。
显示器也为LED数码管。
但在此次实验中运用的是矩阵键盘。
来控制不同的发光二极管使之呈现出理想的效果,从而达到预期的目标
第二章总体设计方案
一、设计要求
键盘输入使8个led发光二极管作16种不同的变幻,控制矩阵键盘。
即用硬件设计和软件设计相结合的方式,来进行此功能的实现。
其中硬件的设计主要包括:
电路的设计、选取元器件、编辑元器件,元器件的属性设置、连插件,连接电路和检测。
软件的设计主要包括:
添加源程序,编辑源程序,生成目标代码文件(扩展名为.HEX)。
最后两种设计相结合,在单片机上体现出这种功能的实现。
二、硬件电路的设计方案
按照设计要求,确定硬件电路的总体设计方案,以8052单片机为核心的控制电路,包括复位电路、定时电路,4*4矩阵键盘和二极管控制电路。
2.1复位电路设计
单片机在可靠的复位之后,才会从0000H地址开始有序的执行应用程序。
同时,复位电路也是容易受到外部噪声干扰的敏感部分之一。
因此,复位电路应该具有两个主要的功能:
1.必须保证系统可靠的进行复位;2必须具有一定的抗干扰的能力。
系统选用6MHz晶振,则一个机器周期为2us,那么复位脉冲宽度最小应为4us。
在实际应用系统中,考虑到电源的稳定时间,参数漂移,晶振稳定时间以及复位的可靠性等因素,必须有足够的余量。
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
8052系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。
2.2定时电路设计
CPU就是通过复杂的时序电路完成不同的指令功能的。
时钟信号可以由两种方式产生:
一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。
本实验中用到的是内部定时电路。
从而实现对二极管开关的的时间长短,延时的长短进行控制,因此具有重要的意义。
电路图如下所示:
2.3、4*4矩阵键盘的设计
矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键显示在LED数码管上。
用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线。
4*4矩阵键盘是用4条I/O线作为行线4条I/O线作为列线在行线和列线的交叉点上设置一个按键每个按键有它的行值和列值。
开始先对第一列进行扫描,如果没有按键,再对第二列、第三列、第四列分别进行扫描,如果没有返回到开始。
如果第一列有按键,分别对第一行、第二行、第三行、第四行进行扫描,判断是哪一个按键被按下。
用AT89C51单片机对4*4矩阵键盘进行动态扫描,当按键盘的键时,可以产生相应的二极管亮灭的变化并实时显示出来。
矩阵键盘电路图:
2.4二极管控制电路
二极管控制电路是整个实验的重要部分,也是展示的主要部分。
芯片的并行口P2与二极管相连。
通过编写不同的延时程序,来实现不同的”shanshuo”子程序。
并与矩阵键盘相连接,通过矩阵键盘的控制,来显示相应的效果。
电路图如下:
Protel原理图设计:
在此次课程设计中,主要使用Protel99SE来进行电路的设计Protel为设计者提供了一个集成的电路设计环境,包括原理图设计和PCB布线工具、电路仿真和集成的设计文档管理。
而本次课程设计主要应用其绘制电路原理图。
硬件设计原理图见附录一。
三、软件设计程序
C语言程序代码:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharnum,temp;
voiddelay(uintx)//延时子程序
{
uinti,j;
for(i=x;i>0;i--)
for(j=100;j>0;j--);
}
voidliushuideng(ucharq,uintp)//流水灯控制子程序
{
ucharaa,i;
aa=0xfe;
for(i=8;i>0;i--)
{
P2=aa;
delay(p);
aa=_crol_(aa,q);
}
}
voidshanshuo1(uintw)//奇数灯和偶数灯交替闪烁子程序
{
P2=0x55;
delay(w);
P2=0xaa;
delay(w);
}
voidshanshuo2(uinte)//后四个灯和前四个灯交替闪烁子程序
{
P2=0xf0;
delay(e);
P2=0x0f;
delay(e);
}
voidkeys()//检测4*4矩阵键盘哪个按下子程序
{
P3=0xfe;//判断有无按键按下,进行第一列扫描
temp=P3;
temp=temp&0xf0;//取行状态,对列状态进行屏蔽
if(temp!
=0xf0)//如果有按键按下,计算其编码值
{
delay(10);//消除抖动
temp=P3;
temp=temp&0xf0;//排除普通机械抖动造成的影响
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xee:
//按键0按下,其编码值给num
num=0;
break;
case0xde:
//按键1按下,其编码值给num
num=1;
break;
case0xbe:
//按键2按下,其编码值给num
num=2;
break;
case0x7e:
//按键3按下,其编码值给num
num=3;
break;
}
}
}
P3=0xfd;//进行第二列扫描
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xed:
num=4;
break;
case0xdd:
num=5;
break;
case0xbd:
num=6;
break;
case0x7d:
num=7;
break;
}
}
}
P3=0xfb;//进行第三列扫描
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xeb:
num=8;
break;
case0xdb:
num=9;
break;
case0xbb:
num=10;
break;
case0x7b:
num=11;
break;
}
}
}
P3=0xf7;//进行第四列扫描
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xe7:
num=12;
break;
case0xd7:
num=13;
break;
case0xb7:
num=14;
break;
case0x77:
num=15;
break;
}
}
}
}
voidxiaoguo()
{
switch(num)
{
case0:
//当编码值为0时,二极管亮后四个灯
P2=0xf0;
break;
case1:
//当编码值为1时,二极管亮第一三五七个灯
P2=0x55;
break;
case2:
//当编码值为2时,二极管亮两边两个灯
P2=0x7e;
break;
case3:
//当编码值为3时,亮第二个第七个灯
P2=0xbd;
break;
case4:
//当编码值4时,二极管亮前四个灯
P2=0x0f;
break;
case5:
//当编码值为5时,两第二四六八个灯
P2=0xaa;
break;
case6:
//当编码值为6时,亮第三个灯和第五个灯
P2=0xdb;
break;
case7:
//当编码值为7时,亮第四个和第五个灯
P2=0xe7;
break;
case8:
//当编码值为8时,前四个灯和我后四个灯慢速交替闪烁
shanshuo2(2000);
break;
case9:
//当编码值为9时,奇数灯和偶数灯慢速交替闪烁
shanshuo1(2000);
break;
case10:
//当编码值为10时,灯从最右边向左每隔一个慢速流水闪
liushuideng(2,1500);
break;
case11:
//当编码值为11时,灯从最右边慢速先做流水闪
liushuideng(1,1500);
break;
case12:
//当编码值为12时,前四个灯和后四个灯快速交替闪烁
shanshuo2(800);
break;
case13:
//当编码值为13时,奇数灯和偶数灯快速闪烁
shanshuo1(800);
break;
case14:
//当编码值为14时,灯从最右边向左每隔一个快速流水闪
liushuideng(2,500);
break;
case15:
//当编码值为15时,灯从最右边以此向左快速流水闪
liushuideng(1,500);
break;
}
}
voidmain()
{
while
(1)//主程序,无条件循环以下环节
{
keys();//判断是哪个按键按下子程序
xiaoguo();//在二极管上显示对应的按键效果
}
}
第三章调试及结果分析
一、调试及结果分析
矩阵键盘扫描所对应的编码,为按键的序列号,通过调试,其最终结果为:
当按下为0键时,二极管亮后四个灯
当按下为2键时,二极管亮第一三五七个灯
当按下为2键时,二极管亮两边两个灯
当按下为3键时,亮第二个第七个灯
当按下为4键时,二极管亮前四个灯
当按下为5键时,亮第二四六八个灯
当按下为6键时,亮第三个灯和第五个灯
当按下为7键时,亮第四个和第五个灯
当按下为8键时,前四个灯和后四个灯慢速交替闪烁
当按下为9键时,奇数灯和偶数灯慢速交替闪烁
当按下为10键时,灯从最右边向左每隔一个慢速流水闪
当按下为11键时,灯从最右边慢速先做流水闪
当按下为12键时,前四个灯和后四个灯快速交替闪烁
当按下为13键时,奇数灯和偶数灯快速闪烁
当按下为14键时,灯从最右边向左每隔一个快速流水闪
当按下为15键时,灯从最右边以此向左快速流水闪
二、设计总计
通过这次课程设计,我得到了一次用专业知识专业技能分析和解决问题全面系统的锻炼。
使我对单片机有了一个较高层次的认识,使我在单片机的基本原理,单片机应用系统的基本原理,单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步。
获得丰富理论知识的同时,极大地提高了实践能力,动手能力。
把知识与实际相结合,对今后单片机进一步研究和深入有着重要作用。
参考文献:
《单片机原理及C51程序设计》清华大学出版社
附录一:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 广告灯的设计 单片机课程设计 广告 设计 单片机 课程设计