找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用stc12c2052ad做的一个检测电压开关源码

[复制链接]
跳转到指定楼层
楼主
ID:162491 发表于 2017-2-5 15:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "STC12C2052AD.H"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define  ADC_POWER    0x80  
#define  ADC_FLAG     0x10
#define  ADC_START    0x08
#define  ADC_SPEEDH   0x40
#define  BAUD                                 9600

sbit RELAY1=P3^4;
sbit RELAY2=P3^5;
sbit LED=P1^4;
void delay(uint i)
{
        uint x;
        while(i--)
        {x=5000;
while(x--);
}
}

void InitADC()
{
        P1=P1M0=P1M1=0x01;
        ADC_DATA=0;   //清除AD缓存器数据
        ADC_CONTR=ADC_POWER|ADC_SPEEDH; //启动A/D电源
        delay(2);
}

uchar GetADCResult(uchar ch)
{
        ADC_CONTR=ADC_POWER|ADC_SPEEDH|ADC_START|ch;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        while(!(ADC_CONTR&ADC_FLAG));
        ADC_CONTR=ADC_CONTR&(~ADC_FLAG);
        return ADC_DATA;
}

void process()
{
  uchar  adcnumber=0;  
        uchar  adcnumber_temp=0;  
        uchar  n;
        uchar i=0;
        TMOD=0x01;
        TH0=0x3C;
        TL0=0xb0;

        for (n=0;n<5;n++)    //adc convert  5 times   
        {        
                adcnumber_temp=GetADCResult(0);    // get p10 adc number      
                if(adcnumber_temp>adcnumber)        // get biggest
                {adcnumber=adcnumber_temp;  }
                }      
                if(adcnumber>152&adcnumber<212)        
                        {          TR0=1;
                                i++;
                                if (i==40)
{                                i=0;
                                RELAY1=0;      //powerdown   
                                RELAY2=0;
                                LED=0;         //faguang
                        }
}
                else
                {   TR0=0;
                                RELAY1=1;      //powerdown   
                                RELAY2=1;
                                LED=1;
}
}


void main()
{  
        InitADC();

while(1)
{
process();
}


}

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

使用道具 举报

沙发
ID:162491 发表于 2017-2-5 15:40 | 只看该作者
两路继电器  分压电阻 46 和5欧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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