湖南工大单片机辅助课件第7章_第1页
湖南工大单片机辅助课件第7章_第2页
湖南工大单片机辅助课件第7章_第3页
湖南工大单片机辅助课件第7章_第4页
湖南工大单片机辅助课件第7章_第5页
已阅读5页,还剩186页未读 继续免费阅读

下载本文档

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

文档简介

1、 MCS-51应用系统的设计方法应用系统的设计方法MCS-51应用系统的调试方法应用系统的调试方法键盘与显示接口设计键盘与显示接口设计步进电机应用设计步进电机应用设计温度控制系统温度控制系统 7.1 MCS-51应用系统研制方法应用系统研制方法7.1.1 确定任务确定任务 确定任务和技术指标之后,下一步便是确定任务和技术指标之后,下一步便是 这个阶段的任务是通过调查研究和查阅资料来完这个阶段的任务是通过调查研究和查阅资料来完成系统的总体设计。成系统的总体设计。1)机型和元器件选择 调研阶段调研阶段市场的货源市场的货源选择最熟悉的机种选择最熟悉的机种考虑性考虑性/价比价比2)硬件和软件的功能划分

2、 总体设计时,必须在硬件和软件之间总体设计时,必须在硬件和软件之间均衡均衡。一般的原则是看所设计的目标系统的生产量,一般的原则是看所设计的目标系统的生产量,如果成产量比较大,则能用软件实现的功能由如果成产量比较大,则能用软件实现的功能由软件完成,以便硬件结构简化。软件完成,以便硬件结构简化。7.1.3 硬件设计方法硬件设计方法1)程序存储器的容量 选择单片机时,应从容量、速度和价格方面考虑。在固化设备允许的条件下,宜选用容量大的器件,减少外部扩展的程序存储器,简化硬件逻辑。 ATMEL的89CXX系列和WINBOND的W77系列是目前国内最实用的单片机,它不要外接EPROM电路作为存储器。2)

3、数据存储器和I/O接口 对于数据存储器的容量需求,系统之间差别比较大。对于常规的智能仪表和实时控制器,8031片上RAM已能满足要求。 若需要扩展少量的RAM和/IO,可用扩展器8155。对于单片机系统,如果要求有较大容量的RAM存储器,这时RAM电路选择的原则是尽可能地减小芯片数量。因为存储器容量大的电路性能价格依然高。 8031的应用系统一般都需要扩展I/O接口,在选择I/O接口电路时,应从性能、价格和负载等方面考虑。应选用标准I/O接口电路(如8255等),使编程方便,应用灵活,负载小,但它的I/O性和一些功能往往没有被充分利用,造成浪费。选用TTL电路作I/O口,负载较大,同时因一个电

4、路的口线少,利用率会提高,成本也降低。应根据系统总的接口要求来权衡。3) 地址译码器 MCS51是根据地址来选择外部扩展电路进行信息交换的。外部的地址由所选择的地址译码来确定。通常采用全地址译码方法或线选法。 MCS51外部数据存储器和I/O接口电路是统一编址的。若系统只扩展少量的RAM和I/O口电路,则可采用线选法。 所谓所谓线选法线选法就是把单独的地址线连接到单就是把单独的地址线连接到单独的电路选片端,只要这一位地址为低电平独的电路选片端,只要这一位地址为低电平,就选中该片电路。,就选中该片电路。 图图7.2 线选法连接示意图线选法连接示意图 器器 件件 RAM/IORAM/IO地址地址

5、61166116 F000HF7FFHF000HF7FFH 82558255 EFFCHEFFFHEFFCHEFFFH 8155 8155 RAMRAM DE00HDEFFHDE00HDEFFH IOIO DF00HDF05HDF00HDF05H 08320832 BFFFHBFFFH 08090809 7FFFH7FFFH表表7.1 图图7.2的地址编码的地址编码 线选法的优点是硬件线路简单线选法的优点是硬件线路简单,但是地址空间但是地址空间没有被充分利用没有被充分利用对于对于RAM和和I/O口容量较大的系统,采用译码寻口容量较大的系统,采用译码寻址,一般用址,一般用74LS138作地址译码

6、器。作地址译码器。 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 其他状态其他状态 0 1 1 1 1 1 1 10 1 1 1 1 1 1 1 1 1 11 1 1 1 0 01 0 0 1 0 1 1 1 1 1 11 0 1 1 1 1 1 1 1 1 01 1 0 1 0 01 0 0 1 1 0 1 1 1 1 11 1 0 1 1 1 1 1 1 0 11 0 1 1 0 01 0 0 1 1 1 0 1 1 1 11 1 1 0 1 1 1 1 1 0 01 0 0 1 0 01 0 0 1 1 1 1 0 1 1 11 1 1 1 0 1 1 1 0 1 10

7、1 1 1 0 01 0 0 1 1 1 1 1 0 1 11 1 1 1 1 0 1 1 0 1 00 1 0 1 0 01 0 0 1 1 1 1 1 1 0 11 1 1 1 1 1 0 1 0 0 10 0 1 1 0 01 0 0 1 1 1 1 1 1 1 01 1 1 1 1 1 1 0 0 0 00 0 0 1 0 01 0 0C B AC B A1G 2GA 2GB1G 2GA 2GB 图图7.3 74LS138逻辑符号逻辑符号 图图7.4 地址译码逻辑地址译码逻辑 (b) 74LS245和和P0口的接口口的接口 7.1.4 7.1.4 软件设计方法软件设计方法程序有错否程序

8、有错否? 修改程序修改程序在线仿真调试在线仿真调试固化到固化到EPROM结结 束束开开 始始建立数据模型建立数据模型编写程序编写程序软件结构设计软件结构设计独立式按键结构键盘独立式按键结构键盘绘制程序流程图绘制程序流程图汇汇 编编1 1)问题定义)问题定义 问题定义是进一步明确系统对软件的要求,把软件承担的任务明确的定义出来。 定义输入/输出。 确定对输入数据进行哪些处理。把输入数据转变为输出结果的基本点过程,主取决于对算法的确定。 问题定义的基础,是建立在对系统应用环境的正确 了解程度和正确的工程判断上的,它对软件设计和硬件设计提供指导。2 2)软件结构设计)软件结构设计 在问题定义的基础上

9、,将软件分解为几个相对在问题定义的基础上,将软件分解为几个相对独立的任务,并根据这些任务的联系和时间关系,独立的任务,并根据这些任务的联系和时间关系,设计一个合理的软件结构,使设计一个合理的软件结构,使CPU有条不紊地对这有条不紊地对这些任务进行处理。些任务进行处理。 软件结构设计还包括程序设计技术选择、程序设软件结构设计还包括程序设计技术选择、程序设计技术、模块程序设计、自顶向下的程序设计和结计技术、模块程序设计、自顶向下的程序设计和结构程序设计等。在单片机的软件设计中,模块程序构程序设计等。在单片机的软件设计中,模块程序设计是最常用方法。设计是最常用方法。3 3)程序设计)程序设计 建立数

10、学模型是根据问题的定义,描叙出各建立数学模型是根据问题的定义,描叙出各个输入变量和输出变量之间的数学关系。在单片个输入变量和输出变量之间的数学关系。在单片机应用系统中,数学模型的正确程度,是系统性机应用系统中,数学模型的正确程度,是系统性能好坏的决定性因素。能好坏的决定性因素。(1 1)建立数学模型)建立数学模型例如,在直接数字控制系统中,例如,在直接数字控制系统中,最简单的方法是数字最简单的方法是数字PIDPID控制算法及控制算法及其改进形式。在测量系统中,从模其改进形式。在测量系统中,从模拟输入通道得到的温度,流量,压拟输入通道得到的温度,流量,压力等现场信息与该信号对应的实际力等现场信息

11、与该信号对应的实际值往往存在非线性关系,则需要进值往往存在非线性关系,则需要进行线性处理。为了削弱或消除干扰行线性处理。为了削弱或消除干扰信号的影响,提高系精度,常采用信号的影响,提高系精度,常采用算平均发,中值法,惯性数字滤波算平均发,中值法,惯性数字滤波方法等等。方法等等。(2 2)绘制程序流程图)绘制程序流程图图图7.7 查询程序功能流程图查询程序功能流程图 功能流程图进行扩充和具体化应对存储器,功能流程图进行扩充和具体化应对存储器,寄存器,标志位等工作单元作具体的分配和说明,寄存器,标志位等工作单元作具体的分配和说明,把功能流程图中每一个粗框转变为对具体把功能流程图中每一个粗框转变为对

12、具体的存贮单元、工作寄存器或的存贮单元、工作寄存器或I/OI/O口的操作,口的操作,绘制出详细的流程图(细框图)。绘制出详细的流程图(细框图)。(A)03为为“0”? 开开 始始8279状态字状态字A(A)0为为“0” ? 长 度 减 为长 度 减 为“0”? 打印数据打印数据8255B口口置结束标志置结束标志读读8255C口口A根据根据R6,R7取打印取打印选工作寄存器区选工作寄存器区1选工作寄存器区选工作寄存器区0修改打印缓冲器指针修改打印缓冲器指针(A)=27 H ?读读FIFORAMA置置“1”停机标志停机标志结结 束束读读FIFORAM命令命令8279图图7.8 7.8 查询程序流程

13、图查询程序流程图 (3 3)编写程序)编写程序 先分配单片机内部的先分配单片机内部的RAM,指定工作寄存器,配标,指定工作寄存器,配标志位,再估算子程序和中断嵌套的最大级数以及程序中志位,再估算子程序和中断嵌套的最大级数以及程序中栈操作指令使用情况,指定堆栈区,栈区的大小应留有栈操作指令使用情况,指定堆栈区,栈区的大小应留有余量,最后剩下部分作为数据缓冲器。若有扩展余量,最后剩下部分作为数据缓冲器。若有扩展RAM存存贮器,应把使用频率最高的数据缓冲器设在内部贮器,应把使用频率最高的数据缓冲器设在内部RAM,以利提高处理速度。在充分利用内部以利提高处理速度。在充分利用内部RAM基础上,再分基础上

14、,再分配外部的数据存贮器。配外部的数据存贮器。 4 4)程序的汇编、调试和固化)程序的汇编、调试和固化逻辑错误逻辑错误电源故障电源故障元器件失效元器件失效可靠性问题可靠性问题7.2 MCS51应用系统的调试方法应用系统的调试方法7.2.1 7.2.1 常见硬件故障分析常见硬件故障分析 7.2.2 7.2.2 硬件调试方法硬件调试方法1)静态调试)静态调试在样机加电之前,先用万用表等工具,根据硬件逻在样机加电之前,先用万用表等工具,根据硬件逻辑设计图仔细检查样机线路的正确性,核对元器件,核辑设计图仔细检查样机线路的正确性,核对元器件,核对元器件的型号、规格和安装是否符合要求。应特别注对元器件的型

15、号、规格和安装是否符合要求。应特别注意电源系统检查,以防止电源的短路和极性错误,并重意电源系统检查,以防止电源的短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或和其他信号线短路)。否存在相互之间短路或和其他信号线短路)。Step2:加电后检查各插件上引脚的电位,仔细测量加电后检查各插件上引脚的电位,仔细测量各电平是否正常,尤其应注意各电平是否正常,尤其应注意CPU插座的各点电位,若插座的各点电位,若有高压,联机仿真器调试时,将会损坏仿真器的器件。有高压,联机仿真器调试时,将会损坏仿真器的器件。Step3;是

16、在断电情况下,除是在断电情况下,除CPU以外,插上所有的以外,插上所有的元器件,仿真插头插入样机元器件,仿真插头插入样机CPU插座,并和仿真机相连,插座,并和仿真机相连,用万用表检查连接的正确性与可靠性,准备联机仿真调用万用表检查连接的正确性与可靠性,准备联机仿真调试。试。 2 2)联机仿真)联机仿真 在静态调试中,对目标机硬件进行在静态调试中,对目标机硬件进行初步调试,只排除一些明显的静态故障。初步调试,只排除一些明显的静态故障。 目标样机中的硬件故障(如各个部目标样机中的硬件故障(如各个部件内部存在的故障和部件之间连接的逻辑件内部存在的故障和部件之间连接的逻辑错误)主要是靠联机仿真来排除的

17、。分别错误)主要是靠联机仿真来排除的。分别打开样机和仿真器电源后,便开始联机仿打开样机和仿真器电源后,便开始联机仿真调试。真调试。 用仿真机读出修改目标样机扩展用仿真机读出修改目标样机扩展RAM存贮存贮器的操作命令器的操作命令 ,将一批数据写入样机的外部,将一批数据写入样机的外部RAM存贮器,然后用读样机扩展存贮器,然后用读样机扩展RAM的命令读的命令读出检查,若读出和写入的内容一致(任意的数据出检查,若读出和写入的内容一致(任意的数据写入任意的单元正确),则扩展写入任意的单元正确),则扩展RAM存贮器没存贮器没有故障。若存在写不进,读不出现象,则有故障有故障。若存在写不进,读不出现象,则有故

18、障存在。此时编一段循环读写存在。此时编一段循环读写RAM存贮器程序,存贮器程序,并用连续方式运行,用示波器观察样机并用连续方式运行,用示波器观察样机RAM电电路的选片信号和读写信号,进一步查明故障点。路的选片信号和读写信号,进一步查明故障点。测试扩展测试扩展RAM存贮器存贮器 对于对于I/O口有输入和输出口之分、,也有可编口有输入和输出口之分、,也有可编程接口的差别。应根据系统对程接口的差别。应根据系统对I/O口的定义,先用口的定义,先用仿真机的仿真机的I/O写命令,把控制字写入可编程电路写命令,把控制字写入可编程电路(如(如8255、8155等)的命令控制口,使之具有系等)的命令控制口,使之

19、具有系统要求的逻辑结构。然后有用仿真机的统要求的逻辑结构。然后有用仿真机的I/O写命令写命令将数据写入输出口,观察输出口和所连设备的状将数据写入输出口,观察输出口和所连设备的状态。同时用态。同时用 I/O口读或写命令读输入口的状态,口读或写命令读输入口的状态,观察读出内容和输入设备的状态是否一致(如拨观察读出内容和输入设备的状态是否一致(如拨盘开关,键盘等),用这种方法测试盘开关,键盘等),用这种方法测试I/O接口和所接口和所连设备是否存在故障,并对故障进行定位。连设备是否存在故障,并对故障进行定位。测试测试I/O口和口和I/O设备设备 用仿真机用仿真机ROM命令,使样机中的命令,使样机中的E

20、PROM电路作为目标机的程序贮存器。再用电路作为目标机的程序贮存器。再用I/O口读命口读命令读程序存贮器,根据读出的内容和令读程序存贮器,根据读出的内容和EPROMM的内容是否一致来判断样机的程序的内容是否一致来判断样机的程序存贮器电路是否存在故障。存贮器电路是否存在故障。测试程序存贮器测试程序存贮器 许多仿真机是以单许多仿真机是以单CPU方式开发方式开发MCS-51目标系统的,可以用开关选择,使目标机目标系统的,可以用开关选择,使目标机选用仿真机内晶振电路或样机内的晶振电路,选用仿真机内晶振电路或样机内的晶振电路,通过使用样机内的晶振电路来测试它的功能。通过使用样机内的晶振电路来测试它的功能

21、。按下样机中复位开关(如果存在),正常情按下样机中复位开关(如果存在),正常情况下,系统应被复位。况下,系统应被复位。晶振电路和复位电路晶振电路和复位电路 程序转跳错程序转跳错常见故障进行分析常见故障进行分析 这种错误的现象是程序运行不这种错误的现象是程序运行不到指定的地方到指定的地方,或发生死循环,通常或发生死循环,通常是由于错用了指令或设错了标号引是由于错用了指令或设错了标号引起。起。 STRT: CLR C MOV A,#0F0H LP1: INC A JNC LP1 GON: MOV DPTR, #7FFFH 设计这段程序的目的是为了设计这段程序的目的是为了延迟一段世间。但由于延迟一段

22、世间。但由于INC A指指令执行结果不影响任何标志,所令执行结果不影响任何标志,所以以JNC LOOP1这条指令执行后这条指令执行后总是跳转到总是跳转到LP1,结果发生了死,结果发生了死循环。我们可以用单拍、跟踪、循环。我们可以用单拍、跟踪、断点运行方式这一段程序。断点运行方式这一段程序。 在在 STRT,GON处后,目标机从处后,目标机从STRT开始带断点进行,碰到开始带断点进行,碰到GON则停则停下来。但由于程序发生了死循环,碰不下来。但由于程序发生了死循环,碰不到断点。此时在仿真机终端上按下停止到断点。此时在仿真机终端上按下停止运行键,仿真机中的运行键,仿真机中的8031返回监控,屏返回

23、监控,屏幕显示出幕显示出PC、PSW、ACC等状态信息。等状态信息。这种情况下,可发现程序中有死循环现这种情况下,可发现程序中有死循环现象。象。输入断点运行命令输入断点运行命令 在在 STRT,GON。此时可以在终端。此时可以在终端上观察到上观察到PC、PSW、ACC等寄存器内容等寄存器内容的动态变化,可以进一步确认程序有死的动态变化,可以进一步确认程序有死循环。若按下停止运行,则停止跟踪。循环。若按下停止运行,则停止跟踪。此时把此时把A修改为修改为FFH,从,从LP1开始运行一开始运行一条指令,结果条指令,结果ACC变为变为0,但进位仍为,但进位仍为0,找出错误的原因。找出错误的原因。 再输

24、入跟踪命令再输入跟踪命令可以修改成下面的程序实现时间延迟:可以修改成下面的程序实现时间延迟:STRT:MOV A, #0F0HLP1: INC A CJNE A, #00H,LP1GON:MOV DPTR, #7FFFH2 2)程序错误)程序错误 对于计算程序,经过反复测试后,才能验正对于计算程序,经过反复测试后,才能验正它的正确性。例如调试一个双字节的十进制它的正确性。例如调试一个双字节的十进制加法程序,该程序的功能为加法程序,该程序的功能为80318031内内31H31H、30H30H和和33H33H、32H32H单元内的单元内的BCDBCD码相加,结码相加,结果送到果送到34H34H、3

25、3H33H、32H32H单元。单元。STRT:MOV R0,#32H MOV R1,#30H MOV R7,#02H CLR CL1: MOV A,R0 ADDC A,R1 DA A, MOV R0,A INC R0 INC R1 DJNZ R7,L1 CLR A MOV ACC.0,C MOV R0,AL2: RET 调试这个子程序时,先用仿真机的读出修改调试这个子程序时,先用仿真机的读出修改命令,将数据和被加数写入命令,将数据和被加数写入8031的的30H33H单元单元内。然后输入断点运行命令:内。然后输入断点运行命令: 在在 STRT,L2处,目标机以断点的方式从处,目标机以断点的方式从

26、STRT开始运行这个子程序开始运行这个子程序,碰到断点碰到断点L2后,仿真后,仿真机中的机中的8031从目标状态返回监控状态。从目标状态返回监控状态。 输入读目标系统输入读目标系统8031内部内部RAM的命令,的命令,8031内部内部RAM状态显示在终端上,观察状态显示在终端上,观察34H32H的的内容,是否等于加数和被加数之和。若对任意的内容,是否等于加数和被加数之和。若对任意的二个数相加,所得结果都正确,则程序是正确的。二个数相加,所得结果都正确,则程序是正确的。若存在错误,再用单拍方式从若存在错误,再用单拍方式从STRT开始一开始一条一条指令运行,并不断监察条一条指令运行,并不断监察80

27、31的状态变化,的状态变化,进一步查出错误原因。进一步查出错误原因。 3 3)输入)输入/ /输出错误输出错误 这类错误包括数据传送出错,外围设备失这类错误包括数据传送出错,外围设备失控,没有响应外部中断等。这类错误通常也是控,没有响应外部中断等。这类错误通常也是固定性的,而且硬件错误和软件错误常常交织固定性的,而且硬件错误和软件错误常常交织在一起。例如图在一起。例如图7.9所示的所示的A/D转换器转换器7135接口接口电路,若电路,若8031没有响应没有响应AD中断,则读不到中断,则读不到A/D的数据。的数据。 图图7.9 外部中断外部中断0输入电路输入电路 先测试先测试8031是否会执行外

28、部中断是否会执行外部中断0的服务次序,读取的服务次序,读取A/D结果。在结果。在 MAIN,PINO处输入断点运行命令,即把断点设处输入断点运行命令,即把断点设在中断服务程序的入口,从主程序开始带断点运行,若能碰在中断服务程序的入口,从主程序开始带断点运行,若能碰到断点,证明到断点,证明8031能响应外部中断能响应外部中断0请求,再用单步运行命请求,再用单步运行命令或断点运行命令,进一步测试中断服务程序的正确性。若令或断点运行命令,进一步测试中断服务程序的正确性。若碰不到碰不到PIN0这个断点地址。说明这个断点地址。说明8031不响应外部不响应外部0中断。这中断。这时先用示波器测试时先用示波器

29、测试8155定时器的输出波形(定时器的输出波形(7135的时钟),的时钟),7135的的STROBE信号和信号和8155AD的中断请求输出线(的中断请求输出线(PC0)的)的电平,若发现异常,则从二方面查找原因。电平,若发现异常,则从二方面查找原因。 首先,检查硬件逻辑,其次检查对首先,检查硬件逻辑,其次检查对8155的初始的初始化编程,直至各点波形正常为止。若为低电平时,化编程,直至各点波形正常为止。若为低电平时,8031仍不响应中断仍不响应中断0请求,则需要进一步检查请求,则需要进一步检查8031的中断系统初始化编程是否有错误。这样从硬件和的中断系统初始化编程是否有错误。这样从硬件和软件二

30、个方面来诊断和排除系统的输入输出故障。软件二个方面来诊断和排除系统的输入输出故障。 用单拍、断点仿真运行命令,一般只能测试目用单拍、断点仿真运行命令,一般只能测试目标系统的静态功能,目标系统的动态性能要全速仿标系统的静态功能,目标系统的动态性能要全速仿真命令来测试,这时应选目标机中的晶振电路工作。真命令来测试,这时应选目标机中的晶振电路工作。若动态性能没有达到系统设计指标,有的是由于元若动态性能没有达到系统设计指标,有的是由于元器件速度不够造成的,更多的是由于多个任务之间器件速度不够造成的,更多的是由于多个任务之间的关系处理不恰当引起的。调试时应从两方面来考的关系处理不恰当引起的。调试时应从两

31、方面来考虑。虑。5)上电复位电路错误)上电复位电路错误 在联机调试是排除了硬件和软件的一切错误保障,并在联机调试是排除了硬件和软件的一切错误保障,并将程序固化到将程序固化到EPROM插入样机后,也能正常地运行,插入样机后,也能正常地运行,此时联机仿真告一段落。一般情况下,脱机后插上此时联机仿真告一段落。一般情况下,脱机后插上CPU,目标系统便研制完成。在个别情况下,脱机以后目标机目标系统便研制完成。在个别情况下,脱机以后目标机工作不正常。这主要由于上电复位电路故障造成的。脱工作不正常。这主要由于上电复位电路故障造成的。脱机加电后,若机加电后,若8031没有初始复位。则系统不会正常运行。没有初始

32、复位。则系统不会正常运行。这种错误联机时没有测试出来,因为单这种错误联机时没有测试出来,因为单CPU仿真器,上仿真器,上点后的点后的8031有仿真器中的复位电路复位。有仿真器中的复位电路复位。 7.3 键盘和显示接口技术键盘和显示接口技术 在单片机应用系统中,键盘用于输入数据、代码和命令;显示器用来显示单片机的键入值、控制过程中间信息及运算结果等。键盘和显示器是实现人机对话,两个必不可少的功能配置。下面介绍键盘、LED显示器及LCD显示器与单片机(MCU)的接口技术。7.3.1 键盘接口技术键盘接口技术 键盘分两类:独立连接多键盘和矩阵式键盘。 独立式按键结构键盘 独立式按键结构的键盘是最简单

33、的键盘电路,每独立式按键结构的键盘是最简单的键盘电路,每个键独立接入一根输入线。这种键盘的个键独立接入一根输入线。这种键盘的优点优点是结构是结构简单、使用十分方便,目前这种结构的键盘应用还简单、使用十分方便,目前这种结构的键盘应用还相当普遍,这种键盘的相当普遍,这种键盘的缺点缺点是随着键数数量的增加是随着键数数量的增加所占用的所占用的I/OI/O口线也增加。口线也增加。 独立式按键结构的键盘在没有键按下时,数据输独立式按键结构的键盘在没有键按下时,数据输入线均为高电平,当有键按下时,与之对应的数据入线均为高电平,当有键按下时,与之对应的数据线将变成低电平。因此可用位指令判别是否有键按线将变成低

34、电平。因此可用位指令判别是否有键按下。下。带中断的独立连接键盘 ORG 0000H LJMP STARTSTART:MOV P1,#0FFH MOV A,P1 ;键字送键字送A A MOV DPTR,#ADRSS ;散转表首地址;散转表首地址 MOV R1,#00H ;初始键号;初始键号LP1: RRC A ;开始查找键字;开始查找键字 JNC LP2 ;有键按下则转至;有键按下则转至LP2LP2 INC R1采用查询法,利用位判采用查询法,利用位判别加散转指令,实现键别加散转指令,实现键盘的人机对话功能盘的人机对话功能。 LJMP LP1LP2: MOV A,R1 ;修正变址值,实现程序散转

35、;修正变址值,实现程序散转 ADD A,A JMP A+DPTRADRSS:AJMP LOOP0 ;地址数据表;地址数据表 AJMP LOOP - AJMP LOOP7LOOP0: - LOOP0: - ;散转入口地址;散转入口地址 - LJMP START -LOOP7: - - LJMP START ENDLOOP0: -上例没有考虑去抖动,也没 有考虑有几个键同时按下的情况在实际应用中是要考虑!注意输出锁存器输入缓冲器行线列行列式键盘 v直接使用直接使用I/O的键盘电路的键盘电路 MCU的I/O口输出具有锁存器,输入具有缓冲器,因此应用I/O口直接与行线与列线相连就可以组成行列式键盘。v

36、利用利用I/O口和译码器的接口电路口和译码器的接口电路v利用串行口的键盘接口电路利用串行口的键盘接口电路P10P11P12 P00P01P02P03ABC 由I/O口与译码器组成的行列式键盘CPU先使第一行( P14)为“0”,其余行为“1” 读输入口P10P13的状态,若输入缓冲器的状态全部为“1”,则表示所在行无键按下;若输入缓冲器不全为“1”,说明所在行有键按下,CPU停止当前行线扫描,转入到列线扫描,列线P10 P13为“0”状态的列表示对应列有键按下。这样,行线与列数交叉键就是扫描到的按键。行线P14P17为输出,列线P10P13为输入行列式键盘工作原理行列式键盘工作原理键扫描方式

37、程控扫描方式:CPU从执行程序就开始了键盘的扫描,等待来是键盘的命令。 定时扫描方式:在程序初始化时,先对定时/计数器进行设置,使其每10ms中断一次,每次中断,CPU将去扫描一次键盘,若两次中断扫描到有键按下(这里考虑了消抖动),CPU将对键作相应的处理。中断扫描方式:采用中断扫描方式必需有外部中断接口,当有键按下时,产生中断请请求,CPU响应中断,在中断服务程序扫描键盘,作相应处理。这是多任务应用系统常用的一种方式。 扫描方式键盘编程扫描方式键盘编程 判断键盘上有无键按下:先对行进行扫描,当扫判断键盘上有无键按下:先对行进行扫描,当扫描到行线有键按下时,再对列线进行扫描,行线、描到行线有键

38、按下时,再对列线进行扫描,行线、列线均为列线均为“0”状态的键就是当前的按键。状态的键就是当前的按键。 去除键的抖动:当扫描到有按键时,软件延时去除键的抖动:当扫描到有按键时,软件延时10ms再判该键是否仍是按键,如是则确认该键是当再判该键是否仍是按键,如是则确认该键是当前的按键,若不是,则把它当成是误操作处理。前的按键,若不是,则把它当成是误操作处理。 取键值:根据行号、列号建立一个键值数据表,取键值:根据行号、列号建立一个键值数据表,采用采用MOVC A,A+DPTR查表指令。键值存于:查表指令。键值存于: 闭合键的键码值闭合键的键码值=以(以(TAB(数据表首地址)(数据表首地址)+行号

39、行号+列号)为地址单元中的内容。列号)为地址单元中的内容。 ORG 0000H LJMP START ORG 2000HSTART:MOV R0,#0F7H;扫描初值(扫描初值(P13=0) M0V R1,#00H ;取码指针,为取码作准备取码指针,为取码作准备LP1: MOV A,R0 ;开始扫描开始扫描 MOV P1,A MOV A,P1 ;读读P1状态状态 MOV R2,A ;为键盘消抖作准备为键盘消抖作准备 SETB C MOV R3,#04H ;每次列扫描数每次列扫描数LP2: RLC A ;按键字左移一位按键字左移一位 JNC KEY ;有键按下转有键按下转KEYLP3: INC

40、R1 ;无键按下,取码指针加无键按下,取码指针加1 DJNZ R3,LP2 ;4列未完,则继续扫描列线列未完,则继续扫描列线 MOV A,R0 ;扫描值送累加器扫描值送累加器 SETB C ;扫描下一行扫描下一行 RRC A MOV R0,A ;取回当前扫描值取回当前扫描值 JC LP1 ;未扫描完继续扫未扫描完继续扫 LJMP START ;4行扫描完后程序回到起始位置行扫描完后程序回到起始位置 ;重新开始扫描重新开始扫描 KEY:LCALL DS10MS ;10ms后取回的扫描值仍等于原值,后取回的扫描值仍等于原值, ;说明有键按下,否则当键抖动处理。说明有键按下,否则当键抖动处理。 MO

41、V A,P1 XRL A,R2 JNZ LP3 ;所取扫描值与原值不等,所取扫描值与原值不等,;程序转程序转LP3 LP4 : MOV A,P1 ;判按键是否放下判按键是否放下 XRL A,R2 JZ LP4 MOV A,R1 ;取码指针送累加器取码指针送累加器 MOV DPTR,#TAB ;键值数据表起始地址键值数据表起始地址 MOVC A,A+DPTR LJMP STARTDS10MS:MOV R6,#60 LOOP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LOOP1 RET ORG TABTAB: DB 01H,02H,03H,0AH DB 04H,05H,06H

42、,0BH DB 07H,08H,09H,0CH DB 0EH,00H,0FH,0DH ENDaabcdefghabcdefghbcdefghgfGNDabedGNDcdp共阳极共阴极符号与引脚LED显示器 数码管既可直接接单片机的口线(如果是数码管既可直接接单片机的口线(如果是P0P0口的话,只能接共阳极的,接共阴的要接上拉电口的话,只能接共阳极的,接共阴的要接上拉电阻),又可通过锁存器接单片机口线。阻),又可通过锁存器接单片机口线。(1)静态显示接口技术)静态显示接口技术所谓静态显示,就是每一个显示器都要占用单独的所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的具有锁存功能的I/O

43、I/O接口用于笔划段字形代码。接口用于笔划段字形代码。通过通过MCU的口线的显示接口电路的口线的显示接口电路 aabcdefghbcdefghP1GND单片机的I/O口直接与LED显示器相连I/O口线与译码器构成静态显示电路 串行口构成静态显示电路(2)动态显示接口技术)动态显示接口技术 abcdefgh+5VVCCaedfchgbdfgahcbeP0+5VVCCP10 P11单片机动态显示扫描电路动态扫描显示接口电路。接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。 ORG 0000H LJMP START ORG 0030H

44、START: MOV A,20H MOV DPTR #TAB MOVC A,A+DPTR MOV P0,A CLR P1.1 LCALL DS1MS SETB P1.1 MOV A,21H MOV DPTR,#TABMOVC A,A+DPTR MOV P0,A CLR P1.0 LCALL DS1MS SETB P1.0 LJMP START DS1MS:MOV R7,#03 LP: MOV R6,#248 DJNZ R6,$ DJNZ R7,LP ORG TAB TAB: DB 0COH,OF9H,0A4H,0B0H,99H,92H, 82H,0F8H,80H,90H END(1)字符型)字

45、符型LCD显示器接口技术显示器接口技术 字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等。以2行16个字的SMC1602A液晶模块来介绍它与单片机的接口技术和编程方法。编号符 号引 脚 功 能编号符 号引 脚 功 能1VSS电源地9D2数据线2VDD电源正极10D3数据线3VL液晶显示偏压信号11D4数据线4RS数 据 / 命 令 选 择 端(H/L)12D5数据线5R/W读/写选择端(H/L)13D6数据线6E使能信号14D7数据线7D0数据线15BLA背光源正极8D1数据线16BLK背光源负极SMC1602A液晶

46、模引脚功能表液晶模引脚功能表 1 SMC1602A液晶模块 RAM地址映射图SMC1602A液晶模块内部存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“B”的代码是0100010B(42H),显示时模块把地址42H中的点阵字符图形显示出来,我们就能看到字母“B”。作为用户,只能选用其中的代码,不能更改。 RAM地址映射图2 SMC1602A液晶显示模块与单片机接口方式液晶显示模块与单片机接口方式 .0-P1.7RDWRP2.7P2.1P2.0系列总线方式系列模拟口线方式.0-P1.7P3.5

47、P3.1P3.0液晶显示模块与单片机接口方式3 基本操作时序基本操作时序 读状态:输入:RS=L,RW=H,E=H 输出:D0-D7=状态字 写指令:输入:RS=L,RW=L D0-D7=指令 E=高脉冲 输出:无 读数据:输入:RS=H,RW=H,E=H 输出:D0-D7 写数据:输入:RS=H,RW=L,D0-D7=数据 E=高脉冲 输出:无 4 4 程序设计程序设计 指令码操作说明功能0011100016*2显示,5*7点阵,8位数据接口显示模式00001DCBD=1 开显示; D=0 关显示C=1 显示光标; C=0 不显示光标B=1光标闪烁; B=0光标不显示显示开/关及光标设置 0

48、00001NSN=1 当读或写一个字符后地址指针加1,且光标加1N=0 当读或写一个字符后地址指针减1,且光标减1S=1 当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动屏幕移动的效果。S=0 当写一个字符,整屏显示不移动80H+地址码(0-27H,40H-67H)设置数据地址指针数 据 指 针 设置00000001数据指针清零、所有显示清零显示清屏00000010数据指针清零显示回车SMC1602A液晶模块指令表液晶模块指令表 RS EQU P3.0 RW EQU P3.1 E EQU P3.5 ORG 0000H LJMP START ORG 2000HSTART:

49、MOV P1,#01H ;清屏清屏 ACALL ENABLE ;ENABLE为写入控制命令子程序为写入控制命令子程序 MOV P1,#38H ;显示模式设置成显示模式设置成8位位2行行5x7点阵点阵 ACALL ENABLE MOV P1,#0FH ;显示开显示开/关及光标设置关及光标设置 ACALL ENABLE MOV P1,#06H ;文字不动,光标自动右移文字不动,光标自动右移 ACALL ENABLE MOV P1,#83H ;写入显示起始地址(第写入显示起始地址(第1行第行第4个位置)个位置) ACALL ENABLE程序MOV DPTR,#TAB ;“I LOVE MCU”数据表

50、数据表 MOV R0,#10 ;带空格共带空格共10个个LP:MOV A,#00H ;取数欲写入的数据取数欲写入的数据 MOVC A,A+DPTR ACALL WRITE INC DPTR DJNZ R0,LP ;未写完再继续写未写完再继续写 SJMP $WRITE:MOV P1,A ;写数据子程序写数据子程序 SETB RS CLR RWCLR E ACALL BUSY SETB E ;E=1 RET ENABLE: CLR RS ;写入控制命令的子程序写入控制命令的子程序 CLR RW CLR E ACALL BUSY SETB E RET BUSY: MOV P1,#0FFH ;判断液晶

51、显示器是否忙的子程序判断液晶显示器是否忙的子程序 CLR RS SETB RW CLR E NOP SETB E JB P1.7,BUSY ;如果;如果P1.7为高电平表示忙就循环等为高电平表示忙就循环等 待待 RET ORG TAB TAB:DB 49H,20H,4CH,4FH,56H,45H,20H, 4DH,43H, 55H END 模块的外部接口信号模块的外部接口信号 (2)绘图型)绘图型LCD显示器接口技术显示器接口技术寄存器选择寄存器选择 指令表指令表 CS1 EQU P2.4 ;片选片选CS1接接P2.4CS2 EQU P2.3 ;片选片选CS2接接P2.3D/I EQU P2.

52、2 ;寄存器选取择信号寄存器选取择信号D/I接接P2.2R/W EQU P2.1 ;读读/写选择信号接写选择信号接P2.1E EQU P2.0 ;使能信号接使能信号接P2.0 左区驱动子程序左区驱动子程序(GM12864(GM12864的左区的左区)-)- PRMO: CLR CS2 SETB CS1 CLR D/I SETB R/W PRM01: MOV P1,#OFFH SETB E MOV A,P1 ;读状态字读状态字 CLR E ;E=0 程序 JB ACC.7,PRM01 ;判判“忙忙”标志为标志为“0”否,否再读否,否再读 CLR R/W ;R/W=0 MOV P1,COM ;写指

53、令代码(写指令代码(COM为指令代码)为指令代码) SETB E ;E=1 CLR E ;E=0 RET PRM1:CLR CS2 ;片选设置为片选设置为“01” SETB CS1 CLR D/I ;D/I=0 SETB R/W ;R/W=1 PRM11: MOV P0,#OFFH ;P1口置口置“1” SETB E ;E=0 MOV A,P0 ;读状态字读状态字 CLR E ;E=0 JB ACC.7,PRM11 ;判判“忙忙”标志为标志为“0”否,否再读否,否再读 SETB D/I ;D/I=1 CLR R/W ;R/W=0 MOV P0,DAT ;写数据写数据 SETB E ;E=1 C

54、LR E ;E=0 RET PRM2: CLR CS2 SETB CS1 CLR D/I SETB R/W PRM21: MOV P0, #0FFH SETB E MOV A, P0 CLR E JB ACC.7, PRM21 SETB D/I MOV P0, #0FFH SETB E MOV DAT ,P0 CLR E RET7.4 步进电机控制系统步进电机控制系统 前言前言 步进电机工作原理步进电机工作原理 步进电机的驱动电路原理步进电机的驱动电路原理 步进电机控制原理及实例步进电机控制原理及实例 步进电机作为执行元件,是机电步进电机作为执行元件,是机电一体化的关键产品之一一体化的关键产品

55、之一, 广泛应用在各广泛应用在各种自动化控制系统中。随着微电子和计种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应日俱增,在各个国民经济领域都有应用。用。 电脉冲信号按照顺序轮流接通直流电源,由于步进电机中的励磁绕组在空间中按一定的规律排列,轮流接通直流电源后就会在空间形成一种阶跃变化的旋转磁场,使转子转过一定角度(称为步距角)。 电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m(m-1)/m,1。并且导电按一定的相序电机就能正反转被控制这是步进电机旋转的物理条件。 只要符合这一条件只要符合

56、这一条件, ,理论上可以制造任何理论上可以制造任何相的步进电机。相的步进电机。 脉冲分配器功率驱动保护和反馈步进电机 步进电机驱动系统图脉冲发生器 对于反应式步进电极,绕组电流只要求往一个方向流动,故驱动电路可以采用单极性驱动。 图示是单电压功率驱动电路的一相,绕组中串联的电阻Rs 使回路的时间常数减小,以便使电机高频运行时能产生较大的电磁转矩,并能缓解电机的低频共振现象。 D1Q1ARsV+ 从图中的单步响应曲线看出区别:曲线1 是不串电阻Rs ,曲线2 是串电阻Rs 并调高电源电压以保持与曲线1 相同绕组的静态电流,但Rs 会引起附加损耗,故一般只适用于小功率步进电机中.D1能把电机运转时

57、绕组产生的高压钳位于电源电压附近,以保护驱动管。12时间转角方 向 电平步 进 脉冲脉 冲 分配器功率接口步进电机控制器 单片机输出步进脉冲信号(CP )和旋转方向信号,经脉冲分配器(也叫环形分配器)按电机的相数和工作方式产生多相循环变化的脉冲。例如三相电机采用单三拍工作方式,脉冲分配器三路输出顺序是:A,B,C,A ;反向旋转时顺序为A,C,B,A 。 并行控制是指单片机用硬件或软件方法实现脉冲分配器功能,得出多相脉冲信号,经功率放大后驱动各相绕组。 程序为:程序为:OutPhaseStatus:MOV A, PhaseStatusANL A, #00000111BMOV DPTR,#Pha

58、seTab ;把表地址给把表地址给bptrMOVC A,A+DPTRORL A, #StepPortMask ;输出相序而不影响其它口线输出相序而不影响其它口线ANL StepPort, ARETPhaseTab:DB 0FEH, 0FCH, 0FDH, 0F9H, 0FBH, 0F3H, 0F7H, 0F6H步进电动机转速控制 步进电动机的转速控制,实际上就是控制各相线通电状态持续时间的长短。这可以采取两种方法:一种是软件延时,另一种是定时器延时。 这种方法是在每次转换通电状态(简称换相)后调用一个延时子程序,待延时结束后执行换相子程序。如此反复,就可使步进电机按某一确定的转速运转。以下程序

59、将控制步进电机正向连续旋转。 ContinueStepLCALL HardSoftPostiveStep ;正转子程序正转子程序MOV A,#DealyValue ;DealyValue决定延时时间决定延时时间LCALL StepDealy ;调用延时子程序调用延时子程序LJMP ContinueStep ;继续循环执行继续循环执行StepDealy:;延时延时DealyV1 x 2 + 3 x ACC + 2 个机器周期个机器周期MOV R0, #DealyV1 ;延时延时DealyV1 x 2 + 1 个机器周期个机器周期DJNZ R0, $DJNZ ACC, StepDealyRET程序

60、为:程序为: 利用定时器,加载适当的定时值以控制延时的长短,在定时器溢出产生中断时,执行步进电机换相子程序。每中断一次,电动机就换相一次,从而实现对电动机的速度控制。 程序为:程序为:CalDelay: ;/计算速度计算速度,走步延时走步延时mov a,DelayIncDeccjne a,#0 x7f,ChkDirChkDir:mov RotationDir,c ;/DelayIncDec=0 x7f 时时;正转正转(RotationDir=0)mov r7,#0 x7fjnc CalDelay1xch a,r7CalDelay1:clr csubb a,r7mov SpeedSV,amov

温馨提示

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

评论

0/150

提交评论