250 likes | 419 Views
第八章 应用举例. 二、步进电机控制. 一、数据采集系统. 计算机数据采集过程示意. 已知某温度传感器的温度与输出电压 及八位 A / D 转换器输出的特性曲线. T = 0 ℃ , U = 0 , D7—D0 = 00H ; T = 10 ℃ , U = 0.1V , D7—D0 = 1AH ; T = 99℃ , U = 5V , D7—D0 = FFH 。. 可建立温度转换表如表所示,该转换表由 256 个存储单元组成,每个单元中存放与单元地址相对应的温度值 (BCD 码 ) 。.
E N D
第八章 应用举例 二、步进电机控制 一、数据采集系统
已知某温度传感器的温度与输出电压 及八位A/D转换器输出的特性曲线 T= 0 ℃,U=0,D7—D0=00H; T=10 ℃,U=0.1V,D7—D0=1AH; T=99℃,U=5V,D7—D0=FFH。
主程序在运行过程中,定时器T0每隔20ms向CPU发出中断请求,CPU在响应T0中断请求过程中每秒调用中断服务子程序(即六位LED动态扫描显示程序)约50次,显示被测温度。 ORG 0000H AJMP MAIN ;转主程序。 ORG 000BH LJMP DISP ;转LED显示中断子程序。 MAIN:MOV SP, #30H ;堆栈设置。 MOV TMOD, #01H ;T0初始化,方式1,TR0驱动。 MOV TH0 , #0D8H ;计数初值设置(延时20MS)。 MOV TL0 , #0F0H SETB EA ;开中断。 SETB ET0 ;允许T0中断。 MOV DPTR, #0300H ;指向8155命令寄存器。 MOV A, #00000101B ;8155初始化,口A,口C为 MOVX @DPTR,A ;基本输出,禁止中断。 LCALL DELAY1 ;延时1S。 SETB TR0
AGAIN:MOV DPTR, #2000H ;指向A/D转换器。 MOVX @DPTR,A ;启动A/D转换。 SETB P1.0 ;P1.0为输入方式 MOV A, P1 HERE:JNB ACC.0, HERE ;等待A/D转换结束。 MOV DPTR, #2000H MOVX A, @DPTR ;取A/D转换数据。 MOV R0, A ;保存。 MOV DPTR, #TABLE1 ;指向温度转换表首址。 MOVC A, @A+DPTR ;取对应温度值(BCD码)。 MOV R1, A ;暂存。 ANL A, #0FH ;屏蔽高四位。 MOV 79H, A ;个位显示字符送79H单元。 MOV A, R1 ;取温度值。 ANL A, #0F0H ;屏蔽低四位。 SWAP A MOV 7AH, A ;十位显示字符送7AH单元。 MOV A, #10H ;关闭其余高4位LED显示。 MOV 7BH, A MOV 7CH, A MOV 7DH, A MOV 7EH, A LCALL DELAY2 ;延时2S。 LJMP AGAIN ;继续检测。
LED显示中断服务子程序如下: ORG 00A0H DISP:CLR EA ;关中断。 CLR TR0 ;暂时停止T0工作。 PUSH ACC ;现场保护。 PUSH 01H ;存R1内容。 PUSH DPL PUSH DPH MOV R1, #79H ;指向显缓区首址。 MOV R2, #01H ;从右面第一位开始显示。 MOV A, R2
LD0:MOV DPTR, #0303H ;指向位控口。 MOVX @DPTR,A ;位控码送位控口。 MOV A, @R1 ;取显示字符。 MOV DPTR, #TABLE2 ;指向字符代码表首址。 MOVC A, @A+DPTR ;取字符相应编码。 MOV DPTR, #0301H ;指向段控口。 MOVX @DPTR,A ;段控码送段控口。 ACALL DELAY3 ;延时1ms。 INC R1 ;指向下一显示单元。 MOV A, R2 ;取当前位控码。 JB ACC.5, LD1 ;是否扫描到最左面一位? RL A ;否,左移一位。 MOV R2, A ;继续扫描显示。 AJMP LD0 LD1:POP DPH ;恢复现场。 POP DPL POP 01H POP ACC MOV TH0, #0D8H ;重新设置初值。 MOV TL0, #0F0H SETB EA ;开中断。 SETB TR0 ;重新启动T0。 RETI ;中断返回。
说明: 1.在实际应用可根据需要用滤波法获得A/D转换数据(如多次读取A/D转换数据取其平均值)。 2.程序中没有用到的高四位LED,在具体应用中可根据需要显示其它字符,或增加显示位数。 3.DELAY1,DELAY2,DELAY3分别为延时1s,2s,1ms子程序。 4.考虑74LS244的反相因素,TABLE2可采用共阳LED数字形代码表
步进电机控制系统设计 三相步进电机工作原理可知,步进电机通常有3种通电工作方式: 假设按以上顺序通电,步进电机正转,则按相反方向通电,步进电机反转。
用单片机的P1.0,P1.1,P1.2分别控制步进电机的A,B,C相绕组。用单片机的P1.0,P1.1,P1.2分别控制步进电机的A,B,C相绕组。 由控制方式找出控制模型
软件设计 由步进电机工作原理可知,步进电机控制程序的设计主要包括: 1 判断旋转方向; 2 顺序送出控制脉冲; 3 脉冲是否送完; 4 恒速还是变速; 5.变速时要判断是升速还是降速等。 转向标志存放在程序状态寄存器用户标志位F1(D5H)中,当F1为“0”时,步进机正转,反之步进机反转。 步进机要走的步数放在R4中,以三相六拍工作方式为例,正转控制字及单元分配表见表 反转控制字及单元单元分配见表
步进电机的工作频率(转速)由送至步进机三相绕组的脉冲频率决定。在此设计脉冲序列产生由定时器T0中断来产生,故调整定时器T0的定时时间即可调节步进机的转速。步进电机的工作频率(转速)由送至步进机三相绕组的脉冲频率决定。在此设计脉冲序列产生由定时器T0中断来产生,故调整定时器T0的定时时间即可调节步进机的转速。
主程序: ORG 0000H MOV R4, #N ;设步长计数器。 CLR C ORL C, 0D5H ;转向标志为1则转。 JC ROTE ;C=1,转ROTE。 MOV R0, #20H ;正转模型首址送R0。 AJMP PH ROTE:MOV R0, #27H ;反转模型首址送R0。 PH:MOV TMOD, #01H ;T0定时器工作方式1。 MOV TL0, #XL ;T0赋初值。 MOV TH0, #XH SETB TR0 ;启动T0。 SETB ET0 ;允许T0中断。 SETB EA ;CPU开中断。 LOOP: MOV A, R4 ;等待中断。 JNZ LOOP ;若步长记数器(A)0,继续进给。 CLR EA ;进给完毕,关中断。 SJMP HERE ;结束。
中断服务子程序: PUSH ACC ;保护现场。 MOV A, @R0 MOV P1, A ;输出控制模型字。 DEC R4 ;步长减1。 INC R0 ;地址增1。 MOV A, #00H ;是结束标志转。 ORL A, @R0 JZ TPL TOR:MOV TL0, #XL ;赋初值。 MOV TH0, #XH ;赋初值。 POP ACC ;恢复现场。 RETI ;从中断返回。 TPL: MOV A, R0 ;恢复模型首址。 CLR C SUBB A, #06H MOV R0, A AJMP TOR