微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STC89C52单片机红外遥控器解码

STC89C52单片机红外遥控器解码

时间:11-21 来源:互联网 点击:

函数名称:Initial_LCD
函数功能:设置单片机的外部中断0和中断1,具体的设置状态都为外部低电平触发,并
且开总中断
参数介绍:无
返回值:
注意事项:无
//////////////////////////////////////////////////////////////////////////
void Initial_LCD()
{

Digital_tube_Wei_Enable;
LCD_DATAPORT=0xff;
Digital_tube_Wei_Disable;

Digital_tube_Duan_Enable;
LCD_DATAPORT=0X00;
DelayMs(2);
Digital_tube_Duan_Disable;


LCD_DATAPORT=0;
DelayMs(15);
WriteCommandLCD(0x38,0); //三次显示模式设置,不检测忙信号
DelayMs(5);
WriteCommandLCD(0x38,0);
DelayMs(5);
WriteCommandLCD(0x38,0);
DelayMs(5);

WriteCommandLCD(0x38,1); //8bit数据传送,2行显示,5*7字型,检测忙信号
WriteCommandLCD(0x08,1); //关闭显示,检测忙信号
WriteCommandLCD(0x01,1); //清屏,检测忙信号
WriteCommandLCD(0x06,1); //显示光标右移设置,检测忙信号
WriteCommandLCD(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号
}
//////////////////////////////////////////////////////////////////////////

函数名称:DisplayOneCharLCD
函数功能:按指定位置显示一个字符,比如说数字,英文字母等
参数介绍:cXCoord:要显示字符在某一行当中的位置
cYCoord:要显示字符在液晶中的行数,比如说第一行或第二行
cData: 要显示的字符,比如说1、a等
返回值:
注意事项:限制cXCoord不能大于15,cYCoord不能大于1
//////////////////////////////////////////////////////////////////////////

void DisplayOneCharLCD(uchar cXCoord,uchar cYCoord,uchar cData)
{
cYCoord&=1; //取cYCoord的第一位,其他的全部设置成0
if(cYCoord)cXCoord|=0x40; //若y为1,显示第一行,地址码+0X40
cXCoord|=0x80; //若不为1,则显示第二行,地址码+0X80
WriteCommandLCD(cXCoord,0); //把写入的地址送到1602液晶
WriteDataLCD(cData); //写入要写入的数据
}
//////////////////////////////////////////////////////////////////////////
函数名称:DisplayListCharLCD
函数功能:按指定位置显示一串字符,比如说显示 abcdefg,123456等
参数介绍:cXCoord:要显示字符在某一行当中的位置
cYCoord:要显示字符在液晶中的行数,比如说第一行或第二行
cData: 要显示的字符串,比如说123456、adcdgd等
返回值:
注意事项:制cXCoord不能大于15,cYCoord不能大于1
//////////////////////////////////////////////////////////////////////////

void DisplayListCharLCD(uchar cXCoord,uchar cYCoord,uchar code *Data)
{
uchar ListLength=0;//要显示字符串的长度
cYCoord&=0x01;//取cYCoord的第一位,其他的全部设置成0
cXCoord&=0x0f;
while(cXCoord<16) //循环写入要写入的字符串
{
DisplayOneCharLCD(cXCoord,cYCoord,Data[ListLength]);
ListLength++;
cXCoord++;
}
}
//////////////////////////////////////////////////////////////////////////
函数名称:Init_INT1
函数功能:配置外部中断1,让其为下降沿触发,同时打开全局中断
参数介绍:无
返回值:
注意事项:无
//////////////////////////////////////////////////////////////////////////

void Init_INT1()
{
IT1=1; //外部中断1,为下降沿触发
EX1=1; //允许外部中断1中断
EA=1; //CPU开放中断
}
//////////////////////////////////////////////////////////////////////////

函数名称:main
函数功能:初始化外部中断1以及1602液晶,同时把预先写好的字符串显示到1602上面,
然后进入while循环里,等待中断的发生
参数介绍:无
返回值:
注意事项:实验板上所用的数码管为共阴极数码管
//////////////////////////////////////////////////////////////////////////

void main()
{
Init_INT1(); //初始化外部中断1

IR=1; //I/O口初始化
Initial_LCD(); //初始化1602液晶
DisplayListCharLCD(0,0,string0); //显示字符预写好的字符串
DisplayListCharLCD(0,1,string1); //显示字符预写好的字符串
while(1);
}
//////////////////////////////////////////////////////////////////////////
函数名称:IR_Routine
函数功能:对红外接收头接收到的红外信号进行解码,解码后,把遥控器上的数字显示
在数码管上
参数介绍:无
返回值:
注意事项:具体的协议,请看光盘里所带的名为“红外控制”的数据手册
//////////////////////////////////////////////////////////////////////////

void IR_Routine()

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top