STC8G1K08单片机ADC的使用

编程入门 行业动态 更新时间:2024-10-11 13:19:11

STC8G1K08<a href=https://www.elefans.com/category/jswz/34/1769836.html style=单片机ADC的使用"/>

STC8G1K08单片机ADC的使用

使用STC8G1K08单片机的P3.0口对15V电池电压进行采样,在使用P3.0口进行采样时,需要加一个我之前发的分压滤波电路,实现功能为当采样到的电压小于10V时,LED灯进行闪烁,当采样到的电压小于8V时,LED灯闪烁频率变高。
#include “reg51.h”
#include “intrins.h”
//sfr ADC_CONTR = 0xb8;
//sfr ADC_RES = 0xbd;
//sfr ADC_RESL = 0xbe;
//sfr ADCCFG = 0xFE;
sfr ADC_CONTR = 0xbc;
sfr ADC_RES = 0xbd;
sfr ADC_RESL = 0xbe;
sfr ADCCFG = 0xde;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P1M1=0x91;
sfr P1M0=0x92;
#define A P1
int X;
sbit beep=P1^1;
sbit led = P1^3;
typedef unsigned int u16;

void delay(u16 i)
{
while(i–);
}

void main()
{
P1M1 = 0x00;
P1M0 = 0x00;
A=0;

P3M0 = 0x00; // 设置 P3.0 为 ADC 口
P3M1 = 0x01;// 设置 P3.0 为 ADC 口
ADCCFG = 0x0F; // 设置 ADC 时钟为系统时钟 /2/16 ,结果左对齐
ADC_CONTR = 0x88; // 使能 ADC 模块	 
while (1)
{led=0;ADC_CONTR = 0xC8; // 启动 AD 转换_nop_();_nop_();while (!(ADC_CONTR & 0x20)); // 查询 ADC 完成标志ADC_CONTR &= ~0x20; // 清完成标志X = ADC_RES; // 读取 ADC 结果

// if(X>130)
// {
// led=1;
//
// }
if(X<130&&X>105)
{
led=1;
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
led=0;
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);

	}if(X<105){led=1;delay(60000);delay(60000);led=0;delay(60000);delay(60000);}}

}

更多推荐

STC8G1K08单片机ADC的使用

本文发布于:2024-02-06 09:16:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748031.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单片机   ADC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!