51单片机控制光敏传感器 Proteus仿真程序和单片机c源码

[复制链接]
查看1 | 回复0 | 2021-6-24 00:28:45 | 显示全部楼层 |阅读模式
1.png

部分源码:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit CS = P1^0;
  6. sbit CLK = P1^1;
  7. sbit DO = P1^2;
  8. uchar code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x40,0x3e,0x00};
  9. uchar code du[] = {0xfe,0xfd,0xfb,0xf7};
  10. uint huancun[] = {0,0,0,0};
  11. void delay();
  12. void display();        
  13. uchar Read_ADC0831();


  14. void main(){
  15.         uint i;
  16.         long adc_data;
  17.         while(1){
  18.         i++;
  19.         if(i == 100){
  20.                 i = 0;
  21.                 adc_data = Read_ADC0831() * 100;
  22.                 adc_data = adc_data / 51;         
  23.                                  
  24.                 if(adc_data > 461 && adc_data <= 494)
  25.                 {
  26.                         adc_data = adc_data * (-3.1818);
  27.                         adc_data = adc_data + 1576.35;
  28.                         adc_data = adc_data / 10;
  29.                 }
  30.                 else if(adc_data > 438 && adc_data <= 461)
  31.                 {
  32.                         adc_data = adc_data * (-3.6364);
  33.                         adc_data = adc_data + 1782.74;
  34.                         adc_data = adc_data / 10;
  35.                 }
  36.                 else if(adc_data > 401 && adc_data <= 438)
  37.                 {
  38.                         adc_data = adc_data * (-4.8571);
  39.                         adc_data = adc_data + 2319.98;
  40.                         adc_data = adc_data / 10;
  41.                 }
  42.                 else if(adc_data > 373 && adc_data <= 401)
  43.                 {
  44.                         adc_data = adc_data * (-6);
  45.                         adc_data = adc_data + 2782;
  46.                         adc_data = adc_data / 10;
  47.                 }
  48.                 else if(adc_data > 341 && adc_data <= 373)
  49.                 {
  50.                  adc_data = adc_data * (-8);
  51.                  adc_data = adc_data + 3528;
  52.                  adc_data = adc_data / 10;
  53.                 }
  54.                 else if(adc_data > 300 && adc_data <= 341)
  55.                         {
  56.                          adc_data = adc_data * (-9.375);
  57.                          adc_data = adc_data + 3990.63;
  58.                          adc_data = adc_data / 10;
  59.                         }
  60.                 else if(adc_data > 263 && adc_data <= 300)
  61.                         {
  62.                          adc_data = adc_data * (-12.5);
  63.                          adc_data = adc_data + 4950;
  64.                          adc_data = adc_data/10;
  65.                         }
  66.                 else if(adc_data > 222 && adc_data <= 263)
  67.                         {
  68.                          adc_data = adc_data *(-19.512);
  69.                          adc_data = adc_data + 6831.66;
  70.                          adc_data = adc_data / 10;
复制代码
完整代码和proteus仿真文件: light_sensor.zip (90.03 KB, 售价: 1 工控币)
回复

使用道具 举报

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

本版积分规则