2022年温控及pwm的程序 .pdf

上传人:H****o 文档编号:32511765 上传时间:2022-08-09 格式:PDF 页数:11 大小:93.03KB
返回 下载 相关 举报
2022年温控及pwm的程序 .pdf_第1页
第1页 / 共11页
2022年温控及pwm的程序 .pdf_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《2022年温控及pwm的程序 .pdf》由会员分享,可在线阅读,更多相关《2022年温控及pwm的程序 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、ORG 00H LJMP START ORG 100H START: ;- 初始化MOV SP,#60H ;初始化堆栈指针Set18B20:;-DS18B20初始化;DS18B20 复位ACALL Reset JB RFail,LOOP ; 复位失败则直接跳至显示部分;对 DS18B20 发出 Skip ROM 命令MOV A,#0CCH ACALL Write ;对 DS18B20 发出温度转换命令MOV A,#44H ACALL Write SetDisT:MOV DisTime,#3 ;设置下一个循环体的循环8 次LOOP: ACALL Display ;显示JB RFail,Set18

2、B20 ;DS18B20复位失败时,在显示完一次后重新复位DJNZ DisTime,LOOP JNB DS18B20,$ ; 判断 DS18B20 是否已完成温度转换ACALL GetTemp ;从 DS18B20 读出温度值ACALL DealTemp ; 温度值处理ACALL SendDisDT ; 根据当前系统状态设置显示内容SJMP SetDisT ; ;根据当前状态给显示模块设置显示参数SendDisDT: MOV Dian,#7FH ;最高位为 0 代表显示小数点;传送温度值MOV A,TempH ;送高位数据MOV VAR,TempL ;送低位数据ACALL TransData

3、RET ;A 中保存高位值, Var 中保存低位值TransData: ;取个位值MOV B,#10 DIV AB MOV DisData2,B ;取十位值JZ HavNot1 ;判断商是否为 0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - MOV B,#10 DIV AB MOV DisData3,B JZ HavNot2 ;判断商是否为 0 MOV DisData4,A SJMP XiaoShu ;跳至百位符号处理部分

4、HavNot1:MOV DisData3,#10 ;十位开始没有数字HavNot2:MOV DisData4,#10 ;百位开始没有数字SignJudge:; 符号处理部分JNB VAR.7,XiaoShu ;当为负数显示符号MOV A,#10 CJNE A,DisData3,BWSign MOV DisData3,#11 ; 负号在十位SJMP XiaoShu BWSign:MOV DisData4,#11 ;负号在百位XiaoShu:; 小数处理部分 ,用查表法获取小数值,精确到小数点后1 位MOV A,VAR ANL A,#0FH MOV DPTR,#XSTab MOVC A,A+DPT

5、R MOV DisData1,A RTransTemp: RET XSTab: DB 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 DS18B20 通迅模块组-复位模块Reset: ;3 微秒高电平SETB DS18B20 MOV R7,#250 CLR RFail ; 清 0 复位失败标记CLR DS18B20 ;延迟 501uS DJNZ R7,$ SETB DS18B20 ;释放总线 (拉高数据线 ) ;等待 DS18B20 作出复位成功反应,最大等待时间为69uS MOV R7,#17 Wait: JNB DS18B20,RReset ; 若 DS18B20 在作出复

6、位成功反应 ,不再等待DJNZ R7,Wait SETB RFail ;70uS 内 DS18B20 作出复位成功反应,置1 复位失败标记RReset: ;延迟 350Us 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - MOV R7,#174 DJNZ R7,$ SETB DS18B20 RET / ;-向 DS18B20 写一个字的模块 ,要写的内容提前装入ACC 中Write: MOV R6,#8 ;写 8 位Write

7、Bit: ;2 微秒高电平SETB DS18B20 MOV R7,#3 ;7 微秒低电平CLR DS18B20 DJNZ R7,$ ;ACC 低位送至 DS18B20 RRC A MOV DS18B20,C ;延迟 60Us MOV R7,#28 DJNZ R7,$ ;是否已写完 8 位DJNZ R6,WriteBit RWrite: SETB DS18B20 RET ; / ;-从 DS18B20 读回一个字节的内容 ,读回的内容装入 ACC 中Read: MOV R6,#8 ;读回 8 位MOV A,#0 ;读回的内容装入 ACC 中ReadBit: ;2 微秒高电平SETB DS18B2

8、0 MOV R7,#7 ;2 微秒低电平CLR DS18B20 NOP ;16 微秒高电平SETB DS18B20 DJNZ R7,$ ;读回一位数据放入 ACC 中名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - MOV C,DS18B20 RRC A ;延迟 66Us MOV R7,#33 DJNZ R7,$ ;是否已读完 8 位DJNZ R6,ReadBit RRead: SETB DS18B20 RET / ;-与 DS

9、18B20 通迅,读回两字节温度值,并装入ACC 中 TempL 和 TempH中GetTemp: ACALL Reset ;复位JB RFail,RGetTemp ;判断复位是否成功;复位成功;对 DS18B20 发出 Skip ROM 命令MOV A,#0CCH ACALL Write ;对 DS18B20 发出读命令MOV A,#0BEH ACALL Write ;从 DS18B20 读回低 8 位温度值ACALL Read MOV TempL,A ;从 DS18B20 读回高 8 位温度值ACALL Read MOV TempH,A ACALL Reset ;复位JB RFail,RG

10、etTemp ;判断复位是否成功;对 DS18B20 发出 Skip ROM 命令MOV A,#0CCH ACALL Write ;对 DS18B20 发出温度转换命令MOV A,#44H ACALL Write RGetTemp: RET 温度数据处理模块DealTemp: ;将整数的二进制数部分移到一个字节,符号位和小数部分移到一个字节名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - MOV R1,#Var MOV Var,

11、TempH MOV A,TempL XCHD A,R1 ;符号位、小数部分至VAR(R1), 整数部分至 ACC SWAP A ;整数部分处理JNB Var.7,NotNeg ; 判断是否为负数CPL A ;为负数 ,取反后加 1 得其绝对值;小数部分取反XRL Var,#1FH ; INC Var NotNeg: MOV TempH,A MOV TempL,Var RET 显示模块-显示 DisData(30H) 从开始的三个字节保存显示信息Display: MOV DPTR,#Tab ;*显示小数部分MOV A,DisData1 MOVC A,A+DPTR MOV P2,A CLR Wei

12、1 ACALL Delay SETB Wei1 ;*显示个位MOV A,DisData2 MOVC A,A+DPTR ;小数点处理ANL A,Dian MOV P2,A CLR Wei2 ACALL Delay SETB Wei2 ;*显示十位MOV A,DisData3 MOVC A,A+DPTR MOV P2,A CLR Wei3 ACALL Delay 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - SETB Wei3

13、;*显示百位MOV A,DisData4 MOVC A,A+DPTR MOV P2,A CLR Wei4 ACALL Delay SETB Wei4 RET Tab: ;09、空白、负号的编码DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH ;延迟Delay: MOV R6,#6 DD1:MOV R5,#250 DJNZ R5,$ DJNZ R6,DD1 RET END org 00h ajmp start org 30h ;*检测键盘状态的程序* START :mov p0,#0ffh ;置 p0 为输入口,将P0 口置为 1

14、 ,用于检查按键是否按下jnb p0.0,QIDONG ;按键 S2 按下, p0.0为 0 ,进入启动(正转)程序jnb p0.1,FANZHUAN ;按键 S3 按下, p0.1为 0 ,进入反转程序jnb p0.2,JITING ;按键 S4 按下, p0.2为 0 ,进入急停程序jnb p0.3,JIASU ;按键 S5 按下, p0.3为 0,进入加速程序jnb p0.4,JIANSU ;按键 S6 按下, p0.4为 0,进入减速程序jnb p0.5,TINGZHI ;按键 S7 按下, P0.5为 0 ,进入停止程序ajmp start 名师资料总结 - - -精品资料欢迎下载

15、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - ;*启动程序,默认为顺时针转动,转速为2000RPM* QIDONG: LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.0,QI LJMP START ;软件消抖后,若p0.0为 1,则认为按键未按下,回到检测按键状态程序QI: clr p0.6 ;p0.6接电机 R/S 端,将其清零表示电机可以运行setb p0.7 ;p0.7接 DIR 端,为 1,则与 COM 端断开,电机正转mov

16、 p2,#0Bh ;p2.0接 CH1 ,p2.1接 CH2 ,p2.2接 CH3 ,将速度设定为2000RPM lcall XIANSHI ;显示设定速度LJMP START ;执行完启动程序后,回到检测按键状态程序;*反转程序,也即逆时针转动* FANZHUAN: LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.1,FAN LJMP START ;软件消抖后,若p0.0为 1,则认为按键未按下,回到检测按键状态程序FAN: clr p2.3 ;接通 BRK 端,使电机急停lcall PANTING ;调用判停程序,能从判停程序中返回,说明机已停setb p2

17、.3 ;断开 BRK 端,解除急停状态clr p0.7 ;接通 DIR 端,使电机逆时针转动lcall XIANSHI ;显示设定速度LJMP START ;执行完启动程序后,回到检测按键状态程序;*急停程序 * JITING: LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.2,JI LJMP START ;软件消抖后,若p0.0为 1,则认为按键未按下,回到检测按键状态程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 11 页 - -

18、 - - - - - - - JI: clr p2.3 ;接通 BRK 端,使电机急停lcall PANTING ;调用判停程序,若能从中返回,说明电机已停LJMP START ;执行完启动程序后,回到检测按键状态程序;*加速程序,每按一次键,加速500rpm* JIASU: LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.3,JIA LJMP START ;软件消抖后,若p0.0为 1,则认为按键未按下,回到检测按键状态程序JIA: mov a,p2 ;将 p2 的值复制到累加器a 中anl a,#07h ;取 ch3ch2ch1的值,并放到累加器a 中jz

19、START ;若 a 中值为 0,则速度已经最大,不再加速,回到检测按键状态程序mov r0,p2 dec r0 mov p2,r0 ;加速 500rpm(参考电机驱动器说明中的多段速度选择部分)lcall XIANSHI ;显示设定的速度LJMP START ;执行完启动程序后,回到检测按键状态程序;*减速程序,每按一次键,减速500rpm* JIANSU: LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.4,JIAN LJMP START ;软件消抖后,若p0.0为 1,则认为按键未按下,回到检测按键状态程序JIAN: mov a,p2 anl a,#07h

20、 ;取 ch3ch2ch1的值cjne a,#07h,JS ;若 a 中数值为 07h ,则速度已为0,ljmp START ;若速度为0,则程序回到开始程序,不再减速,以防出错名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - - - - JS: mov a,P2 inc a mov P2,a ;减速 500rpm(参考电机驱动器说明中的多段速度选择部分)lcall XIANSHI ;显示设定的速度ljmp START ;执行完启动程序后,

21、回到检测按键状态程序;*停止程序 * TINGZHI: LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.5,TING LJMP START ;软件消抖后,若p0.0为 1,则认为按键未按下,回到检测按键状态程序TING: setb p0.6 ;p0.6接 R/S 端,为 1,则与 COM 端断开lcall PANTING ;调用判停程序,若能从中返回,说明电机已停LJMP START ;执行完启动程序后,回到检测按键状态程序;*延时 10ms,这是一个子程序,功能是延时10 毫秒* YANSHI: mov a,#0 ;对累加器 a 置零,延时用y: mov r1

22、,#00h ;对寄存器r1 置零,延时用inc r1 cjne r1,#0ffh,y ;延时 1ms inc a cjne a,#10,y ;延时 101=10ms ret ;*判停程序,这是一个子程序,若能从判停程序中返回,则说明电机已停* PANTING: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - jnb p2.4,yanshi250ms ;若 speed端为 0 ,则进入延时程序ajmp PANTING ;若 sp

23、eed端为 1 ,则返回 PANTING ,等待 speed端出现 0 电平yanshi250ms: clr p2.6 ;允许对计数器置数mov p3,#08h ;对计数器置入数8 setb p2.6 ;计数器开始计数mov a,#0 ;对累加器 a 置零,延时用y250: mov r1,#00h ;对寄存器r1 置零,延时用inc r1 jb p2.5,PANTING ;若期間 Tc 为 1 ,则电机未停,返回PANTING ,继续判断cjne r1,#0ffh,y250 ;延时 1ms inc a cjne a,#250,y250 ;延时 250ms,ret ;若至延时结束Tc 一直不改变

24、状态,则说明speed端口无脉冲输出,认为电机停转,程序;返回。;在电机停转之前,单片机不响应按键状态的改变。;*显示程序,这是一个子程序* XIANSHI: mov a,p2 ;将当前的速度设定值读入a 中anl a,#07h ;取 ch3ch2ch1的值,存入 a 中mov b,#4 mulab ;取得低位速度值对应的相对地址,存入a 中add a,r3 ;得到低位字符地址,放在a 中mov scon,#00h ;初始化串行口方式0 mov r2,#0 ;利用 r2 来控制显示字符数movdptr,#tab ;字形表的入口地址mov r3,a ;低位速度值地址存入r3 x: add a,r

25、2 ;利用 a 与 r2 的和获得字符地址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - movc a,a+dptr;查表获得字型码,放在a 中movsbuf,a;串口显示l: jnbti,l;等待发送完毕clrti ;发送标志ti 清零inc r2 mov a,r3 cjne r2,#4,x ;发送四个字符ret tab: db 03h,03h,49h,0dh db 03h,03h,03h,0dh db 03h,03h,49h,27h db 03h,03h,03h,27h db 03h,03h,49h,9fh db 03h,03h,03h,9fh db 03h,03h,49h,0ffh db 03h,0ffh,0ffh,0ffh END 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁