标题:
STC15f2k60s2单片机将2.5v模拟电压AD转换为8位二进制数用LED灯显示,求思路
[打印本页]
作者:
lilili964
时间:
2019-10-10 22:01
标题:
STC15f2k60s2单片机将2.5v模拟电压AD转换为8位二进制数用LED灯显示,求思路
如题
作者:
小猫要吃鱼
时间:
2019-10-11 08:38
这个没有什么思路,按照硬件一步步通过编程实现;
首先要把硬件搭建好,然后再写程序,调试
作者:
迟迟不离去
时间:
2019-10-11 15:38
LED灯是LED数码管吗??? 如果是LED数码管的话我建议:
作者:
迟迟不离去
时间:
2019-10-11 15:41
前边的那个是我按错了 还没打完就发出去了
如果是LED数码管显示的话
你可以先把数码管显示程序写好
然后调用ADC的寄存器
处理ADC的数据
接着将ADC的值转换为整数型然后在数码管上显示
作者:
wulin
时间:
2019-10-11 17:27
本帖最后由 wulin 于 2019-10-14 19:43 编辑
供楼主参考
#include <STC15F2K60S2.H>
#include <intrins.h>
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define ADC_POWER 0x80 //ADC电源控制位
#define ADC_FLAG 0x10 //ADC完成标志
#define ADC_START 0x08 //ADC起始控制位
#define ADC_SPEEDLL 0x00 //CPU等待540个时钟
/*----------------------------
软件延时
----------------------------*/
void Delay(WORD n)
{
WORD x;
while (n--)
{
x = 5000;
while (x--);
}
}
/*----------------------------
初始化ADC
----------------------------*/
void InitADC()
{
P1M1 = 0x01; //设置P1.0高阻
P1M0 = 0x00; //设置P1.0高阻
P1ASF = 0x01; //设置P1.0口为ADC口
ADC_RES = 0; //清除结果寄存器
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2); //ADC上电并延时
}
/*----------------------------
读取ADC结果
----------------------------*/
BYTE GetADCResult(BYTE ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_(); //等待4个NOP
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));//等待ADC转换完成标志置1
ADC_CONTR &= ~ADC_FLAG; //清0 ADC转换完成标志
return ADC_RES; //返回8位ADC结果
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1