嵌入式系统设计与开发课程设计.docx
- 文档编号:9294069
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:15
- 大小:522.24KB
嵌入式系统设计与开发课程设计.docx
《嵌入式系统设计与开发课程设计.docx》由会员分享,可在线阅读,更多相关《嵌入式系统设计与开发课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
嵌入式系统设计与开发课程设计
嵌入式系统设计与开发课程设计
一、设计题目:
基于89C52的红外遥控数码管
二、设计目的:
1.熟悉STC89C52开发板的结构,功能;
2.熟悉程序的编写过程、下载过程;
3.了解遥控器解码的过程;
4.理解主要程序的功能。
三、设计内容:
通过开发板上的八位数码管,显示遥控器上相应的按键所代表的数字。
四、STC89C52介绍:
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
特性:
1)片内存储器包含8KB的FLASH,可在线编程,檫写次数不少于1000次
2)256字节片内数据RAM
3)32根可编程I/0口线
4)8个中断源、6个中断矢量、两个优先权的中断结构
5)1个可编程全双工串行接口
6)3个可编程定时/计数器
7)两种低功耗模式分别是空闲模式和掉电模式
8)具有3级程序锁定位
9)含有一个看门狗定时器
10)具有断电标志POF
11)全静态工作频率0~33MHz
12)完全兼容MCS-51产品
原理图:
芯片图:
引脚介绍:
ALE地址锁存允许
/PSEN程序存储器允许
EA/VPP为0-访问外部程序存储器
为1-访问内部程序存储器
RST复位信号输入
XTAL1、XTAL2外部晶振
P0.0~P0.7I/O端口(P0口)
P1.0~P1.7I/O端口(P1口)
P2.0~P2.7I/O端口(P2口)
P3.0~P3.7I/O端口(P3口)
五、设计原理:
红外对射管由发射管和接受管组成,设计中发射管在遥控上,接受管为方形红外接收管,下面将进行详细介绍。
1、红外接收管:
红外线接收管是在LED行业中命名的,是专门用来接收和感应红外线发射管发出的红外线光线的。
一般情况下都是与红外线发射管成套运用在产品设备当中。
红外线接收管是将红外线光信号变成电信号的半导体器件,它的核心部件是一个特殊材料的PN结,和普
通二极管相比,在结构上采取了大的改变,红外线接收管为了更多更大面积的接受入射光线,PN结面积尽量做的比较大,电极面积尽量减小,而且PN结的结深很浅,一般小于1微米。
红外线接收二极管是在反向电压作用之下工作的。
没有光照时,反向电流很小(一般小于0.1微安),称为暗电流。
当有红外线光照时,携带能量的红外线光子进入PN结后,把能量传给共价键上的束缚电子,使部分电子挣脱共价键,从而产生电子---空穴对(简称:
光生载流子)。
它们在反向电压作用下参加漂移运动,使反向电流明显变大,光的强度越大,反向电流也越大。
这种特性称为“光电导”。
红外线接收二极管在一般照度的光线照射下,所产生的电流叫光电流。
如果在外电路上接上负载,负载上就获得了电信号,而且这个电信号随着光的变化而相应变化。
2.遥控器
红外线遥控是目前使用最广泛的一种通信和遥控手段,它具有体积小、功耗低、功能强、成本低等特点。
通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如下所示:
a.发射部分:
键盘矩阵、编码调制、LED红外发送器
b.接收部分
3.红外解码
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:
a.采用脉宽调制的串行码
b.以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;
以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。
LC7461产生的遥控编码是连续的42位二进制码组,其中前26位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。
后16位为8位的操作码和8位的操作反码用于核对数据是否接收正确。
当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。
解码时,“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。
如果从0.56ms低电平过后,再经过0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”。
为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,一般取0.84ms左右即可。
4.数码管显示电路
六、设计过程:
1.熟悉阶段:
开发板、编程软件(KEIL)、下载方法(看门狗STC-ISP)
2.硬件结构
3.程序流程图
七、心得体会
经过这次的设计,对51单片机中的红外遥控数码管这一部分有了充分的了解。
先从硬件上来说,对红外对射管有了一定的了解,知道了它的工作原理。
对遥控解码原理也有了一定的了解,理解到是通过判断电平延时的长度判断遥控码为0还是为1。
在读取了所有遥控码之后,再对遥控码第三位的数据码进行读取,从而显示相应的按键数字。
了解时间值的作用之后,也就自然知道解码过程是把时间值转换为二进制值的原因了。
再从程序来说,以前学过C语言,MATLAB,JAVA,都是编程的,所以对嵌入式的程序不会太陌生,但是要真正搞懂或者要自己编程还是有极大的困难,而通过这次设计,对本实验的程序做了一定的了解,虽然有些地方还不是很明白,但是充分提供了一个学习的机会,经过上网查找,同学讨论,还是学到了不少东西。
通过自己选题,可以选择自己感兴趣的课题做实验,增加了学习兴趣,发现嵌入式系统的优点:
专用性强,系统精简等。
主要还是靠程序。
相信在不断训练,理解程序下,将来自己也可以编写出实用的程序,来实现一些功能。
八、参考资料
1.《红外线解码心得和解码程序》作者:
程克辉
网址:
2.《遥控器红外解码数码管显示》作者:
151129
网址:
3.《基于51单片机的红外线控制系统》作者:
突然想去很远
网址:
4.《红外解码1602液晶显示》作者:
QLS小屁孩
网址:
附:
程序
//使用12M晶振
#include
#include
#include
#defineTURE1
#defineFALSE0
——————————————
基本参数
定义
sbitIR=P3^2;//红外接口标志
sbitQ=P2^5;
sbitdula=P2^6;
sbitwela=P2^7;
unsignedcharconstdofly[]
={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0-9
——————————————————
unsignedcharirtime;//红外用全局变量
bitirpro_ok,irok;
unsignedcharIRcord[4];//红外码一般由四个字节组成:
地址码-地址码-数据码-数据反码
unsignedcharirdata[33];//存储32+1位
————————————————
voidDelay(unsignedcharmS);
voidIr_work(void);
voidIrcordpro(void);
——————————————————
voidtim0_isr(void)interrupt1using1//定时器0中断服务函数,记录电平的持续时间
{
irtime++;
}
——————————————————
voidex0_isr(void)interrupt0using0//外部中断0服务函数,存储持续时间
{
staticunsignedchari;
staticbitstartflag;
if(startflag)
{
if(irtime<42&&irtime>=33)//引导码TC9012的头码
i=0;
irdata[i]=irtime;//存储每个电平的持续时间
irtime=0;
i++;
if(i==33)
{
irok=1;
定时器
及中断
i=0;
}
}
else
{irtime=0;startflag=1;}
}
——————————————————
voidTIM0init(void)//定时器0初始化
{
TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
TH0=0x00;//reloadvalue
TL0=0x00;//initialvalue
ET0=1;//开中断
TR0=1;
}
————————————————————
voidEX0init(void)
{
IT0=1;//Configureinterrupt0forfallingedgeon/INT0(P3.2)
EX0=1;//EnableEX0Interrupt
EA=1;
}
——————————————————
voidIr_work(void)//红外键值散转程序
{
Q=1;
wela=1;
P0=0x00;
wela=0;
dula=1;
switch(IRcord[2])//判断第三位的数码值
{
case0:
P0=dofly[1];break;//1显示相应的按键值
case1:
P0=dofly[2];break;//2
case2:
P0=dofly[3];break;//3
case3:
P0=dofly[4];break;//4
case4:
P0=dofly[5];break;//5
case5:
P0=dofly[6];break;//6
case6:
P0=dofly[7];break;//7
case7:
P0=dofly[8];break;//8
case8:
P0=dofly[9];break;//9
}
irpro_ok=0;//处理完成标志
dula=0;
}
——————————————————————
voidIrcordpro(void)//红外码值处理函数,即解码
{
unsignedchari,j,k;
unsignedcharcord,value;
k=1;
for(i=0;i<4;i++)//处理4个字节
{
for(j=1;j<=8;j++)//处理1个字节8位
{
cord=irdata[k];
if(cord>7)//判断读取的时间值是否大于1
{
value=value|0x80;//读取数置1
}
else
{
value=value;
}
if(j<8)
{
value=value>>1;//由于从高位读取遥控器发送的数据,故要右移把第一次度的数据送到最低位
}
k++;
}
IRcord[i]=value;
value=0;
}
irpro_ok=1;//处理完毕标志位置1
}
————————————————
voidmain(void)
{
EX0init();//EnableGlobalInterruptFlag
TIM0init();//初始化定时器0
while
(1)//主循环
{
if(irok)//接收到红外
{
Ircordpro();//解码,时间值转换为二进制
irok=0;
}
if(irpro_ok)//解码成功
{
Ir_work();//码值识别散转
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 设计 开发 课程设计