打印

求助 PIC12F615单片机的A/D测试电路和程序.

[复制链接]
5718|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
嗳许|  楼主 | 2013-7-10 12:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
简单的测试电路,可以点亮LED,谢谢了~
沙发
lovezichao| | 2013-7-10 15:28 | 只看该作者
不是太明白你的意思。你准备怎么样测试电路?

使用特权

评论回复
板凳
嗳许|  楼主 | 2013-7-10 15:42 | 只看该作者
lovezichao 发表于 2013-7-10 15:28
不是太明白你的意思。你准备怎么样测试电路?

是这样的,AD输入值是用直流电压源的,如AD采集到2V电压给PIC12F615单片机,单片机将AD转换后的对应的二进制数控制单片机端口,这样就可以点亮或熄灭led灯了。主要就是程序不怎么会,C语言和汇编都可以的,我是新手。

使用特权

评论回复
地板
lovezichao| | 2013-7-10 16:06 | 只看该作者
嗳许 发表于 2013-7-10 15:42
是这样的,AD输入值是用直流电压源的,如AD采集到2V电压给PIC12F615单片机,单片机将AD转换后的对应的二 ...

我用的PIC工具是CCS 这样吧,给你一个简单的例子。使用AD通道是AN2。当采集到的电压大于3V时,点亮灯。
#DEVICE   ADC= 10                        //adc为10位
#fuses INTRC_IO,WDT,PROTECT,PUT,BROWNOUT

#use delay(clock=4000000,restart_wdt)
#define   OUT_H() output_bit(PIN_A1,1)
#define   OUT_L() output_bit(PIN_A1,0)

U32 ADCTemp;

void main()
{
  setup_wdt(WDT_72MS);                     
  //ADC init
  setup_adc_ports(sAN2|VSS_VDD);
  setup_adc(ADC_CLOCK_DIV_64);

  while(1)
{
   SET_ADC_CHANNEL(2);
   delay_ms(50);
   ADCTemp=READ_ADC(ADC_START_AND_READ);
   delay_ms(50);
   if(ADCTemp>613)
    OUT_H();
   else
    OUT_L();
}
}

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
嗳许 + 1 赞一个!
5
嗳许|  楼主 | 2013-7-11 09:41 | 只看该作者
编译过后还有个错误,使用这个软件编译码吗  

12.png (42.94 KB )

12.png

使用特权

评论回复
6
嗳许|  楼主 | 2013-7-11 09:54 | 只看该作者
lovezichao 发表于 2013-7-10 16:06
我用的PIC工具是CCS 这样吧,给你一个简单的例子。使用AD通道是AN2。当采集到的电压大于3V时,点亮灯。
# ...

我用另外一种 MPLAB IDE 编译器编写  出现下面这个错误,求解~~

12.png (40.28 KB )

12.png

使用特权

评论回复
7
lovezichao| | 2013-7-11 11:08 | 只看该作者
嗳许 发表于 2013-7-11 09:41
编译过后还有个错误,使用这个软件编译码吗

#include<pic12f615>

使用特权

评论回复
8
嗳许|  楼主 | 2013-7-11 11:17 | 只看该作者
lovezichao 发表于 2013-7-11 11:08
#include

还是不行的,要不你用你的编译器编译下,把.hex文件发给我

使用特权

评论回复
9
lovezichao| | 2013-7-11 11:42 | 只看该作者
嗳许 发表于 2013-7-11 11:17
还是不行的,要不你用你的编译器编译下,把.hex文件发给我


#include <12f675.h>

#DEVICE ADC=10

#use delay(clock=4000000)

#fuses INTRC_IO,NOWDT,NOPUT,NOMCLR

#byte GPIO=0x05
#byte TRISO=0x85
//#byte WPU=0x95
//#byte ANSEL=0x9F
//#byte CMCON=0x19

#define   OUT_H() output_bit(PIN_A1,1)
#define   OUT_L() output_bit(PIN_A1,0)

unsigned int32 temp;
void Port_Init(void)
{
      //  set_tris_a(0x00);
}

void main(void)
{
   Port_Init();
   setup_wdt(WDT_72MS);                     
   //ADC init
   setup_adc_ports(sAN0|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_64);     
   delay_ms(50);
   while(1)
   {
      SET_ADC_CHANNEL(0);
      delay_ms(50);
      temp=READ_ADC(ADC_START_AND_READ);
      if(temp>613)
         OUT_H();
      else
         OUT_L();
   }
}

使用特权

评论回复
10
嗳许|  楼主 | 2013-7-11 11:52 | 只看该作者
lovezichao 发表于 2013-7-11 11:42
#include

#DEVICE ADC=10

你用的编译软件全名是什么,可能我的下的编译器不一样,谢谢了~

使用特权

评论回复
11
嗳许|  楼主 | 2013-7-11 12:45 | 只看该作者
嗳许 发表于 2013-7-11 11:52
你用的编译软件全名是什么,可能我的下的编译器不一样,谢谢了~

我用我的编译器还是出现错的呢

使用特权

评论回复
12
lovezichao| | 2013-7-11 13:14 | 只看该作者
嗳许 发表于 2013-7-11 12:45
我用我的编译器还是出现错的呢

PCW,和你的一样

使用特权

评论回复
13
嗳许|  楼主 | 2013-7-11 13:21 | 只看该作者
lovezichao 发表于 2013-7-11 13:14
PCW,和你的一样

#DEVICE ADC=10

#use delay(clock=4000000)

#fuses INTRC_IO,NOWDT,NOPUT,NOMCLR

这里面的 DEVICE、use、fuses 还是显示为红色的,编译失败啊 你的可以编译吗

使用特权

评论回复
14
wang271415728| | 2013-7-12 14:10 | 只看该作者
顶起来

使用特权

评论回复
15
opal11| | 2013-8-23 23:33 | 只看该作者

学习,顶一下。

使用特权

评论回复
16
bobo-1983| | 2013-9-24 10:42 | 只看该作者
本帖最后由 yewuyi 于 2013-9-24 14:34 编辑

你的技术支持,能提供源码吗?

使用特权

评论回复
17
q3742829| | 2013-9-27 10:03 | 只看该作者
路过学习

使用特权

评论回复
18
lwbsss| | 2013-9-30 21:55 | 只看该作者
我也是初学者,我把我的源码给你一段PIC16F785的,我做得电池电压判断。自己对着PDF看吧。
BC_GND=0;
        CVROE=0; //
        VROE=1;//1.2V内部参考源输出到VREF引脚
        ANS3=1; //开启AN3
        ADCS2=ADCS1=ADCS0=0;       //选择A/D转换时针FOSC/2
        ADFM=1;//AD结果右又左对齐
        VCFG=1;//参考电压为VREF引脚
        CHS3=0;CHS2=0;CHS1=1;CHS0=1; //模拟通道选择AN3
    ADON=1;//开启AD模块
        ADRESH=0x00;//清零AD寄存器
        ADRESL=0x00;
        for(i=0;i<5;i++);//等待所需采集时间
        GO=1; //启动转换
        while(GO);//等待GODONE被清零
        VROE=0;//1.2V内部参考源不输出到VREF引脚
        ad=(ADRESH<<8)+ADRESL;
        if(ad>=0x0155)POWER_SW=1;  //0X0144 = 341 >3.8V,
        if(ad<=0x0133)POWER_SW=0;  //<3.6v        

使用特权

评论回复
19
xgh110| | 2013-10-10 16:29 | 只看该作者
本帖最后由 xgh110 于 2013-10-10 17:03 编辑
lovezichao 发表于 2013-7-11 11:42
#include

#DEVICE ADC=10


我在网上想找12f675的头文件找不到啊,PCW里面有吗?

使用特权

评论回复
20
lovezichao| | 2013-10-11 09:58 | 只看该作者
xgh110 发表于 2013-10-10 16:29
我在网上想找12f675的头文件找不到啊,PCW里面有吗?

建工程的时候选上单片机的型号,里面是有头文件的。如果没有,我下面给你一个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

47

帖子

2

粉丝