跳转到主要内容

单片机

单片机设计与KeilC编程总结

selina /

<strong>1基本原则</strong>

质量是关键。没有人会对很差的工作感到满足。当完成高质量的工作时,你会为此而感到骄傲。不管你是否知道,你都会因为你的高质量工作而得到信誉。因此,要想为自己所做的事感到骄傲,就需要建立个人标准,并为达到这一标准而努力奋斗。在达到这些标准时,再提高标准并继续努力。挑战自己去完成更优良的工作,你将会为自己的成就而感到惊讶。

<strong>1.1 了解单片机的能力</strong>

【规则1】设计满足要求的最精简的系统。

正确估计单片机的能力,知道单片机能做什么,最大程度的挖掘单片机的潜力对一个单片机系统设计者来说是至关重要的。我们应该有这样一个认识,即单片机的处理能力是非常强大的。早期的PC 机,其CPU(8086)处理能力和8051 相当,却能处理相当复杂的任务。单片机的能力的关键就在软件设计者编写的软件上。只有充分地了解到单片机的能力,才不会做出“冗余”的系统设计。而采用许多的外围芯片来实现单片机能实现的功能。这样做即增加了系统成本,也可能会降低了系统的可靠性。

<strong>1.2 系统可靠性至关重要</strong>

【规则2】使用看门狗。

【连载2】单片机小白学步之爱上单片机的一万个理由

editor /

到现在为止,相信大家对单片机已经有了一个基本概念,但是我们为什么要学习单片机呢?我们需要找到爱上单片机的一万个理由。

<strong> 单片机在实际中的应用</strong>

单片机在生活中应用非常广泛。各种家电,如洗衣机,电冰箱,电饭煲,电子称,等等,往往会称自己的产品是高科技、全自动、微电脑控制的智能产品……对于没有接触过单片机之类器件的人来说,会感觉真的是很难想象的高科技。而当你学会单片机之后,你的想法就完全不一样了。你可能只是淡淡一笑,然后暗暗的想,人家用的什么单片机?怎么写的程序?要不改天也来自制一个类似的玩玩?当然我并不否认单片机是高科技,我这里也不是有意要冒犯家电厂商,请大家理解o(╯□╰)o。

很多数码产品,像手机,单反,摄像机,一些MP3播放器,包括电脑中的硬盘等零部件往往都用到了单片机。极大丰富了我们的业余生活。

【下载】keil调试用工具

editor /

调试,在企业程序设计里(我把企业商务类型的软件开发叫企业程序设计,把单片机与驱动程序这样接触底层汇编与硬件相关的程序设计叫底层程序设计),调试一般都用来跟踪变量的赋值过程,以及查看内存堆栈的内容,查看这些内容的目的在于观察变量的赋值过程与赋值情况从而达到调试的目的。由于企业程序的宿主就是开发它的计算机本身,因此企业程序设计比起底层程序设计,特别是单片机的程序设计调试来的更直观,调试也更方便。

关于单片机RAM的作用

editor /

<strong> 一、内部RAM</strong>

共256个单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。

前128单元具体分为:

1、工作寄存器区:共4个组,每组为8个存储单元,即00H-07H,08H-0FH,10H-17H,18H-1FH,具体选择哪一个由程序状态字(PSW)中的RS1和RS0的组合决定(在此我就不展开了,呵呵……)

2、位寻址区:20H-2FH,共16个单元,每一位可以进行位寻址(16*8=128个位地址),就是每一个触发位,就是bit可以寻址

3、便笺区:从30H-7FH,共80个单元,用于存放用户数据或作堆栈区使用。

4、从80H-FFH为专用寄存器占用,其中还离散的分布SFR(21个特殊功能寄存器)

<strong> 二、256B</strong>

其中00H~7FH

可分为3个区域:

00H~1FH 是通用寄存器区

20H~2FH 是位寻址区

30H~7FH 是用户RAM区

80H~FFH是特殊功能寄存器区

单片机C语言入门教程

editor /

学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。Keil软件是目前最流行开发80C51系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(?Vision)将这些部份组合在一起。

学习之前请先安装KEILC51软件,在学会使用汇编语言后,学习C语言编程是一件比较容易的事,我们将通过一系列的实例介绍C语言编程的方法。图1-1所示电路图使用89c51单片机作为主芯片,这种单片机性属于80C51系列,其内部有8K的FLASH ROM,可以反复擦写,非常适于做实验。89c51的P1引脚上接8个发光二极管,P3.2~P3.4引脚上接4个按钮开关,我们的任务是让接在P1引脚上的发光二极管按要求发光。

【连载1】单片机小白学步之单片机的前世今生

editor /

从本文开始进入单片机入门篇的学习。入门篇主要介绍各种单片机基础知识概念。

入门篇阅读建议:根据个人已经掌握的知识,有重点的去读。如果介绍到你已经学过的知识,你只需要简单阅读一下,或者直接跳过。如果看后面的文章感觉有些知识掌握的还不好,可以在回来看入门篇相关的介绍。

<strong><font size="5">数字的发明</font></strong>

很久以前,人类发明了数字。自此,人类社会发生了巨大的变化。有了数字,人们解决了很多问题。在数字的帮助下,人们学会了度量和计算,人们发明了温度计,发明了钟表,发明了直尺,发明了算盘……生活中原本模糊的概念,变的不再模糊,而是十分精确。

创客制作:让时间漂浮显示?这单片机时钟也太牛了吧!

selina /

笔者利用51单片机制作了一个LED旋转屏,并利用该旋转屏上制作出炫耀独特的数字钟,在把制作过程分享之前,先贴一张效果图。

<center><img src="http://mm32.eetrend.com/files/2016-07/wen_zhang_/100002062-6194-1.png&q…; alt=""></center>
<center><i>效果图——左上角是静止图</i></center>

<br>看完图片之后大家惊奇的发现,上面显示的字居然是浮在空中的!这到底是怎么回事?其实道理很简单:LED旋转屏只采用一排LED,令其高速旋转,利用视觉残留效应,形成高分辨率的点阵屏,可以显示字符、汉字,甚至图案,而且图案看起来还有悬浮于空中的透明效果,非常炫目。下面跟着笔者一起来制作把!</br>

下面给出一张元器件清单供参考。

单片机ROM、RAM和FLASH的作用

editor /

常规上ROM是用来存储固化程序的,RAM是用来存放数据的。由于FLASH ROM比普通的ROM读写速度快,擦写方便,一般用来存储用户程序和需要永久保存的数据。譬如说,现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在ROM里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流时一个适时的数据,用户不关心,它只是用来计算电度用,计算完后该次采集的数据就用完了,然后再采集下一次,因此这些值就没必要永久存储,就把它放在RAM里边。然而计算完的电度,是需要永久保存的,单片机会定时或者在停电的瞬间将电度数存入到FLASH里。

--ROM存放指令代码和一些固定数值,程序运行后不可改动;RAM用于程序运行中数据的随机存取,掉电后数据消失..

code就是指将数据定义在ROM区域,具只读属性,例如一些LED显示的表头数据就可以定义成code存储在ROM。

ROM:(Read Only Memory)程序存储器

单片机电流的一些经验理解

editor /

1、按理说,一个东西的负载电流,应该是它供给外部的电流,这时候也就是流出时,应该为正。

2、外接电阻一般是上拉,通常情况这种接法输出高电平时,内部输出开关管是截止状态,如果该引脚上有负载的话,负载电流经上拉电阻提供,引脚内部基本上不存在电流出入,(所以低功耗)

3、这么讲下去,当该脚输出低电平时(内部开关管导通,电压接近地),电流经电阻流入内部,这时候应该在单片机的相关技术文档中会详细说明单片机的工作电流,但总的来说,每个端口电流不要超过20毫安,否则容易使得器件损坏。描述为负

。IO口的灌电流最大30ma左右,拉电流更小了

一般来说上拉或下拉电阻的作用是增大电流,加强电路的驱动能力

比如说51的

还有,p0口必须接上拉电阻才可以作为io口使用

上拉和下拉的区别是一个为拉电流,一个为灌电流

一般来说灌电流比拉电流要大

也就是灌电流驱动能力强一些

拉电流与灌电流

51系列单片机的拉电流和灌电流是不同的。根据我的使用经验,标准I/O口的拉电流不大于1mA,灌电流最大约为10mA左右,P0口的驱动能力更差一些。

单片机的AD转换

editor /

<strong><font size="4">1、什么是AD转换</font></strong>

A是模拟信号的意思,D是数字信号的意思,AD转换就是模数转换,顾名思义,就是把模拟信号转换成数字信号,例如把电压值转化为数字信号。

<strong><font size="4">2、为什么要AD转换</font></strong>

单片机(以及其他处理器)只能处理数字信号,当单片机想要获取电路上某一点的电压值时,就得用到AD转换了,如果你直接把单片机的引脚接到电路这个点上,单片机只知道这个点的电压是低电平还是高电平,又怎么能得到他的电压值呢?例如数字式的万用表,它测量电压时,先有一个AD转换电路,把电压值转换成一个数值,然后把这个值送个单片机(当然万用表里的用的处理芯片不是单片机),单片机经过计算处理后,再把这电压值显示到显示到屏幕上。
不过现在有一些比较强的单片机,其内部已经集成了AD转换器,不需要你再外接AD转换芯片。