我改了一下例程EBS002->FUNCTIONDEMO_NBK_RD8x3x_EBS002。原理图:
该例程功能有文字说明:
模板型号:RD8T36P48
模板使用IC资源:PWM0,DDIC_LED,GPIO,ADC
模板使用驱动资源:
模板说明:EBS002 基础功能扩展板功能演示示例。演示RGB、数码管、热敏电阻、可调电阻、蜂鸣器等器件的功能,共有六种模式。
模式0:三色RGB呼吸灯示例,有周期调节功能,修改RGB扫描函数中CycleNum的值,可以改变呼吸周期。通过板上的K1、K2按键,可以改变呼吸周期
模式1:硬件LED驱动扫描数码管显示,在数码管上显示分:秒,范围从00:00到59:59
模式2:软件使用GPIO扫描数码管引脚进行显示,显示秒:毫秒,范围从00:00到59:59
模式3:使用ADC采样AIN7上的热敏电阻的电压,通过查表法转换为温度值,在数码管上显示
模式4:使用ADC采样AIN15上的可调电阻,在数码管上显示ADC采样值
模式5:PWM驱动无源蜂鸣器,通过板上K1、K2控制,任意按下,蜂鸣器响一下
默认是模式0,我改为模式4,代码如下:
- #define Test_Mode 4
- typedef enum
- {
- DOTUNDISPLAY = (uint8_t)0x00,
- DOTDISPLAY = (uint8_t)0x20
- }LedDotDisplay;
- typedef enum
- {
- LEDCOM0 = (uint8_t)0x00,
- LEDCOM1 = (uint8_t)0x01,
- LEDCOM2 = (uint8_t)0x02,
- LEDCOM3 = (uint8_t)0x03,
- LEDCOM4 = (uint8_t)0x04,
- LEDCOM5 = (uint8_t)0x05,
- LEDCOM6 = (uint8_t)0x06,
- LEDCOM7 = (uint8_t)0x07
- }LedSelCOM;
主程序:
- #include "SC_Init.h" // MCU initialization header file, including all firmware library header files
- #include "SC_it.h"
- #include "..\Drivers\SCDriver_list.h"
- #include "HeadFiles\SysFunVarDefine.h"
- //EBS002 基础功能扩展板功能演示示例。演示RGB、数码管、热敏电阻、可调电阻、蜂鸣器等器件的功能,共有六种模式。
- //模式0:三色RGB呼吸灯示例,有周期调节功能,修改RGB扫描函数中CycleNum的值,可以改变呼吸周期。通过板上的K1、K2按键,可以改变呼吸周期
- //模式1:硬件LED驱动扫描数码管显示,在数码管上显示分:秒,范围从00:00到59:59
- //模式2:软件使用GPIO扫描数码管引脚进行显示,显示秒:毫秒,范围从00:00到59:59
- //模式3:使用ADC采样AIN7上的热敏电阻的电压,通过查表法转换为温度值,在数码管上显示
- //模式4:使用ADC采样AIN15上的可调电阻,在数码管上显示ADC采样值
- //模式5:PWM驱动无源蜂鸣器,通过板上K1、K2控制,任意按下,蜂鸣器响一下
- /**************************************Generated by EasyCodeCube*************************************/
- /*************************************.Generated by EasyCodeCube.************************************/
- /*****************************************************************************************************
- * Function Name: main
- * Description : This function implements main function.
- * Arguments : None
- * Return Value : None
- ******************************************************************************************************/
- void main(void)
- {
- /*<Generated by EasyCodeCube begin>*/
- /*<UserCodeStart>*//*<SinOne-Tag><36>*/
- IcResourceInit();
- /*<UserCodeEnd>*//*<SinOne-Tag><36>*/
- /*<UserCodeStart>*//*<SinOne-Tag><216>*/
- while(1)
- {
- /*<UserCodeStart>*//*<SinOne-Tag><208>*/
- #if(Test_Mode==0)
- Mode0_RGB();
- #endif
- /*<UserCodeEnd>*//*<SinOne-Tag><208>*/
- /*<UserCodeStart>*//*<SinOne-Tag><158>*/
- #if(Test_Mode==1)
- Mode1_DDIC_LED();
- #endif
- /*<UserCodeEnd>*//*<SinOne-Tag><158>*/
- /*<UserCodeStart>*//*<SinOne-Tag><159>*/
- #if(Test_Mode==2)
- Mode2_GPIO_LED();
- #endif
- /*<UserCodeEnd>*//*<SinOne-Tag><159>*/
- /*<UserCodeStart>*//*<SinOne-Tag><160>*/
- #if(Test_Mode==3)
- Mode3_ADC_NTC();
- #endif
- /*<UserCodeEnd>*//*<SinOne-Tag><160>*/
- /*<UserCodeStart>*//*<SinOne-Tag><161>*/
- #if(Test_Mode==4)
- Mode4_ADC_CMP3();
- #endif
- /*<UserCodeEnd>*//*<SinOne-Tag><161>*/
- /*<UserCodeStart>*//*<SinOne-Tag><162>*/
- #if(Test_Mode==5)
- Mode5_Buzzer();
- #endif
- /*<UserCodeEnd>*//*<SinOne-Tag><162>*/
- /*<Begin-Inserted by EasyCodeCube for Condition>*/
- }
- /*<UserCodeEnd>*//*<SinOne-Tag><216>*/
- /*<Generated by EasyCodeCube end>*/
- }
ADC_CMP3()代码:
- void Mode4_ADC_CMP3()
- {
- /*<UserCodeStart>*//*<SinOne-Tag><133>*/
- TR1=0; //关闭其他模式的中断源
- ET1=0;
- ADC_ChannelConfig(ADC_CHANNEL_15,ENABLE); //选择AIN15为ADC采样的输入
- while(1)
- {
- if(T0Flag50ms) //50ms测量1次
- {
- T0Flag50ms=0;
- LedDisp(); //扫描并显示内容
- GetADCValue(); //启动ADC转换并求取平均值
- Led_DisplayData(ADC_AverageValue%10,ADC_AverageValue/10%10,ADC_AverageValue/100%10,ADC_AverageValue/1000%10); //数码管写入参数
- //显示时钟点 DOTDISPLAY:开 DOTUNDISPLAY:关
- Led_DisplayDot(DOTUNDISPLAY,DOTUNDISPLAY,DOTUNDISPLAY,DOTUNDISPLAY);
- }
- }
-
- /*<UserCodeEnd>*//*<SinOne-Tag><133>*/
- }
效果图:
说实话,板子刚到时,我都插上试了一下,又拔下来了,重插就有点不太方便,插不到底了。
|