单片机课程设计报告.docx
《单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告.docx(52页珍藏版)》请在冰豆网上搜索。
单片机课程设计报告
广东工业大学课程设计任务书
题目名称
基于STC89C52的旋转LED时钟
学生学院
材料与能源学院
专业班级
微电子学2班
姓名
黄楚敏何俊鑫黄达黄树恒
学号
3110007484311000748331100074853110007486
一、课程设计的内容
用STC89C52单片机制作一测温仪旋转LED时钟:
1.设计并绘制硬件电路图;
2.焊接好元器件;
3.编写程序并将调试好的程序固化到单片机中。
二、课程设计的要求与数据
单片机采用STC89C52芯片,时钟芯片采用DS1302。
用电机带动驱动板旋转系统上电后,驱动板的LED将会在电机带动下动态扫描出时钟画面,并且可以用红外遥控调时。
三、课程设计应完成的工作
1.完成软件、硬件的设计,并进行硬件的焊接制作,并将调试成功的程序固化到单片机中,最后进行硬件与软件的调试;
2.撰写设计说明书。
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
硬件、软件设计
宿舍
12月26日
2
焊接电路板
宿舍
12月27日至28日
3
软件、硬件调试
宿舍
12月29至1月2日
4
撰写说明书
宿舍
1月3日至5日
5
答辩
工3-317
1月7日
五、应收集的资料及主要参考文献
谭浩强.C语言程序设计(第二版)。
北京:
清华大学出版社,1999年12月
发出任务书日期:
年月日指导教师签名:
计划完成日期:
年月日基层教学单位责任人签章:
主管院长签章:
广东工业大学课程设计任务书·········································1
摘要·······························································4
一、课题设计的要求及目的···········································5
1.1设计要求···················································5
1.2课程设计目的···············································5
二、设计方案························································5
三、系统框图与工作原理·············································8
3.1单片机系统工作架构·········································8
3.2系统工作原理··············································10
四、设计元器件说明·················································10
4.1PLCCSTC89C52RC简介··································10
4.274HC573芯片与光电传感器简介·····························12
4.3红外简介··················································13
4.4DS1302、LM7805芯片简介··································15
4.5LED动态显示原理·········································17
五、系统硬件电路设计···············································18
六、系统软件设计···················································19
6.1单片机解码红外信号程序····································19
6.2单片机读写DS1302程序······································22
6.3自适应转速················································25
6.4数字显示模式··············································26
6.5指针显示模式··············································26
七、总结与体会·····················································27
八、参考文献·······················································27
附录A完整源程序··················································28
附录B实物图······················································41
摘要
旋转LED钟,在国外一般称为“螺旋桨时钟”(propellerclock),是利用“视觉暂留”原理制作而成。
将单片机控制的LED流水灯设备稍作改进,让它动起来,就能神奇地显示各种字符或图案,其效果如浮在空中一般。
旋转LED显示是利用机械转动动态扫描代替传统逐行扫描方式,显示屏其实质就是与机械转动配合起来的动态扫描显示技术。
本设计利用高速旋转中控制LED灯的亮灭,进行字符的显示,控制器采用STC89C52单片机,借助人的视觉暂留效果,通过LED灯的机械扫描方式来显示各种字符和图像。
LED旋转时钟正是基于机械转动动态扫描技术,以及人的视觉暂留效果做成的,它主要包括单片机STC89C52、时钟芯片DS1302、光电耦合器件等。
我们做的这个时钟具有两种显示模式:
一种是字符式数字显示模式,可在一个屏上显示年月日和时分秒信息;另一种是指针式模拟显示模式,可仿真指针式钟表显示时分秒信息。
同时还设有红外遥控功能,可通过遥控器改变显示模式和调整时钟的时值。
关键词:
视觉暂留旋转时钟动态扫描
一、课题设计的要求及目的
1.1设计要求
(1)驱动板在电机的旋转带动下能够显示时钟画面,并能够自动计时。
(2)由于电机工作电压,环境因素的影响下,电机转速不稳定使时钟画面不稳定,所以要求程序能够自适应调整转速,使时钟画面基本稳定不变。
(3)要求能够通过红外遥控实现数字时钟和指针时钟2种模式间转换
(4)要求能够通过红外遥控设置时间。
1.2课程设计目的
(1)训练正确地应用单片微机,培养解决工业控制、工业检测等领域具体问题的初步能力。
(2)该设计熟悉单片微机应用系统开发、研制的过程,软硬件设计的工作方法、工作内容、工作步骤。
(3)提高学生理论与实践结合的能力,将理论知识运用到实践中来,能更好的掌握课本理论知识。
二、设计方案
(1)供电方式选择
1、常见的供电方式
根据调查的结果,指针板的供电方式一般有以下三种:
1)自感应发电
这种方法,就是从驱动板上引出导线,接入到电机内部绕在转子上,电机旋转时该导线切割磁场产生感应电动势,经过整流后作为指针板上的电源。
A、这种方式的优点是:
设计很巧妙,无机械磨损。
更巧妙的是,由于感应出来的电动势是交流的,所以可以利用该过零信号来定位,不必另外准备定位信号了。
B、这种方式的缺点是:
提供的电流有限,只能适合LED较少的旋转时钟,当LED数量较多时,需要更多的电流,这种方式就不能满足了。
其次,这种方式要对电机本身进行改造,也有一定的难度。
并不是所有的电机都适合这种改造。
而且这种改造可能会给电机带来损害。
另外还有一个问题,就是这种方式,只有在电机旋转时才能发电给驱动板供电,一旦停止转动,供电也就无以为继了,这样要实现旋转时钟的不间断走时,还得另加备用电池并采用低功耗设计。
2)自备电池
这种方式,就是在驱动板上安装电池,由电池供电。
一般是用两到三节7号电池。
A、这种方式的优点是:
Ⅰ.不用担心电压波动。
Ⅱ.也不存在机械磨损,不用担心接触不良之类问题的困扰。
B、这种方式的缺点是:
Ⅰ.很费电池,三天两头换电池,既不经济也不环保,还很麻烦!
Ⅱ.电池很重,一般的电机带不动,必须用很大很大的电机哦。
这也意味了成本的上升。
3)机械传导供电
也就是采用滑环和电刷,通过机械接触传导电流。
A、这种方式的优点是:
能够提供比较大的工作电流。
B、这种方式的缺点是:
Ⅰ.有机械摩擦,会产生磨损。
因此要求滑环和电刷材料要耐磨,经得起折腾。
另外,还得有足够的弹性,并且要耐锈,否则会导致接触不良。
Ⅱ.有机械阻力,因此要求电机有比较大一点的功率。
Ⅲ.有机械噪音。
4)感应供电
原理和变压器原理相当,就是在2个相距很近的线圈中,一只线圈作为电能发送端,另一只线圈作为电能接收端,发送端接入交变电流,在相距很近的接收端就能同时感应到交变电流。
A、这种方式的优点是:
无机械噪音。
B、这种方式的缺点是:
Ⅰ.线圈耦合度低,供电效率低。
Ⅱ.制作难度大。
Ⅲ.需增加震荡电路和滤波整流电路。
综合以上三种:
第一种,虽然优点多,但难度很大,并且成本很高;第二种,没有太多的担心,可是使用起来相当的麻烦,可能还会因为更换电池不及时而导致其中其他的零件受损;第三种,虽然会产生些摩擦,但是能提供较大电流,而摩擦的问题可以采用其他方法来弥补。
第四种,虽不产生机械噪音,但是需要在驱动板上加上滤波整流电路,增加驱动板重量。
所以我们采用的是第三种机械传导供电。
(2)过零信号产生电路选择
1)霍尔传感器
霍尔传感器处于工作状态时输出总是处于高电平状态,当磁钢N极接近传感器正面的有效距离,输出端变为低电平。
当磁钢撤离传感器有效距离。
输出端又显示低电平,从而产生下降沿,是单片机中断口接收到下降沿,从而产生中断。
2)光电开关
光电开关处于工作状态时输出总是处于高电平状态,当光电开关经过挡片时,输出端变为低电平。
当光电开关离开挡片时,输出端又显示低电平,从而产生下降沿,是单片机中断口接收到下降沿,从而产生中断。
光电开关利用光敏二极管对光的敏感性原理制作的,反应较灵敏,且低电平时间由挡片的宽度决定,控制方便。
而霍尔传感器利用磁场对电场的作用原理制作的,反应较迟缓,且感应磁钢的距离远,当转速较快时难以控制。
故该设计采用光电开关。
(3)LED选择
由于旋转LED要求时钟的分辨率高且重量轻,长度短,故该设计选用贴片LED发光二极管
(4)单片机选择
由于旋转LED驱动板上包括较多元器件和芯片,空间不足,所以该设计选用PLCC封装的单片机,这种封装的单片机为正方形,面积小,质量轻。
三、系统框图与工作原理
3.1单片机系统工作架构
图3.1.1系统框图
图3.1.2外部中断1流程图
图3.1.3定时器1流程图
3.3系统工作原理
通过光耦和外部中断控制单片机从DS1302中读取时钟数据并在旋转LED中的显示位置,通过红外遥控外部中断读取控制旋转LED时钟的显示模式和时值的加减调控。
四、设计元器件说明
4.1PLCCSTC89C52RC简介
图4.1.1PLCCSTC89C52RC管脚图图4.1.2STC89C52RC单片机结构
STC89C52RC是一种带4KB可编程可擦除只读存储器的低电压,高性能微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC89C52RC是一种高效微控制器,STC89C52RC是它的一种精简版本。
STC89C52RC单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
STC89C52RC引脚即外观如图4.1.1所示,内部结构如图4.1.2所示。
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复制用口,作为输入口时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写入“1可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期激活内部上拉电阻。
在Flash编程时,PO口接收指令节,而在程序校检时,输出指令字节,校检时,要求外接上拉电阻。
P1口:
P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
Flash编程和程序校检期间,P1接收低8位地址。
P2口:
P2口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
在访问外部数据存储器或16位地址的外部数据存储(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。
Flash编程和校检时,P2亦接收高位地址和其他控制信号。
P3口:
P3口是一个带内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作输入端口,作输入端时,被外部拉低的P3口将用上拉电阻,输出电流I。
P3口还接收一些用于Flash闪速存储器编程和程序校检的控制信号。
RST:
复位输入,当震荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于所存地址的低8位字节。
即使不访问外部存储器,ALE乃以时钟振动频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
4.274HC573芯片与光电传感器简介
4.2.174HC573芯片
图4.2.174HC573
芯片74HC573为八进制3态非反转透明锁存器,是高性能硅门cmos器件。
当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。
当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
4.2.2光电传感器
对射式U型槽光耦管具有,响应块,驱动简单,容易安装,易于与单片机通信等特点如上图。
上电之后光耦的光敏三极管的集电极输出低电平,当有物体挡住了光敏三极管的红外光线时,光敏三极管的集电极和发射极处于高阻态,所以集电极输出高电平,当光敏三极管再次感应到红外光源时,集电极再次输出低电平,从而给单片机一个中断信号。
图4.2.2光电开关,ITR9608-F中间宽5MM
槽式光电开关通常是标准的U字型结构,其发射器和接收器分别位于U型槽的两边,并形成一光轴,当被检测物体经过U型槽且阻断光轴时,光电开关就产生了检测到的开关量信号。
槽式光电开关比较安全可靠的适合检测高速变化,分辨透明与半透明物体。
4.3红外简介
4.3.1一体化红外遥控接收头
图4.3.1HS0038BSIP3一体化红外遥控接收头
红外遥控信号是一连串的二进制脉冲码。
为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射出去,而红外线接收装置则要滤除其他杂波,只接收该特定频率的信号并将其还原成二进制脉冲码,也就是解调。
目前,对于这种进行了调制的红外遥控信号,通常是采用一体化红外线接收头进行调解。
一体化红外线接收头将低噪音放大器,限幅器,带通滤波器,解调器,,以及整形驱动电路等集成在一起。
一体化红外线接收头体积小,灵敏度高,外接元件少,抗干扰能力强,使用十分方便。
4.3.2遥控发射器
图4.3.2红外遥控器
遥控发射器及其编码
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔
1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。
上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。
然后再通过红外发射二极管产生红外线向空间发射,如图3所示,连发波形如图4所示。
4.4DS1302、LM317、LM7805芯片简介
4.4.1DS1302
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
引脚功能及结构
DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc>2.0V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK为时钟输入端。
下图为DS1302的引脚功能图:
图4.4.1DS1302管脚定义图
数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
图4.4.2数据输入输出
DS1302的控制字节
DS1302的控制字如图2所示。
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
4.4.2LM7805
三端稳压集成电路lm7805,组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。
lm7805输出电压为正5V。
图1LM7805封装图图2LM7805引脚图
图3LM7805典型应用电路
4.5LED动态显示原理
LED具有低功耗,接口控制方便等优点,而且与模块的接口信号和操作指令具有广泛的兼容性,能直接与单片机接口,方便实现各种不同的操作。
旋转LED是一种通过同步控制发光二极管的位置和点亮状态来实现图文显示,可视角能达360度,本设计采用32个发光二级管,利用人眼的“视觉暂留效应”显示时间和温度。
图4.5Led显示模块
五、系统硬件电路设计
硬件电路原理图如下:
LED灯为8*4组共32颗
六、系统软件设计
6.1单片机解码红外信号程序
图6.1.1红外解码流程图
以下为单片机解码红外的程序:
#include
#defineucharunsignedchar
ucharcodetable[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
#defineImax14000//此处为晶振为11.0592时的取值,
#defineImin8000//如用其它频率的晶振时,
#defineInum11450//要改变相应的取值。
#defineInum2700
#defineInum33000
ucharIm[4]={0x00,0x00,0x00,0x00};//存放4个字节32位编码
ucharshow[2]={0,0};//存储数据码
unsignedlongm,Tc;//两脉冲间隔
ucharflag,IrOK;
voiddelay(uchari)
{
ucharj,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
voiddisplay()
{
P1=6;
P0=table[show[0]];
delay(5);
P1=5;
P0=table[show[1]];
delay(5);
}
//外部中断解码程序
voidINT_1(void)interrupt2using1
{
Tc=TH0*256+TL0;//提取中断时间间隔时长
TH0=0;
TL0=0;//定时中断重新置零
if((Tc>Imin)&&(Tc{
m=0;
flag=1;
return;
}//找到启始码
if(flag==1)
{
if(Tc>Inum1&&Tc{
Im[m/8]=Im[m/8]>>1|0x80;m++;//1取码
}
if(Tc>Inum2&&Tc{
Im[m/8]=Im[m/8]>>1;m++;//0取码
}
if(m==32)
{
m=0;
flag=0;
if