辉芒FT62F211实现触摸控制LED亮度

辉芒FT62F211是一款高性能8位微控制器,具备20MHzCPU、4KB闪存、丰富的外设如PWM和串口通信,适合嵌入式应用。其低功耗设计和宽电压范围增加了灵活性,且配有开发工具和软件支持,便于编程和调试。
摘要由CSDN通过智能技术生成

简单介绍一下使用的FT62F211-RB SOP8:

辉芒FT62F211是一款高性能、低功耗的8位微控制器(MCU),由辉芒科技(Holtek)公司推出。它采用了先进的CMOS工艺,具有丰富的外设和强大的功能,适用于各种嵌入式应用。

以下是辉芒FT62F211的一些主要特点和功能:

  1. CPU核心:辉芒FT62F211采用了高性能的8位CPU核心,运行频率可达到20MHz,具有快速的指令执行能力。

  2. 存储器:该微控制器内置了4KB的闪存程序存储器,用于存储用户程序和数据。此外,还包括256字节的RAM用于数据存储。

  3. 外设:辉芒FT62F211提供了丰富的外设,包括多个定时器/计数器、PWM模块、UART串口通信接口、SPI和I2C总线接口、GPIO引脚等。这些外设可以满足各种应用的需求。

  4. 低功耗特性:辉芒FT62F211在设计上注重低功耗,具有多种省电模式和时钟管理功能,以最大程度地降低功耗并延长电池寿命。

  5. 宽电压工作范围:该微控制器支持宽电压工作范围,通常为2.4V至5.5V,适用于不同的供电条件。

  6. 外部晶振:辉芒FT62F211可以使用外部晶振或者内部RC振荡器作为时钟源,以满足不同应用的需求。

  7. 开发工具和支持:辉芒FT62F211提供了丰富的开发工具和软件支持,包括编译器、调试器、仿真器等,方便开发人员进行软硬件开发和调试。

引脚图如下:

下面是功能实现过程:

首先,打开辉芒的按键触摸工具软件 FMDTouchTool,配置按键并下载;

 

 下载完成后点击左上角进入调试界面;

先调试不触摸,再调试触摸灵敏度;

 

 最后可以进行效果验证,触摸按键查看波形。最后生成应用代码。

 

 在生成代码的基础上添加如下代码:(开发环境:FMDIDE)

#define 	Brightness0_H			0					//亮度等级0 全灭
#define 	Brightness0_L			0
#define 	Brightness1_H			0					//亮度等级1 半亮
#define 	Brightness1_L			125
#define 	Brightness2_H			1					//亮度等级2 全亮
#define 	Brightness2_L			0

unsigned char  ucKeySingle = 0;				  //按键标志位
unsigned char  key_time=0;                      //按键按下次数
bit  key_less_flag;
/*-------------------------------------------------
 *	函数名: PWM_INITIAL 
 *	功能:  PWM初始化函数   pa1产生38KHZ方波
 *	输入:  无
 *	输出:  无
 --------------------------------------------------*/
void PWM_INITIAL(void)
{
	T2CON0=0B00110001;	//T2预分频1:4,后分频1:1
    //BIT7: 0:无意义; 1:把PR2/P1xDTy缓冲值分别更新到PR2寄存器和P1xDTy_ACT
    //BIT6~BIT3: 定时器2输出后分频比选择 0000:1:1;0001:1:2;……1:16
    //BIT2:0:关闭定时器2;1:打开定时器2
    //BIT1~0:定时器2预分频选择 00:1;01:4;1x:16
    
    T2CON1=0B00000001;	//T2时钟来自系统时钟,PWM连续模式
    //BIT4: PWM模式选择 0:连续模式;1:单脉冲模式
    //BIT3: 0:PWM模式;1:蜂鸣器模式	
    //Timer2时钟源选择:000:指令时钟;001:系统时钟;010:HIRC的2倍频;100:HIRC;101:LIRC
    
    TMR2H=1;						//定时器2计数寄存器
    TMR2L=200;
    
    PR2H=0;							//周期=(PR2+1)*Tt2ck*TMR2预分频
    PR2L=254;      				    //100
 
    P1BDTH	= Brightness0_H;						//脉宽=P1xDT*Tt2ck*TMR2预分频
    P1BDTL		= Brightness0_L;                      //初始化亮度0;   
    
    P1CDTH	= Brightness0_H;						//脉宽=P1xDT*Tt2ck*TMR2预分频
    P1CDTL	= Brightness0_L;                      //初始化亮度0;   
    
    P1OE=0B11000000;		//P1B0输出使能,P1C0输出使能
	//BIT7: 0:禁止P1C输出到管脚;1:允许P1C输出到管脚
    //BIT6: 0:禁止P1B输出到管脚;1:允许P1B输出到管脚
    //BIT5: 0:禁止P1D输出到管脚;1:允许P1D输出到管脚
    //BIT3~BIT2: 故障下,[P1C]管脚的状态,只有当P1CALT为1时才有效 00=高阻  01=输出0  1x=输出1
    //BIT1: 0:禁止P1A0N输出到管脚;1:允许P1A0N输出到管脚
    //BIT0: 0:禁止P1A0输出到管脚;1:允许P1A0输出到管脚    
 
   P1POL=0B00000000;		//P1A0高电平有效
    //BIT7: 0:P1C高电平有效;1:P1C低电平有效
    //BIT6: 0:P1B高电平有效;1:P1B低电平有效
    //BIT5: 0:P1D高电平有效;1:P1D低电平有效
    //BIT1: 0:P1A0N高电平有效;1:P1A0N低电平有效
    //BIT0: 0:P1A0高电平有效;1:P1A0低电平有效
    
    P1CON=0B00000000;
    //BIT7:PWM1 重启使能位
	//1 = 故障刹车时,P1BEVT位在退出关闭事件时自动清零,PWM1自动重启
	//0 = 故障刹车时,必须用软件将P1BEVT清零以重启PWM1
    //BIT6~0:PWM1死区时间设置
	//P1DCn = 预定MPWM信号应转变为有效与PWM信号实际转为有效之间的T2CK周期数
    
    TMR2IF=0;						//清TIMER2中断标志
    //TMR2IE=1;						//使能TIMER2的中断
    TMR2ON=1;						//打开定时器2
    PEIE=1;							//使能外设中断
    GIE=1;								//使能全局中断
}
/*------------------------------------------------------------------------------------------
 *  函数名:  main 
 *	功能:  主函数
 *  输入:  无
 *  输出:  无
 ----------------------------------------------------------------------------------------------*/
void main(void)
{
	SYS_INITIAL();	//系统初始?
    
    key_time = 0;
    
	DelayUs(250);
    DelayUs(250);
    WDT_INITIAL(); //WDT初始化
    TOUCH_INITIAL(); //按键初始化
    PWM_INITIAL();

	//LED(); // Demo led 初始化
   
	while(1)
	{
		CLRWDT();   
		
		TSC_Start(); //扫键
	   
		if(TSC_DataProcessing()==1)
		{
			ucKeySingle = TSC_GetSingle(); //生成有效按键
			  
			//LED_Scan();	// Demo led 有效按键提示
			
			if(ucKeySingle==0)
			{
				   //无按键按下
				   key_less_flag=0;
					//无按键按下                 
			}
			else
			{
					//有按键按下
					if(key_less_flag==0)
					{
						key_time++;
						key_less_flag=1;
					
						if(key_time>4)
						{
							key_time=0;
						}
						
						if(key_time==0)
						{
							 P1BDTH	= Brightness0_H;
							 P1BDTL	= Brightness0_L;       //赋值PWM值   PA4全灭
							 P1CDTH	= Brightness0_H;
							 P1CDTL	= Brightness0_L;       //赋值PWM值   PA2全灭
						}
						else if(key_time==1)
						{
							P1BDTH	= Brightness2_H;
							P1BDTL		= Brightness2_L;       //赋值PWM值    PA4全亮
							P1CDTH	= Brightness0_H;
							P1CDTL	= Brightness0_L;
						}
						else if(key_time==2)
						{
							P1BDTH	= Brightness1_H;
							P1BDTL		= Brightness1_L;       //赋值PWM值  PA4半亮
							P1CDTH	= Brightness0_H;
							P1CDTL	= Brightness0_L;
						}
						else if(key_time==3)
						{
							P1BDTH	= Brightness0_H;
							P1BDTL		= Brightness0_L;
							P1CDTH	= Brightness2_H;
							P1CDTL	= Brightness2_L;       //赋值PWM值  PA2全亮
						}        
						else if(key_time==4)
						{
							P1BDTH	= Brightness0_H;
							P1BDTL		= Brightness0_L;
							P1CDTH	= Brightness1_H;
							P1CDTL	= Brightness1_L;       //赋值PWM值  PA2半亮
						}                                                       
					}
					//有按键按下
			}   
		}	
	}
}

其他使用自动生成的代码即可。

生成编译后的校验和:

打开软件 FMDProgrammer,选择器件;浏览找到编译完成后的  .hex 文件。

 然后就可以看到检验和了:即0x E0E2,程序也已经下载到烧录器的了,后续芯片烧录只需要按烧录器离线烧录程序就可。

 

绿灯为烧录成功。 

辉芒微电子MCU是一种嵌入式微控制器单元,使用C语言进行编程。辉芒微电子MCU的C语言规则主要包括以下几个方面: 1. 语法规则:辉芒微电子MCU使用标准C语言进行编程,遵循C语言的基本语法规则,如变量声明与定义、控制结构(if-else、for、while等)、函数定义等。开发者需要熟悉C语言的基本语法,以正确编写程序。 2. 数据类型:辉芒微电子MCU支持C语言的基本数据类型,如整型(int)、字符型(char)、浮点型(float)等,同时还支持一些特殊的数据类型,如位域类型和枚举类型等。开发者可以根据实际需求选择合适的数据类型,并使用相应的操作符进行运算和操作。 3. 函数库:辉芒微电子MCU提供了丰富的函数库,用于简化开发者对硬件的操作。这些函数库包括延时函数、中断函数、串口通信函数、定时器函数等。开发者可以通过调用这些函数,快速实现对硬件的控制。 4. 编译器与工具链:为了编译和调试辉芒微电子MCU上的C语言程序,开发者需要安装相应的编译器和工具链。辉芒微电子MCU的官方提供了专门的开发环境,包括编译器、调试器和仿真器等。开发者可以利用这些工具,进行程序的编译、下载和调试。 总之,辉芒微电子MCU的C语言规则遵循标准的C语言规范,开发者需要掌握C语言的基本语法和数据类型,并熟悉辉芒微电子MCU的函数库和开发工具。通过合理运用这些规则和工具,开发者可以轻松快速地进行MCU的开发工作。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值