基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc

上传人:wj 文档编号:4610035 上传时间:2023-05-03 格式:DOC 页数:14 大小:346.50KB
下载 相关 举报
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第1页
第1页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第2页
第2页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第3页
第3页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第4页
第4页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第5页
第5页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第6页
第6页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第7页
第7页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第8页
第8页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第9页
第9页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第10页
第10页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第11页
第11页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第12页
第12页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第13页
第13页 / 共14页
基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc

《基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc》由会员分享,可在线阅读,更多相关《基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc(14页珍藏版)》请在冰点文库上搜索。

基于STC89C52红外遥控系统设计LCD显示Word文档格式.doc

了解红外遥控器原理、LCD1602显示原理,能够运用C语言进行设计、编程、调试。

B.硬件设计:

根据设计任务选合适的单片机和适合的红外遥控器;

设计电路。

C.软件设计:

根据各电路工作原理,画出软件流程图,根据流程图编写相应的C语言程序进行调试。

D.调试:

根据所编程的程序烧入单片机内,并进行相应的调试。

E.结论:

根据各步骤写好毕业论文。

2.硬件设计

2.1系统框图

本设计由红外遥控器、STC89C52单片机、红外传感器、LCD1602、等组成,而单片机需外接12MHZ的晶振电路、复位电路、ISP下载接口、红外接收传感器等。

其基本结构图如下图2.1所示:

该设计是由红外遥控器发送信号,通过一体化接收头接收,经过单片机处理并在LCD1602显示器显示出来。

图2.1系统框图

2.2最小系统

单片机最小系统是指能进行正常工作的最简单电路。

如图2-2所示。

单片机的最小系统包括电源,晶振电路,复位电路。

晶振电路:

单片机必须提供脉冲信号才能正常工作。

复位电路:

当这个高电平持续两个机器周期以上就将复位。

图2.2STC89C52最小系统电路图

2.3红外接收电路设计

红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法,此种方法电路复杂,现一般不使用。

较好的接收方法是用一体化红外接收头。

因此本设计采用一体化红外接收头。

接收电路使用一种集红外线接收、放大和整形于一体的一体化红外线接收器,不需要接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。

接收器对外只有3个引脚:

OUT、GND、Vcc与单片机接口非常方便,如图2-3所示

图2.3红外接收器图及接收电路

1脉冲信号输出接单片机的IO口;

2GND接系统的地线(0V);

3Vcc接系统的电源正极(+5V);

 

2.4显示电路设计

显示电路设计采用1602液晶显示屏,该液晶显示屏的显示功能强大,内置192种字符,可显示符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。

所以在此设计中采用1602液晶显示屏。

2.4.1LCD1602简介

LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。

每位之间有一个点距的间隔每行之间也有也有间隔起到了字符间距和行间距的作用,正因为如此所以它不能显示图形。

LCD1602有16个引脚,各引脚与单片机及外部其他接口的连接如下图2.5所示。

图2.4LCD1602各引脚接线

2.4.2LCD与单片机的接口电路

表2.11602LCD显示器模块引脚名称和功能表

引脚序号

名称

功能

1

Vss

电源地

2

VDD

电路电源5V±

10%

3

Vo

液晶驱动电压

4

RS

寄存器选择1:

数据寄存器0:

指令寄存器

5

R/W

读/写信号1:

读0:

6

EN/E

显示器模块使能信号输入端,高电平有效

7~14

DB0-DB7

8位双向数据总线

15,16

BL1和BL2

背光板工作电压的输入端

3.软件设计

3.1红外遥控软件设计

红外解码程序主要工作为等待红外线信号出现,并跳过引导信号,开始收集连续32位的表面数据,存入内存的连续空间。

位信号解码的原则是:

如果从0.56ms低电平过后,开始延时0.56ms以后,若读到的电平为低,说明改为为“0”,反之则为“1”。

为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否如果则该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠。

解码的方式有两种:

一是采用外部中断方式,二是采用查询方式。

采用外部中断方式节省了CPU时间,但进入外部中断以后还是采用查询方式解码。

因此这里采用外部中断方式。

其解码过程如下:

A.初始化外部中断0(或1)为下降沿中断。

B.进入外部中断服务程序,关闭外部中断。

C.对引导码进行判断。

如果引导码正确,装备接收下面一帧遥控数据,以查询方式判断是遥控数据0还是1。

如果引导码错误,则退出外部中断。

D.先后依次接收地址码、地址反码、数据码、数据反码。

E.当接收到32位数据时,说明一帧数据接收完毕,比较数据码和数据反码。

若数据码取反后与数据反码不同,则表示为无效数据,应丢弃本接收数据。

F.开启外部中断准备下一次接收。

其流程图如下图3.1所示:

图3.1外部中断解码流程图

3.2LCD1602软件设计

3.2.1LCD1602初始化

LCD使用之前必须对它进行初始化。

初始化可通过复位完成,也可在复位后完成,初始化过程为清屏、功能设置、开/关显示设置、输入方式设置。

1602LCD的一般初始化(复位)过程:

延时15mS;

写指令38H(不检测忙信号);

延时5mS;

以后每次写指令、读/写数据操作均需要检测忙信号;

写指令38H:

显示模式设置;

写指令08H:

显示关闭;

写指令01H:

显示清屏;

写指令06H:

显示光标移动设置;

写指令0CH:

显示开及光标设置;

具体程序如附录中的(voidinit())。

3.2.2LCD读写操作时序图及指令说明如下个图及表所示

图3.2读操作时序

图3.3写操作时序

表3.11602LCD指令说明

指令功能

R\W

D7

D6

D5

D4

D3

D2

D1

D0

清屏

归位

x

输入方式设置

I\D

S

显示开关控制

D

C

B

光标或字符移位

S\C

R\L

功能设定

DL

N

F

设置CGRAM地址

6位CGRAM地址码

设置显示地址

7位DDRAM地址码

读忙标志和地址计数器

BF

7位当前显示地址码

向CGRAM\DDRAM写数据

8位数据

从CGRAM\DDRAM读数据

注:

x------任意二进制数据。

I\D------显示地址计数器模式选择。

I\D=1,选择加1模式;

I\D=0选择减1模式;

S------S=1;

数据读、写操作后,AC自动增一;

S=1;

数据读、写操作后,AC自动增一。

D-----显示器开关控制位。

D=1,显示器On;

D=0;

显示器Off。

C-----光标开关控制位。

C=1,光标On;

C=0,光标Off。

B-----光标闪烁开关控制位。

B=1,光标闪烁On;

B=0,光标闪烁Off。

S\C----显示器或光标移位选择。

S\C=1:

显示器平移一个字符位。

S\C=0:

光标

RL----移位方向选择

DL---传输数据的有效位长度选择。

DL=1,有效位为8位;

DL=0,有效位为4位。

N-----显示器行数选择位。

N=1,两行显示;

N=0,一行显示。

F-----字符显示块的点阵选择。

F=1,5*10点阵字符;

F=0,5*7点阵字符。

BF----忙标志位。

BF=1,忙;

BF=0,空闲状态。

CGRAM----字符发生器RAM。

DDRAM----显示数据RAM。

3.2.3LCD流程图

3.4LCD显示流程图

3.3主程序设计

本论文所设计的主程序工作流程如图3.5所示。

先各子程序初始化,利用红外遥控器发送指令,判断有按键按下,有则解码,且要判断其值是否正确,若正确则进行相应的显示,若不正确则退出。

图3.5主程序流程图

其程序见附录所示

4.设计小结

三周的课程设计完成了,对我来说这一个星期比平时上课还要累,在这三周的学习中,我学到了很多,也找到了自己身上的不足,感触良多,获益匪浅。

这次课程设计对我们来说都是一个挑战,理论知识又不是很牢固,一开始都不知道从何下手,但是在大家的共同努力下,我们还是顺利的完成了任务。

在这次活动中将理论与实践相结合,使得我们对于单片机的实际应用有了更加深刻的认识和了解。

通过实践,增强了下阶段的学习信心,为毕业设计奠定了坚实基础。

在本次毕业设计中,虽然学到了很多课外知识而且能巩固专业知识,但是在很多方面还需要进一步的改进和提高。

在这样的一个过程中我们学到了很多,学会换位思考,学会怎样去和别人沟通,理解别人所做的事,别人也会宽容的对待我们,从而在无形之中加强可自己的人际交往能力,也让我们彼此更加团结。

课程设计结束了,但我们一起奋斗的精神和这份宝贵的精力将会成为人生道路上一道亮丽的风景线。

参考文献

[1]张洪润.《单片机原理及应用》.清华大学出版社.2008.

[2]朱大奇.《单片机原理应用与实验》.科学出版社.2009.

[3]彭为.《单片机典型系统设计》.电子工业出版社.2006.

[4]刘同法.陈忠平等.《单片机外围接口电路及工程实践》.北京航空航天大学出版社.2009.

[5]谢维成.杨加国.《单片机原理与应用及C51程序设计》.清华大学出版社.2006.

课程设计程序清单

#include<

CONFIG.H>

#include<

stdio.h>

intrins.h>

at89x52.h>

sbitrs=P2^2;

sbitrw=P2^1;

sbite=P2^0;

bitirpro_ok,irok;

ucharirtime;

//红外用全局变量

ucharIRcord[4];

ucharIRcore[4];

//处理后的红外码,分别是客户码,客户码,数据码,数据码反码

ucharirdata[33];

//33个高低电平的时间数据

uchartable1[]="

F1"

;

uchartable2[]="

F2"

voiddelay(uintz)//延时函数,z的取值为这个函数的延时(ms)数

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=11;

y>

y--);

}

voidwrite_com(ucharcom)//写指令

{

e=0;

rs=0;

rw=0;

P0=com;

delay(5);

e=1;

delay(10);

voidwrite_data(uchardat)//写数据

rs=1;

P0=dat;

voidinit() //1602LCD的初始化

delay(150);

//延时15ms

write_com(0x38);

//写指令38H

//延时15ms

//显示模式设置

write_com(0x08);

//显示关闭

write_com(0x01);

//显示清平

write_com(0x06);

//显示光标移动设置

write_com(0x0c);

//显示开及光标设置

voidmain(void)

EX0init();

//初始化外部中断

TIM0init();

//初始化定时器

while

(1)//主循环

{

if(irok)//如果接收好了进行红外处理

{

Ircordpro();

irok=0;

}

if(irpro_ok)//如果处理好后进行工作处理,如按对应的按键后显示对应的数字等

{

Ir_work();

irpro_ok=0;

}

}

/*********/

/*定时器0中断服务函数*/

/************/

voidtim0_isr(void)interrupt1using1//定时器0中断服务函数

irtime++;

//用于计数2个下降沿之间的时间

/*****************/

/*外部中断0函数*/

/**********/

voidex0_isr(void)interrupt2using2//外部中断1服务函数

staticuchari;

//接收红外信号处理

staticbitstartflag;

//是否开始处理标志位

if(startflag)

{

if(irtime<

63&

&

irtime>

=33)//引导码TC9012的头码,9ms+4.5ms

i=0;

irdata[i]=irtime;

//存储每个电平的持续时间,用于以后判断是0还是1

irtime=0;

i++;

if(i==33)

{

irok=1;

i=0;

}

}

else

{irtime=0;

startflag=1;

/***********/

/*定时器0初始化*/

voidTIM0init(void)//定时器0初始化

TMOD=0x02;

//定时器0工作方式2,TH0是重装值,TL0是初值

TH0=0x00;

//重载值

TL0=0x00;

//初始化值

ET0=1;

//开中断

TR0=1;

/*外部中断初始化*/

voidEX0init(void)

IT1=1;

//指定外部中断0下降沿触发,INT0(P3.2)

EX1=1;

//使能外部中断

EA=1;

//开总中断

/*红外键值处理*/

voidIr_work(void)//红外键值散转程序

{

ucharjin;

init();

switch(IRcord[3])

{

case0x2b:

write_com(0xce);

for(jin=0;

jin<

2;

jin++)write_data(table1[jin]);

break;

//显示结果1

case0x07:

jin++)write_data(table2[jin]);

//显示结果2

case0x47:

write_com(0xcf);

write_data('

1'

);

//显示结果3

case0x4b:

2'

//显示结果4

case0x4f:

3'

//显示结果5

case0x53:

4'

//显示结果6

case0x57:

5'

//显示结果7

case0x5b:

6'

//显示结果8

case0x5f:

7'

//显示结果9

case0x63:

8'

//显示结果10

case0x67:

9'

//显示结果11

case0x43:

0'

//显示结果12

case0x6b:

A'

//显示结果13

case0x6f:

B'

//显示结果14

case0x3b:

C'

//显示结果15

case0x0b:

D'

//显示结果16

case0x0f:

E'

//显示结果17

case0x73:

F'

//显示结果18

default:

break;

}

}

/*红外解码函数处理*/

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,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差

{

val

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2