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

发表于:2018-11-21 22:02:34 7304
电子电路
技术类别: 嵌入式_单片机
关键字: STC15F104W

登录后可查看大图

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想用STC15F104W给AD584做个电压切换。省得老是切换跳帽。 IMG_20181121_174544.jpg
用CD4066来切换。 IMG_20181121_175317.jpg 啥都准备好了,就差程序了。

#include "C:\Keil\C51\INC\STC\STC15F104E.H"

void mian()
{
   IT1=0;                         //外部中断1为低电平触发
   EX1=1; EA=1;
   while(1);
}

void K1 () interrupt 2
{
   if(flg==3) flg=0;
   flg++;
      switch(flg)
      {
        case  1: P3&=0xF8; P3|=0x04;  break;
        case  2: P3&=0xF8; P3|=0x02;  break;
        case  3: P3&=0xF8; P3|=0x01;  break;
                default : break;
       }
}

写的这个代码运行不了。
收藏
送赞
分享

发表回复

评论列表(23)

无极 数字梦想家 2018-11-21 22:09:19
51单片机,真正的垃圾。
刚写好arm m0单片机和ds1620通信的程序
2018-11-21 22:09:19 回复
白不分 楼主     数字大师 2018-11-21 22:15:00
无极 发表于 2018-11-21 22:09
51单片机,真正的垃圾。
刚写好arm m0单片机和ds1620通信的程序

有空帮帮忙啊,谢谢了。
2018-11-21 22:15:00 回复
白不分 楼主     数字大师 2018-11-21 22:16:27
无极 发表于 2018-11-21 22:09
51单片机,真正的垃圾。
刚写好arm m0单片机和ds1620通信的程序

都放弃学这个了,书读少太难的理解不了。
2018-11-21 22:16:27 回复
wgsd 数字大神 2018-11-21 22:55:33
白不分 发表于 2018-11-21 22:16
都放弃学这个了,书读少太难的理解不了。

CD4066的导通电阻近百欧到两百多欧,AD584内部的分压电阻几K到十几K,最好先试验一下对输出电压有没有影响再做自动切换,或仿真一下,估计会有影响。
2018-11-21 22:55:33 回复
veteran 数字梦想家 2018-11-21 23:42:48
本帖最后由 veteran 于 2018-11-27 15:56 编辑

      基准电压切换
大多数AD584土基准基本都是用跳线帽来改变输出电压,使用起来很不方便,按如下的电路使用一个按键K就可以顺序切换基准的输出电压,比用跳线帽要来的便捷。


以下程序自动插入未在内容中添加的图片或附件

基准电压.rar

79.28 KB, 阅读权限: 10, 下载次数: 19

2018-11-21 23:42:48 回复
光速飞行 数字大神 2018-11-22 00:46:57
的确有些意,有时间也玩玩这个。
2018-11-22 00:46:57 回复
光速飞行 数字大神 2018-11-22 01:13:49
本帖最后由 光速飞行 于 2018-11-22 01:21 编辑

我这有个仿真图,还没得式过真电路呢,也就是上面的电路,我仿真好久了,就没得做真电路。
QQ图片20181122011102.png
工程包
AD584.rar (16.64 KB, 下载次数: 170)


2018-11-22 01:13:49 回复
白不分 楼主     数字大师 2018-11-22 07:03:08
光速飞行 发表于 2018-11-22 01:13
我这有个仿真图,还没得式过真电路呢,也就是上面的电路,我仿真好久了,就没得做真电路。

工程包

有空我去试试,谢谢了。
2018-11-22 07:03:08 回复
白不分 楼主     数字大师 2018-11-22 07:03:38
veteran 发表于 2018-11-21 23:42
基准电压切换大多数AD584土基准基本都是用跳线帽来改变输出电压,使用起来很不方便,按如下的电路使 ...

谢谢啦。有空试试。
2018-11-22 07:03:38 回复
白不分 楼主     数字大师 2018-11-22 07:04:23
wgsd 发表于 2018-11-21 22:55
CD4066的导通电阻近百欧到两百多欧,AD584内部的分压电阻几K到十几K,最好先试验一下对输出电压有没有影 ...

先试试看,不行加继电器。
2018-11-22 07:04:23 回复
yangsen 数字大师 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 13:47:31 回复
白不分 楼主     数字大师 2018-11-22 16:07:40
yangsen 发表于 2018-11-22 13:47
按你的电路图随手写了一个,公司电脑上没装keil 51环境,逻辑应该没问题
#include “reg52.h”
#define uin ...

谢谢,非常感谢。
2018-11-22 16:07:40 回复
光速飞行 数字大神 2018-11-22 17:07:12
yangsen 发表于 2018-11-22 13:47
按你的电路图随手写了一个,公司电脑上没装keil 51环境,逻辑应该没问题
#include “reg52.h”
#define uin ...

这段代码,写得不错啊,上机验证过更好。
2018-11-22 17:07:12 回复
白不分 楼主     数字大师 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 18:50:45 回复
wgsd 数字大神 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 19:44:55 回复
wgsd 数字大神 2018-11-22 20:24:17
5.jpg
2018-11-22 20:24:17 回复
白不分 楼主     数字大师 2018-11-22 20:36:24
wgsd 发表于 2018-11-22 19:44
楼主使用单片机值得学习,使用方便还是用CD4017产生循环脉冲简便。另外如果手中有CD4066可以先手动控制看 ...

嘿嘿谢谢提醒,用4066仿真了下还真得不行。
2018-11-22 20:36:24 回复
wgsd 数字大神 2018-11-22 20:46:25
白不分 发表于 2018-11-22 20:36
嘿嘿谢谢提醒,用4066仿真了下还真得不行。

不客气,共同探讨。另外AD584工作电压较高,如用CD4066它的电压应与AD584相同,不能与单片机5V同样,不然不会起到开关作用。
2018-11-22 20:46:25 回复
光速飞行 数字大神 2018-11-23 00:06:45
白不分 发表于 2018-11-22 18:50
编绎没有通过,不知道啥回事。

有时间我也编绎,长时间不玩,容易忘记。
2018-11-23 00:06:45 回复
12下一页