我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 538|回复: 0

LED测试针角

[复制链接]

该用户从未签到

1

主题

3

回帖

0

积分

一级逆天

积分
0

社区居民

QQ
发表于 2016-12-1 14:17:14 | 显示全部楼层 |阅读模式
#include<STC12C5410AD.H>
#include <intrins.h>

sbit Y1=P3^4;

#define uchar unsigned char
#define uint  unsigned int

#define ADC_POWER   0x80 // ADC电源开启,0关,1开
#define ADC_FLAG    0x10 // ADC转换完成标识位,1,表示转换完成,需软件自动清零
#define ADC_START   0x08 // ADC启动控制,1开始转换
#define ADC_SPEEDLL 0x00 // 1080 个时钟周期转换一次  1080 clocks
#define ADC_SPEEDL  0x20 // 810 个时钟周期转换一次  810  clocks
#define ADC_SPEEDH  0x40 // 540 个时钟周期转换一次  540  clocks
#define ADC_SPEEDHH 0x60 // 270  个时钟周期转换一次   270  clocks


void delay(uint z){
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}

void InitADC()  //配置AD参数
{   
    P1=P1M0 = P1M1 = 0xff; //选择IO口模式,P1所有口为开漏模式
    ADC_DATA = 0;       //对ADC结果寄存器ADC_DATA清
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;    //启动A/D电源,配置 420 个时钟周期为转换一次
      delay(50); //使输入电压达到稳定(1ms即可)
}

uint ADC(uchar ch) //输入通道转换AD,返回数据值
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
    _nop_();  //必须 等待 4个时钟周期
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));//等待FLAG为1
    ADC_CONTR &= ~ADC_FLAG;         //清FLAG为0
    return ADC_DATA;                //返回 ADC结果
}

void main(){
   
    InitADC();   
    while(1){
        //电源电压4.93V,a=(LED/4.93)*256
               
        while(ADC(0)<155&ADC(0)>140)Y1=0;//2.7V-3V单相发光二极管
        delay(1);
        while(ADC(0)<120&ADC(0)>100){//双色发光二极管绿2.01V,黄1.95V    //绿色过
            delay(2000);
            while(ADC(0)<120&ADC(0)>100)Y1=0;        
        };
        delay(1);
        while(ADC(0)<98&ADC(0)>50)Y1=0;//1.88V发光二极管
        Y1=1;   
    }
}
回复

使用道具 举报

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

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表