找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4824|回复: 1
打印 上一主题 下一主题
收起左侧

单片机控制光敏传感器 Proteus仿真程序

[复制链接]
跳转到指定楼层
#
proteus内容如图:


单片机源程序如下:
  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;
  71.                         }
  72.                 else if(adc_data > 137 && adc_data <= 222)
  73.                         {
  74.                          adc_data = adc_data * (-41.1765);
  75.                          adc_data = adc_data + 11641.18;
  76.                          adc_data = adc_data / 10;
  77.                         }
  78.                 else if(adc_data > 91 && adc_data <= 137)
  79.                         {
  80.                          adc_data = adc_data * (-100);
  81.                          adc_data = adc_data + 19700;
  82.                          adc_data = adc_data / 10;
  83.                         }
  84.                  else if(adc_data > 66 && adc_data <= 91)
  85.                         {
  86.                          adc_data = adc_data * (-235.2941);
  87.                          adc_data = adc_data + 32294.12;
  88.                          adc_data = adc_data / 10;
  89.                         }
  90.                 else if(adc_data > 50 && adc_data <= 66)
  91.                         {
  92.                          adc_data = adc_data * (-454.5455);
  93.                          adc_data = adc_data + 47000;
  94.                          adc_data = adc_data / 10;
  95.                         }
  96.                 else if(adc_data > 39 && adc_data <= 50)
  97.                         {
  98.                          adc_data = adc_data * (-727.2727);
  99.                          adc_data = adc_data + 62000;
  100.                          adc_data = adc_data / 10;
  101.                         }
  102.                 else if(adc_data > 33 && adc_data <= 39)
  103.                         {
  104.                          adc_data = adc_data * (-1000);
  105.                          adc_data = adc_data + 74000;
  106.                          adc_data = adc_data / 10;
  107.                         }
  108.                 else if(adc_data > 25 && adc_data <= 33)
  109.                         {
  110.                          adc_data = adc_data * (-2166.6667);
  111.                          adc_data = adc_data + 111500;
  112.                          adc_data = adc_data / 10;
  113.                         }
  114.                 else if(adc_data > 17 && adc_data <= 25)
  115.                         {
  116.                          adc_data = adc_data * (-4848.4211);
  117.                          adc_data = adc_data / 10;
  118.                          adc_data = adc_data + 17736.253;
  119.                         }
  120.                 else if(adc_data >= 14 && adc_data <= 17){
  121.                          adc_data = adc_data * (-3846.1538);
  122.                          adc_data = adc_data / 10;
  123.                          adc_data = adc_data + 15692.308;
  124.                         
  125.                         }

  126.                 huancun[0] = adc_data / 1000;   
  127.                 huancun[1] = adc_data % 1000 / 100;   
  128.                 huancun[2] = adc_data % 100 / 10;           
  129.                 huancun[2] += 10;                        
  130.                 huancun[3] = adc_data % 10;                  
  131.                 }
  132.                 display();
  133.         }
  134. }

  135. void delay(){
  136.         uchar i;
  137.         for(i = 0;i < 180;i++);
  138. }

  139. void display(){
  140.         uchar i;
  141.         for(i = 0;i < 4;i++){        
  142.                 P3 = du[i];
  143.                 P2 = tab[huancun[i]];
  144.                 delay();
  145.         }
  146. }

  147. uchar Read_ADC0831(){
  148.         uchar i,temp;
  149.         DO = 1;
  150.         _nop_();
  151.         _nop_();
  152.         CS = 0;
  153.         _nop_();
  154.         _nop_();
  155.         CLK = 0;
  156.         _nop_();
  157.         _nop_();
  158.         CLK = 1;
  159.         _nop_();
  160.         _nop_();
  161.         CLK = 0;
  162.         _nop_();
  163.         _nop_();
  164.         CLK = 1;
  165.         _nop_();
  166.         _nop_();
  167.         CLK = 0;
  168.         _nop_();
  169.         _nop_();
  170.         for(i = 0;i < 8;i++){        
  171.                 CLK = 1;
  172.                 _nop_();
  173.                 _nop_();
  174.                 temp <<= 1;
  175.                
  176.                 if(DO){
  177.                         temp++;         
  178.                 }
  179.                
  180.                 CLK = 0;
  181.                 _nop_();
  182.                 _nop_();
  183.         }
  184.         CS = 1;
  185.         _nop_();
  186.         _nop_();
  187.         
  188.         return(temp);
  189. }
复制代码
此为如题所示C源程序和proteus仿真51hei下载: light_sensor.zip (90.03 KB, 下载次数: 96)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶1 踩
回复

使用道具 举报

楼主
ID:1079314 发表于 2023-5-26 11:15 | 只看该作者
代码有问题,一运行显示992.3
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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