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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单介绍一下使用的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,程序也已经下载到烧录器的了,后续芯片烧录只需要按烧录器离线烧录程序就可。

 

绿灯为烧录成功。 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值