当前位置:首页 > 现代电子系统设计与实践课程设计:红外遥控器
{delay(1);}
for (j=0;j<4;j++) // 收集四组数据 {
for (k=0;k<8;k++) // 每组数据有8位 {
while (IRIN) // 等 IR 变为低电平,跳过4.5ms的前导高电平信号。
{delay(1);}
while (!IRIN) // 等 IR 变为高电平 {delay(1);}
while (IRIN) // 计算IR高电平时长 {
delay(1); N++; if (N>=30)
{
return;} // 0.14ms计数过长自动离开。
} // 高电平计数完毕 IRCOM[j]=IRCOM[j] >> 1; // 数据最高位补“0” if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} // 数据最高位补“1” N=0; } }
8
if (IRCOM[2]!=~IRCOM[3]) {
return; } }
/* 主程序 main() {
serinit();
// 串口初始化
printf (\SBUF=0x55; // 将红外收到的键值给缓存器
while(!TI); // 判断是否发送完成,当TI为1时表示已完成 TI=0; // 发送完毕,发送标志位清0 SBUF=0x20; // 将红外收到的键值给缓存器
while(!TI); // 判断是否发送完成,当TI为1时表示已完成 TI=0; // 发送完毕,发送标志位清0 SBUF=0xAA; // 将红外收到的键值给缓存器
while(!TI); // 判断是否发送完成,当TI为1时表示已完成 TI=0; // 发送完毕,发送标志位清0 IRIN=1; // I/O口初始化
delay_ms(10); // 延时 while(1) {
while(IRIN);
IR_IN();
9
// 等待红外接收口信号
delay_ms(200); if (IRCOM[2]!=0) {
SBUF=IRCOM[2]; // 将红外收到的键值给缓存器
while(!TI); // 判断是否发送完成,当TI为1时表示已完成 TI=0; // 发送完毕,发送标志位清0 }
IRCOM[2]=0;
} }
4.4 STC12C2052AD芯片引脚分配
10
五、设计总结与体会
通过这次红外遥控器的设计,我熟悉了C语言的运用,更加熟练的掌握了
keil Uv2软件和STC_ISP_V480下载软件的使用。实验中遇到的困难,在
同学和查阅资料后,完成了这次期末作业。这次设计,体验到了学以致用,虽然知道实际应用不是这么简单,但是对实践有了更大的兴趣,能够把所学在巩固C语言的同时,感受到了使用该语言进行数字系统控制的方便灵活性。
六、参考文献
www.alldatasheet.com
STC12C5201AD系列单片机器件手册 百度等搜索引擎搜索结果
11
共分享92篇相关文档