一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 4685|回复: 6

[其他综合] 单片机模拟PT2262发码程序

[复制链接]
发表于 2012-8-7 15:14 | 显示全部楼层 |阅读模式
因为需要,搞了一个单片机模拟2262发码的小程序,贴上来,供需要的朋友品头评足多提建设性意见,以便进一步改进和完善,
/*****************PIC12F629单片机程序*****************************/
/**************************************************************/
/*****File  Function : 模拟2262发码                           *****/
/*****MCU            : PIC12F629  内部4M晶振             *****/
/*****Compile Date   :  2012/08/03                        *****/
/*****Edition Info   :  V0.0                              *****/
//*************************************************************/
/*************************************************************/
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int

void delay5ms(void);
void delay200us(void);
void delayms(uint count);
void delay0d5s(void);

void PortInit(void);
//-----------------------------------------------------------------------------------------------
void p2262_0(void);
void p2262_1(void);
void p2262_f(void);
void fs_2262(uint add,uchar dat);

#define       p2262   GPIO4   //3脚,接5.6K到433发射模块,同时接4.7K电阻到发光2极管正极,发光管负极到地20120805
//#define     led     GPIO5     //2脚 4.7k,负极到地

#define                _asm{"nop"}        NOP()
#define                _asm{"clrwdt"}        CLRWDT()
#define                _asm{"sleep"}        SLEEP()
//__CONFIG(HS&PROTECT&WDTEIS);    //采用内部RC振荡器,看门狗关闭
//=============================================================
//=============================================================
void PortInit(void)
{
        TRISIO=0b00000000;   //设置GP4,GP5为输出
//        CMCON=0b00000000;
        WPU =0b11111111;         //使能口上拉电阻
        OPTION_REG=0b00001111;    //后3位调整睡眠时间
}
//=============================================================
//=============================================================
void main(void){        
        uint k,j;        
        uchar i;

        PortInit();
        p2262=0;
        while(1){
//  for(i=0;i<2;i++)delay0d5s();
//         CLRWDT();
//  delay0d5s();
//        led=0;      //发光管亮        
          //for(k=0;k<16;k++){
        fs_2262(0xaaaa,15);    //   
          //for(j=0;j<35535;j++)
          //;
      //}
//        led=1;        //发光管熄灭
   SLEEP();
   NOP();
        }
}
//============================================================
void delayms(uint count){
uint i;
for(i=count;i>0;i--){
NOP();
CLRWDT();                                                          //315只用这一句
NOP();NOP();NOP();NOP();NOP();NOP();  //315也可用这一句,433也可用此句
NOP();NOP();NOP();NOP();NOP();NOP();  //433要用此句
NOP();NOP();NOP();NOP();NOP();NOP();  //433要用此句
NOP();NOP();NOP();NOP();NOP();NOP();  //433要用此句
NOP();NOP();NOP();NOP();NOP();NOP();  //433必须用此句
}}

void delay5ms(void){
        uchar i;
        for(i=24;i>0;i--){
         delay200us();
        }}

void delay200us(void){
        uchar i;
        for(i=50;i>0;i--)
        NOP();        
    }

void delay0d5s(void){
        uint i;
        for(i=1500;i>0;i--){
         delay200us();
        }}
//==================================================
/*************************************************************/
/*################################################*/
//------------------------------------------------------------------------------
void p2262_0(void){
        p2262=1;
        delayms(10);
        p2262=0;
        delayms(30);
        p2262=1;
        delayms(10);
        p2262=0;
        delayms(30);
}
//-------------------------------------------------------------
void p2262_1(void){
        p2262=1;
        delayms(30);
        p2262=0;
        delayms(10);
        p2262=1;
        delayms(30);
        p2262=0;
        delayms(10);
}
//-------------------------------------------------------------
void p2262_f(void){                 
        p2262=1;
        delayms(10);
        p2262=0;
        delayms(30);
        p2262=1;
        delayms(30);
        p2262=0;
        delayms(10);
}
//-------------------------------------------------------------
void fs_2262(uint add,uchar dat){    //2262编码发射,00代表0,01代表1,10代表f
        uchar i,j;         
        uint temp;            
   
        for(i=0;i<8;i++){     //发射相同的8组码 //发射相同的4组码?//发射相同的2组码  ?????
           
                for(j=0;j<8;j++){        //先发射8位地址
                temp=add;
                temp>>=((7-j)*2);       //将待发射的两位移到最低位
                temp &=3;

                if(temp==0)      p2262_0();
                else if (temp==1)p2262_1();
                else if (temp==2)p2262_f();
                }

                for(j=0;j<4;j++){        //再发4位数据
                temp=dat;
                temp>>=(3-j);
                temp &=1;
                if(temp==0)p2262_0();
                else if(temp==1)p2262_1();
                }        

//        led=0;      //发光管亮
        p2262=1;    //发射结束码
        delayms(10);

        p2262=0;
        delayms(310);
        }
//        led=0;      //发光管亮        
}
//###########################################################*/
发表于 2012-8-7 16:00 | 显示全部楼层
不错,谢谢楼主分享。
这个可以用来当电视遥控器吗?
回复

使用道具 举报

发表于 2012-8-7 20:49 | 显示全部楼层
可以的,你把2272放在电视里面
回复

使用道具 举报

发表于 2012-8-7 20:53 | 显示全部楼层
记得要用2272-M   (⊙o⊙)哦,遥控音量、频道、开关机应该没有问题的
回复

使用道具 举报

 楼主| 发表于 2012-8-7 21:30 | 显示全部楼层
不错,谢谢楼主分享。
这个可以用来当电视遥控器吗?
gw168sh 发表于 2012-8-7 16:00 https://www.yleee.com.cn/images/common/back.gif



    当然,如果你用2272来接收,当然是完全可以的哟。耗电很小。
回复

使用道具 举报

发表于 2012-8-8 23:53 | 显示全部楼层
学习了嘿嘿。红外啊
回复

使用道具 举报

发表于 2013-1-11 16:55 | 显示全部楼层
PIC单片机不会玩啊。
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-2 14:36 , Processed in 0.032142 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表