发新帖本帖赏金 100.00元(功能说明)我要提问
返回列表
打印
[通用8051核FLASH系列]

HC89F003-ADC实验(二)

[复制链接]
2675|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lisingch|  楼主 | 2017-12-13 17:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
ADC, HC, pi, IO, gp
本帖最后由 芯圣电子官方QQ 于 2023-7-24 10:02 编辑

      本次实验仍然采用的是官方库函数,利用HC89F003的ADC通道0(P0.0端口)采集板载电位器RW1对电源VDD分压值,参考电压为VDD,当采集到的电压值达到参考电压的12.5%、37.5%、62.5%、82.5%时,分别将板载LED1、LED2、LED3、LED4点亮。
主要代码:
/***************************************************************************************
  * @说明          系统初始化
  *        @参数        无
  * @返回值 无
  * @注                关闭看门狗以及时钟初始化
***************************************************************************************/
void System_Init(void)
{
        WDT_TurnOff();                                                                                                //关闭看门狗        
        CLK_OscClockConfig(CLK_OSC_16MHZ);                //设置OSC时钟为16M
        CLK_CpuClockConfig(2);                                                                //设置CPU时钟为8M
}
/***************************************************************************************
  * @说明          GPIO初始化
  *        @参数                无
  * @返回值         无
  * @注                        设置相应端口
***************************************************************************************/
void GPIOInit(void)
{
        GPIO_Init(GPIOT0,GPIO_PIN_0,GPIO_MODE_IN_AN);        //P00模拟输入
        GPIO_Init(GPIOT0,GPIO_PIN_4,GPIO_MODE_OUT_PP);//推挽输出
        GPIO_Init(GPIOT0,GPIO_PIN_5,GPIO_MODE_OUT_PP);
        GPIO_Init(GPIOT1,GPIO_PIN_0,GPIO_MODE_OUT_PP);
        GPIO_Init(GPIOT1,GPIO_PIN_1,GPIO_MODE_OUT_PP);
}
/***************************************************************************************
  * @说明          ADC初始化
  *        @参数                无
  * @返回值         无
  * @注                        设置ADC
***************************************************************************************/
void ADCInit(void)//ADC初始化
{
        ADC_DeInit();
        ADC_Cmd(ENABLE);                                                                                                                                //使能ADC
        ADC_Init(DATA10,RIGHT_ALIGN,ADC_CLOCK_OSC_16);        //10位ADC精度,数据右对齐,OSC时钟16分频
        ADC_VrefConfig(VREF_IN_VDD);                                                                                //内部VDD参考电压
        ADC_ChannelConfig(ADC_AN0);                                                                                        //选择外部通道0
}
void main(void)
{
        System_Init();                                                        //系统初始化
        GPIOInit();
        ADCInit();

        while(1)
        {
                ADC_StartConversion();                                                                //启动ADC转换
                while(ADC_GetITFlag() != SET);                                //等待ADC转换结束
                ADC_ClearITFlag();                                                                                //清除ADC中断标志位
                Adc_Value = ADC_GetResault();                                        //获取ADC值
               
                if(Adc_Value >= 0X080)
                        GPIO_WriteLow(GPIOT1,GPIO_PIN_1);   //当采集电压为参考电压的12.5%时LED1点亮         
                else
                        GPIO_WriteHigh(GPIOT1,GPIO_PIN_1);
               
                if(Adc_Value >= 0X180)
                        GPIO_WriteLow(GPIOT0,GPIO_PIN_5);   //当采集电压为参考电压的37.5%时LED2点亮         
                else
                        GPIO_WriteHigh(GPIOT0,GPIO_PIN_5);
               
                if(Adc_Value >= 0X280)
                        GPIO_WriteLow(GPIOT0,GPIO_PIN_4);   //当采集电压为参考电压的62.5%时LED3点亮         
                else
                        GPIO_WriteHigh(GPIOT0,GPIO_PIN_4);
               
                if(Adc_Value >= 0X380)
                        GPIO_WriteLow(GPIOT1,GPIO_PIN_0);   //当采集电压为参考电压的82.5%时LED4点亮
                else
                        GPIO_WriteHigh(GPIOT1,GPIO_PIN_0);  
        }
}
实验现象:
a、参考电压


b、5*12.5% = 0.625v


c、5*37.5% = 1.875v


d、5*62.5% = 3.125v


e、5*82.5% = 4.125v


最后的数值稍偏大。

打赏榜单

芯圣电子官方QQ 打赏了 100.00 元 2019-04-08
理由:001P试用二等奖

沙发
wakayi| | 2018-7-14 21:18 | 只看该作者
哇  很不错很详细啊

使用特权

评论回复
板凳
asd2002061| | 2018-7-16 15:41 | 只看该作者
不错,很详细,参考价值很大。。

使用特权

评论回复
地板
yzq13246068880| | 2019-3-23 12:11 | 只看该作者
不错

使用特权

评论回复
5
hayden0| | 2019-3-23 13:27 | 只看该作者
乍一看,我还以为是ST的程序呢,都写成库了,好规范呀!
可以分享一下这库吗?

使用特权

评论回复
6
lisingch|  楼主 | 2019-3-23 14:26 | 只看该作者
hayden0 发表于 2019-3-23 13:27
乍一看,我还以为是ST的程序呢,都写成库了,好规范呀!
可以分享一下这库吗? ...

官方网站上有的。

使用特权

评论回复
7
不知道取啥名| | 2020-12-29 15:12 | 只看该作者

使用特权

评论回复
8
holts| | 2024-5-7 23:09 | 只看该作者
这个库文件在哪可以下载 ?

使用特权

评论回复
9
chenqianqian| | 2024-5-8 07:49 | 只看该作者
测量精度不行啊

使用特权

评论回复
发新帖 本帖赏金 100.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

14979

帖子

17

粉丝