第五章单片机接口技术及应用_第1页
第五章单片机接口技术及应用_第2页
第五章单片机接口技术及应用_第3页
第五章单片机接口技术及应用_第4页
第五章单片机接口技术及应用_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章 单片机接口技术及应用n西北工业大学专业课:单片机原理接口与应用主讲教师:杨奇电子信息学院2022年4月28日星期四 82558255D0D7D0D7WRWRRDRDCSCSA0 A1A0 A1P2.7P2.7PA PB PC0PC3 PC4PC7第五章 单片机接口技术及应用 单片机与开关、键盘接口 单片机与LED显示器接口 单片机与键盘/显示器芯片8279接口 单片机串行通信应用 D/A转换器接口和应用 A/D转换器接口和应用n单片机与开关、单片机与开关、键盘接口键盘接口 按键开关抖动问题 按键开关在电路中的连接如图所示:按键未按下时,A点的电平为 +5V;按下时,A点的电平为低电平;

2、由于按键是机械的弹性开关,在按下和断开时,触点在闭合和断开时,会引起A点电位的不稳定,一般有510ms的抖动,导致误差信号,使CPU产生错误的处理。 防抖动的方法防抖动的方法 软件去抖动 硬件去抖动电路 软件去抖动的方法 检测到电平变化 延时一段时间再检测 若电平同上次检测结果,认为有开关动作 否则,是干扰n 1、硬件去抖动:n常用双稳态电路、单稳态电路和RC积分电路三种方法,n如图。 RC按键防抖电路(硬件防抖) 按下按钮开关,电容短路,快速放电,电容两端电压为0;开关弹回时,整个电路形成RC充电电路,其时间常数为RC,电容两端电压为VC,控制电压低于 0.3VCC,保证开关不会出现高低变化

3、情况,只是由低到高,这样就防止抖动了,假如抖动时间在10ms20ms,以10ms为例,根据电路原理上学的知识,可求得C为2.8微F,20ms时,可求得C为5.6微F,一般,R10K,C采用3.3微F,R100K时,C0.33微F. VISTA下配置PROTEL99SE的原理图库和PCB库 使用电子管注意事项RC按键防抖电路(硬件防抖) 2011-01-29 19:19:00| 分类: 电子电路 | 标签: |字号大中小 订阅 按下按钮开关,电容短路,快速放电,电容两端电压为0;开关弹回时,整个电路形成RC充电电路,其时间常数为RC,电容两端电压为VC,控制电压低于 0.3VCC,保证开关不会出

4、现高低变化情况,只是有低到高,这样就防止抖动了,假如抖动时间在10ms20ms,以10ms为例,根据电路原理上学的知识,可求得C为2.8微F,20ms时,可求得C为5.6微F,一般,R10K,C采用3.3微F,R100K时,C0.33微F. 2、软件去抖动在首次检测到按键按下后,先执行一段延时子程序,一 般为10ms延时,由程序确认按键是否按下,达到去抖动的目的。 计算开关的闭合次数,软件去抖动程序: START: MOVR0,#00H;清R0 WAITL: SETB P1.0;写1再输入MOVA,P1;输入JBACC.0,WAITL;闭合时,=0ACALL D10MS;延时10msSETB

5、P1.0;写1再输入MOVA,P1;再输入JBACC.0,WAITL;闭合时,=0INCR0;是闭合,+1 WAITH:SETB P1.0MOVA,P1JNBACC.0,WAITH;断开时,=1ACALL D10MSSETB P1.0;MOVA,P1JNBACC.0,WAITH;断开时,=1SJMP WAITL 小键盘与单片机的接口键盘每个键就是一个按钮开关当键盘中键的数量少时,当作小键盘其接口方法可以和开关一样接到单片机的若干条IO线,或通过一个扩展的输入口接到系统中去键的去抖动方法由软件延时来解决键盘分析程序应包括:键盘分析程序应包括:是否有键按下识别哪个键按下识别按键后,转入相应处理程序

6、n 流程和程序如下:nKEY:MOVR0,#07HKEY1:MOV P1,R0 MOV A,P1;输入键盘信息 ANL A,R0 CLRC SUBB A,R0n JZKEY1;无键按下,n 结果=00H ACALL D10MS; 去抖动 MOVA,P1; 再读 JNBACC.0,K0 JNBACC.1,K1 JNBACC.2,K2 SJMP KEY 小键盘通过扩展I/O口连接单片机 S1S4S3S2 P0.0 P0.1 P0.2 P0.3 8031P2.7 RD1A1 1Y11A21Y21A31Y31A41Y41G+5V74LS244MOV R1,#0FFHMOV DPTR,#7FFFHKEY

7、: MOVX A. DPTR CLRCSUBBA,R1JZKEYACALL D10MSMOVXA, DPTR RRCAJNCK0RRCA JNCK1RRCA JNCK2RRCA JNCK3RRCA JNCK4RRCA JNCK5RRCA JNCK6RRCA JNCK7SJMPKEY 单片机对键盘的控制n程序控制扫描方式n只有当单片机空闲时才调用键盘扫描子程序n定时扫描方式n利用定时器的溢出中断请求,每隔一定的时间对键盘扫描一次n中断扫描方式n提高CPU的效率,当键盘上有键闭合时产生中断请求按键组连接方式:独立连接键盘与矩阵连接键盘独立连接键盘独立连接键盘: : 每键相互独立,各自与一条每键相互

8、独立,各自与一条I/OI/O线线相连,相连,CPUCPU可直接读取该可直接读取该I/OI/O线的高线的高/ /低电平状态。低电平状态。特点:特点:占占I/OI/O口线多,但判键速度快,多用于设置控口线多,但判键速度快,多用于设置控制键、功能键。适用于键数少的场合。制键、功能键。适用于键数少的场合。矩阵连接键盘矩阵连接键盘: : 键按矩阵排列键按矩阵排列, ,各键处于矩阵行各键处于矩阵行/ /列列的的结点结点处处,CPU,CPU通过对连在行通过对连在行( (列列) )的的I/OI/O线送已知电线送已知电平的信号平的信号, ,然后读取列然后读取列( (行行) )线的状态信息。逐线扫描线的状态信息。

9、逐线扫描, ,得出键码。得出键码。特点:特点:键多时占用键多时占用I/OI/O口线少口线少, ,但判键速度慢但判键速度慢, ,多用多用于设置数字键。适用于键数多的场合。于设置数字键。适用于键数多的场合。独立连接式键盘例:独立连接式键盘例:特点:特点:此子程序需此子程序需不断不断( (或定时或定时) )调用调用,否则可能,否则可能漏判。漏判。4 4个键的优先级由指令顺序决定。个键的优先级由指令顺序决定。P1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3KEY: JNB P1.0,FUNC1 ;KEY: JNB P1.0,FUNC1 ;逐键判别逐键判别 JNB P1.1,FUNC2

10、JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.2,FUNC3 JNB P1.3,FUNC4 JNB P1.3,FUNC4 RET ; RET ;无任何键按下由此返回无任何键按下由此返回FUNC1: FUNC1: ; ;做做P1.0P1.0要求的要求的“功能功能1 1” RET RETFUNC2: FUNC2: ; ;做做P1.1P1.1要求的要求的“功能功能2 2” RET RETFUNC3: FUNC3: ; ;做做P1.2P1.2要求的要求的“功能功能3 3” RET RETFUNC4: FUNC4: ; ;做做P1.3P1.3要求的要求的“功能功能4 4” R

11、ET RETAT89C51独立连接式键盘独立连接式键盘例例 特点:特点:此子程序采用此子程序采用中断中断查询查询不会漏判不会漏判, ,省时。省时。键的优先级由指令键的优先级由指令顺序决定。顺序决定。为防止一次按键多为防止一次按键多次中断,在功能子程次中断,在功能子程序里应安排序里应安排“关关/ /开中开中断指令断指令”并并“延时延时”。P1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3 ORG 0003H ORG 0003H LJMP KEY LJMP KEY KEY: JNB P1.0,FUNC1 ;KEY: JNB P1.0,FUNC1 ;逐键判别逐键判别 JNB P1.1,

12、FUNC2 JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.2,FUNC3 JNB P1.3,FUNC4 JNB P1.3,FUNC4 RETI ; RETI ;无任何键按下由此返回无任何键按下由此返回FUNC1: FUNC1: ; ;做做P1.0P1.0要求的要求的“功能功能1 1” RETI RETIFUNC2: FUNC2: ; ;做做P1.1P1.1要求的要求的“功能功能2 2” RETI RETIFUNC3: FUNC3: ; ;做做P1.2P1.2要求的要求的“功能功能3 3” RETI RETIFUNC4: FUNC4: ; ;做做P1.3P1.3要求的

13、要求的“功能功能4 4” RETI RETIINT0INT0&(上拉上拉)AT89C51 矩阵键盘与单片机的接口 小键盘的每一个键要占一根IO线,当键较多时就要占用太多的IO口硬件资源,软件处理效率降低 键的数量较多时,总是采用矩阵键盘结构矩阵式键盘及其接口矩阵式键盘及其接口矩阵式键盘:也称行列式键盘。44行列结构,可安装16个按键,形成一个键盘。如图所示:“行扫描法行扫描法” 行扫描法又称为逐行扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。1)判断键盘中有无键按下判断键盘中有无键按下 将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有

14、键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 2)判断闭合键所在的位置判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 假设8051单片机的P1口用作键盘I/O口,键盘的行线接到P1口的低4位,键盘的列线接到P1口的高4位。列线P1.4-P1.7分别接有4个上拉电阻到正电源+5V,并把列线P1.4-P1.7设置为输入

15、线,行线P1.0-P1.3设置为输出线。4根行线和4根列线形成16个相交点。(1)检测当前是否有键被按下。检测的方法是P1.0-P1.3输出全“0”,读取P1.4-P1.7的状态,若P1.4-P1.7为全“1”,则无键闭合,否则有键闭合。 (2)去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。(3)若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.0-P1.3按下述4种组合依次输出: P1.0 0 1 1 1 P1.1 1 0 1 1 P1.2 1 1 0 1 P1.3 1 1 1 0 在每组行输出时读取P1.4-P1.7,若全为“1”,则表示为这一行没

16、有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。键盘扫描有键闭合延时去抖动扫描键盘计算键值闭合键释放建立有效标志建立无效标志返回找到闭合键NYNYNYDECKY:MOV R0,#0F0HMOV P1,R0MOVA,P1ANLA,R0CLRCSUBBA,R0JZDECKYMOVR1,#04HMOVR2,#0FEHMOVR3,#00HBEGIN: MOVA,R2MOVP1,AMOVA,P1ANLA,R0CLRCSUBBA,R0JNZFCOLMOVA,R2RLAMOVR2,AJNBACC.4,NONMOVA,R1ADDA,R3MOV

17、R3,ASJMPBEGINFCOL: MOVA,P1JNBACC.4,DONEINCR3JNBACC.5,DONEINCR3JNBACC.6,DONEINCR3JNBACC.7,DONENON:MOVA,#0FFHMOVR3,ADONE: RET单片机与LED显示器接口 单片机与LED显示器接口nLED(Light Emitting Diode)显示器n共阳极显示器n共阴极显示器n每个显示字形对应一个二进制数码,称为段码、字形码或显示码 n公共端称为位码LEDLED显示器的扩展显示器的扩展( (结构结构) )LEDLED数码管的数码管的结构结构:共阳与共阴共阳与共阴 单片机系统扩展单片机系统扩

18、展LEDLED数码管时多用共阳数码管时多用共阳LED:LED:共阳数码管每个段笔画是用低电平共阳数码管每个段笔画是用低电平( (“0 0”) )点亮的点亮的, ,要求驱动要求驱动功率很小;而共阴数码管段笔画是用高电平功率很小;而共阴数码管段笔画是用高电平( (“1 1”) )点亮的,点亮的,要求驱动功率较大。要求驱动功率较大。 通常每个段笔画要串一个数百欧姆的降压电阻。通常每个段笔画要串一个数百欧姆的降压电阻。公共阳极公共阳极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh h公共公共阴阴极极h g f e d c b ah g f e

19、d c b aa ab bc cd dg ge ef fh hh g f ah g f a高电平点亮高电平点亮低电平点亮低电平点亮接高电平接高电平接地接地LEDLED数码管的数码管的译码译码:硬件译码与软件译码硬件译码与软件译码硬件译码特点硬件译码特点: :采用专用的译码采用专用的译码/ /驱动器件驱动器件, ,驱动功驱动功率较大率较大; ;增加了硬件的开销增加了硬件的开销; ; 。共阴共阴LEDa ab bc cd dg ge ef fh hg gf fe ed dc cb b a aD DC CB BA AP1.3P1.3P1.2P1.2P1.1P1.1P1.0P1.0CD4511CD45

20、11AT89C51AT89C5174LS48/CD451174LS48/CD4511是是“BCDBCD码码七段七段共阴共阴译码译码/ /驱动驱动”IC; IC; 74LS4774LS47是是“BCDBCD码码七段七段共阳共阳译码译码/ /驱动驱动”ICICLEDLED显示器的扩展显示器的扩展( (结构结构) )LEDLED显示器的扩展显示器的扩展( (软件译码软件译码) )LEDLED数码管的译码:数码管的译码:软件译码软件译码软件译码特点软件译码特点: : 不用专用的译码不用专用的译码/ /驱动器件,驱动驱动器件,驱动功率较小功率较小;不增不增加加硬件的开销;软件硬件的开销;软件编程较复杂编

21、程较复杂;字型;字型灵活灵活( (比如:比如:有八段,可译多种字符,字型好看有八段,可译多种字符,字型好看) )。共阳共阳LEDa ab bc cd dg ge ef fh hP1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3P1.4P1.4P1.5P1.5P1.6P1.6P1.7P1.7+5V+5VAT89C51AT89C51LEDLED数码管的软件译码数码管的软件译码八段八段LEDLED数码管数码管段代码编码表段代码编码表( (连线不同可有多种表连线不同可有多种表):):公共阳极公共阳极h g f e d c b ah g f e d c b aa ab bc cd dg g

22、e ef fh h公共阴极公共阴极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh hh g f ah g f a高电平点亮高电平点亮低电平点亮低电平点亮接高电平接高电平接地接地字形字形0123456789黑黑共阳共阳0C00F90A40B09992820F880900FF共阴共阴3F065B4F666D7D077F6F00LEDLED显示器的扩展显示器的扩展( (显示方式显示方式) )LEDLED数码管的数码管的显示方式显示方式:静态与动态静态与动态动态显示特点动态显示特点: : 有闪烁,用元器件少,占有闪烁,用元器件少,占I/OI/O

23、线少,必须扫描,花费线少,必须扫描,花费CPUCPU时间,时间,编程复杂。编程复杂。( (有多个有多个LEDLED时尤为突出)时尤为突出)静态显示特点静态显示特点: : 无闪烁,用元器件多,占无闪烁,用元器件多,占I/OI/O线多,无须扫描,节省线多,无须扫描,节省CPUCPU时间,时间,编程简单。编程简单。静态显示静态显示: : 各数码管在显示过程中各数码管在显示过程中持续持续得到送显信号,与各数码管接口得到送显信号,与各数码管接口的的I/OI/O口线口线是是专用专用的。的。动态显示动态显示: : 各数码管在显示过程中各数码管在显示过程中轮流轮流得到送显信号,与各数码管接口得到送显信号,与各

24、数码管接口的的I/OI/O口线口线是是共用共用的。的。A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLRA AB BCLKCLKCLRCLRA AB BCLKCLKCLRCLR+5V+5VVCCVCCTxDTxDRxDRxD 89C51单片机单片机74LS16474LS16474LS164h g f e d c b ah g f e d c b ah g f e d c b ah g f e d c b a+5V+5V共阳共阳LED数码管数码管LEDLED数码管数码管静态静态显示举例显示举例有几个有几个LEDLED就要几个就要几个74LS16474

25、LS164,但只要数据不变,但只要数据不变,送一次就保持住了,且不闪烁,编程十分简单。送一次就保持住了,且不闪烁,编程十分简单。要求:要求:根据上图编写通过串行口和根据上图编写通过串行口和74LS16474LS164驱动共驱动共 阳阳LEDLED数码管查表显示的子程序。数码管查表显示的子程序。条件:条件:系统有系统有6 6个个LEDLED数码管数码管, ,待显数据待显数据(00H(00H09H)09H)已放在已放在35H35H30H30H单元中单元中( (分别对应十万位分别对应十万位个位个位) ),DSPLY:DSPLY:MOV DPTR, #TABLEMOV DPTR, #TABLE ; ;

26、共阳共阳LEDLED数码管译码数码管译码表首址表首址 MOV R0MOV R0,#30H#30H ; ;待显数据缓冲区的待显数据缓冲区的个位个位地址地址REDOREDO:MOV AMOV A, R0R0 ; ;通过通过R0R0实现寄存器实现寄存器间接寻址间接寻址 MOVC A, A+DPTRMOVC A, A+DPTR ; ;查表查表 MOV SBUF, AMOV SBUF, A ; ;经串行口经串行口发送发送到到74LS16474LS164 JNB TI, $JNB TI, $ ; ;查询查询送完一个字节的第送完一个字节的第8 8位?位? CLR TICLR TI ; ;为下一字节发送为下一

27、字节发送作准备作准备 INC R0INC R0 ;R0;R0指向下一个指向下一个数据缓冲单元数据缓冲单元 CJNE R0CJNE R0,#36H#36H,REDOREDO ; ;判断判断是否发完是否发完6 6个数?个数? RETRET ; ;发完发完6 6个数就个数就返回返回TABLETABLE:DB 0C0H,0F9H,0A4H,0B0H,99HDB 0C0H,0F9H,0A4H,0B0H,99H ; ;共阳共阳LEDLED译码表译码表 DB 92H, 82H, 0F8H, 80H,90HDB 92H, 82H, 0F8H, 80H,90HLEDLED数码管数码管动态动态显示举例显示举例P1

28、.5 P1.5 P1.4P1.4P1.3P1.3P1.2P1.2P1.2P1.2P1.0P1.0P0.7 P0.7 P0.6 P0.6 P0.5 P0.5 P0.4 P0.4 P0.3 P0.3 P0.2 P0.2 P0.1 P0.1 P0.0P0.07406 OC7406 OC门门 X 3X 3上拉上拉电阻电阻1414+5V+5VAT89C51工作原理工作原理:从从P0P0口送段代码口送段代码,P1,P1口送位选信号。段码虽同时口送位选信号。段码虽同时到达到达 6 6个个LEDLED,但一次仅一个,但一次仅一个LEDLED被选中。利用被选中。利用“视觉暂视觉暂留留”,每送一个字符并选中相应位

29、线,延时一会儿,每送一个字符并选中相应位线,延时一会儿, ,再送再送/ /选下一个选下一个循环扫描即可。循环扫描即可。共阴共阴 数码管数码管位位选选线线段段代代码码要求要求:此处为共阴数码管,此处为共阴数码管,P0P0口送段代码,口送段代码,P1P1口送位选信号。口送位选信号。通过查表实现动态显示。通过查表实现动态显示。条件条件:待显数据待显数据(00H(00H09H)09H)已放在已放在: : 7FH7FH7AH7AH单元中单元中( (分别对分别对应应十万位十万位个位个位) )说明说明:由于用了由于用了反相驱动器反相驱动器74067406,要用共阳译码表。,要用共阳译码表。P1.5 P1.5

30、 P1.4P1.4P1.3P1.3P1.2P1.2P1.2P1.2P1.0P1.0P0.7 P0.7 P0.6 P0.6 P0.5 P0.5 P0.4 P0.4 P0.3 P0.3 P0.2 P0.2 P0.1 P0.1 P0.0P0.07406 OC7406 OC门门 X 3X 3+5V+5VAT89C51位位选选线线段段代代码码共阴共阴 数码管数码管上拉上拉电阻电阻14147406 OC7406 OC门门 X 3X 3+5V+5V(7FH) (7EH) (7DH) (7CH) (7BH) (7AH)十万十万 万位万位 千位千位 百位百位 十位十位 个位个位数据缓冲区数据缓冲区 / / 显示

31、缓冲区显示缓冲区P0P0口送段口送段代码,代码,P1P1口送位选口送位选信号。信号。待显数据待显数据已经放在已经放在: : 7FH7FH7AH7AH单元单元( (分别分别对应十万对应十万位位个位个位) )使用共阳使用共阳译码表。译码表。DIR:DIR: MOV DPTR,MOV DPTR, #DSEG#DSEG ; ;数码管译码数码管译码表首址表首址 MOV R0MOV R0,#7AH#7AH ; ;待显缓冲区待显缓冲区个位个位地址地址 MOV R3MOV R3,#01H#01H ; ;个位的个位的位选信号位选信号=01H=01HLD1LD1: MOV AMOV A, R0R0 ; ;通过通过

32、R0R0间接寻址间接寻址 MOVC A, A+DPTRMOVC A, A+DPTR ; ;查表查表 MOV P0, AMOV P0, A ; ;字段码送到字段码送到P0P0口口 MOV P1MOV P1,R3R3 ; ;字位选择送到字位选择送到P1P1口口 LCALL DELYLCALL DELY ; ;调延时调延时1ms1ms子程序子程序 INC R0INC R0 ;R0;R0 指向下一字节指向下一字节 MOV AMOV A,R3R3 JB ACC.5JB ACC.5,LD2LD2 ; ;判判是否发完是否发完6 6个数?个数? RL ARL A ;R3;R3指向下一个位指向下一个位 MOV

33、R3MOV R3,A A ; ;位选信号存回位选信号存回R3R3 SJMP SJMP LD1LD1 ; ;跳去再显示下一个数跳去再显示下一个数LD2LD2: RETRET ; ;发完发完6 6个数就个数就返回返回DSEGDSEG:DB 0C0H,0F9H,0A4H,0B0H,99HDB 0C0H,0F9H,0A4H,0B0H,99H; ;共阳译码表共阳译码表 DB 92H, 82H, 0F8H, 80H,90HDB 92H, 82H, 0F8H, 80H,90HP0P0口送段口送段代码,代码,P1P1口送位选口送位选信号。信号。待显数据待显数据已经放在已经放在: : 7FH7FH7AH7AH单

34、元单元( (分别分别对应十万对应十万位位个位个位) )使用共阳使用共阳译码表。译码表。单片机与键盘/显示器芯片8279接口n单片机与键盘/显示器芯片8279接口n实现对键盘和显示器的自动扫描n识别闭合键的键号n完成显示器的动态扫描 8279引脚及逻辑符号 8279内部结构 工作原理n由SL0SL3输出键盘和显示器的扫描线n回复线RL0RL7作为键盘的列线以搜索闭合键将键盘数据送入FIFO存储器,n有键闭合时数据进入FIFO存储器,使IRQ置位向CPU申请中断。n显示缓冲区(RAM)存放显示数据的段码,数据轮流从显示寄存器输出,在SL0SL3的配合下,实现动态显示。(OUTA和OUTB)8279

35、结构说明 1.I/O控制和数据缓冲器:利用/CS、A0、/RD、/WR等信号,控制读写的数据。2.控制寄存器、定时寄存器和定时控制:这些寄存器储存键盘模式、显示模式,可由程序设置其操作方式。定时控制包括定时计数器,第1个计数器为除以N的分频器,可由程序设置,分频值为231。 3.扫描计数器:(1)编码(ENCODE)扫描模式,为二进码输出,必须外接译码器(74154,4028,74138等),译码为单一LO或HI,然后送至键盘及显示器;(2)译码扫描模式,已经内部译码为单一LO,只能接4个显示器。 4.返回缓冲器(1)键盘扫描模式:当设定键盘扫描模式时,从SL0SL3送出的扫描信号,将会去扫描

36、键盘,如有按键被按时,它会等待10ms,然后再检查该按键,将此键码(含CTRL、SHIFT)存入FIFO RAM内。(2)传感器模式:当设定为传感器模式时,存入FIFO RAM的值,完全按扫描的输出码。如有传感元件被触发时,在8279内部的FIFO RAM中都有一个位与之相对应。(3)激发输入模式:当CNTR/STB输入一个上升沿触发时,返回线上的数据码将被反相后存入FIFO RAM,并由IRQ发出中断信号。 5.FIFO(先进先出)/SENSOR RAM及状态码 为88位的RAM。当8279被设置为键盘扫描模式或激发输入模式时,FIFO RAM最先被存入,也最先被提出来,而状态码可检测FIF

37、O RAM是空的还是满的,或发生错误,可读取状态码来判断(/RD=0,/CS=0,A0=1)。当FIFO RAM不是空的,IRQ会发出一个HI做中断请求。当设置为SENSOR模式时,存放在FIFO内的数据与外部SENSOR矩阵相对应,只要SENSOR矩阵(64个)中有任何一个变动,IRQ都会由LO转为HI,发出中断请求。6.显示地址寄存器及显示器RAM显示地址寄存器,决定CPU读写哪一个显示器RAM的字节,可由程序设置,且读/写方式可以是自动或是单一方式。显示器RAM(168位)在设置好模式及地址后,CPU可直接读取。显示器RAM的数据码送出显示时,分为两部分高4位由OUTA送出,低4位由OU

38、TB送出,也可单独送出,可以利用程序设置。 8279指令码 CPU写入指令码至8279时,将指令码置于8279的DB0DB7上,当/CS=0、A0=1、/WR=0时,置于DB0DB7的指令码将被载入8279内。 1.命令命令0 :键盘:键盘/显示模式设定显示模式设定 D1D0显示位显示模式0088位左边进入01168位左边进入1088位右边进入11168位右边进入000D1D0K2K1K0K2K1K0功能说明000编码式扫描键盘,2键锁定输出式001解码式扫描键盘,2键锁定输出式010编码式扫描键盘,N键依次读出011解码式扫描键盘,N键依次读出100编码式扫描传感器矩阵模式101解码式扫描传

39、感器矩阵模式110编码式显示扫描,激发输入模式111解码式显示扫描,激发输入模式2.命令命令1:分频值设定:分频值设定P4P0=231,如所设定的分频值,使内部工作频率为100KHZ时,则可得到较好的扫描及消除抖动时间。当8279复位后,其分频值为31。 3.命令命令2:读取读取FIFO/SENSOR RAMAI:AI=1时,RAM地址动加1。A2A0:RAM起始地址。 001P4P3P2P1P0010AIXA2A1A04.命令命令3:读取显示读取显示RAM AI:AI=1时,RAM地址自动加1。 A3A0:RAM起始地址,由SL3SL0送出。5.命令命令4:写入显示写入显示RAMAI:AI=

40、1时,RAM地址自动加1。A3A0:RAM起始地址,由SL3SL0送出。011AIA3A2A1A0100AIA3A2A1A06.命令命令5:显示写入禁止显示写入禁止/消隐消隐8279显示RAM为168位,高4位由OUTA送出,低4位由OUTB送出。101xIWAIWBBLABLBIWA=1显示器RAM高4位禁止写入IWA=0显示器RAM高4位允许写入IWB=1显示器RAM低4位禁止写入IWB=0显示器RAM低4位允许写入BLA=1显示器RAM高4位被消隐,无法显示BLA=0显示器RAM高4位正常显示BLB=1显示器RAM低4位被消隐,无法显示BLB=0显示器RAM低4位正常显示7.命令命令6:

41、清除清除 CD:清除显示器RAM CF:清除FIFO RAM。CF=1时,清除FIFO RAM,即复位IRQ为LO。CA:CA=1时,清除全部显示器RAM及FIFO RAM。 110CD2CD1CD0CFCACD2CD1CD0功能说明0XX禁止将显示器RAM清除10X清除显示器RAM内数据为00110清除显示器RAM内数据为20H111清除显示器RAM内数据为FFH8.命令命令7:中断结束中断结束/错误模式设定错误模式设定(1)传感器矩阵模式:E=1则令IRQ=LO,当传感器矩阵有任一变化,IRQ转为HI。(2)键盘扫描模式:设为N键依次读出模式时,若E=1,则将运行在特殊错误模式下。111E

42、XXXX数据格式数据格式 1.键盘扫描模式按键码数据码FIFO状态码状态码CNTL SHIFT SL2 SL1SL0 RETURN/RL7/LR6/RL5/RL4/RL3/RL2/RL1/RL0DuS/EOUFN2N1N02.激发输入模式 接口方法n控制线连接: 、 、 、A0、IRQ、CLK及RESETn信息交换:命令字、状态字(A0=1)和数据(A0=0);n口地址的确定:由 A0确定出两个端口地址nIRQ经反相器接INT0;CLK接时钟线(ALE) 程序初始化n写入清除命令字(清除FIFO和显示RAM)n等待清除结束(100uS)(读状态字)n置键盘/显示方式字n设置外部时钟分频系数n中

43、断初始化(触发方式、开中断) 显示子程序n置写显示命令字n指向显示缓冲区n查表求出显示代码n显示完毕返回 键盘中断服务程序n保护现场n置读FIFORAM命令字(仅读一个单元)n通过数据口读出键码n恢复现场n中断返回 连接图显示器键盘接口示例更新显示器和用查询方法读出 16 个键输入数的程序如下: STRT1: MOV OPTR, 7FFFH ; 7FFFH为 8279 状态地址 MOV A, 0D1H; 清除命令 MOVX DPTR, A; 命令字输入 WAITD:MOVX A, DPTR ; 读入状态 JB ACC.7, WAITD; 清除等待 MOV A, 2AH ; 对时钟编程, 设AL

44、E为 1 MHz, ; 10 分频为 100 kHz MOVX DPTR, A ; 命令送入 MOV A, 08H ; 显示器左边输入外部译码, 双键 ;互锁方式 MOVX DPTR , A MOV R0, 30H ; 设30H3FH存放显示字形的段数据MOV R7, 10H ; 显示16位数 MOV A, 90H ; 输出写显示数据命令 MOVX DPTR, A MOV DPTR , 7EFFH ; 7EFFH是 8279 数据地址LOOP1:MOV A, R0 MOVX DPTR, A ; 段选码送 8279 显示RAM INC R0 ; 指向下一个段选码 DJN2 R7, LOOP1 ;

45、 16 个段选码送完? MOV R0, 40H ; 40H为键值存放单元首址 MOV R7, 10H ; 有 16 个键值LOOP2: MOV DPTR, 7FFFH ; 读 8279 状态 LOOP3:MOVX A, DPTR ANL A, 0FH ; 取状态字低 4 位 JZ LOOP3 ; FIFO中无键值时等待输入 MOV A, 40H ; 输出读FIFO的RAM命令 MOVX DPTR, A ; 命令送入 MOV DPTR, 7EFFH ; 读键输入数据 MOVX A, DPTR ; 读入键值 MOV R0, A ; 键值存入内存 40H4FH INC R0 ; 指向下一个键值存放单

46、元 DJNZ R7, LOOP2 ; 读完 10H个键入数据? HERE: AJMP HERE ; 键值读完等待 单片机串行通信应用 单片机串行通信应用 点对点的异步通信 串行口控制寄存器SCON 计数器方式控制寄存器TMOD 电源控制寄存器PCON MOV SCON,#80H;串行口方式2 MOV PCON,#80H;波特率设置 MOV R0,#50H;首地址 MOV R7,#10H;数据块长度LOOP: MOV A,R0;取数 MOV C,PSW.0;奇偶位 MOV TB8,C MOV SBUF,A;启动发送将片内RAM 50H5FH中的数据串行发送,串行口设定工作方式2,TB8 作奇偶校

47、验WAIT: JBC TI,CONT;查询TI=1? SJMP WAITCONT: INC R0;地址加1 DJNZ R7,LOOP;数据块发完否? RETn设串行口工作方式3,波特率2400,SMOD=0,时钟频率11.0592MHz,计数器初值为F4HREV: MOV TMOD,#20H;T1编程为方式2定时状态 MOV TH1,#F4H ;计数器常数 T1 MOV TL1,#F4H SETB TR1 ;启动T1 MOV R0,#50H ;置首地址 R0 MOV R7,#10H ;数据块长度 R7将接收的16个字节的数据送入片内RAM 50H5FH单元内 MOV SCON,#D0H;串行口

48、编程为方式3接收 MOV PCON,#00H;置SMOD=0WAIT:JBC RI,PRI;判RI标志,若RI为1,清零后转PRI SJMP WAIT ;RI为零,继续查询PRI:MOV A,SBUF ;接收数据 A JNB PSW.0,PNP ;判P标志,若P=0,转PNP JNB RB8,PER ;P=1,但RB8=0,出错,转PER SJMP RIGHT ;P=1, RB8=1,接收正确,转RIGHTPNP: JB RB8,PER ; P=0,但RB8=1,出错,转PER RIGHT:MOV R0,A INC R0 DJNZ R7,WAIT CLR PSW.5 ;接收完毕,复位标志位 R

49、ETPER: SETB PSW.5 ;接收错误,置位标志位 RET主程序 MOV TMOD,#20H;定时器;定时器1设为方式设为方式2 MOV TL1, #0E8H;定时器初值;定时器初值 MOV TH1, #0E8H;8位重装值位重装值 SETB TR1;启动定时器;启动定时器1 MOV SCON,#50H;串行口设为方式;串行口设为方式1,REN1 MOV R0, #20H;发送数据区首址;发送数据区首址 MOV R1, #40H;接收数据区首址;接收数据区首址 ACALL SOUT;输出一个字符;输出一个字符SJMP $;等待中断;等待中断串行口按双工方式收发ASCII字符,最高一位用

50、作奇偶校验位,采用奇校验方式,波特率设定为1200,fosc=11.0592MHz。MOV PCON, #00H ;SMOD=0中断服务子程序 ORG 0023H;串行口中断入口;串行口中断入口 AJMP SBRl;转至中断服务程序;转至中断服务程序SBRl: JNB RI,SEND;TI1,为发送中断,为发送中断 ACALL SIN;RI1,为接收中断,为接收中断 SJMP NEXT;转至统一的出口;转至统一的出口SEND: ACALL SOUT;调用发送子程序;调用发送子程序NEXT:RETI;中断返回;中断返回:发送子程序SOUT: MOV A,R0;取发送数据到;取发送数据到A MOV

51、 C,P;加上奇校验位;加上奇校验位 CPLC MOV ACC.7,C INCR0;修改发送数据指针;修改发送数据指针 MOV SBUF,A;发送;发送ASCII码码 CLRTI;清发送中断标志;清发送中断标志 RET 接收子程序SIN:MOV A,SBUF;读出接收缓冲区内容;读出接收缓冲区内容 MOV C,P;取出校验位;取出校验位 CPLC;奇校验;奇校验 ANLA,#7FH;删除校验位;删除校验位 MOV R1,A;读入接收缓冲区;读入接收缓冲区 INCR1;修改接收数据指针;修改接收数据指针 CLRRI;清接收中断标志;清接收中断标志 RET JCerr 多机通信 采用主从式多机通信方式。一台主机,多台从机。 主机发送的信息可传到各从机或指定从机 各从机发送的信息只能被主机接收TXDRXD80310#从机TXDRXD主机TXDRXD80311#从机TXDRXD8031n#从机 微机与单片机之间的串行通信接口A/D转换器接口转换器接口集成A/D转换器ADC 0809/0808为8路输入通道、8位逐次逼近式A/D转换器,可分时转换8路模拟信号。一、结构一个8位逐次逼近式A/D转换器、8路模拟转换开关、3-8地址锁存译码器和三态输出数据锁存器。二、引脚8路模拟量输入信号端:IN0IN78位数字量输出信号端:D0D7通道选择地址信号输入端:ADDA、ADDB、ADDC多路多路转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论