芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片复制51单片机实现红外遥控风扇程序

单片机源程序如下:
  1. /*******************************************************************************
  2. * 实验名                           : 1602显示红外线值实验
  3. * 使用的IO             : 电机用P1口,键盘使用P3.0、P3.1、P3.2、P3.3
  4. * 实验效果       : LCD1602显示出读取到的红外线的值
  5. *        注意                                         :
  6. *******************************************************************************/
  7. 芯片复制#include<reg51.h>
  8. 芯片复制#include"lcd.h"
  9. 芯片复制#include <stdio.h>
  10. //#include "delay.h"


  11. sfr T2CON  = 0xC8;          //timer2 control register
  12. sfr RCAP2L = 0xCA;
  13. sfr RCAP2H = 0xCB;
  14. sfr TL2    = 0xCC;
  15. sfr TH2    = 0xCD;

  16. typedef unsigned char BYTE;
  17. typedef unsigned int WORD;

  18. #define FOSC 12000000L      //System frequency
  19. #define BAUD 9600       //UART baudrate

  20. /*Define UART parity mode*/
  21. #define NONE_PARITY     0   //None parity
  22. #define ODD_PARITY      1   //Odd parity
  23. #define EVEN_PARITY     2   //Even parity
  24. #define MARK_PARITY     3   //Mark parity
  25. #define SPACE_PARITY    4   //Space parity

  26. #define PARITYBIT NONE_PARITY   //Testing even parity

  27. sbit bit9 = P2^2;           //P2.2 show UART data bit9
  28. bit busy;

  29. sbit Sevro_moto_pwm = P3^5;           //接舵机信号端输入PWM信号调节速度

  30. sbit FanPin=P1^0;

  31. unsigned int pwm_val_left  = 0;//变量定义
  32. unsigned char push_val_left =14;//舵机归中,产生约,1.5MS 信号
  33. unsigned int  timer=0;                        //延时基准变量
  34. unsigned int  Servo_Ctr=0;

  35. unsigned int pwm_val_Fan=0;
  36. unsigned char Fan_speed=199;

  37. int flag=0;
  38. sbit IRIN=P3^2;

  39. unsigned char code CDIS1[13]={" Red Control "};
  40. unsigned char code CDIS2[13]={" IR-CODE:--H "};
  41. unsigned char code Test_OK[2]={"OK"};
  42. unsigned char IrValue[6];
  43. unsigned char Time;
  44. unsigned char IrOK=0;
  45. /*--------------------------------------------------------------
  46.                            函数声明
  47. --------------------------------------------------------------*/
  48. void InitUART(void);
  49. char putchar(char c);
  50. void IrInit();
  51. void DelayMs(unsigned int );
  52. void SendString(char *s);
  53. void SendData(BYTE dat);
  54. void pwm_Servomoto_angle(unsigned int angle,unsigned int Servo_time);
  55. void pwm_Servomoto(void);
  56. void test_servo(void);
  57. void Motor_Ctr(void);

  58. void Pwm_Motor(void);
  59. /*******************************************************************************
  60. * 函数名         : main
  61. * 函数功能                   : 主函数
  62. * 输入           : 无
  63. * 输出                  : 无
  64. *******************************************************************************/

  65. void main()
  66. {
  67.         unsigned char i;
  68.             //串口初始化
  69.    

  70. //     printf("\r\n\n\r\n");
  71.    
  72.                 TMOD=0X11;
  73.         TH1=(65536-100)/256;          //100US定时
  74.         TL1=(65536-100)%256;
  75.         TH0=0;
  76.         TL0=0;  
  77.         TR1= 1;
  78.         ET1= 1;
  79.         ET0= 1;
  80.         EA = 1;

  81.         IrInit();        
  82.         LcdInit();
  83.         InitUART();

  84.         LcdWriteCom(0x80);
  85.         
  86.         for(i=0;i<13;i++)
  87.         {
  88.                 LcdWriteData(CDIS1[i]);        
  89.         }
  90.         LcdWriteCom(0x80+0x40);
  91.         for(i=0;i<13;i++)
  92.         {
  93.                 LcdWriteData(CDIS2[i]);        
  94.         }
  95.         while(1)
  96.         {
  97.             test_servo();
  98.                 IrValue[4]=IrValue[2]>>4;                          //高位
  99.                 IrValue[5]=IrValue[2]&0x0f;                //低位        
  100.                 if(IrValue[4]>9)
  101.                 {
  102.                         LcdWriteCom(0xc0+0x09);                        //设置显示位置
  103.                         LcdWriteData(0x37+IrValue[4]);        //将数值转换为该显示的ASCII码
  104.                 }
  105.                 else
  106.                 {
  107.                         LcdWriteCom(0xc0+0x09);
  108.                         LcdWriteData(IrValue[4]+0x30);        //将数值转换为该显示的ASCII码
  109.                 }        
  110.                 if(IrValue[5]>9)
  111.                 {
  112.                         LcdWriteCom(0xc0+0x0a);
  113.                         LcdWriteData(IrValue[5]+0x37);                //将数值转换为该显示的ASCII码
  114.                 }
  115.                 else
  116.                 {
  117.                         LcdWriteCom(0xc0+0x0a);
  118.                         LcdWriteData(IrValue[5]+0x30);                //将数值转换为该显示的ASCII码
  119.                 }        



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信