[开发工具] 【新定义MCU开发板测评】NBK-RD8x3x 核心板+NBK-EBS002 基础功能扩展板可调电阻采样数码管显示

[复制链接]
 楼主| 比神乐 发表于 2023-1-17 20:00 | 显示全部楼层 |阅读模式
我改了一下例程EBS002->FUNCTIONDEMO_NBK_RD8x3x_EBS002。原理图:
6.jpg


4.jpg


5.jpg


该例程功能有文字说明:
模板型号: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,代码如下:
  1. #define Test_Mode 4
  2. typedef enum
  3. {
  4.     DOTUNDISPLAY = (uint8_t)0x00,
  5.     DOTDISPLAY = (uint8_t)0x20
  6. }LedDotDisplay;
  7. typedef enum
  8. {
  9.     LEDCOM0 = (uint8_t)0x00,
  10.     LEDCOM1 = (uint8_t)0x01,
  11.     LEDCOM2 = (uint8_t)0x02,
  12.     LEDCOM3 = (uint8_t)0x03,
  13.     LEDCOM4 = (uint8_t)0x04,
  14.     LEDCOM5 = (uint8_t)0x05,
  15.     LEDCOM6 = (uint8_t)0x06,
  16.     LEDCOM7 = (uint8_t)0x07
  17. }LedSelCOM;
主程序:
  1. #include "SC_Init.h"        // MCU initialization header file, including all firmware library header files
  2. #include "SC_it.h"
  3. #include "..\Drivers\SCDriver_list.h"
  4. #include "HeadFiles\SysFunVarDefine.h"
  5. //EBS002 基础功能扩展板功能演示示例。演示RGB、数码管、热敏电阻、可调电阻、蜂鸣器等器件的功能,共有六种模式。
  6. //模式0:三色RGB呼吸灯示例,有周期调节功能,修改RGB扫描函数中CycleNum的值,可以改变呼吸周期。通过板上的K1、K2按键,可以改变呼吸周期
  7. //模式1:硬件LED驱动扫描数码管显示,在数码管上显示分:秒,范围从00:00到59:59
  8. //模式2:软件使用GPIO扫描数码管引脚进行显示,显示秒:毫秒,范围从00:00到59:59
  9. //模式3:使用ADC采样AIN7上的热敏电阻的电压,通过查表法转换为温度值,在数码管上显示
  10. //模式4:使用ADC采样AIN15上的可调电阻,在数码管上显示ADC采样值
  11. //模式5:PWM驱动无源蜂鸣器,通过板上K1、K2控制,任意按下,蜂鸣器响一下
  12. /**************************************Generated by EasyCodeCube*************************************/

  13. /*************************************.Generated by EasyCodeCube.************************************/
  14. /*****************************************************************************************************
  15. * Function Name: main
  16. * Description  : This function implements main function.
  17. * Arguments    : None
  18. * Return Value : None
  19. ******************************************************************************************************/
  20. void main(void)
  21. {       
  22.     /*<Generated by EasyCodeCube begin>*/
  23.     /*<UserCodeStart>*//*<SinOne-Tag><36>*/
  24.     IcResourceInit();
  25.     /*<UserCodeEnd>*//*<SinOne-Tag><36>*/
  26.     /*<UserCodeStart>*//*<SinOne-Tag><216>*/
  27.     while(1)
  28.     {
  29.         /*<UserCodeStart>*//*<SinOne-Tag><208>*/
  30. #if(Test_Mode==0)
  31.         Mode0_RGB();
  32. #endif
  33.         /*<UserCodeEnd>*//*<SinOne-Tag><208>*/
  34.         /*<UserCodeStart>*//*<SinOne-Tag><158>*/
  35. #if(Test_Mode==1)
  36.         Mode1_DDIC_LED();
  37. #endif
  38.         /*<UserCodeEnd>*//*<SinOne-Tag><158>*/
  39.         /*<UserCodeStart>*//*<SinOne-Tag><159>*/
  40. #if(Test_Mode==2)
  41.         Mode2_GPIO_LED();
  42. #endif
  43.         /*<UserCodeEnd>*//*<SinOne-Tag><159>*/
  44.         /*<UserCodeStart>*//*<SinOne-Tag><160>*/
  45. #if(Test_Mode==3)
  46.         Mode3_ADC_NTC();
  47. #endif
  48.         /*<UserCodeEnd>*//*<SinOne-Tag><160>*/
  49.         /*<UserCodeStart>*//*<SinOne-Tag><161>*/
  50. #if(Test_Mode==4)
  51.         Mode4_ADC_CMP3();
  52. #endif
  53.         /*<UserCodeEnd>*//*<SinOne-Tag><161>*/
  54.         /*<UserCodeStart>*//*<SinOne-Tag><162>*/
  55. #if(Test_Mode==5)
  56.         Mode5_Buzzer();
  57. #endif
  58.         /*<UserCodeEnd>*//*<SinOne-Tag><162>*/
  59.         /*<Begin-Inserted by EasyCodeCube for Condition>*/
  60.     }
  61.     /*<UserCodeEnd>*//*<SinOne-Tag><216>*/
  62.     /*<Generated by EasyCodeCube end>*/
  63. }
ADC_CMP3()代码:
  1. void Mode4_ADC_CMP3()
  2. {
  3.     /*<UserCodeStart>*//*<SinOne-Tag><133>*/
  4.    TR1=0;  //关闭其他模式的中断源
  5.    ET1=0;
  6.    ADC_ChannelConfig(ADC_CHANNEL_15,ENABLE);  //选择AIN15为ADC采样的输入
  7.    while(1)
  8.    {
  9.       if(T0Flag50ms)  //50ms测量1次
  10.       {
  11.          T0Flag50ms=0;
  12.          LedDisp();   //扫描并显示内容
  13.          GetADCValue();   //启动ADC转换并求取平均值
  14.          Led_DisplayData(ADC_AverageValue%10,ADC_AverageValue/10%10,ADC_AverageValue/100%10,ADC_AverageValue/1000%10);   //数码管写入参数
  15.         //显示时钟点  DOTDISPLAY:开  DOTUNDISPLAY:关
  16.          Led_DisplayDot(DOTUNDISPLAY,DOTUNDISPLAY,DOTUNDISPLAY,DOTUNDISPLAY);
  17.        }
  18.    }
  19.    
  20.     /*<UserCodeEnd>*//*<SinOne-Tag><133>*/
  21. }
效果图:

9.jpg 7.jpg 10.jpg
说实话,板子刚到时,我都插上试了一下,又拔下来了,重插就有点不太方便,插不到底了。
8.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3535

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部