单片机按键模块设计PPT课件下载推荐.ppt
《单片机按键模块设计PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《单片机按键模块设计PPT课件下载推荐.ppt(62页珍藏版)》请在冰豆网上搜索。
7,如何启动定时器工作?
,如何启动定时器工作?
8,请简述,请简述DS1302读取时间的编程过程?
读取时间的编程过程?
本单元任务p任务1独立式键盘设计p任务2键盘中断设计p任务3矩阵式键盘设计p任务4多个外部中断设计任务1独立式键盘设计任务描述:
任务描述:
任务分析:
众多嵌入式单片机系统、嵌入式单片机产品设备中,键盘模块都是众多嵌入式单片机系统、嵌入式单片机产品设备中,键盘模块都是必不可少的,比如手机及各种智能家电等。
本任务通过按键控制点亮流水必不可少的,比如手机及各种智能家电等。
本任务通过按键控制点亮流水灯(灯(8个按键分别对应控制个按键分别对应控制8个个LED),学习最简单的键盘),学习最简单的键盘独立式按键设独立式按键设计方法。
计方法。
键盘实际上是一组开关的集合:
当键按下时,两根导线接通;
释放键盘实际上是一组开关的集合:
释放时,两根导线不通。
时,两根导线不通。
8个按键的键盘电路可考虑在个按键的键盘电路可考虑在P2口上设计,口上设计,8个个LED电电路仍然安装在单片机路仍然安装在单片机P1口。
口。
8个按键分别对应控制个按键分别对应控制8个个LED,按下按键则点,按下按键则点亮对应的灯。
亮对应的灯。
独立式键盘工作原理及应用n独立式键盘的组成是由若干个按键与单片机的I/O口一一的对应连接,然后通过读取单片机I/O的电平状态来确认哪个对应的按键被按下,一般一个独立式按键对应一个功能,可以通过按键的组合来实现多个功能。
P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7key1key2key3key0key4key5key6key7q抖动:
抖动:
当用手按下一个键时,往往出现按键在闭合和断开位置之间当用手按下一个键时,往往出现按键在闭合和断开位置之间来回跳动多次才能到闭合稳定状态的现象;
在来回跳动多次才能到闭合稳定状态的现象;
在释放一个键时,也释放一个键时,也会出现类似的情况,这种情况就是抖动。
按下一个键时产生前沿抖会出现类似的情况,这种情况就是抖动。
按下一个键时产生前沿抖动,释放一个键时产生后沿抖动。
抖动的持续时间随键盘簧片的材动,释放一个键时产生后沿抖动。
抖动的持续时间随键盘簧片的材料和操作员而异,通常在料和操作员而异,通常在510ms。
而。
而510ms已经对程序进行多已经对程序进行多次循环扫描执行,显而易见,抖动问题不解决,就会引起对闭合键次循环扫描执行,显而易见,抖动问题不解决,就会引起对闭合键的多次识别。
的多次识别。
键按下前沿抖动后沿抖动闭合稳定应用举例:
例5-1#includeAT89X51.Hvoidmain()while
(1)if(P2_0=0)/判断判断key0被按下被按下key_delay();
/去抖延时去抖延时10msif(P2_0=0)/再次判断再次判断key0按下按下while(!
P2_0);
/等待闭合释放等待闭合释放P1_0=0;
/点亮点亮LEDif(P2_1=0)/判断判断key1被按下被按下key_delay();
/去抖延时去抖延时10msif(P2_1=0)/再次判断再次判断key1按下按下while(!
P2_1);
/等待闭合释放等待闭合释放P1_0=1;
/熄灭熄灭LEDn1.Proteus电路设计n2.KeilC51程序设计n3.Proteus-Keil联合调试仿真任务实施硬件电路图n
(1)程序流程由独立式键盘工作原理得知,按键是否按下是通过读取按键对应的IO的电平变化而判断的,在程序设计上,即通过读取按键对应IO口的电平是否为低(软件去抖)来决定哪个按键被按下,当判断key0被按下,则点亮LED0;
当判断key1被按下,则点亮LED1。
n主程序设计:
主程序设计:
#includeAT89X51.Hunsignedcharcodeled_light=0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F;
/点亮点亮LED对应的编码对应的编码voidmain()while
(1)if(P2_0=0)/判断判断key0被按下被按下key_delay();
/等待闭合释放等待闭合释放P1=led_light0;
/点亮点亮LED0if(P2_1=0)/判断判断key1被按下被按下key_delay();
/等待闭合释放等待闭合释放P1=led_light1;
/点亮点亮LED1;
n运行Proteus-Keil联合调试仿真任务2键盘中断设计任务描述:
项目组掌握独立式键盘设计后,现要求用项目组掌握独立式键盘设计后,现要求用1个按键控制流水灯运行样个按键控制流水灯运行样式,初始时式,初始时8个个LED按从头到尾方式循环运行,当按下按键,首尾两灯点亮按从头到尾方式循环运行,当按下按键,首尾两灯点亮向中间,到中间后返回首尾的循环运行,再次按下按键又转为从头到尾循向中间,到中间后返回首尾的循环运行,再次按下按键又转为从头到尾循环运行环运行,即,即1个按键交替切换流水灯的两种运行样式。
个按键交替切换流水灯的两种运行样式。
此任务设计有两个主要功能模块,一是按键的判断,二是此任务设计有两个主要功能模块,一是按键的判断,二是LED流水流水灯的运行。
通过前面单元的学习得知,这两个功能在主程序中无限循环判灯的运行。
通过前面单元的学习得知,这两个功能在主程序中无限循环判断执行,正常人完成一次按键的时间需要断执行,正常人完成一次按键的时间需要20ms,而,而LED流水灯运行频率应流水灯运行频率应小于小于50Hz(即应大于(即应大于20ms走一个灯,否则运行太快人眼无法识别),那走一个灯,否则运行太快人眼无法识别),那么如果单片机么如果单片机CPU在执行流水灯显示延时程序期间,正好发生按键,在执行流水灯显示延时程序期间,正好发生按键,CPU无法运行按键扫描程序而导致按键判断的丢失,如果无法运行按键扫描程序而导致按键判断的丢失,如果1s或更长时间走一个或更长时间走一个灯,那么丢失按键的现象将更加严重。
由此可见普通的程序查询独立式按灯,那么丢失按键的现象将更加严重。
由此可见普通的程序查询独立式按键设计方法在此任务设计是无法胜任的。
本任务将介绍单片机重要的内部键设计方法在此任务设计是无法胜任的。
本任务将介绍单片机重要的内部资源资源中断系统,它将有效解决上述问题。
中断系统,它将有效解决上述问题。
1,中断的概念n【例5-2】电路如5-10示,8个LED流水灯安装在P1口,按键K0安装在P2.0上,采用独立式按键识别,实现任务描述中要求的功能。
程序分析:
主程序有两个功能模块,一方面按键判断程序,另一方面LED流水灯程序。
由于按键是两种流水灯运行方式的交替按键,因此可考虑设置按键控制标志位状态,LED流水灯则判断标志位状态决定运行方式,即按键通过标志位间接控制LED流水灯的运行方式。
每次按下按键则把标志位取反,以达到控制LED流水灯的运行。
voidmain()while
(1)if(P2_0=0)/判断判断key0被按下被按下key_delay();
/等待闭合释放等待闭合释放i=0;
/编码下标编码下标i清清0run_flag=run_flag;
/标志位取反标志位取反if(run_flag=0)/判断判断LED运行标志位运行标志位P1=led_light1i+;
/点亮点亮LED流水灯流水灯led_delay();
/点亮延时点亮延时if(i=8)i=0;
elseP1=led_light2i+;
/点亮延时点亮延时if(i=7)i=0;
2,8051单片机中断系统结构n
(1)哪些事件可以引发中断哪些事件可以引发中断8051单片机有5个中断源。
q外部中断0():
由连接在P3.2引脚的外部信号触发q定时/计数器0(T0)溢出中断q外部中断1():
由连接在P3.3引脚的外部信号触发q定时/计数器1(T1)溢出中断q串行口中断:
由发送中断TXD和接收中断RXD组成当它们有中断请求发出时,将相应的中断标志IE0、TF0、IE1、TF1、TI、RI自动置位,单片机CPU根据中断标志位情况判别是哪个中断源发出的中断请求。
中断标志位存放在特殊功能寄存器TCON、SCON中。
n
(2)中断标志中断标志TCONSCONn(3)中断允许与禁止中断允许与禁止IEq
(1)EA:
总中断允许控制。
当EA=1时,开放所有中断,此时各中断源的允许和禁止通过相应的中断允许位单独加以控制;
当EA=0时,禁止所有中断。
q
(2)ES:
允许或禁止串行口中断控制位。
ES=1,允许中断;
ES=0,禁止中断。
q(3)ET1:
允许或禁止定时器T1溢出中断控制位。
ET1=1,允许中断;
ET1=0,禁止中断。
q(4)EX1:
允许或禁止中断控制位。
EX1=1,允许中断;
EX1=0,禁止中断。
q(5)ET0:
允许或禁止定时器T0溢出中断控制位。
ET0=1,允许中断;
ET0=0,禁止中断。
q(6)EX0:
EX0=1,允许中断;
EX0=0,禁止中断。
n(4)中断的响应条件中断的响应条件首先中断源有请求。
其次编程设置单片机CPU允许所有中断源请求(EA=1),并且中断允许寄存器IE相应位置为1。
这样,在每个机器周期内,单片机对所有中断源进行顺序检测,并找到所有有效的中断请求,对其优先级排队。
单片机在紧接着下一个机器周期响应中断条件是:
1无同级或更高级中断占用CPU控制权;
2当前指令执行完毕;
3如果当前指令为RETI或需访问IE、IP的指令,执行完该指令且紧随其后的一条指令也已执行完毕。
否则,单片机将放弃对中断请求的响应。
n(5)中断响应过程中断响应过程中断的响应过程由单片机CPU控制,自动完成,具体有如下几个步骤:
q执行一个硬件子程序调用,处理优先级最高的中断请求,清除中断请求标志位(TI和RI除外);
硬件子程序将单片机当前执行的内容的地址压入堆栈,转入执行相应中断服务程序的第一条指令。
q中断处理程序从入口地址开始一直执行到最后为止;
q系统返回原来被打断的程序处开始继续执行。
3,中断编程结构n
(1)编写中断初始化程序为使单片机CPU在执行主程序过程中能够响应中断,就必须先对使用中断的相关寄存器(TMOD、SCON、IE等)进行初始化。
【例5-3】假设单片机系统允许外部中断0、定时/计数器T0中断,并设定采用边沿触发,则主程序中的中断初始化程序如下:
IT0=1;
/设置为下降沿触发EX0=1;
/允许中断ET0=1;
/允许T0中断EA=1;
/开放所有中断n
(2)编写中断服务程序q中断程序入口。
C51规定了8051单片机每种中断类型对应中断服务程序的入口编号中断中断类型型C51中断中断处理程序的中理程序的中断号断号外部中断00定时/计数器0溢出中断1外部中断12定时/计数器1溢出中断3串行口中断4q现场保护。
如果中断服务程序中要使用与主程序有关的寄存器,那么CPU在执行中断服务程序之前要保护这些寄存器的内容,即“保护现场”,中断返回时再恢复它们的值。
在使用KeiluVison4集成开发环境时,其C51编译器为中断服务程序提供自动现场保