1、点击添加标题,二级标题,三级标题,四级标题,Copyright,Http:/,*,SiChuan,Engneering,Colledge-1959,点击添加标题,二级标题,三级标题,四级标题,*,8,AT89S51,单片机与输入,/,输出外设的接口,本章主要内容(本章学时,6,学时),1.LED,数码管动态显示接口设计,2.,矩阵式键盘接口设计,3.,液晶显示器使用初步,2,单片机典型应用系统组成,单片机,A/D,接口,D/A,接口,开关量输入,开关量输出,通信接口,存储器,人机界面,3,单片机典型应用系统组成,单片机系统组成,A/D,接口:实现模拟信号的采集,并行,A/D,串行,A/D,D/
2、A,接口:输出模拟量的控制信号,并行,D/A,串行,D/A,开关量输入输出:实现开关信号的检测和控制,步进电机、,PWM,控制的直流电机,开关量输出的传感器(如光电、霍尔传感器等),4,通信接口:实现系统和外界(单片机或,PC,)的数据交换,RS-232C,RS-485,人机界面:沟通用户和系统的渠道,键盘、显示,打印机,5,单片机应用系统实例,单片机,存储器,通信接口,输出开关量控制信号,输入开关量控制信号,6,8.1.LED,数码显示器的接口设计,数码管是如何显示出字符的,数码管静态显示,数码管动态显示原理,数码管显示电路与程序设计,7,单片机系统中常用的显示器有:,发光二极管,LED(L
3、ight Emitting Diode),显示器、液晶,LCD(Liquid Crystal Display),显示器、,CRT,显示器等。,LED,、,LCD,显示器有两种显示结构:段显示(,7,段、米字型等)和点阵显示(,58,、,88,点阵等)。,8,数码管:,由发光二极管阵列构成。用于显示数字和简单英文字符。,常用的有,7,段、,8,段,LED,数码管、米字型数码管、点阵型数码管及专用数码管。,9,数码管的工作原理,数码管的结构,共阳极数码管,共阴极数码管,共阳,共阴,10,数码管是如何显示出字符的,数码管的结构,共阳极数码管,共阴极数码管,数码管的显示,段码,数码管显示的内容,位码,
4、即,com,端)数码管是否点亮,g,a,b,c,e,f,d,dp,11,数码管的段码(以共阴数码管为例),dp,g,f,e,d,c,b,a,MSB,LSB,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 x58,0 x5E,0 x79,0 x71,12,LED,数码显示方式及电路,LED,显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个,8,位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用
5、CPU,时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。,13,动态显示的特点是将所有位数码管的段选线并联在一起,由,位选线,控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即,轮流向各位数码管送出字形码和相应的位选,,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以,在选择限流电阻时应略小于静态显示电路中的,。,8.1.1,动态显示方式,14,多个数码管的控制,静态显示,每个数码管单独控制,所有数码管同时点亮,动态显示,段码共用,位码分别控制,每个数码管,循环点亮,段码输入,位码扫描,15,例
6、8-1 8,位数码管的软件扫描显示,16,程序设计,延时扫描,段选码,位选码,每送入一次后延时,1ms,,因人眼的视觉暂留时间为,0.1s,,所以每位显示的间隔不必超过,20ms,,并保持延时一段时间,造成视觉暂留效果。,定时器中断刷新显示,17,8.1.2,用,SPI,接口显示驱动芯片控制数码管多位显示,MAX7219/MAX7221,是一种集成化的串行输入,/,输出共阴级显示驱动器件。它可以驱动,8,位,7,段数码管显示,也可以连接条形,LED,或,88LED,点阵屏。,采用,MAX7219,仅占用单片机的,3,只引脚,大大节省了动态刷新数码管程序对单片机资源的占用。是驱动数码管显示的最
7、常用的,IC,器件。,MAX7219,采用,SPI,接口和单片机相连接。,18,19,SPI,总线串行扩展简介,SPI(Serial,Peripheral Interface-,串行外设接口,),总线,系统是一种同步串行外设接口,它可以使,MCU,与各种外围设备以串行方式进行通信以交换信息。,SPI,有三个,寄存器,分别为:,控制寄存器,SPCR,,,状态寄存器,SPSR,,,数据寄存器,SPDR,。外围设备包括,FLASHRAM,、,网络控制器,、,LCD,显示驱动器、,A/D,转换器,和,MCU,等。,SPI,接口是在,CPU,和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,
8、数据按位传输,高位在前,低位在后,为全双工通信,,数据传输速度,总体来说比,I2C,总线,要快,速度可达到几,Mbps,。,20,目前许多单片机都带有,SPI,接口,对于,AT89S51,单片机,由于不带,SPI,接口,,SPI,接口的实现,采用软件与,I/O,口结合来模拟,SPI,时序,对器件进行操作。,21,例,8-2,用,MAX7219,控制数码管显示,22,按键的作用:,按键是单片机系统与操作人员之间交互重要组件,用于完成操作人员对单片机系统的输入控制。,(开关),(按键),8.2,键盘的接口设计,23,单片机多路键盘的扩展方法,并口键盘:每个,IO,口接一个按键,优点是编程简单可靠,
9、可以中断方式使用,缺点是,IO,口占用过多。,矩阵键盘:将多个键盘接成行列交叉的形式,采用,IO,口分别控制行和列。,键盘扩展专用芯片(例如,HD7279,),单片机通过串口直接与该芯片通讯获取键值。,串转并扩展芯片扩展,IO,口。,24,(,1,)判断是否有键按下。,(,2,)识别是哪一个键按下。,(,3,)按下的按键对应的功能(键值处理程序)。,8.2.1,键盘接口应解决的问题,键盘的任务,25,1,0,未按键,按下,按键松开,1,键按下时,P2.0,口的逻辑电平变化:,人为按键通常按下时间为几百毫秒。,键盘设计中需要考虑的问题:,键的连击,26,键盘设计中需要考虑的问题,解决办法:等待按
10、键弹起,连击,会在一次按键中多次产生击键的效果,对于这类问题,在键盘编程中常采用等待按键释放的处理方法来消除连击,使得每次按键仅产生一次键的处理效果。这样就可以避免当某个按键还未松开时,键扫描程序和处理程序已执行多遍。,27,当用手按下一个按键时,往往所按按键在闭合位置和断开位置之间弹跳几下才会稳定到闭合状态;在释放一个按键时,也会出现类似的情况。这就是按键抖动。这是由机械结构的固有特性决定的,不可避免。,按键抖动的持续时间大小不一,一般在,10ms,左右。,键盘设计中需要考虑的问题:,消除按键抖动,28,键盘设计中需要考虑的问题,断开,按下,理想按键过程:,抖动,约,10ms,断开,按下,实
11、际按键过程:,消除按键抖动解决办法,延时,10ms,后等待按键稳定再次判断是否有键按下;,采用按键消抖电路;,专用键盘接口芯片含有按键自动去抖电路。,29,键盘设计中需要考虑的问题:,多键同时闭合,当有两个或多个键同时闭合时,可以采用条件判断的方式来确认哪个按键有效。例如以下方式。,以先按下的键为有效键。,以按下时间最长的键为有效键。,将最后释放的键视为有效键。,有复合按键的设计按照复合按键的功能进行编程,无复合按键的设计中通常采用,单键按下有效,多键按下无效的原则,进行处理。,30,8.2.2,键盘接口设计举例,键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编
12、码号(如,BCD,、,ASCII,)或键值的称为,编码键盘,,如计算机键盘。,而靠软件编程来识别的称为,非编码键盘,。,在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。,非编码键盘又分为:独立键盘和行列式(又称为矩阵式)键盘。,键盘的分类,31,独立式键盘,查询方式独立式键盘,各按键与,I/O,口相互的接通一条输入数据线。,优点:电路简单,编程方便。,缺点:严重占用系统资源,当键数较多时,占用较多,I/O,口。,32,独立式键盘,中断扫描方式独立式键盘,各按键通过门器件与单片机外部中断输入口相连。,优点:实时性强,占用系统资源少。,缺点:当键数较多时,占用,I/O,口仍较
13、多。,33,矩阵(行列)式键盘,为减少键盘与单片机接口时所占用,I/O,口线数目,在键数较多时候,通常将键盘排列成行列式键盘。,利用矩阵结构只需要,N,条行线和,M,条列线,,即可组成,N*M,个按键的键盘。,在这种行列矩阵式非编码键盘的单片机系统中,键盘处理程序首先执行有无按键按下的程序段,当确认有按键按下后,下一步识别哪个按键被按下,对键的识别通常采用,逐行(或逐列)扫描法,。,34,35,36,行描法识别键值的工作原理,STEP1,:判断键盘中有无键按下,向行线输出全扫描字,00H,,读取列线的值。,STEP2:,进行行扫描判断键值,依次给行线送低电平,读取列线状态,如读取的值全为,1,
14、则按下的键不在此行,否则所按下的键必在此行。而且是与零电平相交的交点上的键。,编程思路:,1,、判断是否有键按下,全扫描,2,、确定按下的是哪一个键(确定按键代码),逐行扫描,行输出、列输入,37,4X4,键盘扫描流程图,38,键的位置码及键值的译码过程,键值(号)的获得(译码)通常采用计数译码法。这种方法根据矩阵键盘的结构特点,每个按键的值,=,行号,每行的按键个数,+,列号,即,键号(值),=,行首键号,+,列号,第,0,行的键值为:,0,行,4+,列号(,0,3,)为,0,、,1,、,2,、,3,;,第,1,行的键值为:,1,行,4+,列号(,0,3,)为,4,、,5,、,6,、,7,
15、第,2,行的键值为:,2,行,4+,列号(,0,3,)为,8,、,9,、,A,、,B,;,第,3,行的键值为:,3,行,4+,列号(,0,3,)为,C,、,D,、,E,、,F,。,44,键盘行首键号为,0,、,4,、,8,、,C,,列号为,0,,,1,,,2,,,3,。,39,例题,设计一个,4X4,行列式键盘,按键按下后在数码管上显示对应按键所代表的数值。,40,编程思路讲解,41,程序设计分析,模块化程序设计方案。,分解成四个子程序,1.,键盘子程序,实现系统要求的功能。,2.,判断是否有键按下子程序,有键按下返回,1,,无键盘按下返回,0,,供键盘子程序调用。,3.,扫描键盘子程序,
16、返回键值,供键盘子程序调用。,4.,延时子程序,实现约,n*10ms,的延时,供判断是否有键按下子程序调用,实现延时消抖。,42,按要求编程:,全扫描,四行一起扫描,以判断是否有键按下;同时采用了延迟再扫描的方法进行消抖。,逐行扫描,四行依次扫描,判断按键的行列位置;,生成按键代码,使用不同的编程语句可以生成不同的按键代码。,43,8.2.3,键盘扫描方式的选取,查询扫描,占用系统资源较多,查询频率过低可能出现漏判键输入情况。,定时扫描,在定时器中断服务程序内进行处理;,为不漏判有效的按键,定时中断的周期一般小于,100ms,。,中断扫描方式,实时性强,工作效率高。,44,8.3,液晶使用初步
17、液晶,LCD,分为两类,一类是字符模式,LCD,,另一类是图形模式,LCD,,其中,字符模式,LCD,是点阵式液晶显示器,专门用来显示字母,数字,符号。,由于,LCD,控制需专用的驱动电路,一般不会单独使用,而是将,LCD,面板,驱动与控制电路组合成模块一起使用。,45,46,1602,液晶模块简介,1602,字符型液晶是一种用,5,7,点阵图形来显示字符的液晶显示器,显示的内容为,2,行,16,个字。,47,引脚介绍,第,1,脚:,VSS,为电源地,接,GND,。,第,2,脚:,VDD,接,5V,正电源。,第,3,脚:液晶显示偏压信号,第,4,脚:数据,/,命令选择端(,H/L,),第,5
18、脚:读,/,写选择端(,H/L,),第,6,脚:,E,为使能信号,当,E,端由高电平跳变为低电平时,液晶模块执行命令。,第,714,脚:,D0D7,为,8,位双向数据线,第,15,脚:,BLA,背光电源正极(接,+5V,),第,16,脚:,BLK,背光电源负极(接,GND,),48,操作时序,读操作时序,49,写操作时序,50,液晶指令集,液晶的指令集,1602,液晶模块的内部控制器共有,11,条指令,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。说明,1,为高电平,,0,为低电平),51,液晶初始化设置,指令码,功能,0,0,1,1,1,0,0,0,设置,162,显示,,57,点
19、阵,1,、显示模式设置,52,液晶初始化设置,指令码,功能,0,0,0,0,1,D,C,B,D=1,开显示;,D=0,,关显示,C=1,显示光标;,C=0,不显示光标,B=1,光标闪烁;,B=0,光标不闪烁,0,0,0,0,0,1,N,S,N=1,当读或写一个字节后地址指针加一,且光标加一,N=0,当读或写一个字节后 地址指针减一,且光标减一,S=1,当写一个字符,整屏显示左移,(N=1),或右移,(N=0),S=0,当写一个字符,整屏显示不移动,2,、显示开,/,关及光标设置,53,数据控制,控制器内部设有一个数据地址指针,用户可以通过它们来访问内部的全部,80,字节,RAM,。,1,、数据
20、指针设置,指令码,功能,80H+,地址码,(027H,40H67H),设置数据地址指针,54,数据控制,2,、读数据,输入:,RS=H,RW=H,E=H;,输出:,D0D7=,数据,3,、写数据,输入:,RS=H,RW=L,D0D7=,数据,,E=,高脉冲;,输出:无,55,数据控制,4,、其他设置,指令码,功能,01H,显示清屏:,1.,数据指针清零,2.,所有显示清零,02H,显示回车:数据指针清零,56,例:编程实现,LCD1602,显示字符,1602,液晶在,PROTEUS,中的元件名称,LM016L,57,本章结束,本章回顾,数码管动态显示,SPI,接口的使用与编程,使用显示驱动芯片驱动数码管显示,矩阵式键盘的编程与使用,1602,液晶的编程与使用,58,






