1 / 25

第八章 应用举例

第八章 应用举例. 二、步进电机控制. 一、数据采集系统. 计算机数据采集过程示意. 已知某温度传感器的温度与输出电压 及八位 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 码 ) 。.

galen
Download Presentation

第八章 应用举例

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八章 应用举例 二、步进电机控制 一、数据采集系统

  2. 计算机数据采集过程示意

  3. 已知某温度传感器的温度与输出电压 及八位A/D转换器输出的特性曲线 T= 0 ℃,U=0,D7—D0=00H; T=10 ℃,U=0.1V,D7—D0=1AH; T=99℃,U=5V,D7—D0=FFH。

  4. 可建立温度转换表如表所示,该转换表由256个存储单元组成,每个单元中存放与单元地址相对应的温度值(BCD码)。

  5. 主程序在运行过程中,定时器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

  6. 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 ;继续检测。

  7. 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

  8. 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 ;中断返回。

  9. 说明: 1.在实际应用可根据需要用滤波法获得A/D转换数据(如多次读取A/D转换数据取其平均值)。 2.程序中没有用到的高四位LED,在具体应用中可根据需要显示其它字符,或增加显示位数。 3.DELAY1,DELAY2,DELAY3分别为延时1s,2s,1ms子程序。 4.考虑74LS244的反相因素,TABLE2可采用共阳LED数字形代码表

  10. 步进电机控制系统设计 三相步进电机工作原理可知,步进电机通常有3种通电工作方式: 假设按以上顺序通电,步进电机正转,则按相反方向通电,步进电机反转。

  11. 用单片机的P1.0,P1.1,P1.2分别控制步进电机的A,B,C相绕组。用单片机的P1.0,P1.1,P1.2分别控制步进电机的A,B,C相绕组。 由控制方式找出控制模型

  12. 软件设计 由步进电机工作原理可知,步进电机控制程序的设计主要包括: 1 判断旋转方向; 2 顺序送出控制脉冲; 3 脉冲是否送完; 4 恒速还是变速; 5.变速时要判断是升速还是降速等。 转向标志存放在程序状态寄存器用户标志位F1(D5H)中,当F1为“0”时,步进机正转,反之步进机反转。 步进机要走的步数放在R4中,以三相六拍工作方式为例,正转控制字及单元分配表见表 反转控制字及单元单元分配见表

  13. 步进电机的工作频率(转速)由送至步进机三相绕组的脉冲频率决定。在此设计脉冲序列产生由定时器T0中断来产生,故调整定时器T0的定时时间即可调节步进机的转速。步进电机的工作频率(转速)由送至步进机三相绕组的脉冲频率决定。在此设计脉冲序列产生由定时器T0中断来产生,故调整定时器T0的定时时间即可调节步进机的转速。

  14. 主程序: 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 ;结束。

  15. 中断服务子程序: 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

More Related