基于51单片机旋转LED课设.docx
《基于51单片机旋转LED课设.docx》由会员分享,可在线阅读,更多相关《基于51单片机旋转LED课设.docx(19页珍藏版)》请在冰豆网上搜索。
基于51单片机旋转LED课设
课程设计
课程名称_单片机原理及接口技术_
题目名称基于51单片机旋转LED
学生学院___
专业班级___
学号
学生姓名_________
指导教师_________________
2016年06月15日
任务书
广东工业大学课程设计任务书
题目名称
基于STC89C52的旋转LED
学生学院
专业班级
姓名
学号
一、课程设计的内容
用STC89C52单片机制作一台旋转LED设备:
1.设计并绘制硬件电路图;
2.选择所需元器件,根据电路图在洞洞板上焊接好元器件;
3.编写程序并将调试好的程序固化到单片机中;
4.对作品进行测试。
二、课程设计的要求与数据
单片机采用STC89C52芯片,供电采用无线供电模块,电机驱动电路,溢出中断标志采用红外发射与接收,由底座的电机旋转带动顶部单片机及LED灯电路的旋转,由无线供电模块给单片机及LED灯供电,由单片机控制LED亮灭的周期,在旋转时形成图案及文字,按此要求设计硬件和软件以实现这一功能。
三、课程设计应完成的工作
1.结合已有的开发板,用其进行程序的下载;
2.完成软件、硬件的设计,并进行硬件的焊接制作,并将调试成功的程序固化到单片机中,最后进行硬件与软件的调试;
3.撰写设计说明书。
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
硬件、软件设计
大学城工学三号馆317
6月6-8日
2
焊接电路板
大学城工学三号馆317
6月9-11日
3
软件、硬件调试
大学城工学三号馆317
6月12-13日
4
撰写报告书
宿舍
6月14-15日
5
答辩
大学城工学三号馆317
6月16-17日
五、应收集的资料及主要参考文献
[1].李全利.单片机原理及接口技术(第2版).高等教育出版社,2009年01月
[2].求是科技.单片机典型外围器件及应用实例.北京:
人民邮电出版社,2006年02月
[3].谭浩强.C语言程序设计(第二版).北京:
清华大学出版社,1999年12月
[4].刘坤等编著.51单片机C语言应用开发技术大全.北京:
人民邮电出版社2008年09月
发出任务书日期:
2016年06月06日指导教师签名:
计划完成日期:
2016年06月17日基层教学单位责任人签章:
主管院长签章:
摘要:
本设计是基于物体在快速运动时给与人的眼睛一种视觉暂留的效果。
故设计使用51单片机的两组I/O口控制16个LED灯的亮灭,底座采用可调电源、可调电阻与电机的组合来提供不同的转速来旋转,又用无线供电模块给顶部的单片机和LED灯供电,并且设置有红外发送与接收模块,发送端采用小遥控器,接收端采用0038红外接收头,从而通过按遥控器上面不同的按键使旋转起来的LED按照程序中设定的不同图案的显示。
本设计主要有两个难点:
无线供电的不稳定和遥控控制这两个难点部分。
通过许多天的尝试和调试,终于基本解决了这些问题。
当然,在本设计中存在着许多不足之处,例如地方的光照条件,地方供电问题等等,有待进一步改善和学习。
1.绪论
1.1背景
随着时代的发展,在室外没有投影仪的情况下,用于宣传广告的LED显示已不断创新。
但是传统的LED显示具有普遍的缺点:
位置固定、操作麻烦、价格昂贵,体积庞大,安装困难等。
因此设计出一款轻便、便宜,结构简单的LED显示——旋转LED已是时代潮流所需。
1.2意义
微机不停更新换代,功能不断强大。
微机具有体积小,重量轻,控制能力突出等优点,且比较容易掌握,使用方便。
通过单片机控制LED灯则很好的解决了传统LED显示的普遍去电。
如今多数LED显示为点阵显示,LED的利用率和新颖度大大下降,而通过单片机控制的旋转LED可以用于像酒吧,发廊等一切需要广告的地方,这样不仅降低了成本,而且大大增加了对顾客的吸引力,这样便极大地提高了企业竞争力。
2.硬件部分
LED
红外发射
红外接收
电机
可调电源
无线供电模块
STC89C52单片机
2.1硬件设计
采用可调电源通过可调电阻给电机、无线供电模块供电,无线模块给STC89C52单片机、红外接收端、LED供电,采用遥控器作为红外发射,发送的红外信号给接收端处理,再送往单片机中断处理,把单片机存储的不同图案通过I/O口的高低电平送往LED,通过LED的亮灭实现图案显示。
2.2硬件具体模块
2.2.1可调直流电源模块
采用可调电源,将电压调为6-12V同时给电机和无线供电模块供电。
2.2.2电机模块
采用普通电动小马达作为电机提供旋转运动,与可调电阻(阻值为100-300欧姆)串联,从而调节可调电阻的阻值来改变电机的转速。
2.2.3无线供电模块
采用网上购买到的无线供电模块线圈通过感应电压给顶部供电,作为电源给单片机、LED、红外接收端供电。
2.2.4STC89C52单片机及最小系统模块
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
具有8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间且可直接使用串口下载。
最小系统采用2个20pF的电容和1个11.0592MHz的晶振搭建而成,因考虑电路的简便和轻便,故省去复位电路。
2.2.5LED模块
采用16个红色LED灯,分别接入单片机的P0、P1口,其中,采用的是共阳的接法。
2.2.6红外发送、接收端
发送端用的是小型遥控器,接收端采用的0083红外接收管,并且红外接收端的OUT脚接入单片机的P3.2口,外部中断0口,提供中断信号
3.软件部分
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitD=P3^2;
sbitIR=P3^2;
ucharIRtime;
bitIR_ok;
bitIR_receive_ok;
ucharIRcord[4];
ucharIRdata[33];
ucharcodetb1[];
ucharcodetb2[];
uchari,j;
uintcount;
uinttemp;
/*图案字形码*/
ucharcodetb1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
ucharcodetb2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//图案1
ucharcodetb3[]={0x5f,0xaf,0xd7,0xeb,0xf5,0xfa,0xf2,0xf1,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
ucharcodetb4[]={0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,
0x5f,0xaf,0xd7,0xeb,0xf5,0xff,0xff,0xff};//图案3
ucharcodetb5[]={0x6f,0x1f,0x27,0x3b,0x35,0x5a,0x72,0x91,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
ucharcodetb6[]={0x0f,0x1f,0x7f,0x5f,0x9f,0x5f,0x7f,0xbf,
0x5f,0xaf,0xd7,0xeb,0xf5,0xff,0xff,0xff};//图案2
voiddelay(uintz)
{
ucharx,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}//延时1ms函数
voidbolang1()//图案1函数
{while(D==1)
{
for(i=0;i<15;i++)
{
P0=tb1[i];
P1=tb2[i];
delay
(2);
}
for(j=15;j>0;j--)
{
P0=tb1[j];
P1=tb2[j];
delay
(2);
}
}
}
voidbolang2()//图案3函数
{
while(D==1)
{
for(i=0;i<15;i++)
{
P0=tb5[i];
P1=tb6[i];
delay
(2);
}
for(j=15;j>0;j--)
{
P0=tb5[j];
P1=tb6[j];
delay
(2);
}
}
}
voidbolang3()//图案2函数
{while(D==1)
{
for(i=0;i<15;i++)
{
P0=tb3[i];
P1=tb4[i];
delay
(2);
}
for(j=15;j>0;j--)
{
P0=tb3[j];
P1=tb4[j];
delay
(2);
}
}
}
voidbolang4()//图案4函数
{while(D==1)
{P0=0x5f;
P1=0xd7;
delay(3000);
P0=0xd7;
P1=0xbf;
delay(3000);
}
}
voidbolang5()//图案5函数
{while(D==1)
{P0=0x8f;
P1=0xfe;
delay(3000);
P0=0xfe;
P1=0x8f;
delay(3000);
}
}
voidbolang6()//图案6函数
{while(D==1)
{
P0=0x00;
P1=0xff;
delay(300);
P0=0xff;
P1=0x00;
delay(300);
}
}
voidIR_init()//红外初始化函数
{
TMOD=0x02;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
IT0=1;
EX0=1;
}
voidtime0()interrupt1//定时器每溢出一次,变量加1,用于检测码的时长
{
IRtime++;
}
voidint0()interrupt0
{
staticuchari;
staticstartflag;
if(startflag)
{
if((IRtime>32)&&(IRtime<54))//判断引导码
i=0;
IRdata[i]=IRtime;
IRtime=0;
i++;
if(i==33)//33位数据录入
{
IR_ok=1;
i=0;
}
}
else
{
startflag=1;
IRtime=0;
}
}
voidIRcordpro()//红外解码
{
uchari,j,k,dat,value;
k=1;
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
dat=IRdata[k];
if(dat>5)
value|=0x80;
if(j<7)
value>>=1;
k++;
}
IRcord[i]=value;
value=0;
}
IR_receive_ok=1;
}
voidIRword()//遥控器码值选定图案函数
{
switch(IRcord[2])
{
case0x45:
bolang1();
break;
case0x46:
bolang2();
break;
case0x47:
bolang3();
break;
case0x44:
bolang4();
break;
case0x40:
bolang5();
break;
case0x43:
bolang6();
break;
default:
break;
}
IR_receive_ok=0;
}
voidmain()
{
uchari;
IR_init();
while
(1)
{
P0=0x00;
P1=0x00;//全亮等待
if(IR_ok)
{
IRcordpro();
IR_ok=0;
}
if(IR_receive_ok)
{
IRword();
}
}
}
4.心得
经过两个星期几乎每晚熬夜的艰苦奋斗,终于把这个简陋但不简单的作品做出来了。
现在是夏天,每天都奔波于宿舍、实验室、器材店当中,衣服每次都被汗水给浸透,而且设计制作的过程并不是一帆风顺的,首先因为材料的一无所有而慢慢采购,期间更换过很多次方案,然后又要跑去买;然后硬件和软件也经常出问题,而且是那种解决掉一个旧问题就出现一个新问题。
每天都在想着怎么解决。
硬件部分问题主要为马达的转轴与顶层的板子的固定问题,使得旋转起来稳定一点,还有无线供电模块供电不稳定,刚开始采用了电池作为底座的电机和无线供电模块的供电,然而电量不稳定,导致LED的亮度大大下降甚至不亮,到后来顶部的无线供电模块给LED供电不稳定,又试过采用安装纽扣电池在顶板给LED和单片机供电,然而又因为纽扣电池耗电太快,又放弃了,恢复为无线供电,所以无线供电模块供电的不稳定性依然存在。
软件部分主要为延时的调整,怎样才能稳定地显示图案;还有就是红外遥控的部分,我们都没有学过怎样使用红外遥控,所以又得看了很久视频和各种书籍才能写出来比较基础的红外遥控程序。
不管怎么说,作品算是做出来了。
我们也得到了足够的意志力和耐心锻炼,知识也得到了扩展,这也是这次课程设计的最大收益,也相信这会对我们以后的学习、工作也很大的帮助。
通过这旋转LED的制作,我收获了很多,在这里我要感谢和我一起的队友,也感谢老师让我们有这个一起制作,收获知识的机会。
希望我们以后再接再厉,做出更厉害、更有意义的作品出来!
5.参考文献
【1】李全利单片机原理及接口技术第2版高等教育出版社2009(01)
【2】胡阳基于视觉暂留的动态扫描LED旋转屏【J】.现代电子技术2012(04)
【2】求是科技单片机典型外围器件及应用实例北京人民邮电出版社,2006(02)
【3】谭浩强C语言程序设计(第二版)北京清华大学出版社,1999(12)
【4】刘坤等编著51单片机C语言应用开发技术大全北京人民邮电出版社2008(09)
附录:
1.原理图
2.实物图