单片机功能扩展杭电

上传人:第*** 文档编号:61114621 上传时间:2018-11-24 格式:PPT 页数:44 大小:1,002KB
返回 下载 相关 举报
单片机功能扩展杭电_第1页
第1页 / 共44页
单片机功能扩展杭电_第2页
第2页 / 共44页
单片机功能扩展杭电_第3页
第3页 / 共44页
单片机功能扩展杭电_第4页
第4页 / 共44页
单片机功能扩展杭电_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《单片机功能扩展杭电》由会员分享,可在线阅读,更多相关《单片机功能扩展杭电(44页珍藏版)》请在金锄头文库上搜索。

1、第8章 单片机的功能扩展,8.1 MCS-51单片机键盘接口技术 8.2 MCS-51单片机显示器接口技术 8.3 D/A转换器的接口及应用 8.4 A/D转换器的接口及应用,8.1 键盘输入及接口技术,一、什么是键盘 键盘:是由若干按钮组成的开关矩阵,它是单片机系统中最常用的输入设备,键盘在单片机应用系统中,实现输入数据、传送命令等功能,是人机交互的主要手段。 键盘按照实现方式可以分为编码键盘和非编码键盘两大类,在单片机中广泛使用非编码键盘。,独立式,矩阵式,适合于比较少的键盘,适合于比较多的键盘,常见的非编码键盘结构有,二、非编码键盘的键输入程序应完成的基本任务: 1、监测有无键按下。键的

2、闭合与否,反映在电压上就是呈现出高电平或低电平,所以通过电平的高低状态的检测,便可确认按键按下与否。 2、判断是哪个键按下。 3、完成按键处理任务。,键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。它的结构和产生的波形如图所示。,三、独立按键程序设计,P1.0,AT89S51,P1.0,/上拉汇编示例程序 get_key: JB P1_0,no_key CALL Delay ;第一次检测到按键信息 JB P1_0,no_key ; 执行按键功能(第二次检测到按键信息) JB P1_0,no_key ; 等待按键抬起 SJMP $-1 ;跳转到上一行 no_ke

3、y:,/上拉C51示例程序 if(P1_0=0) /第一次检测到按键信息 Delay();/延时20ms左右,消除抖动 if(P1_0=0) /第二次检测到按键信息 /执行按键功能 While(P1_0=0);/等待按键释放 ,四、单片机矩阵键盘接口和键功能的实现,行列式键盘(如图8.1.4所示) 按键识别有两种方法:扫描法和线反转法 1、键盘接口处理的内容,(1)键扫描 首先是判定有没有键被按下,先经输出口向所有列线输出低电平,然后再输入各行线状态,0 0 0 0 0 0 0 0,1,1,1,1,无键盘按下时,以4行8列键盘为例使用列扫描的方法,(2)去抖动,机械开关被按下时,由于机械触点的

4、弹性及电压突跳 等原因,在触点闭合或断开的瞬间会出现电压抖动,510ms,510ms,十分之几 几秒,去抖动的方法,硬件方法,软件方法,在键盘中附加去抖动电路,采用时间延迟以躲过抖动 (大约延迟2030ms),硬件消抖是通过在按键输出电路上加一定的硬件线路来消除抖动,一般采用RS触发器或单稳态电路。如图。,软件消抖是利用延时来跳过抖动过程,3)判断被按键的位置,行线中有状态为低电平,则闭合键找到 但实际扫描继续进行,以发现可能出现的多键同时被按下,(4)键值计算,通常以键的排列顺序安排键号,(5)等待键释放,计算键码之后,再以延时后进行扫描的方法等待键 释放。保证键的一次闭合仅进行一次处理。,

5、2、键盘接口的控制方式,(1)随机方式,每当CPU空闲时执行键盘扫描程序,(2)中断方式,每当有键闭合时才向CPU发出中断请求,中断响应后 执行键盘扫描程序,(3)定时方式,每隔一定时间执行一次键盘扫描程序,定时可由单 片机的定时器完成,8.2 LED显示器接口技术,1 LED显示器概述,LED(Light Emiting Diode):是发光二极管的缩写,1 1 0 1 1 0 1 0,0 0 1 0 0 1 0 1,数码管的特点: 发光响应快,亮度强,高频特性好 机械性能好,使用寿命长,可达105106h,与COMS和 TTL电路兼容 工作电压低,驱动电流适中。每段工作电流为510mA,

6、一只数码管的7段LED全亮需要3570mA。需要驱动电路。,Note:红色、绿色LED的压降为1.8V左右,白色、蓝色LED压降为3V左右,单个LED驱动电流一般为510mA,1、段码:提供给LED显示器的字形代码:,(1)LED静态显示方式 (2)LED动态显示方式,2 LED显示器有两种方式:,N位LED显示器,段控:给显示器提供段码(字形编码)的输入 位控:控制LED显示器亮灭,四位静态LED显示器电路,八位LED动态显示器电路,段控,位控,例1 静态LED举例,编程实现在数码管上依次显示数字“0”“9”,并延时一段时间。,图 8.12 共阴LED静态扫描电路,include unsig

7、ned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /定义共阴字形代码 void delay(void) unsigned int j; for(j=0;j1000;j+); main() unsigned char i; for(i=0;i10;i+) P1 = tablei; /显示“0”“9” delay(); /延时子程序 ,例2 动态扫描举例,试编程用动态扫描的方式实现数字1234的静态显示。,unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0

8、x6d,0x7d,0x07,0x7f,0x6f; unsigned char d11,d22,d33,d44; void display(void) P2 /关位码 ,void delay(void) unsigned int i; for(i=0;i2000;i+); void main(void) while(1) display(); /其他工作 ,编程实现在LED显示器上显示4*4键盘上的按下的对应按键值(0-9)。,原理图见lesson7_4. Dsn 程序见ledsson7_4. C,例3 综合举例,作业,1、在LED显示器上用动态扫描方式实现0123四位数字显示。 2、在LED显

9、示器上显示4位10进制数,按键每按一次,对应的位数上的数值加1。 3、在LED显示器上显示4*4键盘上按下的对应按键值(0-9)。,例7.1:在LED显示器上用静态方式实现12两位数字显示。,参见:lesson7_1.dsn Lesson7_1.c,例7.2:在LED显示器上用动态扫描方式实现0123四位数字显示。,原理图见lesson7_2. Dsn 程序见lesson7_2. C,例7_3:在LED显示器上显示4位10进制数,按键每按一次,对应的位数上的数值加1。,原理图见lesson7_3. Dsn 程序见lesson7_3. C,8.2.2 LCD显示器,LCD是 Liquid Cry

10、stal Display 的简称,LCD的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。,一、什么是LCD?,二、LCD的分类,液晶显示器按照控制方式不同可分为,1 被动矩阵式LCD,2 主动矩阵式LCD,TN-LCD,STN-LCD,DSTN.LCD,TFT-LCD,段码式显示和普通点阵式显示常用被动矩阵式LCD,三、1602应用举例,常见的LCD显示器中1602(图8.2.8)是一款常用的液晶模块,其内部集成了液晶控制器和驱动器,可以显示2行16个英文字母和数字,内部有CGRAM也可以显示少

11、量自定义字符,可以方便地用4或8位并行方式与单片机接口。,/1602 液晶示范程序(关键函数) sbit rs=P22; /数据/命令选择管脚 sbit rw=P21; /读写选择管脚 sbit en=P20; /片选管脚 #define uchar unsigned char void delay(uchar z) uchar x,y; for(x=z;x0;x) for(y=110;y0;y); ,void write_order(uchar order) rs=0; P2=order; delay(4); en=1; delay(4); en=0; ,void write_data(uc

12、har data) rs=1; P2=data; delay(4); en=1; delay(4); en=0; ,void init_lcd() rw=0; en=0; write_order(0x38); /显示模式设置 write_order(0x0c); /显示开关及光标设置 write_order(0x06); write_order(0x01); /清屏 ,void set_xy(uchar x,uchar y) /列x=015,行y=0,1 uchar address; if(y=0) address=0x80+x; else address=0xc0+x; write_order(address); ,void write_string(uchar X,uchar Y,uchar *s) /列x=015,行y=0,1 set_xy(X, Y ); /写地址 while (*s) / 写显示字符 write_data( *s ); s+; ,void main(void) init_lcd(); write_string(2,0,“hello world“); write_string(0,1,“HZDZ university“); while(1) /其他程序 ,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号