在上一节中,我们交代了为什么要做这样一个项目,以及我们提出了需求,并根据具体的需求分析,将其转化为硬件设计,画出了具体的原理图,但是还有许多的问题没有交代清楚,比如数码管的引脚判断,12个管脚哪8个是数码管的段码?4个是数码管的位码?这个我们刚买来并不清楚,还需要测量,这就要用到万用表了,将万用表拨到二极管档位,二极管有单向导电性,我们知道数码管就是8个小灯组成的,如果我们买的是共阳极的数码管,也就是如下图所示:
如果我们将万用表的红表笔接12个引脚中的任意一个,黑表笔接其余11的任意一个引脚,如果小灯亮的话,说明红表笔管脚是数码管的位码,而我们的数码管有四个,所以有4个位码,可以按照点亮小灯的方法查找,找完位码之后,记下来,然后,我们开始逐一寻找数码管的段码,数码管的段码是按照下图的顺序排列的:
每一个小灯的阳极都连接在一起,所以叫共阳极数码管,DB0-DB7分别是8个小灯的阴极,有人发现怎么没有DB7?DB7是小数点,示意图一般不用加。
现在我们既然已经搞清楚了引脚定义,就需要看相关元器件的数据手册,开始画封装了,一般元器件需要购买回来,实际用游标卡尺测量,很多元器件,都有厂家提供的数据手册,上面都有封装尺寸,我们照着画一个就是了,也有部分通用的封装。
画元器件需要用到画图软件,以前很多人用99SE,我上学那会用的就是这古老的软件,包括很多老工程师现在还在用,我习惯用AD13,功能比较强大,当然安装文件比较大,对电脑的要求相对高一点,其实就是一工具,适合自己的就是好的,由于这篇文档主要侧重于单片机的学习,至于原理图以及PCB的制作,以及原理图封装,PCB封装,布线等等,以后会单独开一篇帖子,这个不是简单介绍下就能学会的,这里这个过程就省略了。。。如果有需要的同学,可以搜索相关教程进行学习,好了,画好的PCB如下图所示:DRC在线检查,确认没有错误之后,我们就可以发给PCB制作厂家做样板了。晒一张PCB3D照。如果想做一个的同学,可以参考我们给出的元器件布局图以及元器件形状,自己动手画一个,锻炼下。
将画好的PCB去打样,需要等个3-7天左右。。。
PCB拿到手之后,我们就开始焊接,当然不是焊接全部元件,是进行测试,测试PCB是不是不合格品或者是元器件的封装位置对不对,因为这个时候我们还没有编程序,如果在这个过程中,发现问题,及时的去修正,以免下一次在出现类似的问题,我们试着将LQFP32单片机焊接,这个要小心一点,然后数码管以及限流电阻,稳压芯片元件等焊接,这个时候,我们就可以编写一个测试程序了,程序通过预留的串口下载,程序的功能是点亮全部数码管。
单片机和一般编程不一样的地方,就是单片机属于硬件编程,我们知道LED0-LED3分别接在P3.3,P3.4,P3.6,P3.7引脚上,DB0-DB7接在P2口上。
好了,我们知道了硬件,就可以利用KEIL4编译软件用C语言编程了,先写一个简单的测试数码管全亮的程序:我们用KEIL4新建一个工程,命名为LED,关于如何新建KEIL4工程以及下载调试,是下一贴内容,我们先不管,编写好的程序如下:
将程序编译之后,下载到目标板中,我们就可以看到,数码管全部被点亮了,实际硬件效果图如下:
虽然达到了我们的预期目的,但这个程序仍然是不完善的。
好了,这一贴就到这里,下一贴,我们讲一下如何新建KEIL工程以及下载编译的步骤。
关键字:单片机 定时器 模拟PWM 呼吸灯
引用地址:
单片机学习札记9 定时器模拟PWM呼吸灯
推荐阅读最新更新时间:2024-11-09 11:53
STM32基础7--通用定时器(PWM输出)
通用定时器框图 在通用定时器中,内部结构与基本定时器是不一样的。下面是通用定时器TIM10/TIM11 和 TIM13/TIM14的内部结构,可以看到它支持一个通(TIMx_CH1)道,其他的通用定时器内部结构不一样在于它们支持的通道数。 从图中可以看到,通用定时除了基本的定时(基本定时的作用)功能以外,还支持信号的输入,信号的输出,也多了一个捕捉比较寄存器。 PWM(Pulse Width Modulation—脉冲宽度调制技术) 在一个周期波形中,高电平占整个周期的比例称之为占空比,而高电平宽度通常被称为脉冲宽度。当我们在控制占空比,从而控制电路导通或者关闭时间,从而控制导通的有效电压。由于这个特性,我们在需要控制LE
[单片机]
定时器做PWM脉冲
简介 STM32 的定时器除了 TIM6 和 TIM7。其他的定时器都可以用来产生 PWM 输出。 高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。 通用定时器也能同时产生多达 4路的 PWM 输出, PWM 寄存器与功能原理 TIMx_CCR1~4,捕获/比较寄存器 该寄存器的值与 CNT 的值比较,可以控制 PWM 的输出脉宽 TIMx_CCMR1/2,捕获 / 比较模式寄存器 CCMR1/2:OCxM 位,用于设置 PWM模式1 ,只要TIMx_CNT CCR(计数值小于比较标准值)则为有效电平 PWM模式2 ,只要TIMx_CNT CCR(计数值小于比较标准
[单片机]
51单片机定时器和中断的介绍
最近在学习51单片机,学到了定时器这块,由于自己的基础不太扎实,在这方面花了很多时间,这里通过对定时器和中断的介绍,用简易时钟这个例子来对学习的内容进行加深巩固,把自己的经验分享给大家,希望对大家能够有帮助。 一、定时器的功能以及定时器的结构 定时器的功能 其实就是单片机的内部,通过系统时钟的每一个机器周期产生一个记数脉冲,即每一个机器周期计数器加一。 比如,这里我的实验板的晶振是12MHZ,1MHZ信号每个脉冲的持续时间为1us,如果定时器T0对1MHZ的信号进行计数,从0~65536us,当达到最大的65536us的时候,定时器计数达到最大值,会溢出,于是产生中断信号,向中断系统申请中断,中断系统接受中断请求,执行中断
[单片机]
S3C2440 开发板实战(5):定时器中断
一、定时器大体结构 查看芯片手册,可以找到以下定时器结构框图 从做到右看,对该图进行分析:(不考虑) Prescaler:定时器0和1共享一个8位分频器,而定时器2、3、4共享另一个8位分频器。分频器将输入的PCLK分频为:PCLK/(prescaler+1)。 Clock divider & MUX:每个定时器有一个时钟分频器,它产生5个不同的分频信号(1/2,1/4,1/8,1/16,和TCLK)。每个定时器块从时钟分频器接收自己的时钟信号,时钟分频器从相应的8位分频器接收时钟。8位分频器是可编程的,根据加载值对PCLK进行划分,存储在TCFG0和TCFG1寄存器中。此时定时器的时钟频率为:Timer input
[单片机]
51单片机按键控制数码管0~9_51单片机外部中断
前面为大家介绍的点亮LED灯、数码管、按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯、操作数码管,那可真是大才小用了。这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将为大家一一介绍。今天为大家介绍单片机一个重要的外设——中断。 中断 没接触过单片机的朋友听到这个词肯定很陌生,大家对打断这个词应该不陌生吧,中断字面意思可以理解为中途被打断。大家可以思考一下,什么的中途被什么给打断了呢?想明白了这个问题就说明理解中断了。下面看看百度的解释: 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情 况的程序,处理完毕后又返回原被暂停的程
[单片机]
工业物联网AI转型革命下,恩智浦MCU/MPU如何帮助中国客户更“AI”
我们身处于一个激动人心的时代,因为智能设备正在以惊人的速度增加,无论是汽车、工厂还是居家、楼宇领域,都让AI技术变得“看得见,摸得着”。同时,这些设备也通过蓝牙、Wi-Fi、5G而互相连接,形成一个万物智能的网络。 数据显示,到2030年智能互联设备数量将超过500亿台,到2030年约50%的汽车将实现电气化和L2辅助驾驶,到2025年AI半导体收入将达到750亿美元,到2026年5G将覆盖全球60%的地区,2021到2025年智能家居市场复合年增长率达20%。 在AI革命中,随着边缘AI重要性愈发凸显,MCU、跨界MCU、MPU作为边缘设备的核心也在不断增强其AI处理能力。日前,恩智浦就分享了其在边缘处理业务上的理解和布
[嵌入式]
关于基于STM32系列单片机的DMD投影仪的驱动电路的相关设计
DLP投影技术是应用美国德州仪器公司开发的数字微镜元件——DMD(Digital Micromirror Device)作为主要关键处理元件以实现数字光学处理过程的技术。DLP显示的色彩清晰度高、艳丽、细腻、逼真,且为全数字显示即可靠性极高,能在各类产品(如大屏幕数字电视、公司/家庭/专业会议投影机和数码相机(DLP Cinema))中提供最佳图像效果。目前,大部分的家用或商用DLP投影机都采用了单片结构,使得其便于移动携带,因而得到越来越广泛的应用。在目前应用发展的基础上,又对其结构的精简性、携带的方便性提出了更高的要求。传统的DLP投影仪是通过DVI接口接收外部信号,并且经过信号转换传送给DLP控制器来控制DLP的显示,占用的
[单片机]
STM32 定时器输出 PWM
我们通过TIM3 输出PWM 去驱动 SG90电机 配置如下 1.GPIO结构体 2.配置通用定时器结构体 3.配置定时去输出PWM结构体 4.打开时钟 — GPIO时钟,TIM定时器时钟,部分重映射时钟 5.配置PWM比较值 一 我们使用定时器3 通道2 重映射之后为PB5 GPIO_InitTypeDef GPIO_motorstruct; GPIO_motorstruct.GPIO_Mode =GPIO_Mode_AF_PP; GPIO_motorstruct.GPIO_Pin = GPIO_Pin_5; GPIO_motorstruct.GPIO_Speed =GPIO_Speed_50M
[单片机]