书名:单片机应用技术ISBN:978-7-111-31083-9作者:陆中宏出版社:机械工业出版社本书配有电子课件单片机应用技术高职高专ppt课件项目二定制器控制任务一数码显示任务二按键识别任务三定时时间的设定任务四定时器单片机应用技术高职高专ppt课件任务一数码显示任务要求本任务要求应用4位数码管分别显示片内存储器30H~33H单元的数值(假设存储单元的内容为1~4)。知识目标:(1)认识8段数码管的外形和内部结构。(2)知道8段数码管的显示原理。(3)了解单片机对数码管的控制方式。技能目标:(1)会设计单片机与数码管静态显示的接口电路和控制程序。(2)会设计单片机与数码管动态显示的接口电路和控制程序。单片机应用技术高职高专ppt课件任务一数码显示知识链接1.数码管简介(1)数码管的结构单片机应用技术高职高专ppt课件(2)数码管的显示原理(共阳极数码管)00110100字型码位码知识链接单片机应用技术高职高专ppt课件(3)数码管的字形编码显示字形共阳极共阴极dpgfedCba段码dpgfedcba段码011000000C0H001111113FH111111001F9H0000011006H210100100A4H010110115BH310110000B0H010011114FH41001100199H0110011066H51001001092H011011016DH61000001082H011111017DH711111000F8H0000011107H81000000080H011111117FH91001000090H011011116FHA1000100088H0111011177HB1000001183H011111007CHC11000110C6H0011100139HD10100001A1H010111105EHE1000011086H0111100179HF100011108EH0111000171HP100011008CH0111001173HU11000001C1H001111103EHY1001000191H011011106EH.011111117FH1000000080H灭11111111FFH0000000000H单片机应用技术高职高专ppt课件任务一数码显示知识链接2.数码管显示方式(1)静态显示静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止,显示字形点亮的各段是持续点亮的,没有闪烁,此时的显示亮度主要取决于各段的驱动电流。例2-1应用单片机控制2位数码管分别显示“1”和“2”。试设计电路并编写程序。单片机应用技术高职高专ppt课件任务一数码管显示知识链接1)电路设计。图2-274HC245引脚图CEBA表2-274HC245逻辑功能表AB/输入输入/输出AnBnLLA=B输入LH输入B=AHX高阻高阻单片机应用技术高职高专ppt课件图2-3两位数码管静态显示电路图知识链接单片机应用技术高职高专ppt课件2)程序清单(LI2_1.ASM):ORG0000hJMPSTARTORG0100HSTART:MOVP1,#0F9HMOVP2,#0A4HSJMP$END知识链接单片机应用技术高职高专ppt课件(2)动态显示方式知识链接选用动态显示的系统中一般有多位数码管,各位数码管不是同时点亮显示,而是逐位轮流的点亮(也称逐位扫描)。对每一位数码管而言,每隔一段时间点亮一次,每次点亮一定时间。这样,虽然每个数码管都是亮灭变化的,但只要选择合适的点亮时间和间隔时间,由于人的视觉暂留作用和发光二极管的余辉效应,使人肉眼看到的每个数码管都是稳定显示。一位接一位地轮流点亮各位数码管,这种逐位点亮显示器的过程称为位扫描。3.堆栈指令介绍PUSHdirect;(SP)+1→(SP),(direct)→(SPPOPdirect;(SP)→(direct),(SP)-1→(SP)例2-2试分析下面指令序列的执行结果。①MOVSP,#60H②MOVDPTR,#1234H③PUSHDPL④PUSHDPH指令序列执行的最终结果:(61H)=34H,(62H)=12H,(SP)=62H。知识链接电路设计任务一数码管显示程序设计任务一数码管显示ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#60HMOVR0,#30H;设置显示数值30H~34H是1~4MOVR1,#4MOVA,#01HLOOP1:MOV@R0,AINCAINCR0DJNZR1,LOOP1LOOP:MOVR3,#4;共4位数码管动态显示ACALLDISPLAYAJMPLOOP程序设计MOVA,@R0MOVCA,@A+DPTRMOVP0,ASETBP2.0CLRP2.0;查表求段码并锁存输出MOVA,R2;位码左移,准备点亮下一个数码管RLAMOVR2,AINCR0ACALLDELAYMOVP0,#0FFH;关显示SETBP2.0CLRP2.0DJNZR3,DIS1;循环点亮下一个数码管POPACCRET;数码管动态显示子程序;R3是入口参数,存放显示位数DISPLAY:PUSHACCCLRP3.6SETBP2.7MOVR2,#0FEH;R2单元存放位码值MOVR0,#30H;30H单元存放显示数值MOVDPTR,#SEGADIS1:MOVA,R2MOVP0,ASETBP2.1CLRP2.1;锁存输出位码;延时1ms子程序DELAY:MOVR7,#02HD1EL2:MOVR6,#70HD1EL1:DJNZR6,D1EL1DJNZR7,D1EL2RET;共阳极数码管段码表SEGA:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB80H,90H,88H,83H,0C6H,0A1H,86H,8EHEND程序设计任务一数码管显示1.技能训练(1)在学习板上实现一个数码管静态显示字形“3”。(2)在学习板上实现8个数码管分别显示数字1~8。(3)增加任务中的延时时间,观察数码管的显示情况。2.知识思考(1)什么是数码管的静态显示?(2)简述数码管动态显示过程。(3)什么情况下数据需要保护?本任务程序中可以将“PUSH”和“POP”两条指令去掉吗?拓展训练任务一数码管显示任务二按键识别任务要求选用4个按键,编号分别是“1~4”,当某个键按下后,应用数码管显示按键编号。知识目标:(1)看懂单片机和独立式按键的接口电路。(2)了解独立式按键的工作原理。(3)掌握按键消抖的方法。(4)看懂单片机和矩阵式按键的接口电路。(5)了解矩阵式按键的工作原理。技能目标:(1)会设计单片机与数码管静态显示的接口电路和控制程序。(2)会设计单片机与数码管动态显示的接口电路和控制程序。(3)知道矩阵式按键的识别及控制方法。知识链接任务二按键识别1.按键的分类根据结构,按键可分为两类触点式开关按键无触点式开关按键根据接口原理按键可分为两类编码键盘非编码键盘2.单片机对键盘的控制方式知识链接(1)查询方式:指在程序中用一段专门的扫描和读按键程序不停查询有无按键按下,确定键值。特点:电路简单,但需要占用单片机的机器时间。(2)定时扫描方式:指利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描,检查有无按键按下,确定键值。特点:电路也比较简单,不占用单片机的机器时间,但需要占应用定时器,同时定时的时间不能过长,否则可能检测不到相应得按键。(3)中断扫描方式:指当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描,检查有无按键按下,确定键值。特点:硬件电路上必须要产生中断线,需要与门和非门来产生。但中断方式不占用单片机的机器时间,也不会出现定时方式时的检测不到键盘的情况。3.键盘接口问题:由于机械触点的弹性作用,触点在闭合和断开瞬间的电接触情况不稳定,造成了电压信号的抖动现象。抖动时间:一般为1~10ms(如图2-5所示)。后果:会引起单片机对于一次键操作进行多次处理,因此必须设法消除抖动现象。措施:软件消抖、硬件消抖抖动时间<10ms开关动作时间>100ms“1”“0”<10ms按下抖动闭合稳态释放抖动(1)软件消抖;延时10ms子程序DELAY10:MOVR7,#20;1μsD10EL0:MOVR6,#255;1μsD10EL1:DJNZR6,D10EL1;2μs,执行255次DJNZR7,D10EL0;2μs,循环执行20次RET;2μs延时时间计算:1+[1+2×255+2]×20+2=10263≈10000μs=10ms。(2)硬件消抖图2-6硬件消抖电路4.独立式按键(1)独立式按键结构图2-7独立式与单片机接口电路图;查询方式扫描一次键盘的程序JPDL:MOVA,#0FFHMOVP1,A;置P1口为输入状态JPDL0:MOVA,P1;键状态输入JNBACC.0,JPDL1;检测0号键是否按下,按下转JNBACC.1,JPDL2;检测1号键是否按下,按下转JNBACC.2,JPDL3;检测2号键是否按下,按下转JNBACC.3,JPDL4;检测3号键是否按下,按下转RET;无键按下返回JPDL1:ACALLPS1;PS4分别为每个按键的功能子程序RETJPDL2:ACALLPS2RETJPDL3:ACALLPS3RETJPDL4:ACALLPS4RET5.矩阵式键盘(1)矩阵式键盘的结构及原理图2-8矩阵键盘结构图(2)矩阵式键盘按键的识别以8号键的识别为例来说明扫描法识别按键的过程:按键按下时,与此按键相连的行线与列线短路导通,行线在无按键按下时处于高电平。显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的变化,因此必须使所有列线处在低电平。只有这样,当有按键按下时,该按键所在的行电平才会由高电平变为低电平。CPU根据行电平的变化,就能判定相应的行有键按下。8号键按下时,第3行一定为低电平。然而第3行为低电平时,能否肯定是8号键按下呢?回答是否定的,因为9、10、11号键按下,同样会使第3行为低电平。为进一步确定具体键,不能使所有列线在同一时刻处于低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依次循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。(3)键盘的编码对于矩阵式键盘,按键的位置由行号和列号惟一确定,因此可分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。如图2-8中的8号键,它位于第3行,第0列,因此,其键盘编码应为30H。采用上述编码对于不同行的键离散性较大,不利于散转指令对按键进行处理。因此,可采用依次排列键号的方式对按键进行编码。以图2-8中的4×4键盘为例,可将键号编码为:01H、02H、03H、…、0EH、0FH、10H等16个键号。编码的相互转换可通过计算或查表的方法实现。6.键盘扫描程序键盘扫描程序一般应包括以下内容。_判别有无按键按下。_键盘扫描取得闭合键的行、列值。_用计算法或查表法得到键值。_判断闭合键是否释放,如没释放则继续等待。_将闭合键键号保存,同时转去执行该闭合键的功能。7.指令介绍(1)CJNE指令。指令格式是:CJNE目的,源,rel,共有4条:CJNEA,#data,rel;(A)与data比较,如果A=data,则顺序执行,否则转移CJNEA,direct,rel;(A)与(direct)比较,若相等则顺序执行,否则转移CJNERn,#data,rel;(Rn)与data比较,若相等则顺序执行,否则转移CJNE@Ri,#data,rel;((Ri))与data比较,若相等则顺序执行,否则转移[目的操作数]≠[源操作数]?是分支1[目的操作数][源操作数]?是否分支2分支3进位标志位=1进位标志位=0图2-9CJNE操作示意图例2-3将内部RAM的一个数据块(首址为DATA1)传送到内部数据RAM(首址为DATA2),遇到传送的数据为00H时停止。程序清单:MOVR1,#DATA1;设置数据指针MOVR0,#D