跳转到主要内容

单片机

嵌入式和单片机的区别在哪?

judy /

单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们自己的定义,接下来,就谈谈这两个概念的深入理解。

<strong>什么是单片机</strong>

首先明确概念,什么是单片机,单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

基于单片机的智能电平转换器设计

judy /

<strong>1 引言</strong>

CAN,全称为“Controller Area Network”,即控制器局域网,是一种国际标准的,高性价的现场总线,在自动控制领域具有重要作用。CAN是一种多主方式的串行通讯总线,具有较高的实时性能,因此,广泛应用于汽车工业、航空工业、工业控制、安全防护等领域。

由于PC机无CAN接口,因此,PC机与智能节点构成CAN总线系统可采用RS232/CAN、并口/CAN、USB/CAN、ISA卡/CAN以及PCI卡/CAN方式接入。而采用RS232/CAN接入时,需采用CAN/RS232接口标准转换。针对这一问题,提出了CAN/RS232智能电平转换器设计方案,以SJAl000作为独立CAN控制器,完成CAN通信协议。并在SJAl000与驱动器之间连接高速光耦,从而实现总线各点间的电气隔离。

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

单片机C语言优化技巧

judy /

对程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一,一般是优化了代码的尺寸,就会带来执行时间的增加,如果优化了程序的执行速度,通常会带来代码增加的副作用,很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。

一、程序结构的优化

1、程序的书写结构

虽然书写格式并不会影响生成的代码质量,但是在实际编写程序时还是应该尊循一定的书写规则,一个书写清晰、明了的程序,有利于以后的维护。在书写程序时,特别是对于While、for、do…while、if…elst、switch…case 等语句或这些语句嵌套组合时,应采用“缩格”的书写形式,

2、标识符

程序中使用的用户标识符除要遵循标识符的命名规则以外,一般不要用代数符号(如a、b、x1、y1)作为变量名,应选取具有相关含义的英文单词(或缩写)或汉语拼音作为标识符,以增加程序的可读性,如:

count、number1、red、work 等。

3、程序结构

基于MSP430的电机功率因数的测量系统

judy /

计算机技术,尤其是单片机技术和大规模集成电路及各种新型传感元件的迅速发展和日臻成熟,微机技术在电力系统中的普及应用,使电力系统的测量和监控技术得到了快速的发展。在工业生产过程中,往往需要对电动机运行期间的功率因数进行检测,以便采取相应的补偿措施来提高功率因数,从而达到节约电能的目的。若三相负载不平衡,为能比较真实地反映三相电机的功率因数值,可通过采样三相交流电中任意一相相电流以及另外两相线电压之间的相位差得到三相系统的功率因数。MSP430系列单片机是一种超低功耗的混合信号处理器(Mixed Signal Processor),它具有低电压、超低功耗、强大的处理能力、系统工作稳定、丰富的片内外设、方便开发等优点,具有很高的性价比,在工程控制等领域有着极其广泛的应用范围。使用MSP430实现对电机功率因数等电力参数的测量,不但提高了测量的精度和自动化水平,而且降低了系统的功耗。

<strong>1 功率因数与相位</strong>

为什么单片机中既有Flash又有EEPROM?

judy /

单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现。

插播一段:ROM最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了PROM,可以自己写入一次,要是写错了,只能换一片。随着不断改进,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序之后发现有个地方需要加一句话,为此你要把单片机放紫外灯下照半小时,然后才能再下一次,这么折腾一天也改不了几次。历史的车轮不断前进,伟大的EEPROM出现了,拯救了一大批程序员,终于可以随意的修改ROM中的内容了。

EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来讲的。但是今天已经存在多种EEPROM的变种,变成了一类存储器的统称。

狭义的EEPROM:

单片机常见的6种报警方式

judy /

单片机常见的报警方式有6种,如以下所示:

(1)指示灯或数码管显示出数据,以提醒操作人员注意。

(2)采用声、光及语音进行报警。其中,光效果通常取自发光二极管LED或其他光源器件;声效果可取自电铃、电笛、蜂鸣器、或音乐(语音)芯片等。

(3)合成语音报警。采用这种方式进行报警时,单片机应用系统将对语音信号进行采集、处理、合成和识别,使报警系统的功能更加完善,报警信息更加具体、生动、准确,直至给出报警对象的具体信息。

(4)图形、图像报警。这种系统设微型机控制的打印机或CRT显示器,使警卫人员在接受其他报警信号的同时,还能看到报警显示的画面或数据、文字,不但能将报警资料打印成文,而且可方便存档。

(5)具有控制功能的报警。这种报警系统具有控制功能,如:适时将自动操作切换到人工操作,防止事故发生;达到报警限时,执行机构动作;自动拨出电话号码,将警报情况报告给有关人员。

(6)具有信号远传功能的报警。能将报警信号远传至信号可以达到的远距离处,以供监视、控制用。常用的信号远传方法有:红外线、激光、微波、超声波、有线载波、无线电传输等。.

<strong>利用单片机应用系统进行报警的常用方法是什么?</strong>

STM32单片机是如何启动的?

judy /

<strong>STM32中的内存</strong>

STM32中的内存包含两块主要区域:flash memory(只读)、static ram memory(SRAM,读写)。其中,flash memory 起始于0x08000000,SRAM起始于0x20000000。flash memory的第一部分存放异常向量表,表中包含了指向各种异常处理程序的指针。比如说,RESET Handler便位于0x08000004的位置,在处理器上电或重启时执行。在0x08000000处存放的是内部栈指针。

在单片机中,嵌入操作系统的利弊

judy /

近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题。本文通过对一种源码公开的单片机嵌入式实时操作系统μC/OS-II为例,阐述了在单片机中使用该嵌入式操作系统的优缺点,以及在应用中应当注意的一些问题。

早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越多的提及,在通信、电子、自动化等需要实时处理的领域所日益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈论的往往是一些著名的商业内核,诸如VxWorks、PSOS等。这些商业内核性能优越,但价格昂贵,主要用于16位和32位处理器中,针对国内大部分用户使用的51系列8位单片机,可以选择免费的μC/OS-II。

<strong>μC/OS-II的特点 </strong>

1、μC/OS-II是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它缺乏必要的支持,没有功能强大的软件包,用户通常需要自己编写驱动程序,特别是如果用户使用的是不太常用的单片机,还必须自己编写移植程序。

单片机如何通过I/O口实现断电自关机

judy /

单片机应用系统中,常有用单片机的I/O口来实现自关机(彻底关机)的功能。一般用单片机的一个I/O口控制一个电子开关来实现,因单片机关电后,失去电源,所以在关机时,实现关机的IO口的电平必须用低电平。

但在这里有一个矛盾,就是在电子开关关闭电源时,因有电源滤波电容的存在,单片机系统的电压不是立即变为0,而是慢慢变低,当电压低到一定电压时,单片机 将进入复位状态、或程序跑飞状态、或不确定状态,此时单片机控制关电的I/O口也可能变回高电平,将使电子开关重新开通。

<strong>解决方法:</strong>

一般单片机最低工作电压要比正常工作的电压低一些,我们就用这个差别来设计关机电路,就是让电子开关的开通电压必须大于单片机的最低工作压,这样在单片机正常工作时,此控制电压较高,能维持电子开关的正常导通,而当单片机在关电过程中因低压而产生的I/O口的高电平,因电压较低,不足以维持电子开关的导通, 从而实现彻底的关电。

简析单片机通信时序分析

judy /

所谓“时序”从字面意义上来理解,一是“时间问题”,二是“顺序问题”。

先说“顺序问题”,这个相对简单一些。我们在学 UART 串口通信的时候,先 1 位起始位,再 8 位数据位,最后 1 位停止位,这个先后顺序不能错。我们在学 1602 液晶的时候,比如写指令,RS=L,R/W=L,D0~D7=指令码,这三者的顺序是无所谓的,但是最终的 E=高脉冲,必须是在这三条程序之后,这个顺序一旦错误,写的数据也可会出错。

“时间问题”内容相对复杂。比如 UART 通信,每一位的时间宽度是 1/baud。我们初中就学过一个概念,世界上没有绝对的准确。那么每一位的时间宽度 1/baud 要求精确到什么范围内呢?