单片机C语言应用与开发第6章.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《单片机C语言应用与开发第6章.ppt》由会员分享,可在线阅读,更多相关《单片机C语言应用与开发第6章.ppt(134页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、51单片机C语言应用与开发第第6章章 ELITE-III开发应用实例开发应用实例n本章主要介绍利用ELITE-III开发板的现有资源进行简单单片机控制系统开发的几个实例n本章重点本章重点u流水灯控制系统的设计与开发u数码管和键盘接口的软硬件设计u点阵显示系统的设计与开发u步进电机控制系统的设计与开发u单片机串行通信接口的应用及软件设计u特殊串行总线的应用及软件设计uLCD显示系统的控制及软件设计第第6章章 ELITE-III开发应用实例开发应用实例n本章难点本章难点u中断函数的定义及设计方法u矩阵键盘的设计及键盘识别u点阵显示系统的工作原理及软件设计u步进电机的驱动及时序设计uA/D转换的原理
2、及软件驱动u串行通信的中断程序设计u特殊总线串行通信接口芯片的工作原理及其寄存器的应用uLCD显示模块的工作原理及编程控制第第6章章 ELITE-III开发应用实例开发应用实例n本章各章节安排本章各章节安排u6.1 流水灯控制系统设计u6.2 I/O 口的高级应用u6.3 点阵显示设计u6.4 步进电机控制u6.5 A/D 转换设计u6.6 单片机串行通信u6.7 I2C总线技术 u6.8 特殊总线串行通信 u6.9 LCD显示设计第第6章章 ELITE-III开发应用实例开发应用实例第第6章章 ELITE-III开发应用实例开发应用实例l6.1 流水灯控制系统设计流水灯控制系统设计 流水灯是
3、指若干个灯泡(或LED发光二极管)按一定顺序依次点亮的一种装置,有时也称跑马灯,可用在夜间建筑物的装饰等方面。流水灯控制系统是单片机最简单的控制系统之一,具有电路简单、设计灵活、控制方便等特点,是单片机入门开发的首选,几乎所有的单片机开发板都提供流水灯控制系统。本节以ELITE-III开发板为例,介绍流水灯控制系统的设计。n6.1.1 流水灯的硬件电路流水灯的硬件电路u1.发光二极管与单片机的接口发光二极管与单片机的接口p 发光二极管发光二极管 发光二极管简称为LED,是一种特殊的二极管,也具有单向导电性,其正向导通电压一般为1.75V左右。发光二极管通常由镓(Ga)与砷(AS)、磷(P)的化
4、合物制成,可以把电能转化成光能,在电子仪器及其他电器设备中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发 黄光。发光二极管的电路符号如图6-1所示。第第6章章 ELITE-III开发应用实例开发应用实例p(2)发光二极管与单片机的接口 第第6章章 ELITE-III开发应用实例开发应用实例pLED发光二极管与单片机的接口一般可以分为直接式、扫描式与多路复用式三种,其接口电路如图7-2所示。直接式:直接式:LED发光二极管的一端(一般是阴极)直接连到对应单片机的一个输出引脚,另一端通过限流电阻接到电源VCC,如图6-2(a)。使用这种连接方式时,单片
5、机的一个I/O端口(P0、P1或P2)最多只能控制8个LED发光二极管。当单片机的对应管脚输出低电平时,电流从VCC经限流电阻、发光二极管后流入单片机,发光二极管开始发光,其发光亮度可由串联的限流电阻控制;当对应管脚输出高电平时,没有电流通过LED发光二极管,发光二极管熄灭。第第6章章 ELITE-III开发应用实例开发应用实例扫描式:扫描式:LED发光二极管被设计成行列形式的矩阵,其中,各行各列分别接到对应单片机的一个唯一输出引脚,如图6-2(b)。当单片机对应行、列的管脚分别输出高和低电平时,电流从单片机输出高电平的管脚经限流电阻和LED流入到另一个引脚,LED发光二极管开始发光。在扫描式
6、连接时,为了让LED发光二极管显示一个固定的状态,必须有相应的软件扫描程序维持输出的信号。在此种方式下,单片机的一个端口最多可控制16个LED发光二极管。如果两个端口结合使用,一个端口控制行信号,另一个端口控制列信号,则可以控制64个LED的状态。复用式:复用式:多路复用式与扫描式类似,也是将LED发光二极管组织成行列形式的矩阵,但是矩阵的行、列信号是由单片机外置的多路解码及锁存芯片进行控制,因此实现了多于单片机输出端口数目的LED发光二极管阵列,本质上就是扫描式的扩充,如图6-2(c)所示。第第6章章 ELITE-III开发应用实例开发应用实例u2.流水灯硬件电路流水灯硬件电路p单片机控制的
7、流水灯系统如图6-3所示。图中,单片机的P1口接8个发光二极管(LD1LD8)的阴极,控制发光二极管的亮灭。电源VCC经开关JP1后,通过8个限流电阻(R57R64)接到发光二极管的阳极。开关JP1接通时,发光二极管可以发光,显示流水灯的工作状态;断开时,发光二极管不能发光。第第6章章 ELITE-III开发应用实例开发应用实例n6.1.2 流水灯软件设计流水灯软件设计 本节的流水灯由8个LED发光二极管组成,通过单片机的P1口进行驱动,电路如图6-3所示。当8个发光二极管按一定顺序依次点亮时,显示流水灯的工作状态。在流水灯控制系统中,每个发光二极管亮的状态都需要持续一段时间,这段持续时间在单
8、片机控制系统中一般有两种方法实现:定时器中断延时或软件延时。由于51系列单片的定时器资源有限(8051只有的2个定时器,8052也只有3个),所以在流水灯这种系统任务不多且对定时时间要求不是十分严格的情况下,一般采用软件延时。u1.软件延时程序软件延时程序p软件延时一般通过重复运行一段程序(循环程序)来实现,以下程序可实现软件延时功能:void delay()unsigned int j;for(j=0;j 20000;j+);第第6章章 ELITE-III开发应用实例开发应用实例p改变变量j的取值范围,可以改变延时时间。如果延时时间不够,可以通过两层或多层循环来增加延时时间。p延时时间是原来
9、单层循环的20倍。u2.流水灯的软件实现流水灯的软件实现p由于图6-3的8个发光二极管阳极通过限流电阻接电源VCC,阴极则分别连接到单片机P1口的8根口线。因此,要使某个发光二极管亮,只须在对应口线输出低电平即可;反之,如果要让某个发光二极不亮,则只须在对应口线输出高电平。第第6章章 ELITE-III开发应用实例开发应用实例p在C51程序设计语言中,单片机的4个并行I/O口作为特殊功能寄存器使用,以变量的形式在库函数REG52.h(或REG51.h)中进行定义(各并行口的口线,可以以位变量的形式使用)。因此,要使某个并行I/O口各位输出指定的电平,只须对该口所对应的变量赋值即可。例如:要让P
10、1口输出二进制数10100110对应的电平,则只须在C51程序中执行下列语句即可:p对于图7-3的硬件电路,如果要使8个发光二极管以流水灯的效果按顺序点亮,则只须对P1口的各位从最低位开始依次赋“0”(其他各位赋值为“1”)。完成这一操作,可在一循环中用左移1位再加“1”的算法实现。假定用变量disp为P1进行赋值,且disp初始值为0 xFE。P1=0 x0A6;第第6章章 ELITE-III开发应用实例开发应用实例u3.花样流水灯花样流水灯p对上述程序稍加修改,可以显示花样流水灯的效果,如亮灯左移、亮灯右移、亮灯从两边向中间移再从中间向两边移等。以下为亮灯从两边向中间移动再由中间向两边移动
11、的花样流水灯程序程序,程序中实现流水灯效果的算法采用两个变量移位相加再取反的算法,变量的初值分别为0 x01和0 x80(若采用上述程序的方法,则可用两个变量分别移位加1,再相与的算法,变量初值分别为0 xFE和0 x7F)。第第6章章 ELITE-III开发应用实例开发应用实例u4.蛇形花样蛇形花样p所谓蛇形花样是指流水灯显示的花样像蛇一样不停地游走,与前述流水灯不同的是:蛇形花样需要多个连续的发光二极管同时亮并流动。一段4位长的蛇形花样流水灯随时间变化的示意图如图6-4所示。第第6章章 ELITE-III开发应用实例开发应用实例n6.1.3 利用定时器中断产生延时利用定时器中断产生延时u定
12、时器中断延时属硬件延时,是利用单片机自带(或外接)的定时/计数器每隔一定时间产生一个中断,当中断产生时,才做相应工作来完成延时任务的。利用定时器中断产生延时,不会使程序停留在某一个地方等待延时时间到,CPU可以继续做其他的工作,提高了CPU的工作效率。在单片机系统比较复杂、CPU任务比较繁重或者系统要求的延时时间比较精确时,常使用定时器中断来实现延时功能。u定时器中断延时产生的延时时间,其长短主要由系统时钟频率和定时器的计数初值决定。在系统要求的延时时间较短时,可直接在中断服务程序中执行有延时要求的任务;当要求的延时时间较长、需产生多次定时器中断才能到达延时时间时,不能在中断服务程序中执行有延
13、时要求的任务。此时一般用1个(或多个)变量来记录中断的次数,当中断次数与1次中断产生的延时时间相乘达到延时时间要求时,再在主程序中执行有延时要求的任务。u对于前述基本流水灯控制程序,若采用定时器0中断产生延时,假定系统时钟频率为11.0592MHz,每个灯亮的延时时间为0.5s,则可求得计数次数X为:第第6章章 ELITE-III开发应用实例开发应用实例u当定时器0工作于方式1时,最大计数次数为65536,显然需要多次中断才能达到系统规定的延时时间。为简便起见,可设中断次数number=10,则定时器的计数初值x为:u根据以上计算和说明,可写出利用定时器中断实现延时的基本流水灯程序为:第第6章
14、章 ELITE-III开发应用实例开发应用实例l6.2 I/O口的高级应用口的高级应用n6.2.1 数码管显示器数码管显示器 在单片机系统中,常用LED数码管作为显示输出设备来显示单片机控制系统的工作状态、运算结果等相关信息。虽然LED数码管显示器显示的信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,是单片机控制系统进行人机对话的重要输出设备。u1.LED数码管数码管p LED数码管的构造及特点数码管的构造及特点第第6章章 ELITE-III开发应用实例开发应用实例LED数码管的内部实际上由8个发光二极管构成,其中7个发光二极管为线段形(叫做字段),排列成的字符
15、“8”的形状,另一个发光二极管为圆点形状,安放在显示器的右下角作为小数点用。通过发光二极管亮暗的不同组合,可以显示09的数字符号或其它能由这些字形线段构成的各种字符。LED数码管的字形结构如图6-5所示。第第6章章 ELITE-III开发应用实例开发应用实例从内部结构上看,LED数码管中的发光二极管有两种连接方式:一种是共阳极连接,数码管内部8个发光二极管的阳极(正极)全部连接在一起组成公共端,阴极则各自独立引出,其内部电路如图6-6所示。使用时一般将公共端(阳极)接电源VCC,阴极通过限流电阻接至驱动电路的输出端(或单片机的I/O口)。单片机的口线输出低电平时,对应的发光二极管点亮,输出高电
16、平时则不亮;另一种是共阴极连接方式,数码管内部8个发光二极管的阴极(负极)连接在一起组成公共端,阳极则各自独立引出,其内部电路如图6-7所示。使用时公共端(阴极)接地,阳极通过限流电阻接至驱动电路的输出端(或单片机的I/O口),单片机的口线输出高电平时,对应的发光二极管亮,输出低电平时则不亮驱动电路中限流电阻R的值通常根据LED的工作电流计算得到,即R=(VCC-VLED)/ILED。式中,VCC为电源电压(+5V),VLED为LED的正向压降(约1.8V),ILED为数码管中单片LED的工作电流(120mA)。因此,限流电阻一般取几百欧姆。第第6章章 ELITE-III开发应用实例开发应用实
17、例p LED数码管的字形编码数码管的字形编码为了让LED数码管显示数字或符号,需要为数码管提供相应的显示代码,由于这些代码是为了显示字形的,所以也称为字形码或字段码。七段发光二极管,加上一个小数点位,共8位代码,由一个字节的二进字数组成。这个字节的各数据位与数码管各字段的对应关系如表6-1所示。与16进制数对应的LED数码管显示器的7段字形(段)二进制编码如表6-2所示。第第6章章 ELITE-III开发应用实例开发应用实例p 需要指出的是:上表的字段码并不是绝对的,字段码其实由各字段在字节中的位置决定。如果字段码按格式“gfedcba”形成,则对于字符“0”,其字段码为0 x3F(共阴);而
18、如果字段码按格式“abcdefg”而定,则字符“0”的字段码将变成0 x7E(共阴)。也就是说,字符的字段码可由设计者自行设计,不必拘泥于表6-1和表6-2。第第6章章 ELITE-III开发应用实例开发应用实例第第6章章 ELITE-III开发应用实例开发应用实例u2.数码管的静态显示数码管的静态显示p在实际应用中,LED数码管显示器的显示方式有两种:静态显示法和动态扫描显示法。静态显示就是数码管的段线在一定时间内输入固定不变的字段码,静态的显示同一个字符。数码管工作于静态显示方式时,各位数码管的公共端阴极(或阳极)直接接地(或+5V电源),每位的段线(ah)分别独占一个具有锁存功能的输出口
19、线,CPU把欲显示的字形代码送到输出口上,就可以使显示器显示所需的数字或符号。此后,即使CPU不再去访问它,数码管显示的内容也不会消失。p静态显示法的优点是显示程序简单,显示亮度高,占用CPU的工作时间少(CPU不必经常去扫描显示器);缺点是占用I/O口较多,硬件成本也较高。静态显示常用在显示器数目较少的系统中。图6-8是一种两个共阳极数码管静态显示电路的示意图,利用图6-8所示电路,在两个数码管上静态显示“78”两个字符的程序段为:第第6章章 ELITE-III开发应用实例开发应用实例u3.动态扫描显示动态扫描显示p动态扫描显示是单片机应用系统中最常见的显示方法之一。它是把所有显示器的8个字
20、段ah的各同名端并联在一起,并把它们接到字段码I/O输出口上。为了防止各个显示器同时显示同一个字符,各显示器的公共端并不接到电源或地,而是接到另一组控制信号,即位输出口上。在动态扫描显示方式下,一组数码管显示器需要两组信号来控制:一组是字段码输出口输出的字形代码,用来控制显示的字符形状;另一组是位输出口输出的控制信号,用于控制哪一位显示器工作,也称为位码。在两组信号的共同控制下,可以按顺序一位一位地轮流点亮每个显示器,显示各自的字符,以实现数码管的动态扫描显示。由于LED具有的余辉特性及人眼的视觉残留现象,尽管各位显示器实际上是分时断续地显示的,但只要选取适当的扫描频率,给人眼的感觉就会是连续
21、稳定的显示,不会察觉有闪烁现象。P0=0 xF8;P2=0 x80;第第6章章 ELITE-III开发应用实例开发应用实例p由于动态扫描显示方式中,各个数码管的字段线是并联使用的,极大地简化了硬件电路,所以特别适用于多个数码管的显示系统。在ELITE-III开发板中,有6个共阳极数码管的动态扫描显示电路如图6-9所示。第第6章章 ELITE-III开发应用实例开发应用实例p当单片机P2口低6位输出低电平有效的扫描信号后,6个数码管按顺序轮流工作,此时如果锁存器74HC574输出对应的字段码,则由于LED具有的余辉特性及人眼的视觉残留现象,我们将会看到在6个数码管上连续稳定地显示指定的字符。第第
22、6章章 ELITE-III开发应用实例开发应用实例n6.2.2 键盘接口键盘接口 键盘是单片机应用系统中最常用的输入设备之一,能够向单片机输入数据、传送命令,实现简单的人机对话功能,是人工干预单片机系统的主要手段。在单片机应用系统中,键盘的结构一般有两种形式:独立式键盘和矩阵式键盘。独立式键盘的各键相互独立、互不干扰,每个按键都单独接在单片机的一根I/O口线上;矩阵式键盘也称为行列式键盘,由I/O口线组成行、列式结构,键位则设置在行、列线的交叉点上。u1键盘的工作原理键盘的工作原理p键盘实质上是一组按键开关的集合,开关在平时总是处于断开的状态,只有在按键被按下时,开关才闭合。按键的结构和产生的
23、波形如图6-11所示。p在图6-11(a)中,按键开关的一端接地,另一端分两路:一路接单片机的P1.0;另一路经上拉电阻接电源VCC。当按键未被按下时,开关处于断开状态,输出高电平;当按下按键后,开关闭合,输出低电平。第第6章章 ELITE-III开发应用实例开发应用实例p 按键的检测按键的检测由于按键未被按下时,开关输出高电平;按下后,开关输出低电平。因此,系统可以通过读P1.0口,然后根据P1.0输入电平的状态来判断按键是否被按下:如果P1.0输入为高电平,则说明键没有按下;如果输入低电平,则表示按键已经被按下。在C51程序设计语言中,读取按键值的操作可通过赋值语句完成。假定某按键接在单片
24、机的P1.0口线上(如图6-11),则下列程序段可实现按键的读取和检测:有时为了简化程序,也可直接通过一判断语句完成按键的读取与检测:sbit key0=P10;a=key0;/读按键的值if(a=0)/检测按键是否被按下 第第6章章 ELITE-III开发应用实例开发应用实例p 抖动的消除抖动的消除通常按键开关都是机械式开关,由于机械触点的弹性作用,按键开关在闭合时并不会马上稳定地接通,弹开时也不会马上断开。在闭合与断开的瞬间都会伴随着一连串的抖动,其波形大致如图6-11(b)所示。抖动时间的长短由按键开关的机械特性决定,一般为510ms。这种抖动对人来说可能感觉不到,但对于单片机系统来说,
25、完全可以检测到。在单片机系统中,如果对抖动不作处理,必然会出现按一次键,系统会多次读入同一个按键值的现象。为确保按一次键,系统只能读到一次按键值,必须消除按键抖动的影响。消除按键抖动的方法通常有两种:硬件去抖和软件去抖。sbit key0=P10;if(key0=0)/读按键并检测按键是否被按下 ;第第6章章 ELITE-III开发应用实例开发应用实例硬件去抖是利用在按键的输出部分增加一定的处理电路来消除抖动的。实际应用中,一般采用R-S触发器或单稳态电路。一种采用R-S触发器构成的硬件去抖电路如图6-12所示。综合图6-11(b)所示按键开关的波形和在图6-12所示的硬件去抖电路可知:当开关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 语言 应用 开发
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内