当前位置: 首页 > news >正文

合泰单片机之点亮开发板的所有LED灯

上一篇文章,我们介绍了如何从0开始新建工程,这一篇我们来实现最简单的操作,点亮LED灯。

HT66F0185芯片

1.通用输入\输出内部结构

在这里插入图片描述

2.GPIO寄存器介绍

在这里插入图片描述
PAWUn: PA 口引脚唤醒功能控制
0: 除能
1: 使能
PAPUn/PBPUn/PCPUn/PDPUn: 输入 / 输出引脚上拉功能控制
0: 除能
1: 使能
PAn/PBn/PCn/PDn: 输入 / 输出口数据位
0: 数据 0
1: 数据 1
PACn/PBCn/PCCn/PDCn: 输入 / 输出引脚类型选择
0: 输出
1: 输入

要将PA3配置为输出模式并初始化为低电平(默认熄灭状态),需按以下步骤设置寄存器:

_pac3 = 0;//设置为输出
_pa3 = 0;//引脚输出低电平

3.开发板原理图

在这里插入图片描述

在这里插入图片描述
  根据原理图分析,CXLED1灯的一端接地,另一端连接至P8接口的第1引脚,未直接与单片机端口相连。可采用跳线帽将P8的1、2引脚短接,使CXLED1通过CX(PA3)引脚接入单片机。此时只需向PA3引脚输出高电平即可点亮LED灯。

4.实现部分代码

由于CXLED1的一端连接到比较器的CX端,而芯片的I/O引脚数量有限,通常具有复用功能。这些引脚不仅可用作通用I/O,还可复用为CX、IIC通信总线或SPI通信总线等其他功能。通过查阅比较器的寄存器发现:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

因此,如果要将PA3直接用作通用I/O口,需要在初始化时将cos设置为1。

_cos = 1;	//设置pa3管脚为IO,而不是比较器输出

为防止程序运行时看门狗定时器触发系统复位,应在初始化阶段关闭看门狗功能。

_wdtc=0xa8;//关闭看门狗

为使LED灯状态变化更明显,我们采用亮1秒、灭1秒的循环模式。

while(1)
{CLED=0;delay_ms(1000);CLED=1;delay_ms(1000);
}

要实现LED灯1秒亮1秒灭的效果,可以通过以下步骤实现:

  1. 将PA3引脚设置为低电平点亮LED
  2. 调用1秒延时函数
  3. 将PA3引脚切换为高电平熄灭LED
  4. 再次调用1秒延时函数
  5. 循环执行上述步骤

为此需要预先编写一个精确的1秒延时函数。

我们之前曾在工程设置中选择了V3编译器,该编译器内置了延时函数功能。

在这里插入图片描述
在这里插入图片描述

根据HT66F0185芯片手册的数据,当系统时钟频率为20MHz时,每个时钟周期为0.05μs。图例显示指令周期为0.2μs,通过计算0.2μs/0.05μs=4,可以得出每个指令周期包含4个时钟周期(状态周期)。

我们的主频设置为8MHz,每个指令周期为1/8000000 * 4 = 0.5μs。因此,当主频为8MHz时,指令周期为0.5μs。
具体应用时:

  • GCC_DELAY(1) 表示延迟1个指令周期,即0.5μs
  • GCC_DELAY(2000) 表示延迟2000个指令周期,换算结果为0.5μs * 2000 = 1ms
void delay_ms(u16 ms)
{while(ms--){GCC_DELAY(2000);//编译器自带延时指定个周期,在主频8Mhz下,一个指令周期为0.5us	GCC_CLRWDT();}
}

5.完整代码

#include "HT66F0185.h"#define u8 unsigned char
#define u16 unsigned int#define CLED _pa3void delay_ms(u16 ms)
{while(ms--){GCC_DELAY(2000);//编译器自带延时指定个周期,在主频8Mhz下,一个指令周期为0.5us	GCC_CLRWDT();}
}void main()
{_wdtc=0xa8;//关闭看门狗_pac3=0;//设置为输出_pa3 = 0;_cos=1;//设置pa3管脚为IO,而不是比较器输出while(1){CLED=0;delay_ms(1000);CLED=1;delay_ms(1000);}
}

6.实验现象

如下图所示,将跳线帽插上,就会发现CLED不停的亮1s,熄灭1s.
在这里插入图片描述

B86D20A-3芯片

1.GPIO寄存器介绍

在这里插入图片描述
PAWUn: PA 口引脚唤醒功能控制
0: 除能
1: 使能
PAPUn/PBPUn/PCPUn/PDPUn: 输入 / 输出引脚上拉功能控制
0: 除能
1: 使能
PAn/PBn/PCn/PDn: 输入 / 输出口数据位
0: 数据 0
1: 数据 1
PACn/PBCn/PCCn/PDCn: 输入 / 输出引脚类型选择
0: 输出
1: 输入

2.原理图

在这里插入图片描述
在这里插入图片描述
根据原理图设计,8个LED的正极共同连接至LEDCOM端,负极分别连接单片机的各个引脚。要实现LED点亮效果,需将LEDCOM端置为低电平,同时给对应引脚输出高电平。

3.部分代码

单片机引脚通常具备多功能特性。除了作为通用输入输出(GPIO)外,它们还可复用为其他特殊功能。因此,在初始化时往往需要先禁用其他功能,才能将其配置为GPIO模式。

LED1:
在这里插入图片描述
在这里插入图片描述

PD1端口的复位功能CTP0B:该引脚作为外部定时器输出功能可忽略;SSEG17用于LCD驱动的SEG输出,需关闭;LXT为晶振引脚,由于开发板未外接晶振,该功能无需配置。其他引脚功能参照此原则处理。

_seg17en = 0;	//选用GPIO功能
_pdc1 = 0;		//输出引脚选择
_pd1   = 0;		//输出低电平

在这里插入图片描述
在这里插入图片描述
这里直接设置

_ace7 = 0;

4.完整代码

#include "BS86D20A-3.h"#define u16			unsigned int #define LED1_ON	 	_pd1   	= 1
#define LED1_OFF	_pd1  	= 0
#define LED2_ON	 	_pd0   	= 1
#define LED2_OFF	_pd0  	= 0
#define LED3_ON	 	_pa1   	= 1
#define LED3_OFF	_pa1  	= 0
#define LED4_ON	 	_pc1   	= 1
#define LED4_OFF	_pc1  	= 0
#define LED5_ON	 	_pc7   	= 1
#define LED5_OFF	_pc7  	= 0
#define LED6_ON	 	_pc6   	= 1
#define LED6_OFF	_pc6  	= 0
#define LED7_ON	 	_pc0   	= 1
#define LED7_OFF	_pc0  	= 0
#define LED8_ON	 	_pb6   	= 1
#define LED8_OFF	_pb6  	= 0
#define LEDCOM		_pd2    = 0void delay_ms(u16 ms)
{while(ms--){GCC_DELAY(2000);//编译器自带延时指定个周期,在主频8Mhz下,一个指令周期为0.5us	GCC_CLRWDT();}
}void Led_Init()
{//LED1_seg17en = 0;_pdc1 = 0;	//输出引脚选择_pd1   = 0;//LED2_seg16en = 0;_pdc0 = 0;	//输出引脚选择_pd0   = 0;//LED3_pac1 = 0;	//输出引脚选择_pa1   = 0;//LED4_ace1 = 0;_pcc1 = 0;	//输出引脚选择_pc1   = 0;	//LED5_ace7 = 0;_pcc7 = 0;	//输出引脚选择_pc7   = 0;//LED6_ace6 = 0;_pcc6 = 0;	//输出引脚选择_pc6   = 0;	//LED7_ace0 = 0;_pcc0 = 0;	//输出引脚选择_pc0   = 0;	//LED8_tm2pc0 = 0;_pbc0 = 0;	//输出引脚选择_pb6   = 0;		//LEDCOM_pdc2 = 0;LEDCOM;}void main()
{//_acerl=0;//设置ad口为IOLed_Init();while(1){GCC_CLRWDT();LED1_ON;LED2_ON;LED3_ON;LED4_ON;LED5_ON;LED6_ON;LED7_ON;LED8_ON;		delay_ms(500);LED1_OFF;LED2_OFF;LED3_OFF;LED4_OFF;LED5_OFF;LED6_OFF;LED7_OFF;LED8_OFF;		delay_ms(500);}}

将程序分别烧录至两块芯片后接通电源,此时开发板上的所有LED指示灯均被点亮。

http://www.dtcms.com/a/516901.html

相关文章:

  • 找不到mfc140d.dll文件
  • Dexmal 原力灵机开源 Dexbotic:具身智能的“Transformers“库来了
  • 毕设做网站有什么题目网络规划设计师攻略
  • 【avalonia教程】15Binding的其他属性(2)
  • 企业网站作用平湖手机网站建设
  • 算法leetcode|96. 不同的二叉搜索树(多语言实现)
  • 快速上手ip link命令:查看你的网络接口信息
  • 视频汇聚平台EasyCVR级联播放偶发失败排查:TCP主动模式下的3秒超时响应差
  • 苏州马可波罗网站建设wordpress单页主题制作视频教程
  • html手机网站怎么做清新织梦淘宝客模板淘客网站程序源码
  • 20.2 图像识别技术革命:多模态模型准确率突破87.6%,传统方案效率飙升32%!
  • 深圳网站建设加盟网站 方案
  • ★ Linux ★ 线程概念与控制
  • 设计师接私单做网站为什么打不开建设银行网站
  • 前端-登录认证技术
  • AI开发结构化输出
  • Leetcode 32
  • eclipse tomcat运行普通web项目发现mysql-connector-java-8.0.30.jar包无法自动部署 的解决办法
  • 【经典算法,限时免费】LeetCode698、划分K个相等的子集(回溯解法)
  • 做网站为职业生存不下去nginx wordpress rewrite
  • RK3568 MIPI 摄像头驱动的 V4L2 多平面视频格式解析
  • 英伟达RTX 6000 Ada 和L40S 对比,哪个更适合做深度学习?
  • 网站开发维护费用学校网站建设工作
  • 华为专利申请的核心指导思想
  • 做配资网站多少钱我想花钱做网站
  • 自适应单行tooltip省略号
  • 网站难做jquery+html5 网站后台管理页面模板
  • 做seo网站 公司三丰云服务器
  • 关于监控与部署
  • 3.虚拟化技术(一)