51单片机 OLED和lcd1602屏幕烟雾温度报警程序原理图PCB

[复制链接]
查看1 | 回复0 | 2021-6-20 01:59:49 | 显示全部楼层 |阅读模式
oled屏幕,烟雾模块MQ-2模块,还有ds18b20模块 有程序有pcb图 3.png

Altium Designer画的原理图和PCB图如下:(附件中可下载工程文件)

1.png 2.png

部分代码:完整代码在本文尾部附件中
  1. uchar ADc()
  2. {
  3.         uchar i,dat11 = 0,dat22 = 0;
  4.         //第一个周期:转换开始
  5.         CS = 0;
  6.         CLK = 0;
  7.         DIO = 1;
  8.         _nop_(); _nop_();//短暂定时2us——也可以写成delay2us();,那么程序就要有delay2us();的定义了。
  9.         CLK = 1; _nop_(); _nop_();
  10.         
  11.         
  12.         //第二个周期:选择选择单通道还是双通道  DIO=0双通道差分 或 DIO=1单通道
  13.         CLK = 0; DIO=1; _nop_();_nop_();
  14.         CLK = 1;        _nop_();_nop_();
  15.         
  16.         //第三个周期:DIO选择CH1-->如果DIO=0 选择CH0
  17.         CLK = 0;DIO = 0; _nop_();_nop_();
  18.         CLK = 1;DIO = 1; _nop_();_nop_();
  19.         
  20.         //等待
  21.         CLK = 0; DIO = 1; _nop_();_nop_();
  22.         
  23.         //4-11,共8个下降沿读取数据(MSB->LSB) 先进来的为最高位,后进来为最低位
  24.         for(i=0;i<8;i++)
  25.         {
  26.                 CLK = 1;  _nop_();_nop_();
  27.                 CLK = 0;  _nop_();_nop_();
  28.                 dat11 = dat11<<1|DIO;
  29.         }
  30.         //11-18 共8个下降沿读取数据(LSB->MSB) 先进来的为最低位,后进来为最高位
  31.         for(i=0;i<8;i++)
  32.         {
  33.                 dat22 = dat22|((uchar)(DIO)<<i);
  34.                 CLK = 1;  _nop_();_nop_();
  35.                 CLK = 0;  _nop_();_nop_();
  36.         }
  37.         
  38.         //禁止片选
  39.         CS = 1;
  40.         //如果MSB->LSB和LSB->MSB读取数据结果相同,返回读取结果,否者0
  41.         return (dat11==dat22) ? dat11 : 0 ;        
  42. }
  43. void keyscan()
  44. {
  45.         if(key1==0)
  46.         {
  47.                 delay(5);
  48.                 if(key1==0)
  49.                 {
  50.                         if(moshi==0){moshi=1;delay(20);}
  51.                         else if(moshi==1){moshi=0;delay(20);}        
  52.                 }
  53.                 while(!key1);
  54.         }
  55.         else if(key2==0)
  56.         {
  57.                 delay(5);
  58.                 if(key2==0)
  59.                 {
  60.                         if(moshi==0)
  61.                         {
  62.                                 if(wendu_h==40) wendu_h=20;
  63.                                 else wendu_h++;
  64.                         }
  65.                         else if(moshi==1)
  66.                         {
  67.                                 if(shidu_h==500) shidu_h=100;
  68.                                 else shidu_h+=50;
复制代码


烟雾报警原理图PCB AD格式.zip (2.31 MB, 售价: 2 工控币)
0.96OLED显示屏C51_IIC例程.zip (105.86 KB, 售价: 2 工控币)
lcd1602显示屏例程.rar (34.24 KB, 售价: 2 工控币)
回复

使用道具 举报

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

本版积分规则