ImageVerifierCode 换一换
格式:DOC , 页数:39 ,大小:1.20MB ,
资源ID:7805110      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7805110.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(七天学会单片机.doc)为本站会员(11xg27ws)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

七天学会单片机.doc

1、1第一天 认识单片机一、什么是单片机什么是单片机?按照比较正规的定义,所谓单片机,就是把中央处理器、存储器、定时器、I/O 接口等一些计算机功能部件集成在一块电路芯片上的微型计算机。什么又是中央处理器、存储器、定时器和 I/O 接口呢?简单来说,中央处理器就是所谓的CPU,就相当于人的大脑。存储器顾名思义就是一种能存储数据的元件,比如我们写的程序就可以存放在这里面。I/O 接口就是输入/输出端口,数据可以通过这样的端口输入或输出 CPU。我们把这些东西整合到一块很小的芯片上,就成为了单片机。二、单片机可以做什么单片机用来干什么呢?用最通俗的话讲,它的作用就是实现智能控制。什么是智能控制呢?举个

2、简单的例子,让单片机按照我自己的想法来控制一个发光二极管的亮灭就是智能控制,那么我如何来做到呢?我将发光二极管的正极分别连在单片机一个引脚上,当连正极的引脚输出高电平(可以暂时理解为高电压) ,连负极的引脚输出低电平(同上,低电压)时,由于二极管两端电压差,因此二极管点亮,当两个引脚都是相同电压,发光二极管熄灭。单片机如何知道我希望二极管什么时候点亮,亮多久呢?这就需要我们将自己的意愿通过编写程序下载进入单片机中进行执行,让它按照我们的意愿在引脚输出高低电平,从而控制发光二极管的亮灭。三、单片机结构单片机长什么样?如图所示就是一个单片机的外形,我们可以看到,单片机不过就是一块有很多脚的芯片,我

3、们称这些“脚”叫做“引脚” 。单片机就是通过这些引脚对外界进行智能控制的。2图 1- 1我们学习单片机,首先要知道这些引脚的作用是什么,如图所示,让我们一起来认识这些引脚。1、区分芯片引脚序号我们可以在单片机表面上找到一个凹进去的小圆坑,这个小圆坑所对应的引脚就是第1 引脚,然后按逆时针方向数下去,一直到最后一个引脚。如图所示一共有 40 个引脚。2、 电源引脚和时钟引脚图中第 20 脚 GND 和第 40 脚 Vcc 为电源引脚,给单片机供电。第 18 脚和 19 脚为时钟引脚,大家可以暂时不用了解。3、I/O 口引脚3图 1- 2 四、学习单片机必备基础知识1、电平的概念什么是电平?“电平

4、”就是指电路中两点在相同阻抗(“阻抗”可以理解为电阻)下电量的相对比值。举个例子,人们在初学“电”的时候,往往把往往把抽象的电学概念用水的具体现象进行比喻。如水流比电流、水压似电压。解释“ 电平” 不妨如法炮制。我们用“水平”来比喻“电平”如人们常说到张某工作很有水平、李某办事水平很差。这样的话都知其含义所在。即指“张某 ”与“ 李某” 相比而言。电平就是指电路中两点电量(“电量”可理解为电压)的比较。学习单片机只需了解两种电平:高电平和低电平,我们定义单片机输入与输出的为TTL 电平,其中高电平为+5V,低电平为 0V。什么是 TTL 电平?TTL 电平采用二进制规定,+5V 等价于逻辑“1

5、” ,0V 等价于逻辑“0” 。这样一来,我们在编写程序中如果对某个引脚赋值为“1”那个引脚就输出高电平,同理,若我们赋值为“0” ,对应的引脚就输出低4电平。2、二进制与十六进制 逻辑运算大家都知道,十进制的特点是“逢十进一,借一当十” 。同理,二进制的特点就是“逢二进一,借一当二” 。在二进制中只有“0”和“1” ,比如 1110 0101B(“B”为二进制后缀) 就是二进制。那么,二进制和十进制如何转化呢?举个例子,二进制 11010011B 转化为十进制就是 十六进制与二进制大同小异,十六进制为“逢十六进一,借一当十六” 。十进制中 0-15 用十六进制表示为 0-9,A,B,C,D,

6、E,F,即十进制中 10 对应十六进制 A,11 对应 B当我们写的是十六进制时,要在前面加上 0x(注意 0 是“零”不是字母 O),举个例子,十六进制0x7f 换算成二进制为“0111 1111”换算成十进制为 715十进制 二进制 十六进制 十进制 二进制 十六进制0 0 0 8 1000 81 1 1 9 1001 92 10 2 10 1010 A3 11 3 11 1011 B4 100 4 12 1100 C5 101 5 13 1101 D6 110 6 14 1110 E7 111 7 15 1111 F表 1- 1逻辑运算“与”运算是实现“必须都有,否则就没有”这种逻辑关系

7、的运算,其运算符为“ /声明单片机 P1 口的第一位void main() /主函数Led1=0; /*点亮发光二极管*/也许大家看到这个简单的 C 程序,也是一头雾水。它为什么要声明单片机 P1 口的第一位 P1.0 呢?(注:P1.0 口在 C 程序中是用 P10 来表示的) 。为什么不直接使P10=0 呢?这是因为我们若要控制某个发光二极管(上图是 D1) ,也就是要控制单片机 I/O 口的某一位(上图是 P1.0) ,必定要声明这一位,否则单片机不知道我们要操作的是什么东西,所以我们在程序中声明了单片机 P1 口的第一位(sbit 是一个声明位的操作,相当于 C 程序中要用到整型时,用

8、 int 来声明) 。比如,我们想给 P1.0 一个高电平,我们直接给 led1 赋值 1 就行了。11由于 LED 正常发光时其两端的电压约为 1.7V,如果不接限流电阻, LED 两端的电压要么为 5V,要么为 0V,当 5V 时很可能烧坏 LED,所以我们还得给它加上一个限流电阻 R(一般为 1K) 。2、点亮多个 LED如图,我们要控制第 1, 3, 5,7 个亮,第 2,4,6,8 个灭该怎么办呢?当然,我们可以以上面的方法(单独控制一个引脚)来实现,下面我们介绍一种更为简单的方法(同时控制一个 I/O 口的 8 个引脚) 。图 2- 4 单片机控制流水的电路图P1 口共 8 个引脚

9、,每个引脚对应一个二进制位。8 个引脚即八个二进制位。P1.0对应最低位,P1.7 对应第 8 位。如我们对 P1 口赋值 1011 1110,则 P1 口的第一引脚和第七引脚为低电平,其它引脚为高电平。上面的电路图我们只画了控制外围电路部分,而单片机自身的电源电路等都没画出来,但不等于没有,因为它也需要电源给其供电才能正常工作。如上图所示, 8 个LED 正极端已于 +5V 的直流电源相连(我们称之为共阳极接法) ,都获得了一个高电平,它们的负极端又分别与 P1 端口的 8 个引脚相连,只要我们控制 P1 端口八个引脚的电平输入,我们就能分别控制 8 个 LED 的亮与灭。程序如下:#inc

10、lude /52 系列单片机头文件12void main() /主函数P1=0xaa; /*对 P1 口的 8 个引脚进行位操作*/ 注意区别上一个 C 程序,这里不再对 P1 口的某一位进行声明,而是在主函数中直接对单片机 P1 口的 8 个引脚进行操作, “0x”表示十六进制数,转换成二进制是10101010,那么对应的发光二极管负极端获得的高低电平如表 1.4。 LED D1 D2 D3 D4 D5 D6 D7 D8负极端电平 0 1 0 1 0 1 0 1表 2- 1这就实现了 1, 3, 5,7 亮,2,4,6,8 灭。我们将 0xaa 转换成十进制后为170,也可以直接对 P1 口

11、进行十进制数的赋值,如“P1=170;” ,其效果是一样的,只是麻烦了许多。因为无论是几进制的数,在单片机内部都是以二进制数形式存在的,只要是同一个数值的数,其在单片机内部都是用二进制的同一种形态来表示。上面介绍了如何点亮一个发光二极管,如何控制流水灯的亮与灭。如果你能控制流水灯,使它们能按你的意愿亮与灭,可以这么说,你对单片机已经入门了。13第三天 按键原理及其应用一、什么是按键提到按键大家都不会陌生,如图所示为 51 单片机开发板上的按键实物图和电路图,它可以通过跳帽(就是一根短接线)切换成独立按键或矩阵键盘两种模式,J11 是由三根插针(图中标号 1、2、3)组成。当我们使用独立按键时,

12、应该把跳帽跳到左端(相当于让 1、2 短接) ,当我们使用矩阵键盘时,应该把跳帽跳到右端(相当于让2、3 短接) 。图 3- 1 按键实物图14图 3- 2 按键电路图大家可能会问,什么又是独立按键和矩阵按键呢?当我们使用独立按键时,只有S1、S2、S3、 S4 四个按键能够工作,其他按键是不工作的。当我们需要多于四个按键的时候,我们可以使用矩阵键盘,也就是一共 4*4=16 个按键可以工作。当然,矩阵键盘的程序要复杂的多。二、按键是如何工作的按键原理非常简单,当你用手按下时开关闭合,线路导通,松手时开关断开,线路断开。它是如何与单片机联系起来,达到控制的目的呢?这里我们就需要按键检测程序,我

13、们知道,I/O 口既可以做输入口又可以做输出口,在这里我们就要用到其输入功能,我们可以把按键的一端接地,另一端与单片机某个 I/O 口相连,开始时先给该 I/O 口赋一高电平(实际上如果没有对 I/O 口赋值,I/O 口都默认为高电平) ,然后让单片机不断检测该 I/O 口是否变为低电平,当按键闭合时,即相当于该 I/O 口通过按键与地相连,变为低电平,一旦程序检测到 I/O 口变为低电平则说明按键被按下,然后执行相应的指令。按键连接方法很简单,如图所示,按键一端接地,另一端接与单片机任一 I/O 口相连,按键在被按下时,其触电电压变化过程如图15图 3- 3 从图中可以看出,在实际情况下,我

14、们在按下和释放按键的瞬间都会有抖动现象,抖动时间一般在 5-10ms。在抖动的这段时间里电压是不稳定的,因此单片机在检测键盘是否按下时都要加上去抖动操作,也就是把抖动时间给排除掉,一般我们用软件延时的方法就能解决这个问题。在编写按键程序时,需要在检测按下时加入去抖动的延时函数。三、如何编写按键检测程序如图所示为按键检测流程图开始延时检测是否有键按下检测是否有键按下执行相应程序YYNN16四、按键检测实例程序图 3- 4 按键控制 LED 电路图如图 3-4 所示是一个用 S1、S2 两个按键控制 LED 亮灭的电路仿真图,它实现的功能是:按下 S1,LED 亮,按下 S2,LED 灭。我们结合

15、这个电路的程序,让大家对按键有一个基本的认识。程序如下:#include /包含头文件,一般情况不需要改动,写在程序最前面sbit S1=P10; /定义按键 S1 位置,将 S1 与 P1.0 口相连sbit S2=P11; /定义按键 S2 位置,将 S2 与 P1.1 口相连sbit LED1=P20; /定义 LED1 位置,将其与 P2.0 相连/*-延时子程序-*/void delay(unsigned int i)while(i-); /循环 i 次,当 i 减小到 0 时跳出循环17/*-主函数-*/main()while(1) if(S1=0) /如果 S1 等于 0,说明按

16、键 1 被按下 delay(1000); /进行去抖动处理if(S1=0) LED1=0; /检测按键确实按下,点亮 LED1 if(S2=0) /如果 S2 等于 0,说明按键 2 被按下 delay(1000); /去抖动处理if(S2=0) LED1=1; /检测按键确实按下,熄灭 LED1程序分析:主程序进来就一个 while(1)死循环,循环中检测是 S1 还是 S2 按下,如果第一个按键 S1 按下,则 S1 等于 0,然后延时一段时间再检测 S1 是否还等于 0,即去抖处理,如果 S1 还等于 0,说明 S1 确实按下,就点亮 LED1。如果第二个按键 S2 按下,则 S2 等于

17、 0,r 然后延时一段时间再检测 S2 是否还等于 0,即去抖处理,如果 S2 还等于 0,说明 S2 确实按下,就熄灭 LED1。延时函数的原理就是,当单片机执行一个 while(i-)循环语句时,就消耗了一部分时间,时间的多少有 i 的初始值决定。18第四天 数码管介绍及其应用一、什么是数码管图 4- 1 数码管实物图数码管是单片机系统中常用的显示器件,每个数码管由 8 段 LED 构成,组合起来可以显示 0,1,2,3,4,5,6,7,8,9 和部分英文字母。二、数码管的硬件结构共阴极图(a)是数码管外观图,一位数码管含有 10 个引脚,a,b,c,d,e,f,g,dp,和两个 GND,

18、两个 GND 是连在一起的。图(b)是数码管的内部结构图。 图(b)中又有两种接法,一种是将 8 段 LED 的阴极(负极)一起连在接地端,称为共阴极接法,一种是将 8 段 LED 的阳极(正极)一起连在+5V 的电源上,称为共阳极接法。abcdegGNDfdpGNDabcef gd dpabcdefgdp dpgfedcba 5V( a) ( b) 共阳极19三、数码管的显示原理使用 LED 显示器时,要注意区分这两种不同的接法。下面我们以共阳极数码管为例介绍数码管的编码原理。假设我们要数码管显示 2,那么就是要让 a,b,d,e,g 亮,其它的不亮。若显示 8,那么就让 a,b,c,d,e

19、,f,g 亮,dp 不亮。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计 8 段。因此为 LED 显示器提供的编码正好是一个字节(8 位) 。每一位控制一段 LED,对应关系如下表:D8 D7 D6 D5 D4 D3 D2 D1dp g f e d c b a表 4- 1其中,D1 表示 8 位二进制位的第一位, D2 表示 8 位二进制位的第二位,以此类推。如果我们要数码管显示 2,即 a,b,d,e,g 亮,其它的不亮。因为数码管是共阴的,所以给 a,b, d,e ,g 赋 0 才亮,即 1010 0100,即 0xa4。 如果显示 8,即 a,b,c,d,e

20、,f,g 亮,dp 不亮。编码 1000 0000,即 0x80。以下是共阳极编码列表:显示的数 0 1 2 3 4 5 6 7 8 9编码 0xc0 0xf9 0xa4 0xb0 0x99 0x92 0x82 0xf8 0x80 0x90表 4- 2会编共阳的,就会编共阴的, 共阴极编码列表如下:显示的数 0 1 2 3 4 5 6 7 8 9编码 0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0x6f表 4- 3四、程序示例让数码管重复显示 0,1,28,9。数码管(共阳)接在 P2 口上。硬件示意图如下:20图 4- 2 数码管硬件电路图分析:

21、我们控制数码管的显示,数码管的八个引脚是连在 P2 口的,所以就是对 P2 口赋值的过程。程序如下:#includevoid delay(int x) /延时函数while(x-); main()while(1) P2=0x c0; /显示 0delay(8000); /延时P2=0xf9; /显示 121delay(8000); /延时P2=0xa4; /显示 2delay(8000); /延时P2=0xb0; /显示 3delay(8000); /延时P2=0x99; /显示 4delay(8000); /延时P2=0x92; /显示 5delay(8000); /延时P2=0x82; /

22、显示 6delay(8000); /延时P2=0xf8; /显示 7delay(8000); /延时P2=0x80; /显示 8delay(8000); /延时P2=0x90; /显示 9delay(8000); /延时 程序分析:主程序中就一个大循环,循环为 P2 口赋值,从而显示 0 到 9。每两个数之间有个延时,为什么要延时呢? 是因为我们的单片机处理速度是非常快的,不延时我们根本没法看清数码管显示的是什么,所以必须要有延时。五、数码管的动态扫描上面我们只讲到了用一个 I/O 口控制 1 位数码管的显示,若是要控制两个数码管的显示呢?很多人说用两个 I/O 口,这个是可以实现的,但我们要

23、控制 8 个数码管呢,岂不是要 8 个 I/O 口吗?51 单片机只有 4 个 I/O 口,那不是不能控制 8 个数码管了?所以为了节约 51 单片机的引脚资源,我们引入了数码管的动态扫描。221、什么是动态扫描数码管的动态扫描就是先让第一位数码管显示,然后第一位灭,再让第二位显示,然后第二位灭,第 n 位数码管显示,然后第八位灭。然后重复上述状态,当显示速度非常快的时候,我们看到的就是 n 位数码管同时显示。2、怎么实现动态扫描下面我们以四个数码管(共阳极)的显示为例讲述动态扫描的使用方法四个数码管的引脚连接图如下:图 4- 3 四位数码管电路图四个数码管的 a 脚连在一起,b 脚连在一起,

24、dp 脚连在一起,每个数码管的公共引脚(com)独立,com 脚接在一个三极管(Q3 )上,大家先不用管三极管是怎么用的,你只需知道扫描信号有高电平时,扫描信号的那个端子就与(com) 连通了,如扫描信号的 A 端为高电平,那么 A 端就与第四个数码管的( com)接通了。如果我们要第一个数码管显示 1,第一个数码管显示 2,第一个数码管显示 3,第一个数码管显示 4。我们该怎么做?用动态扫描的方法第一步:先让第一个数码管显示 1,其它的关闭。给 a,b,c,d,e,f,g,dp 赋值,即 0xf9,再给 D 端一个高电平(打开第一个数码管) ,给 ABC 端低电平(关闭其它 3 个数码管)

25、。第二步:先让第二个数码管显示 2,其它的关闭。给 a,b,c,d,e,f,g,dp 赋值,即 0xa4,再给 C 端一个高电平(打开第二个23数码管) ,给 ABD 端低电平(关闭其它 3 个数码管) 。第三步:先让第三个数码管显示 3,其它的关闭。给 a,b,c,d,e,f,g,dp 赋值,即 0xb0,再给 B 端一个高电平(打开第三个数码管) ,给 ACD 端低电平(关闭其它 3 个数码管) 。第四步:先让第四个数码管显示 4,其它的关闭。给 a,b,c,d,e,f,g,dp 赋值,即 0x99,再给 A 端一个高电平(打开第四个数码管) ,给 BCD 端低电平(关闭其它 3 个数码管

26、) 。重复上面四步,这就实现了动态扫描。3、应用实例假设 a,b,c,d,e,f,g,dp 接在 P2 口,信号端 ABCD 分别接在 P3.0,P3.1 ,P3.2,P3.3 上,硬件连接如图所示:图 4- 4 四位数码管仿真电路图实现动态扫描的源程序如下:#includemain()int i;24int dat=0xf9,0xa4,0xb0,0x99; /数组定义显示数据 1,2,3,4 的编码int wei=0x01,0x02,0x04,0x08; /数码管位数的编码for(i=0;i4;i+)P3=weii; /只打开第 i 个数码管P2=dati; /给数码管显示 i 的编码if(

27、i= =4) i=0; /当 i 等于 4 时,让 i=0,从而不让程序跳出 for 循环 程序分析:主函数进来定义了两个数组,dat用来显示数据,wei用来控制显示哪个数码管。dat0表示数组中第一个数据,即 0xf9, dat1表示数组中第二个数据,即 0xa4, dat2表示数组中第三个数据,即 0xb0, dat3表示数组中第四个数据,即 0x99, 对于 wei也是同样的道理。然后有个 for 循环,i 等于 0 时,第一个数码管显示 1,i 等于 1 时,即第二个数码管显示2,i 等于 2 时,即第三个数码管显示 3,i 等于 3 时,即第一个数码管显示 4,当 i 等于 4时,给

28、 i 赋值,让 i 等于 0,继续下一次循环。因为单片机运算速度非常快,如此循环下去,我们看到的就是四个数码管同时显示 1234。25第五天 中断系统一、什么是中断单片机 CPU 在处理某一事件 A 时,发生了另一事件 B 请求 CPU 迅速去处理(中断发生) ;CPU 暂时中断当前的工作,转去处理事件 B(中断响应和中断服务) ;待 CPU 将事件 B 处理完毕后,再回到原来事件 A 被中断的地方继续处理事件 A(中断返回) ,这一过程称为中断。 例如:当你正在洗衣时,突然手机响了(中断发生) ,你暂时中断洗衣的工作,转去接电话(中断响应和中断服务) ,待你接完后,再回来继续洗衣(中断返回)

29、 ,这一过程就是中断。二、中断系统中断系统结构图如下:图 5- 1 中断示意引起单片机的 CPU 中断的根源,称为中断源。中断源向 CPU 提出的中断请求。CPU暂时中断原来的事务 A,转去处理事件 B,对事件 B 处理完毕后,再回到原来被中断的地方(即断点) ,称为中断返回。实现上述中断功能的部件称为中断系统(中断机构) 。2680C51 的中断系统有 5 个中断源,也就是说有 5 种情况发生时,会使单片机停下来去处理中断程序,5 种中断源分别为外部中断 0(INT0) ,外部中断 1(INT1 ) ,定时器中断0(T0) ,定时器中断 1(T1)和串行口中断。三、中断的优先级但两个中断同时

30、发生时,我们的 CPU 会先响应哪个中断呢?这就涉及到中断优先级的问题。默认状态下,CPU 会优先响应中断优先级别高的中断,当把优先级高的中断执行完后,在回来执行优先级级别低的中断。图 5- 2 中断优先级次示意图51 单片机的中断级别如下:中断源 中断优先级级别 中断序号INT0(外部中断 0) 最高 0T0(定时器中断 0) 第 2 1INT1(外部中断 1) 第 3 2T1(定时器中断 1) 第 4 3TI/RI(串行口中断) 最低 427表 5- 180C51 单片机的中断优先级有三条原则: CPU 同时接收到几个中断时,首先响应优先级别最高的中断请求。 正在进行的中断过程不能被新的同

31、级或低优先级的中断请求所中断。 正在进行的低优先级中断服务,能被高优先级中断请求所中断。四、中断的优点对于单片机初学者会问到个问题:“中断就是处理一事件(中断子程序) ,用户自定义一个子函数也可以处理呀,这中断不就和子函数没区别吗?那还有什么用呢?”其实中断的功能远远强于普通的子函数,下面我们来看看中断的优点 分时操作:CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用率 实时响应:CPU 能够及时处理应用系统的随机事件,系统的实时性大大增强; 可靠性高:CPU 具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。五、中断响应条件中断源有中断请求此中断源的中断允许位为 1

32、CPU 开中断(即 EA=1)以上三条同时满足时,CPU 才有可能响应中断。六、怎么使用中断要使用中断,首先要学会使用中断允许寄存器,首先解释一下什么叫寄存器。寄存器: 在单片机中,寄存器是个高频词,很多初学者不理解它,寄存器实质是一个存储单元,51 单片机的寄存器是 8 位的,可以存 0000 00001111 1111,但寄存器的功能又比普通的存储单元的功能强,向寄存器写如不同的数,就能完成不同的动作,让单片机实现不同的功能,这是普通存储器所不能做到的。28中断允许寄存器如下:位序号 7 6 5 4 3 2 1 0位符号 EA ET2 ES ET1 EX1 ET0 EX0中断允许位名称总中

33、断 无效位Timer2中断串行口中断Timer0中断外部中断 0Timer0中断外部中断 0表 5- 2中断寄存器共 8 位,每一位表示控制不同的子中断。我们要开哪个中断,就将该中断的允许位赋 1,要关哪个中断,就将该中断允许位赋 0。如我们开串行口中断,首先开总中断,即 EA=1;再开串行口中断,即 ES=1。这样我们就完成了开串行口中断的动作。大家很可能会问到:当中断发生时,CPU 怎么处理呢?这就涉及到中断子程序了,中断发生时 CPU 就立即停下当前动作,立刻跳至中断子程序中。中断子程序就是中断时CPU 要做的动作。下面介绍中断子程序的写法void 函数名() interrupt 中断号

34、 中断服务程序的内容说明:中断函数无返回值,所以最前面用 void,中断函数无任何参数,所以()中无任何内容,interrupt 为中断的英文名,中断号是指单片机中几种中断源的序号。中断的具体运用(定时器中断)我们将在下一章介绍。29第六天 定时器/计数器一、什么是定时器/计数器定时器/计数器是集成在单片机内部,能够实现定时和计数的硬件结构(8051 有两个定时器 Timer0 和 Timer1) 。与软件定时相比,增大了定时精确度,提高了 CPU 的利用率。二、定时器是怎么定时的定时器的实质是一个加 1 计数器(16 位) ,加 1 计数器每个机器周期完成加 1 的动作,它由高 8 位和低

35、8 位两个寄存器组成,最多能装 1111 1111 1111 1111。计数器从初始值开始不断的加 1,加到溢出值(上限值) ,定时时间就到了,此过程经历的时间就是我们所定的时间。说明:1 个机器周期等于 12 个振荡周期,振荡周期即晶振振荡的周期,也就是 1/晶振频率。 1、 计数原理加 1 计数器(16 位)每隔一个机器周期就加 1,当加到计数器为全 1 时,即 1111 1111 1111 1111。再过一个机器周期(再加 1)就使计数器就溢出(溢出就是计数已经满了,再加 1 就计数器容纳不下了,这就是溢出) , 如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则

36、表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加 1 计数器的计数值。说明: 读者可能有疑问,上面不是说了寄存器是 8 位的吗,这计数器为什么就 16 位呢?这其实是两个寄存器(TLX 和 THX)组成一个 16 位的计数器。TLX 计数器的低 8 位(16 位二进制位的后 8 位) ,THX 计数器的高 8 位(16 位二进制位的前 8 位)说明:X 可以是 0 或 1,若计数器是 Timer0,则 X 为 0;若计数器是 Timer1,则 X为 12、 定时原理设置为定时器模式时,加 1 计数器是对内部机器周期计数。计数值 N 乘以机器周期Tcy 就是定时时间 t 。30例 利用

37、定时/ 计数器 T1 的方式 1,产生 10ms 的定时,设晶振频率为 12 MHz,计算计数初值 X解:由于晶振为 12 MHz,所以机器周期 Tcy 为 1 s。工作方式 1,查表 4-1 知计数上限值为 65536。所以:计数值 Nt/ Tcy 10000/1 10000X计数上限值N=65536 1000055536三、怎么使用定时器/计数器1、8051 有两个定时器 Timer0 和 Timer1,每个定时器有四种工作模式。不同模式的计数范围不同,其它区别大家现在不用关心。模式 位数 计数范围Mode0 13 0213(8191)Mode1 16 0216(65536)Mode2 8

38、 028(255)Mode3 8 028(255)表 6- 1从上一章中断的使用中,大家知道控制中断就是向中断允许寄存器写数,那么同理可知,控制定时器就是向定时器控制寄存器(TCON )中写数。我们可以单独取一位处理写,也可对 T CON 整体赋值。定时器控制寄存器如下位序号 7 6 5 4 3 2 1 0控制位名称 TR1 TR0表 6- 2TR1(TCON.6):T1(定时器 1)运行控制位。TR1 置 1 时,T1 开始工作;TR1 置 0时,T1 停止工作。TR1 由软件置 1 或清 0。所以,用软件可控制定时/计数器的启动与停止。TR0(TCON.4):T0(定时器 0)运行控制位,其功能与 TR1 类同。我们只需掌握这两位就够了。2 、定时器是使用步骤:

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报