跳转到主要内容

单片机

10 个单片机电路设计中的难点,你都解决了吗?

demi /

单片机是嵌入式系统的核心元件,使用单片机的电路要复杂得多,但在更改和添加新功能时,带有单片机的电路更加容易实现,这也正是电器设备使用单片机的原因。那么在单片机电路的设计中需要注意的难点有哪些?你都解决了吗?下面分享10个单片机电路设计中的难点,一起来学习吧~

<strong>一、单片机上拉电阻的选择</strong>

单片机硬件电路设计的七个原则分享

judy /

一个单片机硬件系统的硬件电路设计包含两部分内容:
一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。
二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路。

系统的扩展和配置应遵循以下原则:

1、尽可能选择典型电路,并符合单片机硬件系统常规用法。为硬件系统的标准化、模块化打下良好的基础。

2、系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。

3、硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑的原则是:软件能实现的功能尽可能由软件实现,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间。

4、单片机硬件系统中的相关器件要尽可能做到性能匹配。 如选用CMOS芯片单片机硬件系统构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。

5、可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。

智能学习型红外空调遥控器的设计与实现

demi /

本文设计的是一款基于单片机的红外智能空调遥控器,这种遥控器能采用测量脉冲宽度的方法学习红外信号,同时使用游程编码算法对数据进行压缩后存储,并利用单片机内部定时器PWM模式产生红外载波,成功实现了对红外遥控的学习与再现。

下面请看详细设计流程。

系统总体结构与硬件设计

系统采用模块化设计,各模块通过接口电路与主控芯片相连。主要模块有:矩阵键盘,液晶显示,存储模块,红外发送模块,红外接收模块,RS232、RS485 通信模块,以及温度检测模块。系统结构图如图1 所示。

如何实现单片机用一个I/O采集多个按键信号?

demi /

如何实现单片机用一个I/O采集多个按键信号

使用模数转换(ADC)的特点就可以实现单片机用一个I/O采集多个按键信号。

一、单片机的I/O口检测按键简说

我们知道,一般情况下单片机的一个I/O口作为普通I/O口的话,只能检测识别一个按键。

日常设计中,如果碰到按键数量较多的话,会采用行列式键盘,例如最常见的4X4矩阵键盘,这样可以实现用8个I/O口检测16个按键。
<center><img src="http://mcu.eetrend.com/files/2018-09/wen_zhang_/100014439-49140-11.jpg&…; alt="如何实现单片机用一个I/O采集多个按键信号?"></center>
还有就是键盘接口,典型的是我们计算机上用的键盘,其采用PS/2接口,现在一般计算机上用的是USB接口的键盘。

嵌入式单片机程序架构之顺序结构

demi /

时间片轮询法,在很多书籍中有提到,而且有很多时候都是与操作系统一起出现,也就是说很多时候是操作系统中使用了这一方法。不过我们这里要说的这个时间片轮询法并不是挂在操作系统下,而是在前后台程序中使用此法。也是本文要详细说明和介绍的方法。

对于时间片轮询法,虽然有不少书籍都有介绍,但大多说得并不系统,只是提提概念而已。下面本人将详细介绍本人模式,并参考别人的代码建立的一个时间片轮询架构程序的方法,我想将给初学者有一定的借鉴性。

这里我们先介绍一下定时器的复用功能。

使用1个定时器,可以是任意的定时器,这里不做特殊说明,下面假设有3个任务,那么我们应该做如下工作:

1. 初始化定时器,这里假设定时器的定时中断为1ms(当然你可以改成10ms,这个和操作系统一样,中断过于频繁效率就低,中断太长,实时性差)。

2. 定义一个数值:

5分钟实现单片机步进电机控制设计

demi /

<strong>1 系统设计原理</strong>

步进电机控制系统主要由单片机、键盘LED、驱动/放大和PC上位机等4个模块组成,其中PC机模块是软件控制部分。为保护单片机控制系统硬件电路,在单片机和步进电机之间增加过流保护电路。图l为步进电机控制系统框图。

<center><img src="http://mcu.eetrend.com/files/2018-09/wen_zhang_/100014267-48568-1.jpg&q…; alt="5分钟实现单片机步进电机控制设计"></center><center><i>图1 步进电机控制系统框图</i></center>

<strong>2 系统硬件电路设计</strong>

2.1 单片机模块

单片机模块主要由MSP430FG4618单片机及外围滤波、电源管理和晶振等电路组成。

一文看懂单片机排阻的作用

judy /

在三位数字中,从左至右的第一、第二位为有效数字,第三位表示前两位数字乘10的N次方(单位为Ω)。如果阻值中有小数点,则用“R”表示,并占一位有效数字。例如:标示为“103”的阻值为10&TImes;10=10kΩ;标示为“222”的阻值为2200Ω即2.2kΩ;标示为“105”的阻值为1MΩ。需要注意的是,要将这种标示法与一般的数字表示方法区别开来,如标示为220的电阻器阻值为22Ω,只有标志为221的电阻器阻值才为220Ω。

标示为“0”或…000”的排阻阻值为OΩ,这种排阻实际上是跳线(短路线)。
一些精密排阻采用四位数字加一个字母的标示方法(或者只有四位数字)。前三位数字分别表示阻值的百位、十位、个位数字,第四位数字表示前面三个数字乘10的N次方,单位为欧姆;数字后面的第一个英文字母代表误差(G=2%、F=1%、D=0.25%、B=O.1%、A或W=0.05%、Q=0.02%、T=0.01%、V=0.005%)。如标示为“2341”的排阻的电阻为234&TImes;10=2340Ω。

单片机的非OS的事件驱动

demi /

很多单片机项目恐怕都是没有操作系统的前后台结构,就是main函数里用while无限循环各种任务,中断处理紧急任务。这种结构最简单,上手很容易,可是当项目比较大时,这种结构就不那么适合了,编写代码前你必须非常小心的设计各个模块和全局变量,否则最终会使整个代码结构杂乱无序,不利于维护,而且往往会因为修改了某部分代码而莫名其妙的影响到其他功能,而使调试陷入困境。

改变其中局面的最有效措施当然是引入嵌入式操作系统,但是大多数的操作系统都是付费的(特别是商业项目)。我们熟悉的uc-os/II如果你应用于非商业项目它是免费的,而应用于商业项目的话则要付费,而且价格不菲。

我们也可以自己编写一套嵌入式OS,这当然最好了。可要编写一套完整的OS并非易事,而且当项目并不是非常复杂的话也不需要一个完整的os支持。我们只要用到OS最基本的任务调度和上下文切换就够了。正是基于这样的想法,最近的一个项目中我就尝试采用事件驱动的思想重新构建了代码架构,实际使用的效果还不错,在这里做个总结。

本质上新架构仍然是前后台结构,只不过原来的函数直接调用改成通过指向函数的指针来调用。实际上这也是嵌入式OS任务调度的一个核心。

C语言中可以定义指向函数的指针:
void (*handle)(void);

基于单片机的智能学习型红外空调遥控器

demi /

<strong>1、前言</strong>

本文设计了一款针对空调设备的智能学习型红外遥控器,采用记录脉冲宽度的方法,成功实现了对多种红外空调遥控信号的学习与再现,真正实现了"万能"。本文在阐述了系统的总体结构及硬件设计的基础上,详细研究了系统学习,发送及通信功能的软件设计与实现。

<strong>2、系统总体结构与硬件设计</strong>

系统采用模块化设计,各模块通过接口电路与主控芯片相连。主要模块有:矩阵键盘,液晶显示,存储模块,红外发送模块,红外接收模块,RS232、RS485 通信模块,以及温度检测模块。

单片机STM32——中断与事件的区别

demi /

<strong>1、简述</strong>

下面这张图是一条外部中断线或外部事件线的示意图。图中的蓝色虚线箭头,标出了外部中断信号的传输路径;图中红色虚线箭头,标出了外部事件信号的传输路径。

<center><img width="600" src="http://mcu.eetrend.com/files/2018-08/wen_zhang_/100013097-46156-225.png…; alt="单片机STM32——中断与事件的区别"></center>

图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。

<strong>2、概念</strong>

事件:是表示检测到某一动作(电平边沿)触发事件发生了。

中断:有某个事件发生并产生中断,并跳转到对应的中断处理程序中。

中断有可能被更优先的中断屏蔽,事件不会。