求HT6221的C语言解码程序

求HT6221的C语言解码程序,第1张

你好,很高兴回答你的问题 Ht6221红外遥控C语言解码//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<br/>//★HT6221标准红外C语言解码程序 ★<br/>//★CPU AT89S51 晶振12MHz 接口 P.7 ★<br/>//★ht6221 资料: ★<br/>//★Designed by pufan ★<br/>//★日期2006-06-14 ★<br/>//★Email: [email protected] ★<br/>//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<br/>#include<reg51.h><br/><br/>#define UINT8 unsigned char<br/>#define UINT16 unsigned int<br/>#define UINT32 unsigned long<br/><br/>UINT8 IRCommandData<br/>UINT8 da[4]={0,0,0,0}<br/><br/>UINT8 table[18]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,0x30,0x25,0xa7,0x26,0xa1,0xb1,0x34,0xab}<br/><br/>sbit IR=P3^7<br/><br/>//============主程序====================================================<br/>void delay(UINT16 cnt)<br/>{<br/>while(--cnt)<br/>}<br/><br/>void d870us(void)<br/>{<br/>delay(108)//12M<br/>}<br/><br/>void d1000us(void)<br/>{<br/>delay(125)//12M<br/>}<br/><br/>void d4740us(void)<br/>{<br/>delay(593)//12M<br/>}<br/>//----------------------------------------------------<br/><br/>//-----------------------------------------------<br/>// ht6221解码程序<br/>//-----------------------------------------------<br/>UINT8 IRDecode(void)<br/>{<br/>UINT8 i,m,n<br/><br/>for(i=0i<10i++)<br/>{<br/>d870us()<br/>if(IR) goto exit<br/>}<br/><br/>while(!IR)<br/>d4740us()<br/><br/>//开始解码<br/>for(m=0m<4m++){<br/>for(n=0n<8n++){<br/>while(!IR)<br/><br/>d870us()<br/>if(IR)<br/>{<br/>d1000us()<br/>da[m]=da[m]>>1<br/>da[m]=da[m]|0x80<br/>}<br/>else<br/>{<br/>da[m]=da[m]>>1<br/>da[m]=da[m]|0<br/>}<br/>//while(IR)<br/>//while(!IR)<br/>}<br/>}<br/>if((da[0]==0x0)&&(da[1]==0xFF))<br/>{ <br/>if(da[2]==(~da[3]))<br/>return da[2]<br/>}<br/>exit:<br/>return 0<br/>}<br/><br/>void SendData(UINT8 c)<br/>{<br/>P0=c<br/>}<br/><br/>void main(void)<br/>{<br/>P2=0xFD//选通一位数码管<br/>P0=0xff<br/><br/>while(1)<br/>{<br/>if(!IR)<br/>{<br/>IRCommandData=IRDecode()<br/>switch(IRCommandData)<br/>{ <br/>case 0x10:SendData(table[1])break<br/>case 0x03:SendData(table[2])break<br/>case 0x01:SendData(table[3])break<br/>case 0x06:SendData(table[4])break<br/>case 0x09:SendData(table[5])break<br/>case 0x1d:SendData(table[6])break<br/>case 0x1f:SendData(table[7])break<br/>case 0x0d:SendData(table[8])break<br/>case 0x19:SendData(table[9])break<br/>default:break<br/>}<br/>}<br/>}<br/>}<br/>谢谢采纳。

 论文摘要:本文介绍一款红外线遥控小车,以AT89S51单片机为核心控制器,用L289驱动直流电机工作,控制小车的运行。本款小车具有红外线遥控手动驾驶、自动驾驶、寻迹前进等功能。本系统采用模块化设计,软件用C语言编写。转贴于 51论 文网 www.51lun-wen.cn一、设计任务和要求以AT98C51单片机为核心,制作一款红外遥控小车,小车具有自动驾驶,手动驾驶和循迹前进等功能。自动驾驶时,前进过程中可以避障。手动驾驶时,遥控控制小车前进、后退、左转、右转、加速等 *** 作。寻迹前进时小车还可以按照预先设计好的轨迹前进。转贴于 51论 文网 www.51lun-wen.cn二、系统组成及工作原理本系统由硬件和软件两部分组成。硬件部分主要完成红外编码信号的发射和接受、障碍物检测、轨迹检测、直流电机运行的发生等功能。软件主要完成信号的检测和处理、设备的驱动及控制等功能。AT89S51单片机查询红外信号并解码,查询各个检测部分输入的信号,并进行相应处理,包括电机的正反转,判断是否遇到障碍物,判断是否小车其那金中有出轨等。系统结构框图如图1所示。转贴于 51论 文网 www.51lun-wen.cn图1 系统结构框图三、主要硬件电路1、遥控发射器电路该电路的主要控制器件为遥控器芯片HT6221,如图2所示。HT6221将红外码调制成38KHZ的脉冲信号通过红外发射二极管发出红外编码。图2中D1是红外发射二极管,D2是按键指示灯,当有按键按下时D2点亮。

你看看这个文档http://file.yizimg.com/4677/2009081602263659.pdf或者http://www.51c51.com/mada/ht6221.pdf,里面有详细的芯片介绍,解码程序,不过都是汇编语言的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12009341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存