《接口技术》PPT课件.ppt
《《接口技术》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《接口技术》PPT课件.ppt(99页珍藏版)》请在三一办公上搜索。
1、1,接口技术,显示接口 开关量输入与键盘接口 A/D转换接口 D/A转换接口,2,显示器接口,显示器是单片机应用系统常用的输出设备,用来显示单片机的键入值、中间信息及运算结果等。单片机应用系统常用显示器LED(发光二极管显示器、数码管显示器)和LCD(液晶显示器)。,P.93,3,一、数码管显示器的结构,ILED,ILED=320mA,P.163,“0”亮,“1”亮,限流电阻,限流电阻,UF=1.51.8V,UF=1.51.8V,“0”驱动:电平稳定,驱动电流大。,“1”驱动:电平不太稳定,驱动电流小。,LED驱动电路:,ILED=320mA,“1”:2.45V,“0”:0.40.8V,不建议
2、!,5,二、字段码 常用一个8位并行I/O口的输出(如P2.7P2.0)对应控制数码管的dpa以显示不同字形。从I/O口输出的驱动数码管以显示不同字形的数据称为字段码(字形码、显示代码)。,【例】共阳极结构的数码管显示“0”的字段码为:,6,共阴极段码和共阳极段码互为相反。,各种显示字符的字段码,“1”有效,“1”有效,“0”有效,“0”有效,7,三、显示字符转换为字段码(查表法),“P”的字段码,73H,“F”的字段码,71H,“4”的字段码,66H,“3”的字段码,4FH,“2”的字段码,5BH,“1”的字段码,06H,“0”的字段码,3FH,TAB+00H,8,1.静态显示方式,共阴极或
3、共阳极点连接在一起接地或+5V。,每位的段选线与一个8位并行口连接。,四、显示方式及其接口,9,【例】用P2、P3口作为静态显示接口,限流电阻R=(Vcc-VF)/IF,10,ORG 0000HLJMP MAINORG 0030H MAIN:MOV 40H,#06HMOV 41H,#08H;显示缓冲单元MOV DPTR,#DTABMOV A,40HMOVC A,A+DPTR;查表求字形码MOV P3,AMOV A,41HMOVC A,A+DPTRMOV P2,ASJMP$,DTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,8
4、3H DB 0C6H,0A1H,86H,8EH;0F的字形码,程序实现将41H、40H内容显示在数码管上。,11,2.动态显示方式原理,所有字段控制共用一个I/O口,每个字位的控制占用一根I/O口线,显示时,在某一时刻,字段口输出第i位的字段码,同时字位口驱动第i位的COM端使其点亮,如此逐位轮流点亮形成稳定的n位数码显示效果。,12,【例】一个8位LED动态显示的过程(以共阴极数码管为例)。,P2.0/A8,FEFCH,FEFEH,FEFDH,控制口 FEFFH方式字:89H=10001001B,字段输出口0对应段亮,字位输出口1对应位显示,4X4键盘接口初始为输入,【例】实验板扩展82C5
5、5A(U3)驱动键盘、显示电路,U3 82C55A,左,右,PB7,PB0,74LS240八反相三态缓冲器,a,dp,PA7,PA0,输出,输出,输入(暂时),PB0,PB7,PA7,PA0,b,第0位,第7位,动态显示方式,实验板LED数码显示器动态驱动的编程逻辑关系:字段驱动:A口8个输出端通过八反相三态缓冲器74LS240驱动阳极段线,从A口输出的8位码与字段的关系如下:字位驱动:B口输出通过双与非OC驱动器75452驱动8个LED数码显示器的公共阴极端,从B口输出的8位码与字位的关系如下:,OC驱动 30V500mA,字段输出口:FEFCH,0对应的段亮,各数据位驱动对应的段:dp g
6、 f e d c b a,字位输出口:FEFDH,1对应的位显示,各数据位驱动的显示位:7位.1 0位(右),逐位驱动,动态更新,80遍/秒以上不频闪,SN75452B 双路非常高速大电流外设驱动器:,实验板动态显示电路简单显示功能驱动程序的设计【例】在右边第2位显示“P”字样:ORG 0000H LCALL D60MS;稍加延时(60mS),等待各芯片均上电复位结束 MOV DPTR,#0FEFFH;82C55A(U3)控制口地址 MOV A,#89H;82C55A(U3)初始化方式字 10001001B=89H MOVX DPTR,A;A、B口输出驱动字段、字位,C口输入 MOV DPTR
7、,#0FEFDH;8255-B口(字位码输出口)MOV A,#02H;位码 0000 0010 B,驱动右边第2位 MOVX DPTR,A;输出字位码 MOV DPTR,#0FEFCH;8255-A口(字段码输出口)MOV A,#8CH;“P”的字段码 1000 1100 B MOVX DPTR,A;输出字段码 SJMP$D60MS:;软件延时40mS子程序 RET END,dp g f e d c b a,【例】在左边两位稳定显示“HA”字样 ORG 0000H;等待复位及82C55(U3)初始化 LOOP:MOV DPTR,#0FEFDH;8255-B口(字位码输出口)MOV A,#80H
8、;位码 1000 0000 B MOVX DPTR,A;输出字位码MOV DPTR,#0FEFCH;8255-A口(字段口)MOV A,#89H;“H”的字段码 1000 1001 BMOVX DPTR,A;输出字段码LCALL D1MS;保持显示1毫秒 MOV DPTR,#0FEFDH;8255-B口(字位码输出口)MOV A,#40H;位码 0100 0000 B MOVX DPTR,A;输出字位码MOV DPTR,#0FEFCH;8255-A口(字段口)MOV A,#88H;“A”的字段码 1000 1000 BMOVX DPTR,A;输出字段码LCALL D1MS;保持显示1毫秒 SJ
9、MP LOOP D1MS:;软件延时1mS子程序 D60MS:;软件延时60mS子程序 END,若改为0.05mS-窜显?若改为20mS-频闪?,h g f e d c b a,h g f e d c b a,【例】以1S间隔在8个数码显示器上巡回显示“L”字样 ORG 0000H;等待复位及8255(U3)初始化 MOV DPTR,#0FEFCH;8255-A口(字段码输出口)MOV A,#0C7H;“L”的字段码 1100 0111 BMOVX DPTR,A;输出字段码 MOV DPTR,#0FEFDH;8255-B口(字位码输出口)MOV A,#01H;初始位码 0000 0001 LO
10、OP:MOVX DPTR,A;输出新的字位码 LCALL D1S;保持1秒时间 RL A;字位码循环左移一位 SJMP LOOP D1S:;软件延时1S子程序 D60MS:;软件延时60mS子程序 END。,h g f e d c b a,1S,若改为0.01、0.001S其效果?,C4-7:MOV A,R0;取当前数据(字符在字段码表中的序号)ADD A,#TAB-NEXTPC;加上TAB与NEXTPC差址(此例为#01H)MOVC A,A+PC;查表得相应字段码NEXTPC:RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H;字段码表:06 DB 0F8H
11、,80H,90H;字段码表续:79,C4-7:MOV A,R0;取当前数据(字符在字段码表中的序号)MOV DPTR,#TAB;DPTR指向字段码表首地址 MOVC A,A+DPTR;查表得相应字段码NEXTPC:RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H;字段码表:06 DB 0F8H,80H,90H;字段码表续:79,查表法求09的BCD码对应的七段码程序例,编写查表求七段码子程序,功能描述:已知非压缩BCD码,求对应的字段码,段码“0”有效,a段最低位;入口条件:R0指向存放09的非压缩BCD码单元;出口条件:查获的BCD码存放在A中;,方法一:
12、采用DPTR为基地址的查表指令,方法二:采用PC为基地址的查表指令,从SW0SW3输入BCD码查表求七段码且驱动显示的程序方法,实验板上的SW0SW7电平开关可用于输入8位二进制数据,要求实现读入SW0SW7电平开关所拨动设定的十进制09的非压缩BCD码,转换为对应的七段码,驱动最左边的LED数码显示器显示该数字。程序步骤如下:设已编写查表求七段码子程序:C4-7,设定栈底指针稍加延时(40mS),等待各芯片均上电复位结束 对82C55A(U3)初始化为A、B口输出驱动字段、字位,C口输入输出最左位有效的字位码输入SW0-7电平屏蔽高四位后存放于44H单元,防止非全0的高四位影响查表结果令R0
13、指向44H单元,这是调用C4-7子程序前须准备好的入口条件LCALL C4-7,得到的七段码存放于A中后返回将七段码输出驱动LED数码显示器转回输入SW0-7电平处,反复执行:检测输入转七段码输出更新显示,【TEST2016.ASM中拆字、动态显示子程序编写实例】,程序实现将时钟时间单元3CH(时)、3BH(分)、3AH(秒)显示在数码管右边6位,过程如下。,拆字,7 6 5 4 3 2 1 0,查表转换成字段码、输出显示,显示缓冲单元(显存),(时),(分),(秒),压缩BCD码,非压缩BCD码,显示A/D值,【TEST2016.ASM中拆字子程序编写实例】CZ:MOV R0,#3AH;拆字
14、子程序。R0指向秒分时单元首址(秒单元)MOV R1,#30H;R1指向显示缓冲单元首地址(对应最右位)CZ1:MOV A,R0;取当前压缩BCD码ANL A,#0FH;保留低4位(个位)MOV R1,A;送非压缩BCD码个位单元INC R1;R1指向高位单元(十位)MOV A,R0;再取原压缩BCD码ANL A,#0F0H;保留高4位(十位)SWAP A;交换到低4位MOV R1,A;送非压缩BCD码十位单元INC R1;指向显缓下一个个位单元INC R0;指向下一个时钟BCD码单元CJNE R0,#3DH,CZ1;未完继续 改CJNE R1,#36H,CZ1也可RET;子程序返回,条件控制
15、循环法,37H36H35H34H33H32H31H30H,0100 0101,0101 1001,0000 1000,3DH3CH3BH3AH,显示缓冲单元,最左次左.次右最右,08:59:45,时分秒,非压缩BCD码,压缩BCD码,(显存),R0,R1,DISP:MOV R0,#30H;显示更新子程序。显示缓冲单元首地址MOV R3,#01H;字位码初值(从最右位起)MOV A,R3;取初始字位码 DISP1:MOV DPTR,#0FEFDH;8255-B口(字位码输出口)MOVX DPTR,A;输出当前字位码MOV A,R0;从显缓取当前位显示数据码 ADD A,#TAB-NEXTPC;加
16、TAB与NEXTPC差址=12H=18 MOVC A,A+PC;查表得相应字段码NEXTPC:MOV DPTR,#0FEFCH;8255-A口(字段码输出口)MOVX DPTR,A;输出新的字段码LCALL D1MS;保持显示1毫秒INC R0;指向下一显示缓冲单元MOV A,R3;取出字位码JB ACC.7,DISP2;判已显示到最左位否RL A;未完,字位码左移1位MOV R3,A;回存新字位码LJMP DISP1;转下一位的显示驱动 DISP2:RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;“0”“9”段码 DB 88H,
17、83H,0C6H,0A1H,86H,8EH,0BFH,00H,0FFH;“A”“F”,“-”,全亮,空格,05H+TAB-NEXTPC,如果取到的是05H,则以(05H+TAB-NEXTPC+PC)为址读得92H,地址相差18个,TEST2016.ASM 显示更新子程序的设计:,TAB+0AH+0BH+0CH+0DH+0EH+0FH+10H+11H+12H TAB+10H+11H+12H,从显缓取的是要显示的字符在字段码表中的序号,3CH3BH3AH,37H36H35H34H33H32H31H30H,0100 0101,0101 1001,0000 1000,显示缓冲单元,最左次左.次右最右,
18、08:59:45,时分秒,非压缩BCD码,压缩BCD码,(显存),(CZ),1111 1100,A/D数据,八位二进制码,R0,字符序号,即“5”的字段码,关显示,(ADSUB),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,#10H;30H-37H为显示缓冲单元,初始值对应显示-8951-MOV 31H,#12HMOV 32H,#01HMOV 33H,#05HMOV 34H,#09HMOV 35H,
19、#08HMOV 36H,#12HMOV 37H,#10HSETB EA;开中断总允许SETB IT0;设定INT0中断请求输入信号下降沿有效SETB EX0;开外部INT0中断允许MOV 38H,#00H;38H单元为实时钟200uS计数单元,清0MOV 39H,#00H;39H单元为10mS计数单元,清0MOV 3AH,#45H;秒单元初值MOV 3BH,#59H;分单元初值MOV 3CH,#08H;时单元初值,对应时钟初值08:59:45,;主工作流程:LOOP:LCALL CZ;调用显示内容送显缓子模块程序(拆字)(将时分秒送右6位显示缓冲单元)LCALL KEY;调用键盘扫描子程序(演
20、示:扫描到按键压着时在左第2位显示键号)LCALL DISP;调用显示更新子程序(动态驱动8位数码显示器一遍,约8mS)LCALL ADSUB;调用A/D子程序(采集ADC0809的AN1输入电压的A/D数据送左2位显示)LCALL DASUB;调用D/A子程序(驱动DAC0832输出周期约2.5S的满幅正向锯齿波)LCALL PB;调用独立按键PB07的检测且对应控制L0L7灯子程序 LCALL SWITCH;调用电平开关SW07的检测且对应控制L8L15灯子程序 SJMP LOOP;反复循环主流程 CZ:MOV R0,#3AH;显示内容送显缓子模块程序(拆字)。置时钟数据单元首地址(秒单元
21、)MOV R1,#30H;置显示缓冲单元首地址(对应于最右显示位)CZ1:MOV A,R0;取当前数据单元BCD码,TEST2016.ASM 总初始化程序中,TEST2016.ASM 主工作流程部分,大约每10mS巡回调用一遍,何时显示?,TEST2016显示驱动问题思考,1、显示更新子程序返回后,主流程调用其他子模块程序期间,驱动哪一位?那这一位驱动持续时间比另7个位来的长,会呈现什么现象?可采取什么程序方法消除?2、原来的显示更新子程序要换驱动下一位的时候,先输出新的位码,此时字段输出口内容依旧,那此刻在新的位驱动的会是哪个位的字符?会呈现什么现象?可采取什么程序方法消除?3、原来的显示更
22、新子程序刚开始首先输出驱动最右位的位码,此时字段输出口内容如果不能确定,那此刻在最右位会被驱动不确定的字符,会呈现什么现象?可采取什么程序方法消除?4、TEST2016.ASM 总初始化程序中对8个显示缓冲单元置了初值,对应显示-8951-字样,为什么一直都没有观察到?那对这8个显示缓冲单元置初值有何实际意义?如何临时屏蔽一些程序的调用使得8个位显示的是这些初始化对应的字样?5、如何扩展字段码表,使得程序可以有更多的字符显示?6、如何通过修改拆字子模块程序一个参数,使时钟显示包含百分之一秒(39H单元内容)?此时最左边两位会显示A/D数据还是小时数?机理怎样?7、如何通过只修改拆字子模块程序的
23、指令参数,使时、分、秒显示在左边或中间的连续6个位?8、如何通过只修改显示更新子模块程序的指令参数,使得只驱动时、分、秒显示在左边或中间或右边的连续6个位?,26,开关量输入与键盘接口,键盘是单片机应用系统的一个重要输入设备,用于输入数据、干预系统的工作状态。按连接方式:独立式按键和行列式(矩阵式)键盘。,P.112,一、开关量输入及其驱动程序的设计例 机械开关触点通断时的抖动现象及影响开关、按钮信号输入电路设计:开关量消除抖动的硬件方法:(电容滤波法、RS触发器消抖电路)开关量的输入及动作状态判别的程序方法:开关量消除抖动的软件方法:(延迟确认法、表决法、滚动滤波法),(维持1、下跳沿、维持
24、0、上跳沿 4种动作状态的检测判别),?,?,触点抖动,28,由于采用软件延时消抖动、等待键释放,造成显示不能及时更新。采用滚动滤波消抖动。,PB=FFH,PBFFH,PB=FFH,0 1t 2t 3t 4t 5t 6t,t为采样时间,无按键 按下 闭合 释放,仅保留最近5次采样值,29,将(U5)82C55的PB口内容输入到29H比较29H2DH内容是否相同,若不同,则放弃,直接返回;相同,将该值存入2EH根据2FH、2EH内容课判断按键状态:若(2FH)=FFH 且(2EH)FFH 表示有键按下,将2EH2FH。若是其它情况,则处于无按键、键长按下或键释放状态。,U58255 PB,滚动存
25、储,滚动滤波消抖动具体实现在存储器中使用7个单元用于滤波 将29H2DH单元内容滚动存储(即2CH2DH,2BH2CH,2AH2BH,29H2AH),PB口8个开关量输入并消抖动子程序的设计(主流程每610mS调用一次,后续子模块可利用经本子程序消抖后的各开关量前态、新态信息,进行开关动作判断)XDPB:MOV 2FH,2EH;PB口输入并消抖子程序。原新态存为前态 MOV DPTR,#0FDFDH;输入PB07新电平值 MOVX A,DPTR MOV 2EH,A;存为新态XDR:RET,总初始化还应增加:输入一次PB07值赋给2EH、2FH单元作为初值,TEST2016.ASM主工作流程插入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 接口技术 接口 技术 PPT 课件

链接地址:https://www.31ppt.com/p-5516362.html