本帖最后由 hotpower 于 2012-9-22 12:41 编辑
本人所有学习笔记都是在菜地的MINI51开发板上跑起来的,不是软件模拟地。
我这个ADC是可以指示的,就是说0-1.5亮一个灯,1.5-2伏亮两个灯,2-2.5亮三个灯,大于2.5亮四个灯。
至于到何时亮取值计算很简单:就是 电压/3.3=X/1024-
- /*---------------------------------------------------------------------------------------------------------*/
- /* */
- /* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
- /* */
- /*---------------------------------------------------------------------------------------------------------*/
- #include "includes.h" //包含所需的头文件
- extern void Write_24LC64(uint32_t address, uint8_t data);
- extern uint8_t Read_24LC64(uint32_t address);
- uint32_t ADCdata = 0;
- /*************************************************************************************
- ** Function name: main
- ** Descriptions: GPIOINT
- ** input parameters: 无
- ** output parameters: 无
- ** Returned value: 无
- *************************************************************************************/
- int main (void)
- {
- Set_System(); //调用系统初始化函数
-
- /* 初始化类比数位转换器 */
- DrvGPIO_InitFunction(FUNC_ADC0);
- DrvADC_Open(0, EXTERNAL_CLOCK, 3); // 设置类比数位转换器时钟为12/(3+1) = 3兆赫兹
-
- while(1)
- {
- /* 类比数位转换器测试 */
- DrvADC_StartConvert();
- /*判断转换完没有*/
- while(DrvADC_IsConversionDone()==FALSE);
- ADCdata=DrvADC_GetConversionData();
-
- if(ADCdata==0)
- {
- DrvGPIO_ClrBit(E_PORT3, 1); //LED0-OFF
- DrvGPIO_ClrBit(E_PORT3, 6); //LED1-OFF
- DrvGPIO_ClrBit(E_PORT5, 2); //LED2-OFF
- DrvGPIO_ClrBit(E_PORT2, 6); //LED3-OFF
- }
-
- else if(ADCdata<155)
- {
- DrvGPIO_SetBit(E_PORT3, 1); //LED0-ON
- DrvGPIO_ClrBit(E_PORT3, 6); //LED1-OFF
- DrvGPIO_ClrBit(E_PORT5, 2); //LED2-OFF
- DrvGPIO_ClrBit(E_PORT2, 6); //LED3-OFF
- }
- else if((ADCdata>155)&&(ADCdata<310))
- {
- DrvGPIO_SetBit(E_PORT3, 1); //LED0-ON
- DrvGPIO_SetBit(E_PORT3, 6); //LED1-ON
- DrvGPIO_ClrBit(E_PORT5, 2); //LED2-OFF
- DrvGPIO_ClrBit(E_PORT2, 6); //LED3-OFF
- }
- else if((ADCdata>310)&&(ADCdata<465))
- {
- DrvGPIO_SetBit(E_PORT3, 1); //LED0-ON
- DrvGPIO_SetBit(E_PORT3, 6); //LED1-ON
- DrvGPIO_SetBit(E_PORT5, 2); //LED2-ON
- DrvGPIO_ClrBit(E_PORT2, 6); //LED3-OFF
- }
- else if((ADCdata>465)&&(ADCdata<930))
- {
- DrvGPIO_SetBit(E_PORT3, 1); //LED0-ON
- DrvGPIO_SetBit(E_PORT3, 6); //LED1-ON
- DrvGPIO_SetBit(E_PORT5, 2); //LED2-ON
- DrvGPIO_SetBit(E_PORT2, 6); //LED3-ON
- }
- }
-
-
- }
|