找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6412|回复: 4
收起左侧

51单片机二维码扫码控制程序 二维码识别程序

[复制链接]
ID:284341 发表于 2019-10-4 16:27 | 显示全部楼层 |阅读模式
  1. #include<STC15W408AS.h>
  2. #include<math.h>                  //计算小数点的头文件
  3. #include <intrins.h>          //用nop函数延时的头文件
  4. #define uchar unsigned char//宏定义无符号字符型
  5. #define uint unsigned int  //宏定义无符号整型
  6. /*数据类型定义*/
  7. typedef signed char        int8;
  8. typedef signed int        int16;
  9. typedef signed long        int32;
  10. typedef unsigned char        uint8;
  11. typedef unsigned int        uint16;
  12. typedef unsigned long        uint32;

  13. #define ENABLE_IAP 0x83 //系统工作时钟<12MHz 时,对IAP_CONTR 寄存器设置此值
  14. #define CMD_IDLE 0
  15. #define CMD_READ 1
  16. #define CMD_PROGRAM 2
  17. #define CMD_ERASE 3
  18. #define ENABLE_IAP 0x83//SYSCLK<12MH
  19. #define IAP_ADDRESS 0x0000        //存储地址
  20. #define FOSC 11059200L  
  21. #define BAUD 9600   

  22.   sbit IN1 = P1^2;                        /*单片机1.2引脚检测IN1是否动作*/
  23.   sbit IN2 = P1^3;                        /*单片机1.3引脚检测IN2是否动作*/
  24.   sbit IN3 = P1^4;                        /*单片机1.4引脚检测IN3是否动作*/
  25.   sbit IN4 = P1^5;                        /*单片机1.5引脚检测IN4是否动作*/
  26.            
  27.   sbit OUT1 = P3^7;                  /*单片机3.7引脚控制继电器COM1*/
  28.   sbit OUT2 = P3^6;                  /*单片机3.6引脚控制继电器COM2*/


  29. uchar dat=0x00;
  30. bit  bz1=0;
  31. bit  bz2=0;
  32. bit  bz3=0;
  33. bit  bz4=0;


  34. bit write=0;
  35. uint sec=0;
  36. uint tcnt=0;
  37. uchar r=0;
  38. uchar sj1;
  39. uchar sj2;
  40. uint8 sendBuf[10];          //发送缓冲区
  41. uint8 receBuf[10];    //接收缓冲区
  42. bit flag_zx=0;
  43. uchar k=1;
  44. uchar j=100;
  45. uchar xdata tmz1[32];//接收缓冲区
  46. bit qcbz=0;
  47. uchar y=0;
  48. /********************************************************************
  49.                             定义 ISP/IAP/EEPROM 命令
  50. *********************************************************************/

  51. void IapIdle();//禁用 ISP/IAP/EEPROM functionmake 单片机 在 一 安全 状态
  52. uint8 IapReadByte(uint16 addr);//读数据
  53. void IapProgramByte(uint16 addr, uint8 dat);//写数据
  54. void IapEraseSector(uint16 addr);//擦除数据
  55. /********************************************************************
  56.                             延时函数
  57. *********************************************************************/
  58. void delay(uchar date)//延时程序
  59. {
  60. uchar m,n,s;
  61. for(m=date;m>0;m--)
  62. for(n=200 ;n>0;n--)
  63. for(s=248;s>0;s--);
  64. }
  65. /*****************清空发送缓冲区*************************/
  66. void clear_receBuf()
  67. {
  68.     uchar i;
  69.         for(i=0;i<8;i++)
  70.         {
  71.         receBuf[i]=0;
  72.         }
  73. }

  74. /********************************************************************
  75.                             主函数
  76. *********************************************************************/
  77. void main()                                   
  78. {

  79.     SCON = 0x50;
  80.     T2L = (65536 - (FOSC/4/BAUD));
  81.     T2H = (65536 - (FOSC/4/BAUD))>>8;
  82.     AUXR = 0x14;               
  83.     AUXR |= 0x01;              
  84.     ES = 1;                  
  85.     EA = 1;
  86.         ET0=1;
  87.         EA=1;
  88.         sec=0;
  89.         P3=0XFF;
  90.    while(1)
  91.    {                  
  92.    if((r!=0)&&(qcbz==0)){delay(j);clear_receBuf();r=0;}
  93.    }               
  94. }
  95. void Uart() interrupt 4 using 1
  96. {
  97.     if (RI)
  98.            {
  99.              RI=0; //接收标志清零
  100.              receBuf[r++&0x0F]=SBUF;     //把接受的数据存储到BUT数组中
  101.                  if(r>=8)
  102.                  {
  103.                  r=0;
  104.              flag_zx=1;
  105.                  }
  106.            }
  107.       if(flag_zx==1)
  108.            {                     
  109. //                                                                                                                BF AA B5 DA D2 BB C2 B7 0D
  110. //                                                                                                                B9 D8 B5 DA D2 BB C2 B7 0D
  111.                 flag_zx=0;
  112.            if((receBuf[0]==0xBF)&&(receBuf[1]==0xAA)&&(receBuf[2]==0xB5)&&(receBuf[3]==0xDA)&&(receBuf[4]==0xD2)&&(receBuf[5]==0xBB)&&(receBuf[6]==0xC2)&&(receBuf[7]==0xB7))
  113.                         {
  114.                         OUT1=0;clear_receBuf();r=0;
  115.                         }
  116.                    else if((receBuf[0]==0xB9)&&(receBuf[1]==0xD8)&&(receBuf[2]==0xB5)&&(receBuf[3]==0xDA)&&(receBuf[4]==0xD2)&&(receBuf[5]==0xBB)&&(receBuf[6]==0xC2)&&(receBuf[7]==0xB7))
  117.                         {
  118.                         OUT1=1;clear_receBuf();r=0;
  119.                         }
  120.           else if((receBuf[0]=='A')&&(receBuf[1]=='B')&&(receBuf[2]=='C')&&(receBuf[3]=='D')&&(receBuf[4]=='E')&&(receBuf[5]=='F')&&(receBuf[6]=='G')&&(receBuf[7]=='H'))
  121.                         {
  122.                         OUT2=0;clear_receBuf();r=0;
  123.                         }
  124.           else if((receBuf[0]=='1')&&(receBuf[1]=='2')&&(receBuf[2]=='3')&&(receBuf[3]=='4')&&(receBuf[4]=='5')&&(receBuf[5]=='6')&&(receBuf[6]=='7')&&(receBuf[7]=='8'))
  125.                         {
  126.                         OUT2=1;clear_receBuf();r=0;
  127.                         }
  128. }
  129. }

  130. /********************************************************************
  131.                               结束
  132. *********************************************************************/
复制代码



控制板原理图.jpg
二维码识别电路连接图.jpg
打开继电器的二维码.jpg
二维码模块接线图.jpg
关闭继电器的二维码.jpg
0.png

keil _二维码学习控制模块 -开关控制.rar

357.3 KB, 下载次数: 71, 下载积分: 黑币 -5

回复

使用道具 举报

ID:149799 发表于 2019-10-8 13:05 | 显示全部楼层
留个记号,向你学习。
回复

使用道具 举报

ID:622578 发表于 2019-10-11 21:52 | 显示全部楼层
你好!你有做好的成品吗?我想要一个
回复

使用道具 举报

ID:622578 发表于 2019-10-11 21:56 | 显示全部楼层
你好!你有做好的成品吗?我想要一个
回复

使用道具 举报

ID:564452 发表于 2019-11-7 23:27 来自手机 | 显示全部楼层
你好,我想请教扫码了怎么控制单片机
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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