实践课程设计报告
20##年10月
目 录
一、设计目的... 1
二、设计要求... 1
三、总体方案... 1
3.1电路原理图... 1
3.4 Proteus软件仿真... 3
五、实现过程中遇到的问题及措施... 3
一、设计目的
一列灯旋转起来感觉像稳定的字显示在空中,旋转LED旋转起来是一个圆,那么就需要有一个传感器来判断起点位置,用红外对管来的便宜些,而且实现起来也容易。这个起点检测非常重要,单片机就是根据这个起点来判断是否要开始显示 数据的。如果起点检测不到 单片机就不开始显示。
二、设计要求
十字旋转屏套件系统设计
设计任务:利用所给的原件制作一个十字旋转LED显示屏,其实就是用电动机带动LED转动,用单片机控制LED点亮和熄灭来形成文字的,这些文字一看上去,就象悬浮在空中的。
本次设计任务分为两部分,一位底座供电部分,二为主板旋转部分。底座为其供电,主板负责文字旋转。
制作完成后,载入程序,调试并分析结果。
三、总体方案
3.1电路原理图
原理:1.单片机32个IO口分别控制16个红LED和16个绿LED;
2.一个红外发射管,一个红外接收管,板上的红外接收管每转动一圈就会导通一次,让单片机知道从哪一点开始播放字符或者图象;
3.无线供电部分通过线圈向主板供电,相当于变压器的工作原理
3.2 主要元器件
3-6V供电的长轴电动机:专门定做的长轴驱动电动机一只,该电动机必须带动电路板进行圆周转动,让板上LED发光二极管做圆周运动。本电路为了降低电动机的转速,特采用二极管的压降给电动机供电。电动机转动的原则是,不要太快,刚刚好能产生稳定的字符就行了!转速慢更安全,不会碰坏器件或人体或者物体,当然,如果用户安全措施好,可以加高电压提高转速,这样显示可以做到无任何闪烁。
红、绿0805贴片的超亮发光二极管各18只:实际上每种色只需要16只,为了保险,防止烫坏,太小了,时间一长温度一高一定会烫坏,所以本站多配4支,一共36支。万一烫坏了很多支怎么办?可以全部换成直插式的小体积的发光二极管,可以选2*3MM的方的,也可以选普通3mm圆的稍微磨去一点点。
贴片封装的44脚的STC89C(LE)51主控制芯片一只:这就需要大家会单片机了,因为还需要大家自己将程序和显示内容写进芯片。
转轮连接器:这是电机轴和主板专用的胶件,否则,线路无法让电动机带动转,还有,最后做好后还要做平衔校正,保证电动机在转动时没有强烈的振动,即达到省电目的,又延长寿命。所谓的平衡校正就是让电路板上质量以电机轴为中心分布均匀,确保转动时平稳。
贴片电阻、红外发射管、红外接收管、插针、二极管、电阻、电容等配件:大家从图上看到的板上安装的元件,我们的红处接收管采用高灵敏的方型接收管。
外壳支架:电机总得有个固定的地方才能让电路板转动。出于实验好玩用途,还是可以用本站现成的具有一定的机械强度的多用制作盒来改装。
无线输电部分的发射电路部分元件:如果不用无线输电,以上已经可以完成。本制作采用简易的无线输电具有无触点寿命长,但是效率要低,成本要高,这点请大家要理解。该部分由万能板组装有关元件,包括无线输电传输部分铁氧体磁芯:这也是本站特意订做的铁氧体磁芯,内孔刚好套住转轮连接器,在本磁芯外绕电流感应线圈,来实现无线供电,另处还有一只B772的中功率三极管和散热器以及其它电子元件。(已经包含柒包线制成的空心脱胎线圈)
3.3 主要制作流程
1、按照供电版原理图焊接电路,焊接过程中需仔细区分正负极,并且千万别短接和虚焊。
2、同理,按照主控板原理图焊接好电源整流部分以及旋转转接板。注意贴片过程中,贴片之前先在贴片点上好焊锡。
3、在外壳相应的地方钻好合适大小的孔,将三部分电路板用导线相连并组装完成。
4、接上电源,导入事先编好的程序,调试结果。
5、观察最终结果,并拍下照片。
3.4 Proteus软件仿真
五、实现过程中遇到的问题及措施
1.二极管型号和方向的识别
2.没有焊接过贴片,贴片体积小,焊接过程难度大
3.因为一开始选用的焊锡质量稍差,给焊接过程添加了麻烦
六、设计心得体会
通过这次制作可以很系统地将课本上的知识运用到实际当中,确实是一个很好锻炼的机会,在焊接之前先看原理图以便理解电路工作原理,然后进行电路焊接。由于焊接的器件都比较小,所以焊接过程比较麻烦,经常会出现虚焊等情况,所以经常进行反复检查。希望多做些此类的设计活动。
七、对该设计的建议
在该设计过程中,如果我们需要程序运行速度快一点的话我们可以用低级语音_汇编语音来实现。
第二篇:旋转LED灯设计
旋转LED灯设计
系部:电气信息工程系
班级:电气工程及其自动化0941班
姓名:王磊 郭志剑 王大辉
指导老师:瓮 嘉 民
时间: 20##年11月7日-11月18日
旋转LED灯设计
一、设计要求
基于视觉暂留原理,利用高速旋转中控制LED亮灭,设计了一种旋转式LED显示屏。在稳定旋转地载体上安装16个贴片发光二极管。静止时,各个发光二极管等间距排布,随着扫描速度的加快,在C语言程序精确控制下,不断扫描出预设的文字,图案等。
二、系统方案
此次以AT89S52单片机为主控单元,利用视觉暂留效应,设计一种旋转式LED显示屏。磁钢用来完成同步的,当霍尔传感器旋转到磁钢处,感应到它的存在就会恢复到最初状态,即使前一个过程没有显示完成。通过6V直流电来驱动电机,使加载在直流电机上的设计电路达到匀速稳定旋转的效果,从而实现贴片发光二极管的旋转显示文字、图案的效果。
图1 系统方框图
三、硬件电路设计
3.1 总电路设计
图2 总电路图
3.2 驱动模块
本设计的驱动模块由一个11.0592MHz的晶振和两个30PF的小电容阻成,它们决定了单片机的工作时间精度为1Us。单片机内各部件之间有条不紊地协调工作,其控制信号是在基本节拍的指挥下按一定时间顺序发出的,这些控制信号在时间上的相互关系就是CPU时序,而产生这种基本节拍的电路就是振荡器和时钟电路。
AT89S52单片机内部有一个用于构成振荡器的单级反相放大器。引脚XTAL1为反相器输入端,XTAL2为反相器输出端。当在放大器两个引脚上外接一个晶体(或陶瓷振荡器)和电容组成的并联谐振电路作为反馈元件时,够成一个自激振荡器。
图3 驱动模块
3.3 显示模块
旋转LED灯是一种通过同步控制发光二极位置和点亮状态来实现图文显示的电子器件,其结构新颖,成本低廉,可视角度达360°。
在LED上显示汉字时,应先取得汉字的点阵构成数据,然后将其写入显示存储器中进行显示。
人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。本设计采用16个并排贴片发光二极管,利用人眼的“视觉暂留效应”显示文字及图案。
图4显示模块
3.4 霍尔传感器模块
在本电路中,需要一个低电平,才能点亮发光二极管。考虑到该电路在工作过程中在不断旋转的情况,不能按传统方法给电路低电平。为此在电路的设计过程中,添加了霍尔传感器模块,霍尔传感器模块的主要部分即为霍尔传感器。霍尔传感器处于工作状态时,输出总是处于高电平状态,当磁钢N极接近传感器正面的有效距离,输出端变为低电平。当磁钢撤离传感器有效距离,输出端又显示低电平,从而产生下降边沿,使单片机中断口接收到下降沿,从而发出中断,使得电路能够同步。当霍尔传感器感应到N极时会回到原始状态,达到复位的功能。简单的说,就是当显示屏旋转到磁铁所在位置时,输出低电平脉冲至单片机,作为位置基准信号。
霍尔传感器是一种磁传感器。它可以检测磁场及其变化,可在各种与磁场有关的场合中使用。同时霍尔传感器还具有开关速度快,无瞬间抖动;寿命长,体积小,安装方便等优点。
在焊接霍尔传感器时候,因为它的三个管脚具有不同的功能,所以焊接的时候应该弄明白其三个管脚的具体作用。简单的辨别方法为:印有型号的一面朝上,左边第一个接高电平,中间接低电平,右边第一个接输出。
霍尔传感器功能方框图如图5所示。
图5 霍尔传感器 功能方框图
四、程序设计
4.1程序流程图
4.2、控制程序说明
当程序开始运行的时候,首先就是要对程序进行初始化(通过复位按键实现),主要作用就是让程序按照我们所设计的初始值去运行。初始化之后,当显示屏旋转到磁铁所在位置时,霍尔传感器在磁场作用下输出低电平脉冲至单片机,作为位置基准信号。再根据霍尔元件检测到的同步信号,对数据进行校对,如果有数据输入的话那就将数据计数器进行清零。执行完成后返回到初始化操作之后重复以上的操作。
4.3、源程序
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar a,j;
uint k;
uint code table1[]={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0x10,0x60,0x01,0xC6,0x30,0x02,0xE2,0x22,0x22,0xE2,0x02,0x02,0xFE,0x02,0x02,0x00,
0x04,0x04,0xE4,0x24,0x24,0x64,0xB4,0x2F,0x24,0xA4,0x64,0x24,0x24,0xE6,0x04,0x00,
0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,
0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
0x00,0x02,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0xC3,0x82,0x00,0x00,
0x20,0x22,0x12,0x12,0xFA,0x4E,0x4A,0x4A,0x4A,0x4A,0x4A,0xFA,0x02,0x02,0x00,0x00,
0x00,0x02,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0xC3,0x82,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
0x24,0x38,0xE0,0x3F,0xE8,0x24,0x26,0x12,0xD2,0x3E,0xD2,0x12,0x12,0x16,0x02,0x00,
0x00,0x04,0x74,0x55,0x56,0x54,0x74,0x04,0x00,0xFE,0x02,0x22,0x5A,0x86,0x00,0x00,
0x00,0x08,0x48,0x48,0x48,0x48,0x48,0x7F,0x48,0x48,0x48,0x48,0x48,0x48,0x08,0x00,
0x40,0x20,0x30,0xAC,0x23,0x24,0x28,0xB0,0x20,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
uint code table2[]={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0x04,0x04,0xFF,0x00,0x00,0x00,0x07,0x02,0x02,0x07,0x40,0x80,0x7F,0x00,0x00,0x00,
0x00,0x00,0x7F,0x04,0x05,0x05,0x05,0x7F,0x05,0x05,0x05,0x25,0x44,0x3F,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,
0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
0x21,0x11,0xFD,0x4B,0x49,0x49,0xF9,0x20,0x11,0xF9,0x4F,0x49,0x49,0xF9,0x01,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,
0x40,0x30,0x0F,0x00,0x3F,0x10,0x08,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x08,0x00,
0x00,0x10,0x11,0x51,0x91,0x7D,0x0B,0x09,0x00,0xFF,0x00,0x08,0x08,0x10,0x0F,0x00,
0x20,0x1C,0x00,0x00,0x3E,0x40,0x40,0x41,0x4E,0x44,0x40,0x70,0x22,0x1C,0x08,0x00,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //以上数组都是汉字字模数据
void delay(int xms) //延时xms 毫秒
{
int i,j;
for(i=xms;i>0;i--)
for(j=30;j>0;j--);
}
void main()
{
uint i;
EA=1; //开全局中断
// IT1=1;
while(1)
{
for(j=0;j<1;j++)
{
for(i=0;i<96;i++)
{
P0=~table1[i+k]; //低电平点亮,所以取反
P1=~table2[i+k];
delay(1);
}
P1=0XFF; //关灭全部的led
P0=0XFF;
a=1;
EX1=1; //开外部中断1
delay(10);
while(a); //等待中断 当中断时,a=0;则单片机继续执行
}
k++;
if(k==1329) k=0;
}
}
void int1() interrupt 2 //外部中断1服务程序
{ //通知单片机继续执行
a=0;
EX1=0; //关外部中断1
}
五、实物照片
六、元件清单
七、设计制作要点
在设计制作中注意如下事项:
(1)贴片发光二极管有阴极和阳极的区别,在焊接的过程中,应该先检测其具体极性,再按照原理图进行焊接。
(2)在印刷电路板的过程中可能要用到跳线,在焊接的过程中一定要将跳线焊接上,在本次焊接过程中,因为有根接地的跳线没有焊接,导致整个电路不通,经反复检测后才发现该问题。
参考文献
[1] 瓮嘉民等. 单片机应用开发技术-基于protes单片机仿真和C语言编程[M].北京:中国电力出版社,2010.
[2] 江思敏等. 原理图与PCB设计教程. 北京:机械工业出版社,2009.
[3] 李敬伟等. 电子工艺训练教程. 北京:电子工业出版社,2010.
[4] 李全利等 单片机原理及应用. 北京:清华大学出版社,2009.
[5] 田立等.51单片机C语言程序设计快速入门. 北京:北京航空航天大学出版社,2008.
个人感受
为期两周的单片机实训已经结束了,这次我们小组设计的是旋转LED灯。经过这两周努力,已经基本实现了设计的最初目的。通过这次学习,使我们学习到了很多知识,同时也对电子设计制作有了更深的感悟。
在开始设计的时候,通过在网上查看视频,对我们将要设计的旋转LED灯有了最初的认识。接下来要做的就是收集有关该制作的相关资料。磨刀不误砍柴工,由于我们的准备工作做的比较充分,所以在制作实物的过程还是比较顺利的。但是,制作的过程中也遇到了一点问题,最大的就是PCB板设计不合理。首先,PCB板上的焊盘设计太小了,在钻孔和焊接过程中都产生了困难;其次,PCB板上的布线太宽,在焊接的时候产生了短路的可能。困难确实是存在的,但是在老师的帮助下,我们小组还是克服了这些困难,成功制作出了旋转LED灯。
我认为能够顺利完成这次实训,首先要感谢老师的精心指导,没有老师的精心指导,我们可能在最初的电路原理图设计就是错误的。其次,这次实训也离不开我们小组的分工合作,分工明确,设计电路图、焊接、编程,分别由每个人负责,提高了效率。同时,也和个人的努力是分不开的。
通过这次实训,我明白了自己在专业知识方面还是很薄弱的,对很多元器件的具体功能还不是很了解。这次实训也使我对单片机有了更深入的认识。
系别:电气信息工程系
专业:电气工程及其自动化0941班姓名:王磊
学号:200910710104
个人感受
11月7号至11月20号为期的两周实训已经结束,我们小组设计的旋转LED灯。经过两周的努力和三人的配合成功的完成了这次实训的内容。期间感受很多收获也很多。也同时发现了很多不足,很多要学习的地方。
我们在得知设计这个实验项目时,便通过上网看视频和查阅相关资料来对这个设计项目深入的了解和学习。这样我们学到了很多 学到很多关于这个项目的知识。得知在做这个实训时重点和要点,为这次实训做好了充分的准备,理论准备的很好,但是实践过程中还会遇到一些问题。如焊接过程中由于粗心发光二极管阴阳极焊接错误,导致二极管不能正常发光;在设计PCB焊盘时设计的不合理,PCB焊盘设计太小、布线太宽等,这样钻孔和焊接遇到了麻烦。在老师的帮助下和我们三人的共同努力还是克服了这些困难。成功的完成了这次实训的内容。
能够成功完成这次实训内容首先感谢老师的帮助和指导,没有老师的指导也许最初电路原理图就会设计错误;其次是主力明确的分工和领导,没有明确的分工我们也许不会这么高效率的完成这次实训的内容;再者是我们三人的共同努力和合作,使我知道合作很重要,合作过程中我们相互学习共同进步。
通过这次实训是我看到自己很多方面的不足,知道了那些方面需要加强学习,也使我对单片机有更深一步的了解。
系别:电气信息工程系
专业:电气工程及其自动化0941班
姓名:王大辉
学号:200910710130
个人感受
最近的两个周是我们的单片机实训课程。现在两周已经过去了,这次实训让我学到了很多。这次的实训我们这一组的课题是旋转LED。一开始感觉做起来挺难的,可是我们还是努力的想完成这个任务。我曾经看过网上别人做的旋转LED的视频,确实很好。
首先是程序问题。虽然我们已经学了两个多月的单片机了,可是我们在课本上学到的还不够,我们需要参考其他的书籍和别人的经验。.程序的编写让我在单片机方面有有了更多的认识。在编写程序的时候不允许有一点的错误,哪怕是一个符号都很重要,都决定了程序的对错。知识+细心是必不可少的要素。
在做硬件的时候还是需要现在电脑上做出图。PCB对我们来说是一个比较陌生的东西,曾经我们在《电子工艺实训教程》上看到过这方面的知识。只是我们需要用的软件不是那本课本里用的Protel DXP 20## SP2,而是Altium Designer 6来设计PCB电路。所以我图书馆去找相关的学习资料,并且在网上观看有关的视频教学。通过看课本及网络教学视频,我初步掌握了软件的基本应用,可以比较顺手的把我们需要的PCB电路板制作出来了。然后经过印刷,腐蚀 ,打孔,电路板才算制作成功。当所有准备工作已经做完,我们终于开始了最后的焊接。相对程序的编写,PCB的制作,焊接还是相对简单的过程,毕竟我们曾经做个这样的实训。可是到焊接的时候才发现,我们的焊接需要额外注意。
虽然是第一次做PCB跟电路板,但是我们尽了自己的努力。尤其是在老师和同学的帮助下,我们才能够完成这次的设计跟制作。另外就是作为一个团队,我们明确了个人的分工,很好的合作来完成这个题目。其实这次实训最大的收获就是我们学到的东西还不够,我们应该更努力的去补充自己的知识跟能力,而且设计跟制作是有区别的,动手能里是必备的能力。对于单片机我们还需要更加深一步的学习。
系别:电气信息工程系
专业:电气工程及其自动化0941班
姓名:郭志剑
学号:200910710117