设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 1648|回复: 3
收起左侧

DIY单灯闪条码 定频版 定帧版 用LED扫条码的新方法

[复制链接]
发表于 2017-7-20 21:40:50 | 显示全部楼层 |阅读模式

  1. /*
  2. DIY单灯闪条码 定频版
  3. 定频版频率不会自动调节,调节需要修改延时时间或晶振频率。
  4. By:LscmunaixMG 2017-07-20
  5. */
  6. #include <reg51.h> //定义头文件reg51.h
  7. #include<intrins.h> //定义头文件intrins.h
  8. sbit led = P3 ^ 3; //LED对应I/O口,可直接修改

  9. unsigned char code n[20]={ //条码数据,从低到高位输出,通过转换软件生成。
  10. 0xA4,0xAD,0x95,0xB5,0xA6,0x5A,0x59,0x2B,0x5B,0x4B,0xB3,0x6A,0x2D,0xAD,0xA6,0x56,
  11. 0x56,0xD3,0xD2,0x16
  12. };
  13. bit r(unsigned char a){ //读条码数据,参数取值0~255,最多256位条码数据(共32字节)。
  14. unsigned char b=a>>3;//获得这个位是在第几字节里的。
  15. unsigned char c=a&7; //获得这个位是该字节的第几位。
  16. return (1<<c&n[b])>>c; //通过移位计算并且返回位数据。

  17. }


  18. void delay()        //延迟时间,根据摄像头刷新帧数进行修改。
  19. {
  20.         unsigned char i, j;

  21.         _nop_();
  22.         _nop_();
  23.         i = 2;
  24.         j = 113;
  25.         do
  26.         {
  27.                 while (--j);
  28.         } while (--i);
  29. }



  30. void s(bit s){ //设置LED亮灭状态并且包含延迟
  31. delay(); //延迟一些时间
  32. led=s; //设置LED亮灭状态 0点亮1熄灭
  33. }



  34. void main(){ //主函数
  35. unsigned char j=0; //条码数据采样位置计数变量
  36. while(1){ //进入死循环
  37. for(j=0;j<=80;j++){ //点亮LED一些时间
  38. s(0); //LED点亮
  39. }

  40. for(j=0;j<=160;j++){ //循环计数,条码多少位这里改多少
  41. s(r(j)); //输出条码位数据给LED
  42. }
  43. }
  44. }

复制代码
工作原理以及产品使用效果图(部分图片来源于网络):

1.PNG

gif.gif




发表于 2017-7-21 09:26:55 | 显示全部楼层
呵呵仙,还有这种神发明。
发表于 2017-7-21 13:04:11 | 显示全部楼层
我也头一次听说
发表于 2017-7-31 18:59:22 | 显示全部楼层
传说中的零维码
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-27 10:50 , Processed in 1.350077 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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