版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机应用系统的接口设计gai(共190张PPT)单片机应用系统的接口设计gai(共190张PPT)学习目标掌握单片机最小系统设计掌握单片机外扩存储器方法掌握单片机接口技术掌握单片机中断及定时器应用了解模数、串口通信第2页,共190页。学习目标掌握单片机最小系统设计第2页,共190页。3.1最小系统3.2总线及接口扩展3.3内存扩展设计技术3.4 LED、数码显示设计3.5 键盘接口技术3.6 中断、定时接口技术3.7数模(D/A)转换接口设计3.8模数(A/D)转换接口设计3.9串行通信接口设计3.10 常见问题主要内容第3页,共190页。3.1最小系统主要内容第3页,共190页。3.1最小
2、系统 什么是单片机最小系统?最小系统是指单片机运行的最基本的硬件,是单片机正常工作的基本保障。为什么要做最小系统?最小系统主要用来判断系统是否可完成正常的启动与运行。第4页,共190页。3.1最小系统 什么是单片机最小系统?第4页,共190页。MCS51单片机最小系统电路除电源外,主要由三大块组成:复位电路、时钟电路和单片机,如图3.1所示。 图3.1 MCS-51最小系统第5页,共190页。MCS51单片机最小系统电路除电源外,主要由三大块组成:复位复位电路单片机系统是由硬件和软件构成的,软件是由程序组成的。程序则由系列指令构成,正常情况下,希望系统运行时是从程序的固定位置(入口处)开始执行
3、,复位的目的就是保证程序从入口处运行,若不能保证复位要求,程序则很可能不从规定处执行,会造成意想不到的问题,如“死机”、“跑飞”。 系统为什么要用复位电路?第6页,共190页。复位电路单片机系统是由硬件和软件构成的,软件是由程序组成的。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。当系统处于正常工作状态时,且振荡器稳定后,从单片机的复位引脚RST输入一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统基本的复位方式有:上电复位和手动按钮复位 第7页,共190页。单片机在启动时都需要复位,以使CPU及系统各部件处于
4、确定的初(a)上电复位 (b)手动按钮复位 图3.2 复位电路说明:复位电路中的器件取值可以根据所使用的时钟电路频率,满足高电平大于两个机器周期(24个振荡周期)。图上给出的值是在6MHz晶振状态下,单片机复位电路的典型值。第8页,共190页。(a)上电复位 (b)手动按钮复时钟、振荡电路单片机时钟电路是用来配合外部晶振产生单片机工作所需的时钟信号。该电路为单片机提供运行时钟,是控制单片机运行速度的节拍。如果运行时钟为0脉冲, 则单片机不工作;若超出单片机的正常工作频率则会使单片机超负荷运行,直至导致芯片发烫、烧毁。单片机时钟电路有内部时钟和外部时钟电路两种 。单片机时钟电路的作用是什么? 第
5、9页,共190页。时钟、振荡电路单片机时钟电路是用来配合外部晶振产生单片机工作3.2总线及接口扩展 计算机总线是什么? 总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。计算机总线传输的信号是电压还是电流信号?一般情况下传输的信号是以电压形式出现的。第10页,共190页。3.2总线及接口扩展 计算机总线是什么? 第10页,共190三总线概念 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线DB、地址总线AB和控制总线CB,分别用来传输数据、数据地址和控制信号。 第11页,共190页。三总线概念 按照计算机所传输的信息种类,计算机的总线可以划分图3
6、.3 MCS51单片机总线引脚结构第12页,共190页。图3.3 MCS51单片机总线引脚结构第12页,共190页。总线接口常用芯片 74LS373锁存器8D锁存器8输入:1D8D8输出:1O8O输入允许端:OE (1)输出预选端:G (11)74LS373 电平触发,锁存缓冲74LS374 上升沿触发74LS273 无三态门,用于不需三态场合74LS138 3-8 译码器74LS244 8路单向数据缓冲器74LS245 8路双向数据缓冲器缓冲器:无锁存功能,在外设和CPU之间起缓冲 驱动和隔离作用。总线缓冲器具有三态功能。锁存器:除具有缓冲功能外还有数据锁存记忆功能。 第13页,共190页。
7、总线接口常用芯片 74LS373锁存器74LS373 图3.4 74LS138管脚图第14页,共190页。图3.4 74LS138管脚图第14页,共190页。74LS138真值表LLLLLLLLCAB第15页,共190页。74LS138真值表LLLLLLLLCAB第15页,共19074138 功能简表第16页,共190页。74138 功能简表第16页,共190页。 74LS373的真值表H为高电平,L为低电平,Q0为原状态,Z为高阻抗,为任意值。输出允许有效低电平:LE为高时输出随输入;LE为低时,输出不变;74LS373锁存器主要用于锁存信息。常用的锁存器还有74LS374,573,574,
8、Intel 8282和8283等第17页,共190页。 74LS373的真值表第17页,共190页。图3.5 74LS373D7D0为三态门输入端;O7O0为三态门输出端;GND为接地端;Vcc为电源端;OE 为三态门使能端,OE =0,三态门正常输出,OE =1,三态门输出高阻态;LE为8位锁存器的控制端,当LE=1,则输出跟随输入(即锁存器透明),当LE=0,则输出保持不变,即将D7D0的状态存入O7O0。 第18页,共190页。图3.5 74LS373D7D0为三态门输入端;O7O0表3.2 74LS373的真值表表中:H为高电平,L为低电平,Q0为原状态,Z为高阻抗,为任意值。Dn为输
9、入端; On为输出端;LE为8位锁存器的控制端,当LE=1,则输出跟随输入(即锁存器透明);当LE=0,则输出保持不变74LS373是常用的地址锁存器芯片,共有20个引脚。它实质是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。 第19页,共190页。表3.2 74LS373的真值表表中:H为高电平,L为低电74LS245是常用双向三态总线缓冲、驱动器,可双向传输数据,共有20个引脚 。图3.6表3.3 74LS245真值表允许端/OE与方向端DIR 共同控制8路A1A8和8路B1B8满足表1.3 逻辑。 第20页,共190页。74LS245
10、是常用双向三态总线缓冲、驱动器,可双向传输数据发光二极管发光二极管:单向导电性,通过5mA左右电流即可发光,电流越大,亮度越强,但若电流过大会烧毁二极管,一般控制在320mA。工作电压:红色发光二极管1.7-2.5V绿色发光二极管2.0-2.4V黄色发光二极管1.9-2.4V蓝/白色发光二极管3.0-3.8V 限流电阻二极管串联电阻的目的是为了防止发光二极管和P1.7引脚流过的电流过大,烧毁二极管或单片机,所以该电阻也称为“限流电阻”。限流电阻的选择:假设电源电压为VCC,发光二极管的导通压降为VDD,导通时流过二极管的电流为I,则限流电阻R为:VCC-VDD=IR第21页,共190页。发光二
11、极管发光二极管:单向导电性,通过5mA左右电流即可发光写地址PO锁存低地址的时序Dn为输入端; On为输出;LE为8位锁存器的控制端,当LE=1,则输出跟随输入(即锁存器透明);当LE=0,则输出保持不变ALE、WR由CPU自动产生;可用wr接138经过控制的le控制转移数据;第22页,共190页。写地址PO锁存低地址的时序Dn为输入端; On为输出;ALE1、wr控制le的过程;2、ale控制le的过程;3、wr的动态变化;在P0输出数据之后有 跳变,有下降的过程;结合54页的时序图可以通过wr控制74138再控制7404输出信号到74373最终控制数据的锁存;4、p0口输出低地址的过程没有
12、被锁存;第23页,共190页。1、wr控制le的过程;第23页,共190页。典型电路图3.7通过74LS245扩展单片机的P0口第24页,共190页。典型电路图3.7通过74LS245扩展单片机的P0口第24页典型电路2-D出来的LEDC000和ledc800分别控制1-B1,1-B2的LE端子1-A1-B11-B22-A2-B2-C2-D1-C11-C2地址为:OXC000地址为:OXC8001-B1,1-B2的LE口名称改成LEDC000,和LEDC800;2-D作相应改动1为P0口出来的,2为p2口出来的 ;按照abcd的流向走此例中373锁存的是数据第25页,共190页。典型电路2-D
13、出来的LEDC000和ledc800分别控制12-D2-A至2-B 至2-C(需要辅助单片机的WR【低有效】信号控制138);至2-D输出控制信号;1-A,1-B1,1-C1在2-D的控制下1-B1的LE为高输出信号再为低锁存信号; 1-A,1-B2,1-C2类似;地址为:OXC000地址为:OXC8001-B1,1-B2的LE口名称改成LEDC000,和LEDC800;2-D作相应改动所谓外部地址指P2,P0口输出相应值之后,能影响某些器件使之工作在锁存、译码、流向变、公共端电压变化等时间上变化的状态;1-b1的le为高时,wr为低1-b1上恰为数据;第26页,共190页。2-D2-A至2-
14、B 至2-C(需要辅地址为:OXC000地C语言程序清单:#include#include#define uchar unsigned char#define uint unsigned int void Delay(uint t)uint i=1141;for(;t0;t-)for(;i0;i-);/for(i=1141;i0;i-)第27页,共190页。C语言程序清单:第27页,共190页。void main()uchar xdata *led0=0 xc000;uchar xdata *led1=0 xc800;/定义两个指针,并给指针赋值uchar i=0 x01,j=0;*led0=
15、0 xff;/置为高电平;*led1=0 xff;/置为高电平;while(1)/循环for(j=0;j8;j+)_nop_();*led0=i;/为按位取反;Delay(5000);i=(i7);/ 为左移;|为按位或 /1111,1100 和0000,0001 相或得1111,1101;第28页,共190页。void main()while(1)/循环第28页*led0=0 xff;for(j=0;j8;j+)_nop_();*led1=i;Delay(5000); i=(i7);/0;j-)数据总线(Data Bus,DB)由P0口提供,其宽度为一个字节(8位)。控制总线(Control
16、 Bus,CB)是单片机发出的以控制片外ROM、RAM和I/O口读/写操作的一组控制线。 控制总线包括片外系统扩展用控制线和片外信号对单片机的控制线。系统扩展所用控制线包括WR,RD ,PSEN,EA 和ALE。第32页,共190页。为低电平时,访问外部程序存储器;数据总线(Data Bus,图3.8 单片机三总线示意图第33页,共190页。图3.8 单片机三总线示意图第33页,共190页。2、扩展能力 MCS51单片机地址线为16位,因此在片外可扩展的存储器最大容量为64KByte,地址为0 x00 xFFFF。由于对片外数据存储器和程序存储器的访问使用不同的指令及控制信号,所以允许两者地址
17、重合,即对于8051系列单片机来说,片外可扩展的程序存储器与数据存储器的最大容量均为64KB。片外数据存储器地址为0 x00 xFFFF。 第34页,共190页。2、扩展能力第34页,共190页。当片内程序存储器与片外程序存储器的访问使用相同的操作指令,对两者的选择则靠系统控制线来实现。当EA=0时,选择片外程序存储器,即无论片内有无程序存储器,片外程序存储器的地址可从0 x0开始进行编址。当EA=1时,选片内程序存储器,若片内程序存储器容量为4KByte,则其地址为0 x00 x0FFF,片外程序存储器地址只能从0 x1000开始编址。第35页,共190页。当片内程序存储器与片外程序存储器的
18、访问使用相同的操作指令,对(3)扩展的实现 数据总线以P0口作8位数据的总线。数据总线的数据流是双向的,单片机有入和出。地址总线以P0口的低8位地址加上P2的高8位地址就可以形成16位的地址总线,达到64KByte的寻址能力。地址总线的数据流是单片机发出的,是单向的。第36页,共190页。(3)扩展的实现 第36页,共190页。控制信号总线ALE:地址锁存信号,用以实现对低8位地址的锁存。:片外程序存储器选通信号。:程序存储器选择信号。为低电平时,访问外部程序存储器;为高电平时,访问内部程序存储器。:片外数据存储器写控制信号。:片外数据存储器读控制信号。第37页,共190页。控制信号总线ALE
19、:地址锁存信号,用以实现对低8位地址的锁存总线驱动 在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动。 总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。 在对TTL负载驱动时,只需考虑驱动电流的大小。 在对MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑对分布电容的电流驱动。 第38页,共190页。总线驱动第38页,共190页。数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245
20、也是三态的,有一个方向控制端DIR。DIR=1时输出(AnBn),DIR=0时输入(AnBn)。系统总线中地址总线是单向的,因此驱动器可以选用单向的,如74LS244,还带有三态控制,能实现总线缓冲和隔离。第39页,共190页。数据总线是双向的,其驱动器也要选用双向的,如74LS245。4、典型案例图3.9 简单I/O接口扩展第40页,共190页。4、典型案例图3.9 简单I/O接口扩展第40页,共190页C语言程序清单:#include voidmain()unsigned char data tmp1, tmp2=0Xff;unsigned char xdata *pt1;pt1=0 xf
21、eff; /给指针赋地址值0 xfeffwhile(1) /循环 tmp1=*pt1;/从74HC245读入键盘数据 if (tmp1!=tmp2)/判断输入改变时, *pt1 =tmp1;/从74HC373输出LED显示数据 tmp2=tmp1;/下一次的比较是对按键变化的比/较,所以需要将更新后的按键值最为下一次的比较依据; 第41页,共190页。C语言程序清单:第41页,共190页。第42页,共190页。第42页,共190页。典型应用 图3.11 存储器扩展第43页,共190页。典型应用 图3.11 存储器扩展第43页,共190页。3.4 LED、数码显示设计将系统正在运行的状态告诉操作
22、者,需要显示;操作者需要将控制的信息输入到系统,输入的信息成功情况需要显示。常用的显示方式有:LED彩灯显示、数码管显示、液晶显示。 为什么需要显示?有哪些显示方式?第44页,共190页。3.4 LED、数码显示设计将系统正在运行的状态告诉操作者,显示 图3.12 1只彩灯闪烁显示电路第45页,共190页。显示 图3.12 1只彩灯闪烁显示电路第45页,共190页。#include #define uchar unsigned char sbit P1_0=P10;void delay05() uchar i,j,k; for(i=5;i0;i-) for(j=200;j0;j-) for(k
23、=250;k0;k-) ; void main() while (1) P1_0=0;delay05();P1_0=1;delay05(); 第46页,共190页。#include 第46页,共190页。图3.13 8只彩灯循环显示电路第47页,共190页。图3.13 8只彩灯循环显示电路第47页,共190页。参考程序:#include#include#define uchar unsigned char #define uint unsigned intvoid Delay(uint t)/延时函数uint i=1141;for(;t0;t-)for(;i0;i-);第48页,共190页。参
24、考程序:第48页,共190页。void main()uchar i=0,j=0 x01;while(1)for(i=0;i8;i+)/循环8次P1=j;/将j按位取反从P1输出Delay(5000);j=(j7);第49页,共190页。void main()第49页,共190页。数码管的结构与原理 LED数码管的结构如图3.14所示,图中a-g七个笔段及小数点dp均为发光二极管。如果将所有发光二极管的阳极连在一起作为公共端,称为共阳数码管;如果将所有发光二极管的阴极连在一起作为公共端,称为共阴数码管。第50页,共190页。数码管的结构与原理 LED数码管的结构如图3.14所示,图中(a)共阴极
25、;(b)共阳极;(c)管脚配置图3.14 LED显示器共阳数码管的所有发光二极管的阳极均接高电平,所以只要a-g及dp引脚输入低电平,则相应笔段的发光二极管发光;共阴极数码管的所有发光二极管的阴极均接地,所以只要a-g及dp引脚输入高电平,则相应笔段的发光二极管发光。 第51页,共190页。(a)共阴极;(b)共阳极;(c)管脚配置共阳数码管的所有发表3.4 LED显示器的字段码第52页,共190页。表3.4 LED显示器的字段码第52页,共190页。数码管静态显示 在静态方式下,共阴极或共阳极公共端连接在一起接地或+5V;每一位显示器的字段控制线是独立的。当显示某一字符时,该位的各字字段线和
26、字位线的电平不变,也就是各字段的亮灭状态不变。静态显示方式编程简单,但占用I/O口线多,适合于显示器位数较少的场合。 第53页,共190页。数码管静态显示 在静态方式下,共阴极或共阳极公共端连接在一起 图3.15 四位静态LED显示器电路静态数码显示每一个数码管的显示笔画都要占用单独的具有锁存功能的I/O接口。即需N8个I/O控制线第54页,共190页。 图3.15 四位静态LED显示器电路静态数码显示每一个数静态显示数码管相应笔段一直处于点亮状态,因此功耗大,而且占用硬件资源多,几乎只能用在显示位数极少的场合。 优点:LED亮度高,可用在室外显示场合。程序工作量小。第55页,共190页。静态
27、显示数码管相应笔段一直处于点亮状态,因此功耗大,而且占用图3.16 静态显示典型电路所谓外部地址指P2,P0口输出相应值之后,能影响某些器件使之工作在锁存、译码、流向变、公共端电压变化等时间上变化的状态;第56页,共190页。图3.16 静态显示典型电路所谓外部地址指P2,P0口输出相数码管动态显示 动态显示的硬件特点是将所有数码管的同名段选线并联在一起,通过控制位选信号来控制数码管的点亮,如图3.15所示。数码管采用动态扫描显示,所谓动态扫描显示就是逐位轮流点亮每位显示器,即每个数码管的位选被轮流选中,多个数码管共用一组段选,字形码仅对位选被选中的数码管有效。 第57页,共190页。数码管动
28、态显示 动态显示的硬件特点是将所有数码管的同名段选线 图3.17 八位LED动态显示器电路 动态数码显示所有数码管的8个笔画段同名端连在一起,公共端各自独立。即需N+8个I/O控制线第58页,共190页。 图3.17 八位LED动态显示器电路 动态数码显示所有数码动态显示是多只数码管共享段码线,通过位选线(公共端)逐位逐位分时进行扫描显示(任时刻只有一只点亮)。其优点是占用硬件资源少,功耗小。软件工作量大. 必须注意:扫描周期必须控制在视觉停顿时间内,一般在20ms以内,否则会出现闪烁或跳动现象。最为广泛的一种显示方式。动态显示技术第59页,共190页。动态显示是多只数码管共享段码线,通过位选
29、线(公共端)逐位逐位表3.5 8位动态共阴LED显示状态(例: 0120)第60页,共190页。表3.5 8位动态共阴LED显示状态(例: 0120图3.18 动态显示典型电路所谓外部地址指P2,P0口输出相应值之后,能影响某些器件使之工作在锁存、译码、流向变、公共端电压变化等时间上变化的状态;第61页,共190页。图3.18 动态显示典型电路所谓外部地址指P2,P0口输出相典型应用 任务:用8位数码动态显示毛泽东诞辰年日期“18931226”。单片机的P0、P3口分别通过74LS245缓冲输出,进而分别控制8位共阴数码管的段选和位选。第62页,共190页。典型应用 任务:用8位数码动态显示毛
30、泽东诞辰年日期“1893图3.19 8位数码动态显示案例第63页,共190页。图3.19 8位数码动态显示案例第63页,共190页。参考程序:# include /包含51单片机的特殊定义code unsigned char dis_d=0 x3f, 0 x06, 0 x5b, 0 x4f, 0 x66, 0 x6d, 0 x7d, 0 x07,0 x7f, 0 x6f ; / 共阴极数码管字段码code unsigned char dis_w=0 xfe, 0 xfd, 0 xfb, 0 xf7, 0 xef, 0 xdf, 0 xbf, 0 x7f ; / 共阴极数码管位码void Del
31、ay() /延时 unsigned char mun=200;while(mun-);第64页,共190页。参考程序:第64页,共190页。void main() /主程序 while(1)P3=dis_w0;P0=dis_d1;Delay();P0=0 x00;/第一个数码管显示 1P3=dis_w1;P0=dis_d8;Delay();P0=0 x00;/第二个数码管显示 8P3=dis_w2;P0=dis_d9;Delay();P0=0 x00;/第三个数码管显示 9P3=dis_w3;P0=dis_d3;Delay();P0=0 x00;/第四个数码管显示 3P3=dis_w4;P0=
32、dis_d1;Delay();P0=0 x00;/第五个数码管显示 1P3=dis_w5;P0=dis_d2;Delay();P0=0 x00;/第六个数码管显示 2P3=dis_w6;P0=dis_d2;Delay();P0=0 x00;/第七个数码管显示 2P3=dis_w7;P0=dis_d6;Delay();P0=0 x00;/第八个数码管显示 6第65页,共190页。void main() /主程序第65页,拓展提高 动态数码管显示拖尾、重影如何解决?数码管动态显示可能会出现拖尾、重影的现象,解决的方法是:如果是先送位选信号,再送段选信号,则在换位时,将段选信号清除;如果是先送段选信
33、号后送位选信号,则在换段时,将位选信号清除。第66页,共190页。拓展提高 动态数码管显示拖尾、重影如何解决?第66页,共193.5 键盘接口技术按键有什么作用?如何识别按键是否按下?当人类将设置等数据信息传入计算机系统时,通常会采用键盘完成。单片机对于键盘的识别是通过读取键盘对应的高低电平信号来完成的。第67页,共190页。3.5 键盘接口技术按键有什么作用?如何识别按键是否按下?当概述 键盘接口的主要功能是对键盘上所按的键进行识别。使用专用的硬件进行识别的键盘称为编码键盘,使用软件进行识别的键盘称为非编码键盘,它具有结构简单、使用灵活等特点,因此被广泛应用于单片机系统。 第68页,共190
34、页。概述 键盘接口的主要功能是对键盘上所按的键进行识别。使用专用 图3.20 按键触点的机械抖动过程 图3.19 按键输入电路 第69页,共190页。 图3.20 按键触点的机械抖动过程 图软件去抖动前沿抖动稳定后沿抖动 按键抖动信号波形键盘消抖即检测出键闭合后执行一个延时程序,产生5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。第70页,共190页。软件去抖动前沿抖动稳定后沿抖动 按键抖动信号波形键盘消抖键盘消抖硬件消抖:如RC滤波电路第71页,共190页。键盘消抖硬件消抖:第71页,共190页。键盘消抖硬件消抖:如双稳态电路:RS触发
35、器为常用的硬件消抖电路。CD第72页,共190页。键盘消抖硬件消抖:CD第72页,共190页。独立键盘 独立键盘的每一个按键的电路是独立的,其中每个按键都独立地占用一条I/O数据线,按键输入均采用低电平有效。上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可不接上拉电阻。对于独立式键盘,一般采取逐条I/O口查询的方式来确定闭合键的位置,即先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。典型电路如图3.22所示。第73页,共190页。独立键盘 独立键盘的每一个按键的
36、电路是独立的,其中每个按键都图3.24 独立按键典型电路第74页,共190页。图3.24 独立按键典型电路第74页,共190页。程序:#includeunsigned char duan8=0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f;unsigned char wei8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;void delay(void)unsigned i,j;for(i=0;i20;i+)for(j=0;j200;j+);void main() unsigned char i,j
37、; 第75页,共190页。程序:第75页,共190页。while(1)if(j=P1)!=0 xff)/检测是否有按键被按下 delay();/延时消抖 if(j=P1)!=0 xff)/再次检测按键是否被按下 for(i=0;i8;i+)/显示 if(j=weii) P0=duani; else P0=0; 第76页,共190页。while(1)第76页,共190页。行列(矩阵)键盘行列式键盘又叫矩阵式键盘,行列式结构的键盘显然比独立式键盘要复杂一些,识别也要复杂一些。它将I/O线的一部分作为行线,另一部分作为列线,按键设置在行线和列线的交叉点上,每一个按键占用两条I/O数据线。如图3.23
38、所示,行列式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。 第77页,共190页。行列(矩阵)键盘行列式键盘又叫矩阵式键盘,行列式结构的键盘显行列式键盘结构每一个按键的电路是由行列组成,每一个按键占用两条I/O数据线。当键盘按下时,相应的行列线呈现短路。1、行线输出高电平、列线输出低电平;检测行线有电平变化表示有按键按下,否则没有!2、依次使列线中某一列为低电平,其余为高,检测行线电平变化的那一行电压是否为低,为低就是此行列交界处的按
39、键被按下!第78页,共190页。行列式键盘结构每一个按键的电路是由行列组成,每一个按键占用两图3.25 矩阵键盘典型电路第79页,共190页。图3.25 矩阵键盘典型电路第79页,共190页。程序#include#define uchar unsigned charuchar code dispcode=0 x3f, 0 x06, 0 x5b, 0 x4f, 0 x66, 0 x6d, 0 x7d,0 x07,0 x7f, 0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x40; /0-9字符码表 uchar code keytab=0 x81,0 x4
40、1,0 x21,0 x11,0 x82,0 x42,0 x22,0 x12,0 x84,0 x44,0 x24,0 x14,0 x88,0 x48,0 x28,0 x18; /闭合键码表uchar code disbit=0 x40,0 x80;/两位数码位码表uchar disbuf=0,0;/两位数码段码缓冲单元void delay5ms();/延时,用定时器完成bit Keytest(); /总判有无按键void display(uchar x);/数码显示程序uchar GetKeyNum(); /获得具体键值 程序见书P70第80页,共190页。程序第80页,共190页。典型应用设计
41、一个09计数器,计数按键每按下一次,计数显示加1, 09循环计数,清除按键按下则显示清零。P73页程序第81页,共190页。典型应用设计一个09计数器,计数按键每按下一次,计数显示加计数键清除键第82页,共190页。计数键清除键第82页,共190页。3.6 中断、定时接口技术 日常中断的例子返回 你正在专心看书,突然 铃响,于是你记下正在看的书的页数,去接 ,接完 后再回来接着看书。时间 第83页,共190页。3.6 中断、定时接口技术 日常中断的例子返回 计算机中的中断概念返回定义:中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序(处理发生的事件),处理完毕后又自动
42、返回原来程序暂停的位置继续运行。将能引起中断的事件称为中断源。CPU现行运行的程序称为主程序。处理随机事件的程序称为中断服务子程序。 第84页,共190页。 计算机中的中断概念返回定义:中断是指由于某种随机事件的处理突发事件,单片机有强大处理功能,它会自动暂停正在处理的事件,转去处理突发事件,突发事件处理完之后,继续处理暂停的事件。第85页,共190页。处理突发事件,单片机有强大处理功能,它会自动暂停正在处理的事 中断技术的优点提高工作效率 CPU可以同多个外设“同时”工作实时处理 CPU及时处理随机事件(智能技术)故障处理 电源掉电、存储出错、运算溢出 第86页,共190页。 中断技术的优点
43、提高工作效率第86页,共190页。单片机中断系统的内部结构图3.27 单片机的中断系统结构第87页,共190页。单片机中断系统的内部结构图3.27 单片机的中断系统结构表3.6 中断源及中断向量入口地址第88页,共190页。表3.6 中断源及中断向量入口地址第88页,共190页。中断服务函数的编写方法void 函数名 interrupt n using m m、n 为正整数,不允许使用表达式。n取值范围04,对应该中断源的编号。通常对普通8051系列单片机来说,外部中断0、定时器0、外部中断1、定时器1、串口的中断源编号依次为0、1、2、3、4。m取值范围04。 例如: void serial
44、_service interrupt 4 using 2 ; Keil C51编译器用特定的编译器指令分配寄存器组。当前工作寄存器由using指定,“using”后的变量为一个03的整数。“using”只允许用于中断函数,它在中断函数入口处将当前寄存器组保留,并在中断程序中使用指定的寄存器组,在函数退出前恢复原寄存器组。 第89页,共190页。中断服务函数的编写方法void 函数名 interrupt 编写中断函数时应遵循下列规则:不能进行参数传递,如果中断过程包括任何参数声明,编译器将产生一个错误信息。无返回值,如果想定义一个返回值将产生错误,但是,如果返回整型值编译器将不产生错误信息,因为
45、整型值是默认值,编译器不能清楚识别。在任何情况下不能直接调用中断函数,否则编译器会产生错误。第90页,共190页。编写中断函数时应遵循下列规则:第90页,共190页。在中断函数中调用的函数所使用的寄存器组必须与中断函数相同,当没有使用using指令时,编译器会选择一个寄存器组作绝对寄存器访问。编程时必须保证按要求使用相应寄存器组,而C编译器不会对此检查。如果在中断函数中执行浮点运算,必须保存浮点寄存器状态,当没有其他程序执行浮点运算时,可以不保存。第91页,共190页。在中断函数中调用的函数所使用的寄存器组必须与中断函数相同,外部中断应用 设计一个实现按键计数功能的设计,并利用数码管同步显示按
46、键的按下次数。图3.28 按键计数功能电路第92页,共190页。外部中断应用 设计一个实现按键计数功能的设计,并利用数码管同程序:#includeunsigned char duan2=0;unsigned char duanma=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char i=0,m=0;void wz0()interrupt 0/外部中断0服务子程序,用来记/录按键按下的次数if(+i99) i=0;duan0=i/10;duan1=i%10;第93页,共190页。程序:第93页,共19
47、0页。void display()interrupt 1 /利用中断来控制数码管的显示 static unsigned char l=0 x01;TH0=0 xff;TL0=0 xc8; if(l=0 x04) l=0 x01;m=0; P0=0; P2=l; P0=duanmaduanm; l=1; m+; void main()TH0=0 xff;TL0=0 xc8; IE=0 x8f;TMOD=0 x51;TCON=0 x55;IP=0 x02; while(1);计数器溢出一次,产生一次中断,刷新当前显示内容,溢出率决定显示屏刷新频率第94页,共190页。void display()i
48、nterrupt 1 /定时/计数器中断应用 51系列单片机至少有两个16位内部定时器/计数器(T/C)。两个基本定时器/计数器分别是定时器/计数器T/C0和T/C1,具有计数功能和定时功能。计数功能是指使用计数器的计数脉冲输入端T0(P3.4)和T1(P3.5)对外部脉冲信号的计数;定时功能是指对内部晶振驱动时钟进行计数。第95页,共190页。定时/计数器中断应用 51系列单片机至少有两个16位内部定时定时器T0由TH0和TL0组成,定时器T1由TH1和TL1组成,其中TH0(TH1)表示高8位,TL0(TL1)表示低8位。TMOD(见表1.13)寄存器用来确定工作方式;TCON是控制寄存器
49、,用来控制T0和T1启动、计数、停止以及设置溢出标志等。定时器/计数器的结构图见图3.29。GATA=0表示启动不受外部中断int0或int1的控制;否则受;C/T表示0为定时方式,1为计时方式! 教材16页!1. 定时器/计数器的结构图3.29 定时器/计数器的结构第96页,共190页。定时器T0由TH0和TL0组成,定时器T1由TH1和TL1组在计数方式下,计数初值X= -待计数的值(n=13/16/8)。假使T/C0工作在计数器方式2,要求计数100个脉冲的计数初值X,那么X= =156。第97页,共190页。在计数方式下,计数初值X= -待计数的值(n=13/1 在定时方式下,定时器/
50、计数器对机器周期脉冲计数。如:若 =12MHz,一个机器周期为 us,要求定时器/计数器T0定时1ms,求计数初值。 假使T0工作在工作方式1,设计数初值为X,则有: ,即 ,将64536化为十六进制,即0 xFC18,把0 xFC送入TH0,0 x18送入TL0中即可完成1ms的定时。即:TH0=0 xfc;TL0=0 x18;第98页,共190页。 在定时方式下,定时器/计数器对机器周期脉冲计数。第或直接写为以下语句,在程序编译时会自动计算表达式,换算成对应的数值给TH和TL赋值:(注意:溢出问题)TH0=(65536-1000)/256;TL0=(65536-1000)%256;第99页
51、,共190页。或直接写为以下语句,在程序编译时会自动计算表达式,换算成对应 若T0工作在工作方式0,设计数初值为X,则有:将7192化为二进制,即,把高八位0 xe0送入TH0,低五位0 x18送入TL0中即可完成1ms的定时。即:TH0=0 xe0;TL0=0 x18;使用了tl0的低5位;或直接写为以下语句:TH0=(8192-1000)/32;TL0=(8192-1000)%32;可以看出,在12MHz时钟频率下,工作方式2所能达到的最大定时时间为256us,在此例不适于直接定时。第100页,共190页。 若T0工作在工作方式0,设计数初值为X,则有:将7192典型应用99-00键控倒计
52、时秒表任务描述将单片机与数码管、键盘接成如图3.30所示两位动态显示方式。开始时,显示“-”,按“定时”键后显示0,此时按数值键(0-9)有效;按数值键(0-9)显示定时时间,最大定时时间99s;第一次按“开始/结束”键开始倒计时,时间间隔为1S,计时结束显示“-”;第二次按“开始/结束”键停止倒计时,第三次按“开始/结束”键结束倒计时,显示“-” 第101页,共190页。典型应用99-00键控倒计时秒表任务描述第101页,共1WR1:第一写信号(输入),与ILE共同控制输入寄存器是数据直通方式还是第104页,共190页。void delay(unsigned char m)第38页,共190
53、页。PC(虚拟终端上)通过键盘若发送09字符则数码管显示,若发送其他的则数码管显示“H”。if(i=0)i=0 x01;j=0;P3=dis_w0;P0=dis_d1;Delay();P0=0 x00;/第一个数码管显示 1第162页,共190页。4 LED显示器的字段码处理随机事件的程序称为中断服务子程序。6 中断、定时接口技术适用:只有一路模拟信号输出或几路模拟信号非同步输出。Keil C51编译器用特定的编译器指令分配寄存器组。disbuf0=dispcodesecond/10; /秒计数值的十位数字型码void display()interrupt 1 /利用中断来控制数码管的显示第3
54、8页,共190页。图3.30 99-00键控倒计时秒表电路第102页,共190页。WR1:第一写信号(输入),与ILE共同控制输入寄存器是数据图3.31 0099秒计数循环动态显示程序框图第103页,共190页。图3.31 0099秒计数循环动态显示程序框图第103页,/*两位动态显示,00-99循环显示,时间间隔1s*/#include#define uchar unsigned charuchar code dispcode=0 x3f, 0 x06, 0 x5b, 0 x4f, 0 x66, 0 x6d, 0 x7d, 0 x07,0 x7f, 0 x6f; /0-9字型码表uchar
55、code disbit=0 x40,0 x80; /位码表uchar disbuf=0,0;uchar second=0,tcount=0;void caculate();void display();void delay5ms();void main()TMOD=0X10; /方式控制字初值:方式一、定时TR1=1; /定时器一启动while(1)display();caculate();第104页,共190页。/*两位动态显示,00-99循环显示,时间间隔1s*/第10void caculate() /计数子函数tcount+; /1次10ms到,改变定时次数if(tcount=100)
56、/100次10ms到,即1s到tcount=0; /初始化定时次数second+; /指向下一个显示数据if(second=100) second=0; void display()/动态显示子函数uchar i;disbuf0=dispcodesecond/10; /秒计数值的十位数字型码disbuf1=dispcodesecond%10; /秒计数值的个位数字型码for(i=0;i2;i+)P0=disbufi; / 向P0口送入段码P2=disbiti; /向P2口送入位码delay5ms(); /5ms定时P2=0;/关位选,消隐void delay5ms()TH1=(65536-50
57、00)/256; /设定定时初值高八位TL1=(65536-5000)%256; /设定定时初值低八位while(!TF1); /查询,5ms到TF1=0;/TF1清零第105页,共190页。void caculate() /计数子函数第103.7数模(D/A)转换接口设计 为什么要用模数转换?在实际生活中有何用? 第106页,共190页。3.7数模(D/A)转换接口设计 为什么要用模数转换?在实际概念 D/A转换器(Digital -to- Analog Converter)又叫数/模转换器,即是将数字信号转换成模拟信号(电压或是电流的形式)。第107页,共190页。概念 D/A转换器(Di
58、gital -to- Analog 性能指标:1、分辨率(Resolution)是指D/A转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。 2、建立时间(Establishing Time)是描述D/A转换速度的快慢。3、转换精度(Conversion Accuracy)指满量程时DAC的实际模拟输出值和理论值的接近程度。 4、偏移量误差(Offset Error)偏移量误差是指输入数字量为零时,输出模拟量对零的偏移值。 5、线性度(Linearity)线性度是指DAC的实际转换特性曲线和理想直线之间的最大偏移差。第108页,共190页。性能指标:1、分辨率(Resolution
59、)是指D/A转换器1. DAC 0832内部结构:8位双缓冲器结构的D/A转换器。转换芯片DAC0832DAC 0832内部结构框图DI07:转换数据输入(8位); CS:片选信号(输入);ILE:数据锁存允许信号(输入); XFER:数据传送控制信号(输入);WR1:第一写信号(输入),与ILE共同控制输入寄存器是数据直通方式还是 数据锁存方式;WR2:第2写信号(输入),与XFER共同控制DAC寄存器是数据直通方式还是 数据锁存方式;8位DACDAC寄存器输入寄存器-+IOUT2IOUT1RfbVODI07AGNDILECS与与与WR1WR2XFERLE1LE2LE1(LE2)=0:锁存;
60、1:直通。王朝,马汉;四大护法第109页,共190页。1. DAC 0832内部结构:8位双缓冲器结构的D/A转换第110页,共190页。第110页,共190页。 DAC0830系列均为DIP20封装,且管脚完全兼容,DAC0832的引脚如下图所示。引脚功能如下:D0D7:8位数字量输入端 CS: 片选端,低有效ILE : 数据锁存允许 WR1 : 写控制信号1WR2 : 写控制信号2 XFER : 数据传送控制信号Iout1: 电流输出端1Iout2: 电流输出端2RFB : 内置反馈电阻端VREF : 参考电压源(-10 V+10 V) DGND: 数字量地AGND: 模拟量地Vcc: +
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版美容院加盟店品牌授权与知识产权保护合同4篇
- 2024版瓦工的施工合同范本
- 2024版海鲜购销合同范本
- 2025年度二零二五年度农业综合开发贷款合同范本4篇
- 2025年度企业股权激励方案设计与实施合同3篇
- 美容行业2025年度美容师市场拓展聘用协议4篇
- 2025年度生态农业园区场地租赁与农产品加工合作协议4篇
- 2025版高速公路绿化带养护与景观提升合同范本4篇
- 2025年度高端酒店客房用品采购与管理合同4篇
- 2024年高端医疗器械制造与销售合同
- T-SDLPA 0001-2024 研究型病房建设和配置标准
- (人教PEP2024版)英语一年级上册Unit 1 教学课件(新教材)
- 全国职业院校技能大赛高职组(市政管线(道)数字化施工赛项)考试题库(含答案)
- 2024胃肠间质瘤(GIST)诊疗指南更新解读 2
- 光储电站储能系统调试方案
- 2024年二级建造师继续教育题库及答案(500题)
- 小学数学二年级100以内连加连减口算题
- 建设单位如何做好项目管理
- 三年级上递等式计算400题
- 一次性餐具配送投标方案
- 《中华民族多元一体格局》
评论
0/150
提交评论