瑞萨开发记录03:数码管定时显示(R5F104FEA芯片)

发布日期:2023-11-24

定时器闪烁lED灯

  • 一、引脚配置
  • 二、编写代码
    • 1.r_cg_userdefine.h
    • 2.r_cg_timer_user.h
    • 3.r_main.c
  • 三、烧录程序

??最后一篇博客记录了定时器的使用情况。本文使用定时器定期显示数字管。数字管本身的原理非常简单。可根据原理图配置相关引脚。在这里使用数字管的目的是为未来提供可视化界面AD、显示通信等功能。

在这里插入图片描述

一、引脚配置

??根据原理图配置相关引脚,定时器选择通道1定时1ms。

二、编写代码

1.r_cg_userdefine.h

/*********************************************************************************************************************** * DISCLAIMER * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all * applicable laws, including copyright laws. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT, * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability * of this software. By using this software, you agree to the additional terms and conditions found by accessing the * following link: * http://www.renesas.com/disclaimer * * Copyright (C) 2011, 2016 Renesas Electronics Corporation. All rights reserved. ***********************************************************************************************************************/  /*********************************************************************************************************************** * File Name : r_cg_userdefine.h * Version : CodeGenerator for RL78/G14 V2.04.05.01 [11 Nov 2016] * Device(s) : R5F104FE * Tool-Chain : CCRL * Description : This file includes user definition. * Creation Date: 2022/6/2 ***********************************************************************************************************************/  #ifndef _USER_DEF_H #define _USER_DEF_H  /*********************************************************************************************************************** User definitions ***********************************************************************************************************************/  /* Start user code for function. Do not edit comment generated here */ #define COM1 P6_bit.no3 #define COM2 P7_bit.no0 #define COM3 P7_bit.no1 #define COM4 P7_bit.no2 #define COM5 P7_bit.no3 #define SEG_A P3_bit.no1 #define SEG_B P3_bit.no0 #define SEG_C P14_bit.no6 #define SEG_D P1_bit.no3 #define SEG_E P1_bit.no4 #define SEG_F P1_bit.no5 #define SEG_G P1_bit.no6 #define SEG_DP P1_bit.no7 //void key_scan(void);//KEY1-KEY5?¨¬2a /* End user code. Do not edit comment generated here */ #endif 

2.r_cg_timer_user.h

/*********************************************************************************************************************** * DISCLAIMER * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all * applicable laws, including copyright laws. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT, * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability * of this software. By using this software, you agree to the additional terms and conditions found by accessing the * following link: * http://www.renesas.com/disclaimer * * Copyright (C) 2011, 2016 Renesas Electronics Corporation. All rights reserved. ***********************************************************************************************************************/

/*********************************************************************************************************************** * File Name : r_cg_timer_user.c * Version : CodeGenerator for RL78/G14 V2.04.05.01 [11 Nov 2016] * Device(s) : R5F104FE * Tool-Chain : CCRL * Description : This file implements device driver for TAU module. * Creation Date: 2022/6/2 ***********************************************************************************************************************/

/*********************************************************************************************************************** Includes ***********************************************************************************************************************/
#include "r_cg_macrodriver.h"
#include "r_cg_timer.h"
/* Start user code for include. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h"

/*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/
#pragma interrupt r_tau0_channel0_interrupt(vect=INTTM00)
/* Start user code for pragma. Do not edit comment generated here */
uint16_t time_count0=0;//timer count
uint8_t display_buffer[4]={ 
        1,2,3,4,};//display num
uint8_t  display_count0=0;//
/* End user code. Do not edit comment generated here */

/*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/
/* Start user code for global. Do not edit comment generated here */

/************************************************************* Function:Display one digit *************************************************************/
 void display_7seg(unsigned char led_digit)
 { 
        
 	unsigned char digit_bak;
	digit_bak = led_digit;
	switch(digit_bak)
	{ 
        
		case 0:	  //display 0
			SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=0;
			break;
		case 1:	    //display 1
			SEG_A=0;SEG_B=1;SEG_C=1;SEG_D=0;SEG_E=0;SEG_F=0;SEG_G=0;
			break;
		case 2:	    //display 2
			SEG_A=1;SEG_B=1;SEG_C=0;SEG_D=1;SEG_E=1;SEG_F=0;SEG_G=1;
			break;
		case 3:	   //display 3
			SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=0;SEG_F=0;SEG_G=1;
			break;
		case 4:	   //display 4
			SEG_A=0;SEG_B=1;SEG_C=1;SEG_D=0;SEG_E=0;SEG_F=1;SEG_G=1;
			break;
		case 5:	   //display 5
			SEG_A=1;SEG_B=0;SEG_C=1;SEG_D=1;SEG_E=0;SEG_F=1;SEG_G=1;
			break;
		case 6:	   //display 6
			SEG_A=1;SEG_B=0;SEG_C=1;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=1;	
			break;
		case 7:	   //display 7
			SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=0;SEG_E=0;SEG_F=0;SEG_G=0;	
			break;
		case 8:	  //display 8
			SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=1;	
			break;
		case 9:	 //display 9
			SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=0;SEG_F=1;SEG_G=1;	
			break;
		case 10://off display 
			SEG_A = 0;SEG_B = 0;SEG_C = 0;SEG_D = 0;SEG_E = 0;SEG_F = 0;SEG_G = 0;
			break;
		case 11://display E
			SEG_A=1;SEG_B=0;SEG_C=0;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=1;	
			break;//
		case 12://display G0 G1 
			SEG_A = 0;SEG_B = 0;SEG_C = 0;SEG_D = 0;SEG_E = 0;SEG_F = 0;SEG_G = 1;
			break;//
		case 13://display b
			SEG_A = 0;SEG_B = 0;SEG_C = 1;SEG_D = 1;SEG_E = 1;SEG_F = 1;SEG_G = 1;
			break;		
		default:
			NOP();//
			NOP();//
			break;
	}
}
 void display_digit_led(void)
{ 
        
	display_count0+=1;//
	COM5 = 0;
	switch(display_count0%4+1)
	{ 
        
		case 1:
			display_7seg(display_buffer[0]);//
			COM1 = 0;COM2 = 1;COM3 = 1;COM4 = 1;
			SEG_DP=0;
			break;//
		case 2:
			display_7seg(display_buffer[1]);// 
			COM1 = 1;COM2 = 0;COM3 = 1;COM4 = 1;//
			//SEG_DP=1;
			break;//
		case 3:
			display_7seg(display_buffer[2]);// 
			COM1 = 1;COM2 = 1;COM3 = 0;COM4 = 1;	
			SEG_DP=0;//off clock char
			break;//
		case 4:
			display_7seg(display_buffer[3]);// 
			COM1 = 1;COM2 = 1;COM3 = 1;COM4 = 0;				
			break;//
	}
}
void set_led_num(int num)
{ 
        
	display_buffer[0]=num/1000;
	display_buffer[1]=num%1000/100;
	display_buffer[2]=num%1000%100/10;
	display_buffer[3]=num%1000%100%10;
}

 void display_LED(void)
 { 
        
	 static int count=0;
	 if(++count>100)
	 { 
        
	    count=0;	
	    display_digit_led();
	 }
 }
/* End user code. Do not edit comment generated here */

/*********************************************************************************************************************** * Function Name: r_tau0_channel0_interrupt * Description : This function is INTTM00 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/
static void __near r_tau0_channel0_interrupt(void)
{ 
        
    /* Start user code. Do not edit comment generated here */
    time_count0+=1;
    /* End user code. Do not edit comment generated here */
}

/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */

3.r_main.c

/*********************************************************************************************************************** * DISCLAIMER * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all * applicable laws, including copyright laws. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT, * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability * of this software. By using this software, you agree to the additional terms and conditions found by accessing the * following link: * http://www.renesas.com/disclaimer * * Copyright (C) 2011, 2016 Renesas Electronics Corporation. All rights reserved. ***********************************************************************************************************************/

/*********************************************************************************************************************** * File Name : r_main.c * Version : CodeGenerator for RL78/G14 V2.04.05.01 [11 Nov 2016] * Device(s) : R5F104FE * Tool-Chain : CCRL * Description : This file implements main function. * Creation Date: 2022/6/2 ***********************************************************************************************************************/

/*********************************************************************************************************************** Includes ***********************************************************************************************************************/
#include "r_cg_macrodriver.h"
#include "r_cg_cgc.h"
#include "r_cg_port.h"
#include "r_cg_timer.h"
#include "r_cg_wdt.h"
/* Start user code for include. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h"

/*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/
/* Start user code for pragma. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */

/*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/
/* Start user code for global. Do not edit comment generated here */
extern void hdwinit(void);//
extern display_7seg(unsigned char led_digit);
extern void display_LED(void);
extern void set_led_num(int num);
extern uint16_t time_count0;
uint16_t i=0;
/* End user code. Do not edit comment generated here */
void R_MAIN_UserInit(void);

/*********************************************************************************************************************** * Function Name: main * Description : This function implements main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/
void main(void)
{ 
        
    R_MAIN_UserInit();
    /* Start user code. Do not edit comment generated here */
    set_led_num(0);
    while (1U)
    { 
        
	    R_WDT_Restart();
	    display_LED();
	    
	    if(time_count0>1000)
	    { 
        
		time_count0=0;
		set_led_num(i);
		i++;
	    }	
	    
        ;
    }
    /* End user code. Do not edit comment generated here */
}

/*********************************************************************************************************************** * Function Name: R_MAIN_UserInit * Description : This function adds user code before implementing main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/
void R_MAIN_UserInit(void)
{ 
        
    /* Start user code. Do not edit comment generated here */
    hdwinit();//
    R_TAU0_Channel0_Start();//
    EI();
    /* End user code. Do not edit comment generated here */
}

/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */

三、烧录程序

  烧录程序,效果如下:

IDT(瑞萨)热门型号