《《接口技术》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《接口技术》PPT课件.ppt(99页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1接口技术接口技术u 显示接口显示接口u 开关量输入与键盘接口开关量输入与键盘接口u A/D转换接口转换接口u D/A转换接口转换接口2 显示器接口显示器接口 显示器是单片机应用系统常用的输出设备显示器是单片机应用系统常用的输出设备,用来显用来显示单片机的键入值、中间信息及运算结果等。示单片机的键入值、中间信息及运算结果等。单片机应用系统常用显示器单片机应用系统常用显示器LEDLED(发光二极管显示器、数码管显示器)和(发光二极管显示器、数码管显示器)和LCDLCD(液(液晶显示器)。晶显示器)。P.93P.933一、数码管显示器的结构一、数码管显示器的结构ILEDILED=320mAP.16
2、3“0”亮“1”亮限流电阻限流电阻UF=1.51.8VUF=1.51.8V“0”驱动:电平稳定,驱动电流大。“1”驱动:电平不太稳定,驱动电流小。LED驱动电路:ILED=320mA“1”:2.45V“0”:0.40.8V不建议!5二、字段码二、字段码 常用一个常用一个8位并行位并行I/O口口的输出的输出(如如P2.7P2.0)对应控对应控制数码管的制数码管的dpa以显示不同以显示不同字形。从字形。从I/O口输出的驱动数口输出的驱动数码管以显示不同字形的数据码管以显示不同字形的数据称为字段码(字形码、显示称为字段码(字形码、显示代码)。代码)。P2.7P2.6P2.5P2.4P2.3P2.2P
3、2.1P2.0字段码字段码dpgfedcba11000000C0H【例例】共阳极结构的数码管显示共阳极结构的数码管显示“0”的字段码为的字段码为:6显示字符显示字符共阴极段码共阴极段码共阳极段码共阳极段码显示字符显示字符共阴极段码共阴极段码共阳极段码共阳极段码03FHC0Hc39HC6H106HF9Hd5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8Hy6EH91H87FH80HH76H89H96FH90HL38HC7HA77FH88H“灭灭”00HFFHb7CH83H 共阴极段
4、码和共阳极段码互为相反。共阴极段码和共阳极段码互为相反。各种显示字符的字段码各种显示字符的字段码“1”有效有效“1”有效有效“0”有效有效“0”有效有效7三、显示字符转换为字段码三、显示字符转换为字段码(查表法查表法)“P”的字段码的字段码73H“F”的字段码的字段码71H“4”的字段码的字段码66H“3”的字段码的字段码4FH“2”的字段码的字段码5BH“1”的字段码的字段码06H“0”的字段码的字段码3FHTAB+00H TAB+0FHTAB+10HTAB+04HTAB+03HTAB+02HTAB+01HDPTR A MOVC A,A+DPTR 81.静态显示方式静态显示方式共阴极或共阳极
5、点连接在共阴极或共阳极点连接在一起接地或一起接地或+5V。每位的段选线与一个每位的段选线与一个8位并行口连接。位并行口连接。四、显示方式及其接口四、显示方式及其接口四、显示方式及其接口四、显示方式及其接口9【例例】用用P2、P3口作为静态显示接口口作为静态显示接口 限流电阻限流电阻R=(Vcc-VF)/IF10 ORG 0000HLJMP MAINORG 0030H MAIN:MOV 40H,#06HMOV 41H,#08H;显示缓冲单元显示缓冲单元MOV DPTR,#DTABMOV A,40HMOVC A,A+DPTR;查表求字形码查表求字形码MOV P3,AMOV A,41HMOVC A,
6、A+DPTRMOV P2,ASJMP$DTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H DB 0C6H,0A1H,86H,8EH ;0F的字形码的字形码程序实现将程序实现将41H、40H内容显示在数码管上。内容显示在数码管上。112.动态显示方式原理动态显示方式原理所有字段控制共用一个所有字段控制共用一个I/O口口每个每个字位字位的控的控制占制占用一用一根根I/O口线口线显示时显示时,在某一时刻在某一时刻,字段口输出第字段口输出第i位的字段码位的字段码,同时字位同时字位口驱动第口驱动第i位的位的COM端使其点亮端使其
7、点亮,如此逐位轮流点亮形成如此逐位轮流点亮形成稳定的稳定的n位数码显示效果。位数码显示效果。12【例例】一个一个8 8位位LEDLED动态显示的过程动态显示的过程(以共阴极数码管为例以共阴极数码管为例)。P2.0/A8P2.0/A8FEFCHFEFCHFEFEHFEFEHFEFDHFEFDH控制口控制口 FEFFHFEFFH方式字:方式字:89H89H=10001001B=10001001B字段输出口字段输出口0 0对应段亮对应段亮字位输出口字位输出口1 1对应位显示对应位显示4X44X4键盘接口键盘接口初始为输入初始为输入【例例】实验板扩展实验板扩展82C55A(U3)82C55A(U3)驱
8、动键盘、显示电路驱动键盘、显示电路U3 82C55A左左右右PB7PB7PB0PB074LS24074LS240八反相三态缓冲器八反相三态缓冲器adpPA7PA0输出输出输出输出 输入输入(暂时暂时)PB0PB7PA7PA0b b第第0 0位位第第7 7位位动态显示方式动态显示方式实验板实验板LEDLED数码显示器动态驱动的数码显示器动态驱动的编程逻辑编程逻辑关系:关系:字字段段驱驱动动:A A口口8 8个个输输出出端端通通过过八八反反相相三三态态缓缓冲冲器器74LS24074LS240驱驱动动阳阳极段线,极段线,从从A A口输出的口输出的8 8位码位码与字段的关系如下:与字段的关系如下:字字
9、位位驱驱动动:B B口口输输出出通通过过双双与与非非OCOC驱驱动动器器7545275452驱驱动动8 8个个LEDLED数数码码显显示器的公共阴极端,示器的公共阴极端,从从B B口输出的口输出的8 8位码位码与字位的关系如下:与字位的关系如下:OCOC驱动驱动 30V 30V500mA500mA字段输出口:字段输出口:FEFCHFEFCH0 0对应的段亮对应的段亮各数据位驱动对应的段:各数据位驱动对应的段:dp g f e d c b adp g f e d c b a字位输出口:字位输出口:FEFDHFEFDH1 1对应的位显示对应的位显示各数据位驱动的显示位:各数据位驱动的显示位:7 7
10、位位.1 0.1 0位位(右右)逐位驱动逐位驱动,动态更新动态更新,8080遍遍/秒以上不频闪秒以上不频闪SN75452B SN75452B 双路非常高速大电流外设驱动器双路非常高速大电流外设驱动器:实验板动态显示电路实验板动态显示电路简单显示功能简单显示功能驱动程序的设计驱动程序的设计 【例例】在右边第在右边第2 2位显示位显示“P”P”字样:字样:ORG 0000H ORG 0000H LCALL D60MSLCALL D60MS ;稍加延时稍加延时(60mS),(60mS),等待各芯片均上电复位结束等待各芯片均上电复位结束 MOV DPTR,#0FEFFH;82C55A MOV DPTR
11、,#0FEFFH;82C55A(U3)U3)控制口地址控制口地址 MOV A,#89H MOV A,#89H ;82C55A(U3);82C55A(U3)初始化方式字初始化方式字 10001001B=89H10001001B=89H MOVX DPTR,A MOVX DPTR,A ;A A、B B口输出口输出驱动字段、字位,驱动字段、字位,C C口输入口输入 MOV DPTR,#0FEFDH ;8255-B MOV DPTR,#0FEFDH ;8255-B口(字位码输出口)口(字位码输出口)MOV A,#02H MOV A,#02H ;位码位码 0000 000000 001 10 B,0 B
12、,驱动右边第驱动右边第2 2位位 MOVX DPTR,A ;MOVX DPTR,A ;输出字位码输出字位码 MOV DPTR,#0FEFCH;8255-A MOV DPTR,#0FEFCH;8255-A口(字段码输出口)口(字段码输出口)MOV A,#8CH ;“P”MOV A,#8CH ;“P”的字段码的字段码 1000 1100 1000 1100 B B MOVX DPTR,A ;MOVX DPTR,A ;输出字段码输出字段码 SJMP$SJMP$D60MS:D60MS:;软件延时软件延时40mS40mS子程序子程序 RETRET END END dp g f e d c b adp g
13、 f e d c b a【例例】在左边两位稳定显示在左边两位稳定显示“HA”HA”字样字样 ORG 0000H ORG 0000H ;等待复位及等待复位及82C55(U3)82C55(U3)初始化初始化 LOOP:LOOP:MOV DPTR,#0FEFDH ;8255-BMOV DPTR,#0FEFDH ;8255-B口(字位码输出口)口(字位码输出口)MOV A,#80H MOV A,#80H;位码位码 1 1000 0000 B 000 0000 B MOVX DPTR,A ;MOVX DPTR,A ;输出字位码输出字位码MOV DPTR,#0FEFCH ;8255-AMOV DPTR,#
14、0FEFCH ;8255-A口口(字段口字段口)MOV A,#89H ;“H”MOV A,#89H ;“H”的字段码的字段码 1000 10011000 1001 B BMOVX DPTR,A ;MOVX DPTR,A ;输出字段码输出字段码LCALL D1MS ;LCALL D1MS ;保持显示保持显示1 1毫秒毫秒 MOV DPTR,#0FEFDH ;8255-BMOV DPTR,#0FEFDH ;8255-B口(字位码输出口)口(字位码输出口)MOV A,#40H MOV A,#40H ;位码位码 0 01 100 0000 B 00 0000 B MOVX DPTR,A ;MOVX D
15、PTR,A ;输出字位码输出字位码MOV DPTR,#0FEFCH ;8255-AMOV DPTR,#0FEFCH ;8255-A口口(字段口字段口)MOV A,#88H ;“A”MOV A,#88H ;“A”的字段码的字段码 1000 10001000 1000 B BMOVX DPTR,A ;MOVX DPTR,A ;输出字段码输出字段码LCALL D1MS ;LCALL D1MS ;保持显示保持显示1 1毫秒毫秒 SJMP LOOPSJMP LOOP D1MS:;D1MS:;软件延时软件延时1mS1mS子程序子程序 D60MS:D60MS:;软件延时软件延时60mS60mS子程序子程序
16、END END 若改为0.05mS-窜显?若改为20mS-频闪?h g f e d c b ah g f e d c b a【例例】以以1S1S间隔在间隔在8 8个数码显示器上巡回显示个数码显示器上巡回显示“L”L”字样字样 ORG 0000H ORG 0000H ;等待复位及等待复位及8255(U3)8255(U3)初始化初始化 MOV DPTR,#0FEFCH ;8255-A MOV DPTR,#0FEFCH ;8255-A口(字段码输出口)口(字段码输出口)MOV A,#0C7H ;“L”MOV A,#0C7H ;“L”的字段码的字段码 1100 0111 1100 0111 B BMO
17、VX DPTR,A ;MOVX DPTR,A ;输出字段码输出字段码 MOV DPTR,#0FEFDH ;8255-BMOV DPTR,#0FEFDH ;8255-B口(字位码输出口)口(字位码输出口)MOV A,#01H MOV A,#01H;初始位码初始位码 0000 0001 0000 0001 LOOP:LOOP:MOVX DPTR,A ;MOVX DPTR,A ;输出新的字位码输出新的字位码 LCALL D1S ;LCALL D1S ;保持保持1 1秒时间秒时间 RL A RL A ;字位码循环左移一位字位码循环左移一位 SJMP LOOPSJMP LOOP D1S:D1S:;软件延
18、时软件延时1S1S子程序子程序 D60MS:D60MS:;软件延时软件延时60mS60mS子程序子程序 END END 。h g f e d c b a1S若改为0.01、0.001S其效果?C4C4-7:MOV A,R0 -7:MOV A,R0 ;取当前数据(字符在字段码表中的序号)取当前数据(字符在字段码表中的序号)ADD A,#TAB-NEXTPC ADD A,#TAB-NEXTPC;加上加上TABTAB与与NEXTPCNEXTPC差址差址(此例为此例为#01H#01H)MOVC A,A+PC MOVC A,A+PC ;查表得相应字段码查表得相应字段码NEXTPC:RETNEXTPC:R
19、ET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H ;字段码表:字段码表:0 06 6 DB 0F8H,80H,90H DB 0F8H,80H,90H ;字段码表续:字段码表续:779 9 C4C4-7:MOV A,R0 -7:MOV A,R0 ;取当前数据(字符在字段码表中的序号)取当前数据(字符在字段码表中的序号)MOV DPTR,#MOV DPTR,#TAB ;DPTRTAB ;DPTR指向字段码表首地址指向字段码表首地址 MOVC A,A+MOVC A,A+DPTR DPTR
20、;查表得相应字段码查表得相应字段码NEXTPC:RETNEXTPC:RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82HTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H ;字段码表:字段码表:0 06 6 DB 0F8H,80H,90HDB 0F8H,80H,90H ;字段码表续:字段码表续:779 9 查表法求09的BCD码对应的七段码程序例编写查表求七段码子程序,编写查表求七段码子程序,功能描述:已知非压缩功能描述:已知非压缩BCDBCD码码,求对应的字段码求对应的字段码,段码段码“0 0”有效有效,a,a段最低位;段最低位;入口
21、条件:入口条件:R0R0指向存放指向存放0 09 9的非压缩的非压缩BCDBCD码单元;码单元;出口条件:查获的出口条件:查获的BCDBCD码存放在码存放在A A中;中;方法一:采用方法一:采用DPTRDPTR为基地址为基地址的查表指令的查表指令方法二:采用方法二:采用PCPC为基地址为基地址的查表指令的查表指令 从从SW0SW3输入输入BCD码查表求七段码且驱动显示的程序方法码查表求七段码且驱动显示的程序方法 实验板上的实验板上的SW0SW0SW7SW7电平开关可用于输入电平开关可用于输入8 8位二进制数据,要求实现读入位二进制数据,要求实现读入SW0SW0SW7SW7电平开关所拨动设定的十
22、进制电平开关所拨动设定的十进制0 09 9的非压缩的非压缩BCDBCD码,转换为对应的七段码,转换为对应的七段码,驱动最左边的码,驱动最左边的LEDLED数码显示器显示该数字。数码显示器显示该数字。程序步骤如下:程序步骤如下:设已编写查表求七段码子程序设已编写查表求七段码子程序:C4-7:C4-7设定栈底指针设定栈底指针稍加延时稍加延时(40mS),(40mS),等待各芯片均上电复位结束等待各芯片均上电复位结束 对对82C55A(U3)82C55A(U3)初始化为初始化为A A、B B口输出驱动字段、字位,口输出驱动字段、字位,C C口输入口输入输出最左位有效的字位码输出最左位有效的字位码输入
23、输入SW0-7SW0-7电平电平屏蔽高四位后存放于屏蔽高四位后存放于44H44H单元,防止非全单元,防止非全0 0的高四位影响查表结果的高四位影响查表结果令令R0R0指向指向44H44H单元,这是调用单元,这是调用C4-7C4-7子程序前须准备好的入口条件子程序前须准备好的入口条件LCALL C4-7,LCALL C4-7,得到的七段码存放于得到的七段码存放于A A中后返回中后返回将七段码输出驱动将七段码输出驱动LEDLED数码显示器数码显示器转回输入转回输入SW0-7SW0-7电平处,反复执行:检测输入电平处,反复执行:检测输入转七段码转七段码输出更新显示输出更新显示【TEST2016.AS
24、MTEST2016.ASM中中拆字、动态显示子程序拆字、动态显示子程序编写实例编写实例】程序实现将时钟时间单元程序实现将时钟时间单元3CH3CH(时)、(时)、3BH3BH(分)、(分)、3AH3AH(秒)(秒)显示在数码管右边显示在数码管右边6 6位,过程如下。位,过程如下。拆字拆字7 6 5 4 3 2 1 0 查表转换成字查表转换成字段码、输出显示段码、输出显示显示缓冲单元(显存)显示缓冲单元(显存)(时)(时)(分)(分)(秒)(秒)压缩压缩BCDBCD码码非压缩非压缩BCDBCD码码显示显示A/DA/D值值【TEST2016.ASMTEST2016.ASM中中拆字子程序拆字子程序编写
25、实例编写实例】CZ:MOV R0,#3AH CZ:MOV R0,#3AH ;拆字子程序。拆字子程序。R0R0指向秒分时单元首址指向秒分时单元首址(秒单元秒单元)MOV R1,#30H MOV R1,#30H ;R1;R1指向指向显示缓冲单元首地址显示缓冲单元首地址(对应最右位对应最右位)CZ1:MOV A,R0 CZ1:MOV A,R0 ;取取当前当前压缩压缩BCDBCD码码ANL A,#0FH ANL A,#0FH ;保留低保留低4 4位位(个位个位)MOV R1,A MOV R1,A ;送送非压缩非压缩BCDBCD码码个位单元个位单元INC R1 INC R1 ;R1;R1指向高位单元指向
26、高位单元(十位十位)MOV A,R0 MOV A,R0 ;再取原再取原压缩压缩BCDBCD码码ANL A,#0F0H ANL A,#0F0H ;保留高保留高4 4位位(十位十位)SWAP A SWAP A ;交换到低交换到低4 4位位MOV R1,A MOV R1,A ;送送非压缩非压缩BCDBCD码码十位单元十位单元INC R1 INC R1 ;指向显缓下一个个位单元指向显缓下一个个位单元INC R0 INC R0 ;指向下一个时钟指向下一个时钟BCDBCD码单元码单元CJNE R0,#3DH,CZ1CJNE R0,#3DH,CZ1;未完继续未完继续 改改CJNE R1,#36H,CZ1CJ
27、NE R1,#36H,CZ1也可也可RET RET ;子程序返回子程序返回条件控制循环法条件控制循环法0000 01010000 01000000 10010000 01010000 10000000 000037H37H36H36H35H35H34H34H33H33H32H32H31H31H30H30H0100 01010101 10010000 10003DH3DH3CH3CH3BH3BH3AH3AH显示缓冲单元显示缓冲单元最左最左次左次左 .次右次右最右最右08:59:4508:59:45时时分分秒秒非压缩非压缩BCD码码压缩压缩BCDBCD码码(显存显存)R0R0R1R1 DISPDI
28、SP:MOV R0:MOV R0,#30H ;#30H ;显示更新子程序显示更新子程序。显示缓冲单元显示缓冲单元首地址首地址MOV R3MOV R3,#01H#01H ;字位码初值(从最右位起)字位码初值(从最右位起)MOV AMOV A,R3 R3 ;取初始字位码取初始字位码 DISP1:MOV DPTR DISP1:MOV DPTR,#0FEFDH#0FEFDH;8255-B;8255-B口口(字位码输出口字位码输出口)MOVX DPTRMOVX DPTR,A A ;输出当前字位码输出当前字位码MOV AMOV A,R0 ;R0 ;从显缓取从显缓取当前位显示数据码当前位显示数据码 ADD
29、AADD A,#TAB-NEXTPC#TAB-NEXTPC;加加TABTAB与与NEXTPCNEXTPC差址差址 =12H=18=12H=18 MOVC AMOVC A,A+PC A+PC ;查表得相应字段码查表得相应字段码NEXTPC:MOV DPTRNEXTPC:MOV DPTR,#0FEFCH#0FEFCH;8255-A;8255-A口(字段码输出口)口(字段码输出口)MOVX DPTRMOVX DPTR,A A ;输出输出新的新的字段码字段码LCALL D1MS LCALL D1MS ;保持显示保持显示1 1毫秒毫秒INC R0 INC R0 ;指向下一显示缓冲单元指向下一显示缓冲单元
30、MOV AMOV A,R3 ;R3 ;取出字位码取出字位码JB JB ACC.7,DISP2 ;判已显示到最左位否判已显示到最左位否RL A RL A ;未完未完,字位码左移字位码左移1 1位位MOV R3MOV R3,A A ;回存新字位码回存新字位码LJMP DISP1 LJMP DISP1 ;转下一位的显示驱动转下一位的显示驱动 DISP2:RETDISP2:RET TAB:TAB:DBDB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;“0 0”“9 9”段码段码 DBDB 88H 88H,83H83H,0C6H0C6H,0A1H0A1H,
31、86H86H,8EH8EH,0BFH0BFH,00H00H,0FFH0FFH;“A A”“F F”,“-”,全亮全亮,空格空格05H+TAB-NEXTPC 如果取到的是05H则以(05H+TAB-NEXTPC+PC)为址读得92H地址地址相差相差1818个个TEST201TEST2016 6.ASM.ASM 显示更新子程序显示更新子程序的设计的设计:TAB+0AH +0BH +0CH +0DH +0EH +0FH +10H +11H +0AH +0BH +0CH +0DH +0EH +0FH +10H +11H +12H TAB12H TAB+10H +11H +12H 从显缓取的是要显示的字
32、符在字段码表中的序号3CH3CH3BH3BH3AH3AH0000 01010000 01000000 10010000 01010000 10000000 00000000 11000000 111137H37H36H36H35H35H34H34H33H33H32H32H31H31H30H30H0100 01010101 10010000 1000显示缓冲单元显示缓冲单元最左最左次左次左 .次右次右最右最右08:59:4508:59:45时时分分秒秒非压缩非压缩BCDBCD码码压缩压缩BCDBCD码码(显存显存)(CZ)(CZ)1111 1100A/DA/D数据数据八位二进制码八位二进制码R0
33、R0 字符序号字符序号 即即“5 5”的字段码的字段码关显示(ADSUB)(ADSUB)A A D1MS:MOV R7,#115 ;软件延时软件延时1mS子程序子程序 D1MS1:NOP ;(1+8*115+2)*12/11059.2KHz=1.0015mS NOP NOP NOP NOP NOP DJNZ R7,D1MS1 RET MOV 30H,#10HMOV 30H,#10H;30H-37H;30H-37H为显示缓冲单元为显示缓冲单元,初始值对应显示初始值对应显示-8951-8951-MOV 31H,#12HMOV 31H,#12HMOV 32H,#01HMOV 32H,#01HMOV
34、33H,#05HMOV 33H,#05HMOV 34H,#09HMOV 34H,#09HMOV 35H,#08HMOV 35H,#08HMOV 36H,#12HMOV 36H,#12HMOV 37H,#10HMOV 37H,#10HSETB EASETB EA;开中断总允许开中断总允许SETB IT0SETB IT0;设定设定INT0INT0中断请求输入信号下降沿有效中断请求输入信号下降沿有效SETB EX0SETB EX0;开外部开外部INT0INT0中断允许中断允许MOV 38H,#00HMOV 38H,#00H;38H;38H单元为实时钟单元为实时钟200uS200uS计数单元,清计数单
35、元,清0 0MOV 39H,#00HMOV 39H,#00H;39H;39H单元为单元为10mS10mS计数单元,清计数单元,清0 0MOV 3AH,#45HMOV 3AH,#45H;秒单元初值秒单元初值MOV 3BH,#59HMOV 3BH,#59H;分单元初值分单元初值MOV 3CH,#08HMOV 3CH,#08H;时单元初值,对应时钟初值时单元初值,对应时钟初值08:59:4508:59:45;主工作流程:主工作流程:LOOP:LCALL CZ ;LOOP:LCALL CZ ;调用显示内容送显缓子模块程序调用显示内容送显缓子模块程序(拆字拆字)()(将时分秒送右将时分秒送右6 6位显示
36、缓冲单元位显示缓冲单元)LCALL KEYLCALL KEY;调用键盘扫描子程序调用键盘扫描子程序(演示:扫描到按键压着时在左第演示:扫描到按键压着时在左第2 2位显示键号位显示键号)LCALL DISP ;LCALL DISP ;调用显示更新子程序调用显示更新子程序(动态驱动动态驱动8 8位数码显示器一遍,约位数码显示器一遍,约8mS)8mS)LCALL ADSUBLCALL ADSUB;调用调用A/DA/D子程序子程序(采集采集ADC0809ADC0809的的AN1AN1输入电压的输入电压的A/DA/D数据送左数据送左2 2位显示位显示)LCALL DASUBLCALL DASUB;调用调
37、用D/AD/A子程序子程序(驱动驱动DAC0832DAC0832输出周期约输出周期约2.5S2.5S的满幅正向锯齿波的满幅正向锯齿波)LCALL PBLCALL PB;调用独立按键调用独立按键PB0PB07 7的检测且对应控制的检测且对应控制L0L0L7L7灯子程序灯子程序 LCALL SWITCHLCALL SWITCH;调用电平开关调用电平开关SW0SW07 7的检测且对应控制的检测且对应控制L8L8L15L15灯子程序灯子程序 SJMP LOOP ;SJMP LOOP ;反复循环主流程反复循环主流程 CZ:MOV R0,#3AH CZ:MOV R0,#3AH ;显示内容送显缓子模块程序显
38、示内容送显缓子模块程序(拆字拆字)。置时钟数据单元首地址。置时钟数据单元首地址(秒单元秒单元)MOV R1,#30H MOV R1,#30H ;置显示缓冲单元首地址置显示缓冲单元首地址(对应于最右显示位对应于最右显示位)CZ1:MOV A,R0 CZ1:MOV A,R0 ;取当前数据单元取当前数据单元BCDBCD码码 TEST2016.ASM TEST2016.ASM 总初始化程序中总初始化程序中TEST2016.ASM TEST2016.ASM 主工作流程部分主工作流程部分大约每大约每10mS10mS巡回调用一遍巡回调用一遍何时显示?TEST2016显示驱动问题思考 1 1、显示更新子程序返
39、回后,主流程调用其他子模块程序期间,驱动哪一位、显示更新子程序返回后,主流程调用其他子模块程序期间,驱动哪一位?那这一位驱动持续时间比另?那这一位驱动持续时间比另7 7个位来的长,会呈现什么现象?可采取什么程个位来的长,会呈现什么现象?可采取什么程序方法消除?序方法消除?2 2、原来的显示更新子程序要换驱动下一位的时候,先输出新的位码,此时、原来的显示更新子程序要换驱动下一位的时候,先输出新的位码,此时字段输出口内容依旧,那此刻在新的位驱动的会是哪个位的字符?会呈现什么字段输出口内容依旧,那此刻在新的位驱动的会是哪个位的字符?会呈现什么现象?可采取什么程序方法消除?现象?可采取什么程序方法消除
40、?3 3、原来的显示更新子程序刚开始首先输出驱动最右位的位码,此时字段输、原来的显示更新子程序刚开始首先输出驱动最右位的位码,此时字段输出口内容如果不能确定,那此刻在最右位会被驱动不确定的字符,会呈现什么出口内容如果不能确定,那此刻在最右位会被驱动不确定的字符,会呈现什么现象?可采取什么程序方法消除?现象?可采取什么程序方法消除?4 4、TEST2016.ASM TEST2016.ASM 总初始化程序中对总初始化程序中对8 8个显示缓冲单元置了初值,对应显示个显示缓冲单元置了初值,对应显示-8951-8951-字样,为什么一直都没有观察到?那对这字样,为什么一直都没有观察到?那对这8 8个显示
41、缓冲单元置初个显示缓冲单元置初值有何实际意义?如何临时屏蔽一些程序的调用使得值有何实际意义?如何临时屏蔽一些程序的调用使得8 8个位显示的是这些初始个位显示的是这些初始化对应的字样?化对应的字样?5 5、如何扩展字段码表,使得程序可以有更多的字符显示?、如何扩展字段码表,使得程序可以有更多的字符显示?6 6、如何通过修改拆字子模块程序一个参数,使时钟显示包含百分之一秒、如何通过修改拆字子模块程序一个参数,使时钟显示包含百分之一秒(39H39H单元内容)?此时最左边两位会显示单元内容)?此时最左边两位会显示A/DA/D数据还是小时数?机理怎样?数据还是小时数?机理怎样?7 7、如何通过只修改拆字
42、子模块程序的指令参数,使时、分、秒显示在左边或、如何通过只修改拆字子模块程序的指令参数,使时、分、秒显示在左边或中间的连续中间的连续6 6个位?个位?8 8、如何通过只修改显示更新子模块程序的指令参数,使得只驱动时、分、如何通过只修改显示更新子模块程序的指令参数,使得只驱动时、分、秒显示在左边或中间或右边的连续秒显示在左边或中间或右边的连续6 6个位?个位?26 开关量输入与开关量输入与键盘接口键盘接口 键盘是单片机应用系统的一个重要输入设备键盘是单片机应用系统的一个重要输入设备,用于用于输入数据、干预系统的工作状态。输入数据、干预系统的工作状态。按连接方式按连接方式:独立式按键和行列式(矩阵
43、式)键盘。独立式按键和行列式(矩阵式)键盘。P.112P.112 一、开关量输入及其驱动程序的设计例一、开关量输入及其驱动程序的设计例 机械开关触点通断时的抖动现象及影响机械开关触点通断时的抖动现象及影响开关、按钮信号输入电路设计:开关、按钮信号输入电路设计:开开关关量量消消除除抖抖动动的的硬硬件件方方法法:(电电容容滤滤波波法法、RSRS触触发发器器消消抖抖电电路路)开关量的输入及动作状态判别的程序方法:开关量的输入及动作状态判别的程序方法:开关量消除抖动的软件方法:开关量消除抖动的软件方法:(延迟确认法、表决法、延迟确认法、表决法、滚动滤波法滚动滤波法)(维持1、下跳沿、维持0、上跳沿 4
44、种动作状态的检测判别)?触点抖动28 由于采用软件延时消抖动、等待键释放,造成显示不能及由于采用软件延时消抖动、等待键释放,造成显示不能及时更新。时更新。采用滚动滤波消抖动。采用滚动滤波消抖动。PB=FFHPB FFH PB=FFH0 1t 2t 3t 4t 5t 6t t为采样时间为采样时间无按键无按键 按下按下 闭合闭合 释放释放0tFF1tFF2tFF3tFF4tFE5tFE6tFF7tFE8tFF9tFE10tFE11tFE12tFE仅保留最近5次采样值292FH前一次滤波结果前一次滤波结果2EH当前滤波结果当前滤波结果2DH 最近最近5 5次输入次输入2CH2BH2AH29H将将(U
45、5)82C55(U5)82C55的的PBPB口内容口内容输入到输入到29H29H比较比较29H29H2DH2DH内容是否相内容是否相同,若不同,则放弃,直接同,若不同,则放弃,直接返回;相同,将该值存入返回;相同,将该值存入2EH2EH根据根据2FH2FH、2EH2EH内容课判断内容课判断按键状态:按键状态:若(若(2FH2FH)=FFH=FFH 且且 (2EH2EH)FFH FFH 表示有键按表示有键按下,将下,将2EH2EH2FH 2FH。若是其它情况,则若是其它情况,则处于无按键、键长按下或键处于无按键、键长按下或键释放状态释放状态。U58255 PB滚滚动动存存储储 滚动滤波消抖动具体
46、实现滚动滤波消抖动具体实现在存储器中使用在存储器中使用7 7个单元用于滤波个单元用于滤波 将将29H29H2DH2DH单元内容滚动存储(即单元内容滚动存储(即2CH2CH2DH2DH,2BH2BH2CH2CH,2AH2AH2BH2BH,29H29H2AH 2AH)PBPB口口8 8个个开关量输入并消抖动子程序开关量输入并消抖动子程序的设计的设计(主流程每(主流程每6 610mS10mS调用一次,后续子模块可利用经本子程序消抖后的各开关调用一次,后续子模块可利用经本子程序消抖后的各开关量量前态、新态信息,进行开关动作判断前态、新态信息,进行开关动作判断)XDPB:XDPB:MOV MOV 2FH
47、2FH,2EH ;,2EH ;PBPB口输入并消抖子程序口输入并消抖子程序。原新态存为。原新态存为前态前态 MOV DPTR,#0FDFDH ;MOV DPTR,#0FDFDH ;输入输入PBPB0 07 7新电平值新电平值 MOVX A,DPTR MOVX A,DPTR MOV MOV 2EH2EH,A,A ;存为存为新态新态XDR:RETXDR:RET总初始化还应增加:输入一次PB07值赋给2EH、2FH单元作为初值TEST2016.ASMTEST2016.ASM主工作流程插入主工作流程插入 LCALL XDPB LCALL XDPB 指令行,每约指令行,每约10mS10mS反复调用反复调
48、用【每610mS检测一次就具有一定的消抖功效】.MOV 2DH,2CH ;MOV 2DH,2CH ;前前4 4次输入的电平值推至次输入的电平值推至2AH2DH2AH2DH单元单元 MOV 2CH,2BH MOV 2CH,2BH MOV 2BH,2AH MOV 2BH,2AH MOV 2AH,29H MOV 2AH,29H 存存29H29H单元单元 MOV 29H,AMOV 29H,A MOV A,2DH ;MOV A,2DH ;比较近比较近5 5次输入的电平值不一致则次输入的电平值不一致则新态照旧新态照旧 CJNE A,2CH,XDR CJNE A,2CH,XDR CJNE A,2BH,XDR
49、 CJNE A,2BH,XDR CJNE A,2AH,XDR CJNE A,2AH,XDR CJNE A,29H,XDR CJNE A,29H,XDR 近近5 5次输入的电平值一致则次输入的电平值一致则 PB PB口口8 8个个开关量输入并消抖动子程序开关量输入并消抖动子程序的设计的设计 (主流程每(主流程每6 610mS10mS调用一次,后续子模块可利用经本子程序消抖后的各开关调用一次,后续子模块可利用经本子程序消抖后的各开关量量前态、新态信息,进行开关动作判断前态、新态信息,进行开关动作判断)XDPB:XDPB:MOV MOV 2FH2FH,2EH ;,2EH ;PBPB口输入并消抖子程序
50、口输入并消抖子程序。原新态存为。原新态存为前态前态 MOV DPTR,#0FDFDH ;MOV DPTR,#0FDFDH ;输入输入PB07PB07新电平值新电平值 MOVX A,DPTR MOVX A,DPTR MOV MOV 2EH2EH,A,A ;存为存为新态新态XDR:RETXDR:RET;29H2DH单元无须使用可位寻址单元总初始化还应增加:输入一次PB07值赋给29H2FH单元作为初值TEST2016.ASM主工作流程插入 LCALL XDPB 指令行,每约10mS反复调用2EH单元维持原值【每610mS检测一次就具有一定的消抖功效】综合实验内容(滚动滤波法)在在TEST2016.