标题:
基于stm8的红外解码12864液晶显示源程序与视频
[打印本页]
作者:
XD1860
时间:
2017-11-10 20:28
标题:
基于stm8的红外解码12864液晶显示源程序与视频
视频教程:
http://v.youku.com/v_show/id_XMzE0OTE3ODk5Ng==.html
原理图(工程文件可在本帖附件中下载)
0.png
(55.74 KB, 下载次数: 43)
下载附件
2017-11-11 08:24 上传
0.png
(38.21 KB, 下载次数: 49)
下载附件
2017-11-11 08:24 上传
stm8单片机源程序如下:
#include"stm8s.h"
#include"stm8s_clk.h"
#include"stm8s_gpio.h"
#include"Cry12864.h"
#include"Time.h"
#include"ir.h"
uchar key_val,a=0,b=0,c=0,d=0;//定义键值
extern uchar Ir_receive_ok;//红外接收成功标志
void main(void)
{ CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//系统时钟内部时钟1分频
IrInt(); //红外初始化
GPIO_Init(GPIOF, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST);//定义LED1的管脚的模式
GPIO_Init(GPIOF, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_FAST);//定义LED2的管脚的模式
GPIO_Init(GPIOF, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST);//定义LED3的管脚的模式
GPIO_Init(GPIOA, GPIO_PIN_1, GPIO_MODE_OUT_PP_HIGH_FAST);//定义继电器1的管脚的模式
GPIO_Init(GPIOA, GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_FAST);//定义继电器1的管脚的模式
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST);//定义继电器1的管脚的模式
GPIO_Init(GPIOA, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST);//定义继电器1的管脚的模式
Ini_Lcd();//液晶初始化
TIM2_Config();//定时器2初始化
DispString(0,0,"荧光灯:");
DispString(1,0,"电视机:");
DispString(2,0,"电冰箱:");
DispString(3,0,"电风扇:");
// DispString(0,6,"000");
//DispString(1,6,"000");
// DispString(2,6,"000");
// DispString(3,6,"000");
__enable_interrupt();//开启总中断
while(1)
{
if( Ir_receive_ok == 1 ) //一帧红外数据接收完成
{
key_val = Ir_Process();
Ir_receive_ok=0;
// Disp1Char(3,0,0x30+key_val/100);
// Disp1Char(3,1,0x30+key_val%100/10);
// Disp1Char(3,2,0x30+key_val%100%10);
//不同的遥控器面板对应不同的键值 0-9
switch( key_val )
{ case 162: GPIO_WriteReverse(GPIOF, GPIO_PIN_5);
GPIO_WriteReverse(GPIOA, GPIO_PIN_2);
DispString(0,4,"开");
DispString(0,6,"162");
a++;
if(a==2)
{DispString(0,4,"关");
//DispString(0,6,"162");
a=0;
}
break;
case 98: GPIO_WriteReverse(GPIOF, GPIO_PIN_6);
GPIO_WriteReverse(GPIOA, GPIO_PIN_1);
DispString(1,4,"开");
DispString(1,6,"98");
b++;
if(b==2)
{DispString(1,4,"关");
//DispString(0,6,"162");
b=0;
}
break;
case 226: GPIO_WriteReverse(GPIOF, GPIO_PIN_7);
GPIO_WriteReverse(GPIOA, GPIO_PIN_3);
DispString(2,4,"开");
DispString(2,6,"226");
c++;
if(c==2)
{DispString(2,4,"关");
//DispString(0,6,"162");
c=0;
}
break;
case 34: //GPIO_WriteReverse(GPIOF, GPIO_PIN_6);
GPIO_WriteReverse(GPIOA, GPIO_PIN_4);
DispString(3,4,"开");
DispString(3,6,"34");
d++;
if(d==2)
{DispString(3,4,"关");
//DispString(0,6,"162");
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
STM8红外解码.rar
(1.16 MB, 下载次数: 58)
2017-11-10 20:28 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
ken123
时间:
2018-4-20 00:02
厉害!
作者:
zsk_mcu
时间:
2018-5-23 15:47
谢谢分享,正需要
作者:
tangmenxiaowu
时间:
2018-5-24 17:29
谢谢楼主,刚好需要这个
作者:
saya0769
时间:
2019-10-28 16:57
谢谢楼主,刚好需要这个
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1