找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2184|回复: 2
收起左侧

我想在不同光照强度下控制进步电机的旋转角度,利用光敏电阻和AD0832江湖救急!!

[复制链接]
ID:154739 发表于 2017-3-29 13:40 | 显示全部楼层 |阅读模式
  • 我想在不同光照强度下控制进步电机的旋转角度,利用光敏电阻和AD 0832,进行转换我的程序在下边请给位看看我的错误在哪,我觉得在我的数据输出在比较时出了错误  给位能帮我解决下这个问题吗
  • #include <reg52.h>
  • #define uchar unsigned char
  • #define uint unsigned int
  • sbit CLK0832= P1^1;
  • sbit CS0832= P1^0;
  • sbit Di0832= P1^2;
  • sbit Do0832= P1^2;
  • uchar light;
  • uchar state=0;
  • void delay(uint z)
  • {
  •         uint x,y;
  •         for(x=z;x>0;x--)
  •         for(y=110;y>0;y--);
  • }
  • uchar read0832()
  • {
  • uchar i,dat1,dat2;
  • CS0832=0;
  • CLK0832=0;
  • Di0832=1;
  • CLK0832=1;//òÔéÏ1y3ì2úéúáËò»¸ö¿aê¼DÅoÅ
  • CLK0832=0;
  • Di0832=1;//D¾Æ¬ÕaÄü½øDDμ¥í¨μà×a»»Ä£ê½
  • CLK0832=1;
  • CLK0832=0;
  • Di0832=0;
  • CLK0832=1;//¶Ôí¨μà0½øDD×a»»
  • CLK0832=0;
  • Di0832=1;
  • for(i=0;i<8;i++)
  • {
  •   CLK0832=1;
  •         CLK0832=0;
  •         if(Do0832==1)
  •         {
  •          dat1|=0x80>>i;
  •         }
  • }
  • for(i=0;i<8;i++)
  • {
  •   if(Do0832==1)
  •         {
  •          dat2|=0x80<<i;
  •         }
  •         CLK0832=1;
  •         CLK0832=0;
  • }
  • CS0832=1;
  • CLK0832=1;
  • Di0832=1;
  • if(dat1==dat2)
  • {
  •   return(dat1);
  • }
  • }
  • void move(uchar step)
  • {
  • uchar i;
  • P2=0x0f;
  • for(i=0;i<step;i++)
  • {
  •    P2=0x03;
  •          delay(200);
  •    P2=0x06;
  •          delay(200);
  •          P2=0x0c;
  •          delay(200);
  •          P2=0x09;
  •          delay(200);
  •         }
  • }
  • void reserve(uchar step)
  • {
  • uchar i;
  • P2=0x0f;
  • for(i=0;i<step;i++)
  • {
  •    P2=0x09;
  •          delay(200);
  •    P2=0x0c;
  •          delay(200);
  •          P2=0x06;
  •          delay(200);
  •          P2=0x03;
  •          delay(200);
  •         }
  • }
  • void movestep(uchar level)
  • {
  •   switch(level)
  •   {
  •          case 0:switch(state)
  •          {
  •           case 0:break;
  •                 case 1:reserve(1);break;
  •                 case 2:reserve(2);break;
  •                 case 3:reserve(3);break;
  •          }state=0;break;
  •          case 1:switch(state)
  •          {
  •           case 0:move(1);break;
  •                 case 1:break;
  •                 case 2:reserve(1);break;
  •                 case 3:reserve(2);break;
  •          }state=1;break;
  •          case 2:switch(state)
  •          {
  •           case 0:move(2);break;
  •                 case 1:move(1);break;
  •                 case 2:break;
  •                 case 3:reserve(1);break;
  •          }state=2;break;
  •          case 3:switch(state)
  •          {
  •           case 0:move(3);break;
  •                 case 1:move(2);break;
  •                 case 2:move(1);break;
  •                 case 3:break;
  •          }state=3;break;
  •         }
  • }
  • void main()
  • {
  •         while(1)
  •         {
  •          //delay(10);
  •         light=read0832();
  •         if(light>=0&&light<40)movestep(0);
  •         if(light>=40&&light<125)movestep(1);
  •         if(light>=125&&light<210)movestep(2);
  •         if(light>=210&&light<255)movestep(3);
  •         }
  • }


QQ截图20170329133650.png
回复

使用道具 举报

ID:82765 发表于 2017-3-29 14:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:154739 发表于 2017-3-29 16:13 | 显示全部楼层
cjjcjj1 发表于 2017-3-29 14:58
你好!先查看一下 light 是不是读取到正常值?

我的light就是在不同光照 下AD转换的电压值 ,我也是不太确定比较这部分。能告诉下吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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