找回密码
 立即注册
搜索
楼主: 白不分

求师傅帮忙写个程序,谢谢了。

[复制链接]
 楼主| 发表于 2018-11-22 07:04:23 来自手机 | 显示全部楼层
wgsd 发表于 2018-11-21 22:55
CD4066的导通电阻近百欧到两百多欧,AD584内部的分压电阻几K到十几K,最好先试验一下对输出电压有没有影 ...

先试试看,不行加继电器。
发表于 2018-11-22 13:47:31 | 显示全部楼层
按你的电路图随手写了一个,公司电脑上没装keil 51环境,逻辑应该没问题
#include “reg52.h”
#define uint8_t  unsigned char
#define uint16_t  unsigned short
#define Key                        P3.3
#define CD4066_A                P3.2
#define CD4066_B                P3.1
#define CD4066_C                P3.0
void dlyms(uint16_t val);
void main(void)
{
        uint8_t ucStatu=0;
        bit bFlagKeyPress=0;
        if(Key==0){
                dlyms(20);
                if(Key==0&&bFlagKeyPress==0){
                        ucStatu++;                                //改变状态
                        ucStatu=ucStatu%4;
                        bFlagKeyPress=1;
                }
        }
        else{
                bFlagKeyPress=0;
        }
        switch(ucStatu){
                case 0:
                        CD4066_A=1;
                        CD4066_B=1;
                        CD4066_C=1;
                break;
                case 1:
                        CD4066_A=0;
                        CD4066_B=1;
                        CD4066_C=1;
                break;
                case 2:
                        CD4066_A=1;
                        CD4066_B=0;
                        CD4066_C=1;
                break;
                case 3:
                        CD4066_A=1;
                        CD4066_B=1;
                        CD4066_C=0;
                break;
                default:
                        CD4066_A=1;
                        CD4066_B=1;
                        CD4066_C=1;
                break;
        }
}

void dlyms(uint16_t val)
{
        uint16_t i=1000;
        for(;val!=0;val--)
        {
                while(i--);
        }
}
 楼主| 发表于 2018-11-22 16:07:40 来自手机 | 显示全部楼层
yangsen 发表于 2018-11-22 13:47
按你的电路图随手写了一个,公司电脑上没装keil 51环境,逻辑应该没问题
#include “reg52.h”
#define uin ...

谢谢,非常感谢。
发表于 2018-11-22 17:07:12 | 显示全部楼层
yangsen 发表于 2018-11-22 13:47
按你的电路图随手写了一个,公司电脑上没装keil 51环境,逻辑应该没问题
#include “reg52.h”
#define uin ...

这段代码,写得不错啊,上机验证过更好。
 楼主| 发表于 2018-11-22 18:50:45 来自手机 | 显示全部楼层
yangsen 发表于 2018-11-22 13:47
按你的电路图随手写了一个,公司电脑上没装keil 51环境,逻辑应该没问题
#include “reg52.h”
#define uin ...

mmexport1542883754443.jpg Screenshot_2018-11-22-18-50-07.png 编绎没有通过,不知道啥回事。
mmexport1542883754443.jpg
发表于 2018-11-22 19:44:55 | 显示全部楼层
白不分 发表于 2018-11-22 18:50
编绎没有通过,不知道啥回事。

楼主使用单片机值得学习,使用方便还是用CD4017产生循环脉冲简便。另外如果手中有CD4066可以先手动控制看看,可能最好的情况下导通电阻在十几欧,多则上百欧,总之使用CD4066可能得从新标定一下。给你几张不同电阻对基准的影响仿真图,但并不能代表CD4066在电路时的真实情况,因CD4066的导通电阻和负载电阻、电压等因素有关。
1.jpg 2.jpg 3.jpg



发表于 2018-11-22 20:24:17 | 显示全部楼层
5.jpg
 楼主| 发表于 2018-11-22 20:36:24 | 显示全部楼层
wgsd 发表于 2018-11-22 19:44
楼主使用单片机值得学习,使用方便还是用CD4017产生循环脉冲简便。另外如果手中有CD4066可以先手动控制看 ...

嘿嘿谢谢提醒,用4066仿真了下还真得不行。
发表于 2018-11-22 20:46:25 | 显示全部楼层
白不分 发表于 2018-11-22 20:36
嘿嘿谢谢提醒,用4066仿真了下还真得不行。

不客气,共同探讨。另外AD584工作电压较高,如用CD4066它的电压应与AD584相同,不能与单片机5V同样,不然不会起到开关作用。
发表于 2018-11-23 00:06:45 | 显示全部楼层
白不分 发表于 2018-11-22 18:50
编绎没有通过,不知道啥回事。

有时间我也编绎,长时间不玩,容易忘记。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|仪表爱好者 ( 京ICP备2021027848号 )

GMT+8, 2024-4-26 20:31 , Processed in 0.078125 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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