《单片机原理及应用技术.pptx》由会员分享,可在线阅读,更多相关《单片机原理及应用技术.pptx(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、7.1 存储器的扩展 程序存储器的扩展程序存储器的扩展 扩展总线扩展总线数据总线:8位P0口地址总线:低8位P0口(分时复用)高8位P2口控制总线:RD、WRPSENALE第1页/共73页74LS373:带输出三态门的电平允许8D锁存器G=1G=1,D D至至QQ直通直通G=0G=0,QQ状态不变状态不变ALE=1ALE=1,P0P0地址有效地址有效ALE=0ALE=0,P0P0地址锁存地址锁存 P0P0出现出现数据数据第2页/共73页 片外ROMROM操作时序 地址总线1616位,最大可扩展:64KB64KB 与RAMRAM的地址线和数据线共用,控制线不同 片内、片外ROMROM访问指令相同
2、,由硬件选择 片选多采用线选法,地址译码法用的渐少第3页/共73页访问片外ROM的时序:在一个机器周期内,在一个机器周期内,在一个机器周期内,CPUCPUCPU两次访问片外两次访问片外两次访问片外ROMROMROM,也即,也即,也即在一个机器周期内可以处理两个字节的指令代码在一个机器周期内可以处理两个字节的指令代码在一个机器周期内可以处理两个字节的指令代码第4页/共73页 ROM ROM芯片及扩展方法 EPROMEPROM存储器及扩展第5页/共73页 EPROM存储器扩展电路:第6页/共73页 EEPROM存储器及扩展 第7页/共73页数据存储器的扩展数据存储器的扩展 RAM扩展原理扩展RAM
3、和扩展ROM类似第8页/共73页外部RAM写时序为:第9页/共73页 RAM扩展方法 数据存储器第10页/共73页 数据存储器扩展电路第11页/共73页7.2 7.2 输入输入/输出及其控制方式输出及其控制方式 输入设备:键盘、开关及各种传感器等 输出设备:LED(或LCD)显示器、微型打印机及各种执行机构等 简单的I/O设备可以直接连接 系统较为复杂时,往往要借助I/O接口完成单片机与I/O设备的连接第12页/共73页单片机与I/O设备的关系:输入输入/输出接口的功能输出接口的功能第13页/共73页I/O接口的功能是:三态缓冲 不传数据时外设必须对总线呈高阻 数据锁存 解决单片机与I/O设备
4、的速度协调问题 信号转换 类型(数字与模拟、电流与电压)、电平(高与低、正与负)、格式(并行与串行)等的转换。时序协调 第14页/共73页 无条件传送 简单的I/O设备(如开关、LED显示器、继电器等)的操作,或者I/O设备的定时固定或已知的场合。单片机与单片机与I/O设备的数据传送方式设备的数据传送方式 查询状态传送 中断传送方式 效率高 DMA方式 高速外设以及成组交换数据的场合 第15页/共73页7.3 7.3 并行接口的扩展并行接口的扩展并行输入/输出口的简单扩展第16页/共73页可编程接口可编程接口81558155的扩展的扩展 8155 8155的引脚及结构第17页/共73页 815
5、5的内部编址内部RAM地址为:00HFFH。内部端口地址为:000-命令/状态寄存器 001-A口 010-B口 011-C口 100-计数器低8位 101-计数器高6位及计数 器方式设置位第18页/共73页 工作方式设置及状态字格式 方式设置PA:A口数据传送方向设置位。0-输入;1-输出。PB:B口数据传送方向设置位。0-输入;1-输出。PC1、PC2:C口工作方式设置位。TM2 TM1 IEB IEA PC2 PC1 PB PA000H000H第19页/共73页IEA:A口的中断允许设置位。0-禁止;1-允许。IEB:B口的中断允许设置位。0-禁止;1-允许。TM2、TM1:计数器工作方
6、式设置位。第20页/共73页 状态字格式 INTRX:中断请求标志。INTRX=1,表示A或B口有中断请求;INTRX=0,表示A或B口无中断请求。BFX:口缓冲器空/满标志。BFX=1,表示口缓冲器已装满数据,可由外设或单片机取走;BFX=0,表示口缓冲器为空,可以接受外设或单片机发送数据。INTEX:口中断允许/禁止标志。INTEX=1,表示允许口中断;INTEX=0,表示禁止口中断。TIMER:计数器计满标志。TIMER=1,表示计数器的原计数初值已计满回零;TIMER=0,表示计数器尚未计满。TIMER INTEB BFB INTRB INTEA BFA INTRA000H000H第2
7、1页/共73页 计数器输出模式 14位的减法计数器,能对输入的脉冲计数,到达最后一个计数值时,输出一个矩形波或脉冲。装入计数长度寄存器的值为2H3FFFH。15、14两位用于规定计数器的输出方式。第22页/共73页 选通I/O的组态对8155命令字的PC2PC1位编程,使A或B口工作在选通方式时,C口的PC0PC5就被定义为A或B口选通I/O方式的应答和控制线。第23页/共73页选通方式的组态逻辑:第24页/共73页 8155芯片与单片机的接口 第25页/共73页 RAM地址:P2.7(A15)=0 及P2.0(A8)=0,故可选为01111110 00000000B(7E00H)011111
8、10 11111111B(7EFFH);I/O端口的地址:7F00H7F05H。第26页/共73页A、B口基本输入方式,计数器方波发生器,对80C31输入脉冲进行24分频(但需要注意8155的计数最高频率约为4MHZ),初始化程序:START:MOV DPTR,#7F04H ;计数寄存器低8位 MOV A,#18H ;计数器初值#18H(24D)MOVX DPTR,A;计数器寄存器低8位赋值 INC DPTR;指向计数器寄存器高6位及方式位 MOV A,#40H ;计数器为连续方波方式 MOVX DPTR,A;计数寄存器高6位赋值 MOV DPTR,#7F00H ;命令寄存器 MOV A,#0
9、C2H;设命令字 MOVX DPTR,A;送命令字第27页/共73页7.4 82797.4 8279接口芯片接口芯片 小型测控系统或智能仪表中,常需要扩展显示器和键盘以实现人机对话功能。8279其功能:接收来自键盘的输入数据并作预处理 完成数据显示的管理和数据显示器的控制。采用8279管理键盘和显示器,软件编程极为简单,显示稳定,且减少了主机的负担。第28页/共73页的结构的结构第29页/共73页 数据缓冲器:将双向三态8位内部数据总线与系统总线相连,用于传送CPU与8279间的命令和状态。控制和定时寄存器:用于寄存键盘和显示器的工作方式,锁存操作命令,通过译码器产生相应的控制信号。一些计数器
10、:可编程5位计数器(计数值在231间),对CLK输入的时钟信号进行分频,产生100 KHz的内部定时信号(此时扫描时间为5.1ms,消抖时间为10.3ms)。外部输入时钟信号周期不小于500ns。第30页/共73页 扫描计数器有2种输出方式 编码方式,计数器以二进制方式计数,4位计数状态从扫描线SL3SL0 输出,经外部译码器可以产生16位的键盘和显示器扫描信号译码方式,扫描计数器的低两位经内部译码后从SL3SL0 输出,直接作为键盘和显示器的扫描信号。第31页/共73页 回送缓冲器、键盘消抖及控制 对键盘自动扫描(搜索闭合键),锁存RL7RL0的键输入信息 消除键抖动,将键输入数据写入内部先
11、进先出存储器。RL7RL0由回送缓冲器缓冲并锁存,当某一键闭合时,SHIFT、CNTL及扫描码和回送信号拼装成一个字节的“键盘数据”送入8279内部FIFORAM。第32页/共73页 键盘的数据格式为:在传感器矩阵方式和选通方式时,回送线RL7RL0的内容被直接送往相应的FIFO RAM。输入数据即为RL7RL0。数据格式为:第33页/共73页FIFO/传感器RAM:双功能88 RAM 键盘或选通方式,作为FIFO RAM,依先进先出的规则输入或读出,其状态存放在FIFO/传感器RAM状态寄存器中。只要FIFO RAM不空,状态逻辑将置中断请求IRQ=1;传感器矩阵方式,作为传感器RAM,当检
12、测出传感器矩阵的开关状态发生变化时,中断请求信号IRQ=1。在外部译码扫描方式时,可对88矩阵开关的状态进行扫描,在内部译码扫描方式时,可对48矩阵开关的状态进行扫描。第34页/共73页显示RAM:存储显示数据,容量是168位 存储的显示数据轮流从显示寄存器输出。显示寄存器输出分成两组,即OUTA0OUTA3和OUTB0OUTB3,两组可以单独送数,也可以组成一个8位的字节输出。该输出与位选扫描线SL0SL3配合就可以实现动态扫描显示。显示地址寄存器用来寄存CPU读/写显示RAM的地址,可以设置为每次读出或写入后自动递增。第35页/共73页的引脚定义的引脚定义 DB7DB0:双向外部数据总线;
13、CS:片选信号线,低电平有效;RD和WR:读和写选通信号线;IRQ:中断请求输出线。RL7RL0:键盘回送线。SL3SL0:扫描输出线。OUTB3OUTB0、OUTA3OUTA0:显示寄存器数据输出线。RESET:复位输入线。SHIFT:换档键输入线。CNTL/STB:控制/选通输入线。CLK:外部时钟输入线。BD:显示器消隐控制线。第36页/共73页8279的的操作命令操作命令第37页/共73页 显示器和键盘方式设置命令 特征位:000,显示器方式位:D4 D3,键盘方式设置位:D2 D1 D0显示器每一位对应一个显示器缓冲单元左端输入较为简单,缓冲器RAM地址015分别对应于显示器的0位(
14、左)15位(右)。CPU依次从0地址或某一地址开始将段数据写入。右端输入是移位,输入数据总是写入右端的显示缓冲器,数据写入显示缓冲器后,原来缓冲器的内容左移一个字节第38页/共73页内部译码扫描:扫描信号由SL3SL0输出,仅能提供4选1扫描线。外部译码扫描:内部计数器作二进制计数,4位二进制计数器的计数状态从扫描线SL3SL0输出,并在外部进行译码。可为键盘/显示器提供16选1扫描线。双键互锁:键盘中同时有两个以上的键被按下,任何一个键的编码信息均不能进入FIFO RAM,直至仅剩下一个键闭合时,该键的编码信息方能进入FIFO RAM。第39页/共73页N键轮回:如有多个键按下,键盘扫描能够
15、根据发现它们的顺序,依次将它们的状态送入FIFO RAM。传感器矩阵:是指片内的去抖动逻辑被禁止掉,传感器的开关状态直接输入到FIFO RAM中。因此,传感器开关的闭合或断开均可使IRQ马上为1,向CPU快速申请中断。第40页/共73页 时钟编程命令 特征位:001 D4D0:设定对CLK端输入时钟的分频数N(N=231)。以取得100KHz的内部时钟信号。例如CLK输入时钟频率为2MHz,获得100KHz的内部时钟信号,则需要20分频。第41页/共73页 读FIFO/传感器RAM命令 特征位:010 D2D0为起始地址。D4为多次读出时的地址自动增量标志。在键扫描方式中均被忽略,CPU总是按
16、先进先出的规律读键输入数据,直至输入键全部读出为止;在传感器矩阵方式中,若AI=1,则CPU从起始地址开始依次读出,每读出一个数据地址自动加1;AI=0,CPU仅读出一个单元的内容。第42页/共73页 读显示RAM命令 特征位:011 D3D0用来寻址显示RAM的16个存储单元。若AI=1,则每次读出后地址自动加1。写显示RAM命令 特征位:100 D4为自动增量标志,D3D0为起始地址,数据写入按左端输入或右端输入方式操作。若AI=1,则每次写入后地址自动加1,直至所有显示RAM全部写完。第43页/共73页 显示器写禁止/消隐命令 特征位:101。禁止写A组和B组显示RAM。在双4位显示器时
17、,即OUTA3OUTA0和OUTB3OUTB0独立地作为两个半字节输出时,可改写显示RAM中的低半字节而不影响高半字节的状态,反之亦可改写高半字节而不影响低半字节。D1、D0位是消隐显示器特征位,要消隐两组显示器,必须使之同时为1,为0时则恢复显示。第44页/共73页 清除命令 特征位:110。使显示缓冲器呈初态(暗码),该命令也能清除输入标志和中断请求标志。D4 D3 D2设定清除显示RAM的方式。D1=1为清除FIFO RAM的状态标志,FIFO RAM被置空,并复位中断请求线IRQ时,传感器 RAM的读出地址也被置成0。D0是总清的特征位,它兼有CD和CF 的联合效用。当CA=1时,对显
18、示RAM的清除方式仍由D3D2编码确定。第45页/共73页 结束中断/错误方式设置命令 特征位:101。用来结束传感器RAM的中断请求。D4=0 为结束中断命令。传感器工作方式每当传感器状态出现变化时,扫描检测电路就将其状态写入传感器RAM,并IRQ变高,向CPU请求中断,禁止写入传感器RAM。若AI为0,则中断请求IRQ在CPU第一次从传感器RAM读出数据时就被清除。若AI为1,则对传感器RAM读出并不能清除IRQ,必须写入该命令才能使IRQ变低。第46页/共73页D4=1 为特定错误方式命令。在键盘扫描N键轮回方式,如写入此命令,则以一种特定的错误方式工作。特点是:在消抖周期内,若发现多个
19、按键同时按下,则FIFO状态字中的错误特征位S/E将置1,并产生中断请求信号和阻止写入FIFO RAM。第47页/共73页7.5 7.5 显示器及键盘接口显示器及键盘接口、七段显示器的原理一、七段显示器的原理第48页/共73页二、显示方式及接口 1、静态显示并行输出:第49页/共73页串行输出:第50页/共73页 2、动态显示第51页/共73页 DISDIS:MOV R0MOV R0,#79H#79H ;显示数据缓冲区首地址送;显示数据缓冲区首地址送R0R0 MOV R3 MOV R3,#01H#01H ;使显示器最右边位亮;使显示器最右边位亮 MOV AMOV A,R3R3 ;LD0LD0:
20、MOV DPTRMOV DPTR,#7F01H#7F01H;数据指针指向;数据指针指向A A口口 MOVX DPTRMOVX DPTR,A A ;送扫描值;送扫描值 INC DPTRINC DPTR ;数据指针指向;数据指针指向B B口口 MOV AMOV A,R0R0 ;取欲显示的数据;取欲显示的数据 ADD AADD A,#0DH#0DH;加上偏移量;加上偏移量 MOVC AMOVC A,A+PCA+PC;取出字型码;取出字型码 MOVX DPTRMOVX DPTR,A A;送显示;送显示 ACALL DL1ACALL DL1 ;调用延时子程序;调用延时子程序 INC R0INC R0;指
21、向下一个显示段数据地址;指向下一个显示段数据地址 MOV AMOV A,R3R3 ;JB ACC.5JB ACC.5,ELD1 ELD1 ;扫描到第六个显示器否;扫描到第六个显示器否?RL A RL A;未到,扫描码左移;未到,扫描码左移1 1位位 MOV R3MOV R3,A A AJMP LD0 AJMP LD0 ELD1 ELD1:RETRET第52页/共73页DSEGDSEG:DB 3FHDB 3FH,06H06H,5BH5BH,4FH4FH,66H66H,6DH6DH DB 7DH DB 7DH,07H07H,7FH7FH,6FH6FH,77H77H,7CH7CH DB 39H DB
22、 39H,5EH5EH,79H79H,71H71H,40H40H,00H00H DL1 DL1:MOV R7MOV R7,#02H#02H ;延时;延时1ms1ms子程序子程序 DLDL:MOV R6MOV R6,#0FFH#0FFH DL6 DL6:DJNZ R6DJNZ R6,DL6DL6 DJNZ R7 DJNZ R7,DLDL RET RET 第53页/共73页键盘及其接口 抖动现象:第54页/共73页 独立式按键及其接口 芯片内有上拉电阻 芯片内无上拉电阻 第55页/共73页SMKEYSMKEY:ORL P1ORL P1,#0FFH#0FFH ;置;置P1P1口为输入方式口为输入方式
23、 MOV AMOV A,P1 P1 ;读;读P1P1口信息口信息 JNB ACC.0JNB ACC.0,P0F P0F;0 0号键按下,转号键按下,转0 0号键处理号键处理 JNB ACC.1JNB ACC.1,P1F P1F;1 1号键按下,转号键按下,转1 1号键处理号键处理 JNB ACC.7 JNB ACC.7,P7F P7F;7 7号键按下,转号键按下,转7 7号键处理号键处理 LJMP SMKEYLJMP SMKEY P0F P0F:LJMP PROG0LJMP PROG0 P1F P1F:LJMP PROG1LJMP PROG1 P7F P7F:LJMP PROG7LJMP PR
24、OG7PROG0PROG0:LJMP SMKEY LJMP SMKEYPROG1PROG1:LJMP SMKEY LJMP SMKEY PROG7PROG7:LJMP SMKEY LJMP SMKEY第56页/共73页 矩阵式键盘及其接口判有无键按下;判有无键按下;判有无键按下;判按下的是哪一键;判按下的是哪一键;判按下的是哪一键;键处理。键处理。键处理。第57页/共73页SMKEYSMKEY:MOV P1MOV P1,#0FH#0FH ;置;置P1P1口高口高4 4位为位为“0 0”、低、低4 4位为输入状位为输入状态态 MOV AMOV A,P1 P1 ;读;读P1P1口口 ANL AAN
25、L A,0FH 0FH ;屏蔽高;屏蔽高4 4位位 CJNE ACJNE A,0FH0FH,HKEY HKEY ;有键按下,转;有键按下,转HKEYHKEY SJMP SMKEY SJMP SMKEY ;无键按下转回;无键按下转回 HKEYHKEY:LCALL DELAY10 LCALL DELAY10 ;延时;延时10ms10ms,去抖,去抖 MOV AMOV A,P1 P1 ;ANL AANL A,0FH 0FH ;CJNE ACJNE A,0FH0FH,WKEY WKEY ;确认有键按下,转判哪一键按下;确认有键按下,转判哪一键按下 SJMP SMKEY SJMP SMKEY ;是抖动转
26、回是抖动转回 WKEYWKEY:MOV P1MOV P1,1110 1111B 1110 1111B;置扫描码,检测;置扫描码,检测P1.4P1.4列列 MOV AMOV A,P1 P1 ;ANL AANL A,0FH 0FH ;CJNE ACJNE A,0FH0FH,PKEY PKEY ;P1.4P1.4列(列(Y0Y0)有键按下,转键处理)有键按下,转键处理第58页/共73页 MOV P1MOV P1,1101 1111B 1101 1111B;置扫描码,检测;置扫描码,检测P1.5P1.5列列 MOV AMOV A,P1 P1 ;ANL AANL A,0FH 0FH ;CJNE ACJN
27、E A,0FH0FH,PKEY PKEY ;P1.5P1.5列(列(Y1Y1)有键按下,转键处理)有键按下,转键处理 MOV P1MOV P1,1011 1111B 1011 1111B;置扫描码,检测;置扫描码,检测P1.6P1.6列列 MOV AMOV A,P1 P1 ;ANL AANL A,0FH 0FH ;CJNE ACJNE A,0FH0FH,PKEY PKEY ;P1.6P1.6列(列(Y2Y2)有键按下,转键处理)有键按下,转键处理 MOV P1MOV P1,0111 1111B 0111 1111B;置扫描,检测;置扫描,检测P1.7P1.7列列 MOV AMOV A,P1 P
28、1 ;ANL AANL A,0FH 0FH ;CJNE ACJNE A,0FH0FH,PKEY PKEY ;P1.7P1.7列(列(Y3Y3)有键按下,转键处理)有键按下,转键处理 LJMP SMKEY LJMP SMKEY ;PKEYPKEY:;键处理;键处理第59页/共73页线反转法示例程序:SMKEYSMKEY:MOV P1MOV P1,#0FH#0FH;置;置P1P1口高口高4 4位位“0 0”、低、低4 4位输入状态位输入状态 MOV AMOV A,P1 P1 ;读;读P1P1口口 ANL AANL A,0FH 0FH ;屏蔽高;屏蔽高4 4位位 CJNE ACJNE A,0FH0F
29、H,HKEY HKEY;有键按下,转;有键按下,转HKEYHKEY SJMP SMKEY SJMP SMKEY ;无键按下转回;无键按下转回 HKEYHKEY:LCALL DELAY10 LCALL DELAY10 ;延时;延时10ms10ms,去抖,去抖 MOV AMOV A,P1 P1 ;ANL AANL A,0FH 0FH ;MOV BMOV B,A A ;行线状态在;行线状态在B B的低的低4 4位位 CJNE ACJNE A,0FH0FH,WKEY WKEY;有键按下,判哪一键按下;有键按下,判哪一键按下 SJMP SMKEY SJMP SMKEY ;是抖动转回是抖动转回 WKEYW
30、KEY:MOV P1MOV P1,0F0H 0F0H;置;置P1P1高高4 4位为输入、低位为输入、低4 4位为位为“0 0”MOV A MOV A,P1 P1 ;ANL AANL A,0F0H 0F0H;屏蔽低;屏蔽低4 4位位 ORL AORL A,B B ;列线高;列线高4 4位,与行线合成于位,与行线合成于B B 第60页/共73页按键散转处理:键号:10进制或16进制。通过键盘扫描程序得到的键值求出。键值:键所在行号和列号的组合码。例:键“9”行号为2,列号为1,键值可以表示为“21H”(也可以表示为12H)。根据键值可以计算出键号:键号所在行号键盘列数所在列号 即2419 根据键号
31、散转进入相应键的功能程序第61页/共73页键盘和显示器接口示例 一、8155的键盘及显示接口第62页/共73页 KD1:MOV AKD1:MOV A,#00000011B#00000011B;81558155初始化初始化 MOV DPTRMOV DPTR,#7F00H#7F00H ;MOVX DPTRMOVX DPTR,A A ;KEY1:ACALL KS1 KEY1:ACALL KS1 ;查有无键按下;查有无键按下 JNZ LK1 JNZ LK1 ;有,转键扫描;有,转键扫描 ACALL DIS ACALL DIS ;调显示子程序;调显示子程序 AJMP KEY1 AJMP KEY1 ;LK
32、1:ACALL DIS LK1:ACALL DIS ;键扫描;键扫描 ACALL DIS ACALL DIS ;两次调显示子程序,延时;两次调显示子程序,延时12ms 12ms ACALL KS1 ACALL KS1 ;JNZ LK2 JNZ LK2 ;ACALL DIS ACALL DIS ;调显示子程序;调显示子程序 AJMP KEY1 AJMP KEY1 第63页/共73页 LK2LK2:MOV R2,#0FEH MOV R2,#0FEH ;从首列开始;从首列开始 MOV R4MOV R4,#00H#00H ;首列号送;首列号送R4R4 LK4 LK4:MOV DPTR,#7F01H M
33、OV DPTR,#7F01H ;MOV AMOV A,R2 R2 ;MOVX AMOVX A,DPTR DPTR ;INC DPTR INC DPTR ;INC DPTR INC DPTR ;指向;指向C C口口 MOVX DPTRMOVX DPTR,A A ;JB ACC.0JB ACC.0,LONE LONE ;第;第0 0行无键按下,转查第行无键按下,转查第1 1行行 MOV AMOV A,#00H#00H ;第;第0 0行有键按下,该行首键号送行有键按下,该行首键号送A A AJMP LKP AJMP LKP ;转求键号;转求键号 LONE:JB ACC.1LONE:JB ACC.1,
34、LTWO LTWO ;第;第1 1行无键按下,转查第行无键按下,转查第2 2行行 MOV AMOV A,#08H#08H ;第;第1 1行有键按下,该行首键号送行有键按下,该行首键号送A A AJMP LKP AJMP LKP ;转求键号;转求键号LTWO:JB ACC.2LTWO:JB ACC.2,NEXT NEXT ;第;第2 2行无键按下,转查下一列行无键按下,转查下一列 MOV AMOV A,#10H#10H ;第;第2 2行有键按下,该行首键号送行有键按下,该行首键号送A A LKP:ADD A LKP:ADD A,R4 R4 ;求键号。键号行首键号列号;求键号。键号行首键号列号 P
35、USH ACC PUSH ACC ;保护键号;保护键号 LK3:ACALL DIS LK3:ACALL DIS ;等待键释放;等待键释放 ACALL KS1 ACALL KS1 ;JNZ LK3 JNZ LK3 ;POP ACC POP ACC ;RET RET ;键扫描结束。此时;键扫描结束。此时A A的内容为按下键的键号的内容为按下键的键号 第64页/共73页 NEXT:INC R4 NEXT:INC R4 ;指向下一列;指向下一列 MOV AMOV A,R2 R2 ;JNB ACC.5JNB ACC.5,KND KND ;判;判6 6列扫描完没有。列扫描完没有。RL A RL A ;未完
36、,扫描字对应下一列;未完,扫描字对应下一列 MOV R2MOV R2,A A ;AJMP LK4 AJMP LK4 ;转下一列扫描;转下一列扫描 KND:AJMP KEY1 KND:AJMP KEY1 ;扫完,转入新一轮扫描;扫完,转入新一轮扫描 KS1:MOV DPTRKS1:MOV DPTR,#7F01H#7F01H;查有无键按下子程序。先指向;查有无键按下子程序。先指向A A口口 MOV AMOV A,#00H#00H ;MOVX DPTRMOVX DPTR,A A ;送扫描字;送扫描字“00H00H”INC DPTR INC DPTR ;INC DPTR INC DPTR ;指向;指向
37、C C口口 MOVX AMOVX A,DPTR DPTR ;CPL A CPL A ;变正逻辑;变正逻辑 ANL A,#0FH ANL A,#0FH ;屏蔽高位;屏蔽高位 RET RET ;子程序出口,;子程序出口,A A的内容非的内容非0 0则有键按下则有键按下第65页/共73页二、8279的键盘及显示接口 第66页/共73页初始化程序如下:INIT:MOV DPTRINIT:MOV DPTR,#7FFFH#7FFFH ;置;置82798279命令命令/状态口地状态口地址址 MOV AMOV A,#0D1H#0D1H ;置清显示命令字;置清显示命令字 MOVX DPTRMOVX DPTR,A
38、 A ;送清显示命令;送清显示命令 WEIT:MOVX AWEIT:MOVX A,DPTR DPTR ;读状态;读状态 JB ACC.7JB ACC.7,WEIT WEIT ;等待清显示;等待清显示RAMRAM结束结束 MOV AMOV A,#34H#34H ;置分频系数,晶振;置分频系数,晶振12MHz12MHz MOVX DPTR MOVX DPTR,A A ;送分频系数;送分频系数 MOV AMOV A,#00H#00H ;置键盘;置键盘/显示命令显示命令 MOVX DPTRMOVX DPTR,A A ;送键盘;送键盘/显示命令显示命令 MOV IEMOV IE,#84H#84H ;允许
39、;允许82798279中断中断 RETRET第67页/共73页显示子程序如下:DIS:MOV DPTRDIS:MOV DPTR,#7FFFH#7FFFH;置;置82798279命令命令/状态口状态口地址地址 MOV R0MOV R0,#30H#30H ;字段码首地址;字段码首地址 MOV R7MOV R7,#08H#08H ;8 8位显示位显示 MOV AMOV A,#90H#90H ;置显示命令字;置显示命令字 MOVX DPTRMOVX DPTR,A A ;送显示命令;送显示命令 MOV DPTRMOV DPTR,#7FFEH#7FFEH;置数据口地址;置数据口地址 LP:MOV ALP:
40、MOV A,R0 R0 ;取显示数据;取显示数据 ADD AADD A,#6#6 ;加偏移量;加偏移量 MOVC AMOVC A,AAPC PC ;查表,取得数据的段;查表,取得数据的段码码 MOVX DPTRMOVX DPTR,A A ;送段码显示;送段码显示 INC R0 INC R0 ;调整数据指针;调整数据指针 DJNZ R7DJNZ R7,LP LP ;RET RET 第68页/共73页SEG:DB 3FHSEG:DB 3FH,06H06H,5BH5BH,4FH4FH,66H66H,6DH 6DH ;字符;字符0 0、1 1、2 2、3 3、4 4、5 5段码段码 DB 7DHDB
41、7DH,07H07H,7EH7EH,6FH6FH,77H77H,7CH 7CH ;字符;字符6 6、7 7、8 8、9 9、A A、b b段码段码 DB 39HDB 39H,5EH5EH,79H79H,71H71H,73H73H,3EH 3EH ;字符;字符C C、d d、E E、F F、P P、U U段码段码 DB 76HDB 76H,38H38H,40H40H,6EH6EH,FFHFFH,00H 00H ;字符;字符H H、L L、-、Y Y、日、日、“空空”段码段码第69页/共73页键盘中断子程序:键盘中断子程序:KEY:PUSH PSW KEY:PUSH PSW PUSH DPL PU
42、SH DPL PUSH DPH PUSH DPH PUSH ACC PUSH ACC PUSH B PUSH B SETB PSW.3 SETB PSW.3 MOV DPTR MOV DPTR,#7FFFH#7FFFH;置状态口地址;置状态口地址 MOVX AMOVX A,DPTR DPTR ;读;读FIFOFIFO状态状态 ANL AANL A,#0FH#0FH ;JZ PKYR JZ PKYR ;MOV AMOV A,#40H#40H ;置读;置读FIFOFIFO命令命令 MOVX DPTRMOVX DPTR,A A ;送读;送读FIFOFIFO命令命令 MOV DPTRMOV DPTR,
43、#7FFEH#7FFEH;置数据口地址;置数据口地址 MOVX AMOVX A,DPTR DPTR ;读数据;读数据 LJMP KEY1 LJMP KEY1 ;转键值处理程序;转键值处理程序 PKYR:POP BPKYR:POP B POP ACC POP ACC POP DPH POP DPH POP DPL POP DPL POP PSW POP PSW RETI RETI ;KEY1:KEY1:;键值处理程序;键值处理程序第70页/共73页三、串行口键盘及显示接口电路第71页/共73页思考题与习题1 1、试以80C3180C31为主机,用2 2片2764 EPROM2764 EPROM扩
44、展16K ROM16K ROM,画出硬件接线图。2 2、设计扩展2KB RAM2KB RAM和4KB EPROM4KB EPROM的电路图。3 3、当单片机应用系统中数据存储器RAMRAM地址和程序存储器EPROMEPROM地址重叠时,是否会发生数据冲突,为什么?4 4、80C5180C51单片机在应用中P0P0和P2P2是否可以直接作为输入/输出连接开关、指示灯等外围设备?5 5、七段LEDLED显示器有动态和静态两种显示方式,这两种显示方式要求80C5180C51系列单片机如何安排接口电路?6 6、设计80C5180C51键盘显示接口,采用中断扫描方式扩展3636共1818个键分别为0909、AFAF、RUNRUN和RESETRESET键,具体要求如下:a a、按下RESETRESET键后,单片机复位。b b、按下RUNRUN键后,系统进入地址为2000H2000H的用户程序。c c、按下0909、AFAF键后,键值存入内部RAMRAM,首地址为40H40H。试画出接口电路的硬件连接图并编写相应程序。7 7、试编写图7-277-27所示接口电路的实现程序 第72页/共73页感谢您的观看!第73页/共73页