用89C51单片机代替PT2272解码PT2262的程序

[09-08 11:37:14]   来源:http://www.88dzw.com  微机|单片机   阅读:8720

文章摘要:高电平来检测编码的开始信号接收到5ms 的高电平后才开始解码我们可以发现每个码的长度都是1.2ms左右每一个编码都是由低电平开始然后到高电平又到低电平又回到高电平我们从第一个高电平的宽度可以把1 码区分出来剩下的悬空码和0 码可以从第二个高电平的宽度区分出来具体的单片机译码方法如下由高电平开始检测到下降沿时就延时300us 读取接收的状态记为A0 然后再检测下一个下降沿降沿后又延时300us 读取接收的状态记为A1 这样就把一个编码给译出来了A0 A1 和悬空1 码0 码的关系如下:A0 A1 代码0 0 1 码0 1 错误1 0 悬空1 1 0 码**/ #i nclude <STC5

用89C51单片机代替PT2272解码PT2262的程序,标签:电路设计,http://www.88dzw.com

高电平来检测编码的开始信号接收到5ms 的高电平后才开始解码我们可以发现每个码的长度都是1.2ms
左右每一个编码都是由低电平开始然后到高电平又到低电平又回到高电平我们从第一个高电平
的宽度可以把1 码区分出来剩下的悬空码和0 码可以从第二个高电平的宽度区分出来
具体的单片机译码方法如下
由高电平开始检测到下降沿时就延时300us 读取接收的状态记为A0 然后再检测下一个下降沿
降沿后又延时300us 读取接收的状态记为A1 这样就把一个编码给译出来了
A0 A1 和悬空1 码0 码的关系如下:
A0 A1 代码
0 0 1 码
0 1 错误
1 0 悬空
1 1 0 码
******************************************************************************/

 
#i nclude <STC516AD.H>   #define uchar unsigned char
#define uint unsigned int   //定义共用体
union
{
uint   word;
struct { //结构bytes
uchar byte_addr;
uchar byte_data;
}bytes;
}a_0,a_1;   //位定义
sbit W_REM =P3^3; //遥控接收输入脚
sbit LED0 =P1^0;
sbit LED2 =P1^2;   bit bdata recv_flg, //接收正确位标志(1:正确 0:错误)
//因为当按住PT2262的按键不放的时候PT2262会把编码不断的送出
//设置lianji_flg位用来检测按键有没有放开过如果没有放开则不再响应
lianji_flg; //按键没有放开过标志(1:连接 0:点击)
uchar
// addr_a0, //接收的8位地址编码A0
// addr_a1, //接收的8位地址编码A1
// data_a0, //接收的4位数据编码A0
// data_a1, //接收的4位数据编码A1
addr_user_a0, //设定的8位地址密码A0
addr_user_a1; //设定的8位地址密码A1
// led_out; //输出控制      
//------------------------------------- sub functon ----------------------------------------------
//------------------------------------- sub functon ----------------------------------------------
//------------------------------------- sub functon ----------------------------------------------
//------------------------------------- sub functon ----------------------------------------------
//------------------------------------- sub functon ----------------------------------------------   //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//void d1ms (uint ljh_in)    /*1mS延时函数*/
//{
// uint data ljh_i;
// uchar data ljh_j;
// for(ljh_i=0;ljh_i<ljh_in;ljh_i++){
// for(ljh_j=0;ljh_j<108;ljh_j++){
// _nop_(); _nop_();
// _nop_(); _nop_();
// _nop_(); _nop_();
// }
// }
//}
//<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<   //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void d50us(uchar n) //50uS延时
{
uchar data i,j;
for(j=n;j;j--) { //[1T+2T+(2i+2)T+1T+2T]*n+1T+2T+2T=(2i+8)*n+5T

[1] [2] [3] [4]  下一页


Tag:微机|单片机电路设计家电维修 - 单元电路介绍 - 微机|单片机