单片机原理与应用课件 第6章 人机交互通道配置与接口.ppt_第1页
单片机原理与应用课件 第6章 人机交互通道配置与接口.ppt_第2页
单片机原理与应用课件 第6章 人机交互通道配置与接口.ppt_第3页
单片机原理与应用课件 第6章 人机交互通道配置与接口.ppt_第4页
单片机原理与应用课件 第6章 人机交互通道配置与接口.ppt_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第6章 人机交互通道配置与接口,主要内容:从工程应用角度介绍了mcs-51单片机的交互通道配置与接口,主要包括人机界面中的键盘、显示器、微型打印机等。介绍了多种实用方案和设计技巧。 重点:系统概念的形成、各种接口设计方案和设计技巧的掌握,熟悉各种交互设备。 难点:使用动态方法进行键盘和显示的硬件及软件设计。,2,第6章 人机交互通道配置与接口,6.1 mcs-51单片机与键盘的接口技术 6.2 mcs-51单片机与显示器的接口技术 6.3 mcs-51单片机键盘和显示器接口设计实例,3,6.1 mcs-51单片机与键盘的接口技术,键盘:单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。 键盘的分类:按键组连接方式可分为独立连接式键盘与矩阵连接式键盘。,4,6.1.1 键盘结构, 独立式按键 独立式按键是每个按键占用一根i/o端线。,各按键相互独立,电路配置灵活; 按键数量较多时,i/o端线耗费较多,电路结构繁杂; 软件结构简单。 适用于按键数量较少的场合。,5,6.1.1 键盘结构, 行列式(矩阵式)键盘 i/o端线分为行线和列线,按键跨接在行线和列线上,按键按下时,行线与列线发生短路。,占用i/o端线较少; 软件结构教复杂。 适用于按键较多的场合。,6,6.1.2 使用键盘时必须解决的问题,键盘去抖动问题:,键盘的抖动时间一般为520ms,抖动现象会引起cpu对一次键操作进行多次处理,从而可能产生错误。,7,6.1.3 键盘接口,对键盘上所按下的键进行识别。, 程序控制扫描方式 键处理程序固定在主程序的某个程序段。 定时控制扫描方式 利用定时/计数器每隔一段时间产生定时中断,cpu响应中断后对键盘进行扫描。 中断方式 当键盘上有键闭合时,向cpu申请中断,cpu响应中断后对键盘进行扫描。,8,6.1.3 键盘接口,键扫描输入程序的设计方法: (1)判断键盘上是否有键闭合; (2)消除键的机械抖动; (3)确定闭合键的物理位置; (4)得到闭合键的编号; (5)确保cpu对键的一次闭合只做一次处理,9,独立式键盘接口扫描方式,10,keyb:orl p1,#07h ;置p1.0p1.2为输入态 mov a,p1 ;读键值,键闭合相应位为1 anl a,#00000111b ;屏蔽高5位,保留有键值信息的低3位 jz gret ;全0,无键闭合,返回 lcall dy10ms ;非全0,有键闭合,延时10ms,软件去抖动 mov a,p1 ;重读键值,键闭合相应位为1 anl a,#00000111b ;屏蔽高5位,保留有键值信息的低3位 jz gret ;全0,无键闭合,返回;非全0,确认有键闭合 jb acc.0,kb0 ;转0#键功能程序 jb acc.1,kb1 ;转1#键功能程序 jb acc.2,kb2 ;转2#键功能程序 gret:ret kb0: lcall work0 ;执行0#键功能子程序 ret kb1: lcall work1 ;执行1#键功能子程序 ret kb2: lcall work2 ;执行2#键功能子程序 ret,11,独立式键盘接口扫描方式,12,独立式键盘接口扫描方式,主程序如下: org 0000h ljmp main org 0003h ; 外部中断0中断服务入口地址 ljmp inti ; 转中断服务 org 0100h main: setb ea ; 开总中断允许 setb ex0 ; 开int0中断 setb it0 ; 下降沿有效 中断服务程序清单如下: inti: call d20 ; 延时去抖动 mov p1, #0ffh ; p1口送全1值 mov a, p1 ; 读p1口各引脚 cjne a, #0ffh,close ; 验证是否确实有键闭合 ajmp int0 ; 无键按下,13,独立式键盘接口扫描方式,close: jnb acc.7, key 7 ; 查询7号键 jnb acc.6, key 6 ; 查询6号键 jnb acc.5, key5 ; 查询5号键 jnb acc.4, key4 ; 查询4号键 jnb acc.3, key 3 ; 查询3号键 jnb acc.2, key 2 ; 查询2号键 jnb acc.1, key 1 ; 查询1号键 jnb acc.0,key 0 ; 查询0号键 int0: reti key 7: ; 7号键处理程序 key 71: mov a, p1 ; 再读p1口各引脚 jnb acc.7, func71 ; 确认键是否释放 reti key 6: ; 其他键处理程序 d20: ; 20ms延时子程序 ret end,14,矩阵式键盘接口行反转法,15,矩阵式键盘接口行反转法,16,矩阵式键盘接口行动态扫描方法,17,矩阵式键盘接口行动态扫描方法,18,矩阵式键盘接口行动态扫描方法,19,矩阵式键盘接口行动态扫描方法,20,矩阵式键盘接口行动态扫描方法,键号、行数m、列数n 扫描初值初始化,输出扫描初值,读列值,是否有 为0列?,扫描初值左移, 键号+n,计数器-1,m行扫描完?,n,n,y,y,后续处理,列值循环右移1位,进位位为0?,键盘处理命令,21,通过串行口扩展键盘接口,其中,p1.0和p1.1作为行线。键盘的编码为: p1.0线上的8个键分别为00h07h,p1.1线上的8个键分别为080fh。,22,org 1000h serkey:mov scon,#00h ; 设置串行 mov a, #00h ; 键盘初始化,送00h到列线上 lcall varto ; 发送数据 chk: jnb p1.0,chk0 ; 检查是否有键按下 jnb p1.1, chk0 ; 检查是否有键按下 ajmp back ; 无键按下,继续查找 chk0: lcall dly1 ; 调用10ms延时子程序,去抖 jnb p1.0,chen ; 确实有键按下,转chen jnb p1.1,chen ajmp back ; 无键按下,继续查找 chen: mov r2,#0feh ; 首列扫描字送r2, mov r4,#00h ; 首列偏移值 chkn: mov a,r2 ; 发送列扫描字 lcall varto jb p1.0,ch1 ; 检查p1.0有无键按下;若无转ch1 mov a,#0 ; 第一行首列值送a,00h+(r4) ajmp ckey ; 转求键号,23,ch1: jb p1.1, next ; 检查p1.1有无键按下;若无,转next mov a, #8h ; 第二行首列值送a ckey: add a, r4 ; 求键号,并入栈保 ret next: inc r4 ; 指向下一列 mov a, r2 ; 取出原扫描字 jnb acc.7,kend; 是否已检查完8列? rl a ; 8列未完,指向下一列 mov r2, a ; 列扫描字送r2 ajmp chkn ; 8列未完,检查下一列 kend: ajmp serkey ; 8列查完,未查到有键按下,等待 varto: mov sbuf, a ; 发送a中数据 jnb ti, $ ; 发送等待 clr ti ; 清除 back: ret dly1: ; 延时10ms子程序(略) end ; 结束,24,通过串行口扩展键盘接口,25,6.2 mcs-51单片机与显示器的接口技术,单片机应用系统中使用的显示器主要有: 发光二极管显示器,简称led(light emitting diode); 液晶显示器,简称lcd(liquid crystal display);,26,6.2.1 led显示器及其接口,发光二极管简称led(light emitting diode)。led显示器从外观可分为 “8”字形的七段数码管、米字形数码管、点阵块、矩形平面显示器、数字笔划显示器等。,共阳极,共阴极,27,6.2.1 led显示器及其接口,28,6.2.1 led显示器及其接口,led点阵模块显示器:,29,led的驱动接口,30,led显示器显示与驱动方式,led显示器有静态显示和动态显示两种方式。,静态显示就是当led显示器显示某个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示另一个字符为止。,31,静态显示方式,32,静态显示方式,33,org 1000h dsp8255: mov dptr, #7fffh mov a, #80h ; 8255a工作方式设置 movx dptr, a,mov r0, #40h mov r1, #3 mov dptr, #7ffch loop: mov a, r0 add a, #06h movc a, a+pc movx dptr, a inc r0 inc dptr djnz r3, loop ret tab: db 0c0h, 0f9h, 0a4h, 0b0h,99h, 92h, 82h, 0f8h db 80h, 90h, 88h, 83h, 0c6h, 0a1h, 86h, 8eh end,34,静态显示方式,35,静态显示方式,36,dispser: mov r5, #03h ; 显示3个字符 mov r1, #40h ; 40h42h存放要显示的数据 setb p1.0 dl0: mov a, r1 ; 取出要显示的数据 mov dptr, #tab ; 指向段数据表 movc a, a+dptr ; 查表取字形数据 mov sbuf, a ; 送出数据,进行显示 jnb t1, $ ; 输出完否? clr t1 ; 输出完,清中断标志 dec r1 ; 再取下一个数据 djnz r5, dl0 ; 循环3次 clr p1.0 ret ; 返回 tab: db 0c0h, 0f9h, 0a4h, 0b0h; 段数据表(共阳极) db end,37,动态显示方式,在多位led显示时,将所有位的段选线并联在一起,由一个8位i/o口控制。而每位led的共阴(或共阳)极公共端分别由相应的i/o线控制,实现各位的分时选通。,38,动态显示方式,p1.0,p1.3,p0.0,p0.7,39,p1.0,p1.3,p0.0,p0.7,connection to anodes,1,0,0,0,1001111,40,p1.0,p1.3,p0.0,p0.7,connection to anodes,0,1,0,0,0001111,41,p1.0,p1.3,p0.0,p0.7,connection to anodes,0,0,1,0,0000000,42,p1.0,p1.3,p0.0,p0.7,connection to anodes,0,0,0,1,0000001,43,p1.0,p1.3,p0.0,p0.7,connection to anodes,display 3,display 2,display 1,display 0,7-segment to display 1780,44,动态显示方式,45,动态显示方式,46,47,动态显示方式,48,6.2.2 lcd显示器及其接口,笔段式和点阵式(可分为字符型和图像型)。,笔段式lcd显示器:类似于led数码管显示器。每个显示器的段电极包括a, b, c, d, e, f, g七个笔划(段)和一个背电极bp(或com)。可以显示数字和简单的字符。 点阵式lcd显示器:段电极与背电极呈正交带状分布,液晶位于正交的带状电极间。点阵式lcd的控制一般采用行扫描方式,如图右所示为显示字符“a”的情况。,49,6.2.2 lcd显示器及其接口,在实际应用中,用户很少直接设计lcd显示器驱动接口,一般是直接使用专用的lcd显示驱动器或lcd显示模块lcm 。 lcm是把lcd显示屏、背景光源、线路板和驱动集成电路等部件构造成一个整体,作为一个独立部件使用。其特点是功能较强、易于控制、接口简单,在单片机系统中应用较多。lcm一般带有内部显示ram和字符发生器,只要输入ascii码就可以进行显示。,50,hd44780液晶显示模块,51,hd44780液晶显示模块,52,lcd display module,hitachi hd44780u controller 控制器,rs rw e,data,53,内部结构,54,内部结构,ddram:ddram的内容与显示屏的物理位置一一对应。给ddram某一单元写入欲显示字符的ascii码时,就会在显示屏对应位置显示该字符。,ddram地址与显示位置的对应关系,55,hd44780液晶显示模块,lcd实验模块的连接管脚,56,引脚排列,vss: +5v电源管脚(vcc) vdd: 地管脚(gnd) vo: 液晶显示驱动电源(0v5v),57,引脚排列,db0db7:数据线,可以用8位连接,也可以只用高4位连接。,58,引脚排列,a:背光控制正电源 k:背光控制地,59,引脚排列,rs:数据和指令选择控制端,rs=0:命令/状态;rs=1:数据 r/w:读写控制线,r/w=0:写操作;r/w=1:读操作 e:数据读写操作控制位,通过e端向lcd模块发送一个脉冲,lcd模块与单片机之间将进行一次数据交换,60,基本操作,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,vss,vdd,vo,rs,r/w,e,db0,db1,a,db3,db2,db5,db4,db7,db6,k,lcd模块,单片机与lcd模块之间有四种基本操作: 写命令 读状态 写显示数据 读显示数据,61,基本操作,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,vss,vdd,vo,rs,r/w,e,db0,db1,a,db3,db2,db5,db4,db7,db6,k,lcd模块,62,lcd控制指令,63,lcd控制指令,64,lcd控制指令,因此第一行首地址命令字为:80h 第二行首地址命令字为:c0h,65,lcd控制指令,66,lcd接口程序设计,程序设计 功能设置 写命令子程序 lcd初始化:按一定顺序写命令字 如:写清屏命令字、写ddram光标定位地址命令字 显示数据 写数据子程序 读入状态字读状态子程序,67,68,lcd接口程序设计,69,查寻忙碌位(bf)子程序,查寻忙碌位(bf)子程序: busy: push dpl push dph bf: mov dptr,#8501h ;读bf及ac movx a,dptr jb acc.7,bf ;读bf位,bf=1,忙碌 pop dph pop dpl ret,70,写命令字,采用查询方式:先读入状态字,判断lcd不忙,再向8500h地址写入命令字。,71,写命令字,写控制指令的子程序:r2中存放控制指令代码。 wrc: push dpl ;保护现场 push dph acall busy ;先查寻bf位 mov a,r2 mov dptr,#8500h movx dptr,a pop dph pop dpl ret,72,初始化lcd,液晶显示模块初始化程序要求:选择8位数据总线,显示二行,5*7点阵,ac自动加1,开显示,关光标,清除ddram,置ac=0,字符不闪烁。,命令字1: 00111000b,73,初始化lcd,液晶显示模块初始化程序要求:选择8位数据总线,显示二行,5*7点阵,ac自动加1,开显示,关光标,清除ddram,置ac=0,字符不闪烁。,命令字2: 00000001b,74,初始化lcd,液晶显示模块初始化程序要求:选择8位数据总线,显示二行,5*7点阵,a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论