单片机PID算法实现_第1页
单片机PID算法实现_第2页
单片机PID算法实现_第3页
单片机PID算法实现_第4页
单片机PID算法实现_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

单片机单片机 PID 算法实现算法实现 在网络上收集了一个 PID 控制程序 看到很多研友的毕业设计可能涉及到 PID 控制 这是一 个 PID 的程序 希望能做到抛砖引玉 仅供大家参考 initial interrupter void init interrupter void TMOD 0 x21 设置计时器 0 工作于模式 1 设置计时器 1 工作于模式 2 TL0 0 x00 T0 0000 定时时间为 71 1ms 71 1ms 15 1 066s TH0 0 xdc T0 DC00 定时时间为 10ms 10ms 100 1s T0 FC66 定时时间为 1ms 10ms 1000 1s TL1 0 xfd 设置串口通信速率 9600bps TH1 0 xfd PCON 0 x00 SMOD 0 速率不倍增 SCON 0 x50 8 位数据通信 串行通信方式 1 允许单片机接收数据 IP 0 x10 serial com is preferential IE 0 x92 定时器 0 串口中断允许 定时器 1 中断禁止 rs485 receive 0 rs485 transmitte 0 TR0 1 启动定时器 0 TR1 1 启动定时器 1 void timer0 server void interrupt 1 using 1 TL0 0 x00 TH0 0 xdc T0 DC00 timing interval is 10ms 10ms 100 1s T0 FC66 timing interval is 1ms 10ms 1000 1s if flag serial 1 timer0 counter 3 if timer0 counter 3 11 timer0 counter 3 0 flag serial 0 pointer serial com data serial com data counter serial com data 0 dog dog Timer0 is full 10ms feed dog if timing interval 0 timing interval 1 timing interval is lost then set it to 1 second timer0 counter 1 timer0 counter 1 is software timer when timer0 interrupt is full it increase automatically if unsigned char timer0 counter 1 100 timing interval timing interval arrives out flag 1 indexing 占空比 high level begin scan 0809 to get current equipment s temperature scan current Temperature origina address 0 x82 display1 Temperature current Temperature origina address calculate out value PID algorithm function PID mode PP II DD BB current Temperature seted temp erature out value 0 5 if out value 0 0 out value 0 0 then 占空比 is zero control 0 1 ledctrl address 0 x8c leddata address 0 xff reset timer0 counter 1 and timer0 counter 2 timer0 counter 1 0 indexing timing interval s timing timer0 counter 2 0 indexing 占空比 s timing if out flag 1 timer0 counter 2 if out value timing interval timer0 counter 2 0 control 0 0 ledctrl address 0 x8c leddata address 0 x00 out flag 0 float PID algorithm function uchar PID mode 2 float P 2 I 2 D 2 B 2 current Temperature 2 seted temperature 2 float idata delta switch PID mode 2 case 1 break PID mode case 2 D 2 0 break PI mode case 3 I 2 0 break PD mode case 4 I 2 0 D 2 0 break P mode if PID mode 21 0 out value 1 else if out value B 2 out value 0 0 if seted temperature 2 current Temperature 2 B 2 out value 1 0 return out value 软件练习十二 将十六进制数据转换成十进制数据软件练习十二 将十六进制数据转换成十进制数据 实验目的 实验目的 熟悉 51 单片机指令系统 掌握程序设计方法 实验内容 实验内容 将 R2 中的内容转换成十进制数据 然后将转换的数据百位 十位和个位分别存入 R0 指出的 30H 31H 单元中 实验程序框图 实验程序框图 程序清单 程序清单 ORG 00H AJMP MAIN ORG 30H MAIN MOV SP 5FH MOV R0 30H MOV A R2 MOV B 100 DIV AB MOV R0 A INC R0 MOV A 10 XCH A B DIV AB SWAP A ADD A B MOV R0 A SJMP END 软件练习十一 软件练习十一 BCD 码数据转换成二进制数据码数据转换成二进制数据 实验目的 实验目的 熟悉 51 单片机指令系统 掌握程序设计方法 实验内容 实验内容 将 R2 中的内容转换成二进制数据 并传送到 20H 单元中 实验程序框图 实验程序框图 实验步骤 实验步骤 将 R2 送 99H 后 执行程序得到结果是否与你预计一致 程序清单 程序清单 ORG 0000H AJMP MAIN ORG 0030H MAIN MOV SP 5FH MOV R2 99H MOV A R2 SWAP A ANL A 0FH MOV B 0AH MUL AB MOV R3 A MOV A R2 ANL A 0FH ADD R3 A MOV 20H A SJMP END 思考 思考 修改程序 将 R2 中内容换成其他数据 交通灯控制电路交通灯控制电路 一 设计任务与要求 1 设计一个十字路口的交通灯控制电路 要求甲车道和乙车道两条交叉道路上的车辆交替运行 每次通行 时间都设为 25 秒 2 要求黄灯先亮 5 秒 才能变换运行车道 3 黄灯亮时 要求每秒钟闪亮一次 二 实验预习要求 1 复习数字系统设计基础 2 复习多路数据选择器 二进制同步计数器的工作原理 3 根据交通灯控制系统框图 画出完整的电路图 三 设计原理与参考电路 1 分析系统的逻辑功能 画出其框图 交通灯控制系统的原理框图如图 12 1 所示 它主要由控制器 定时器 译码器和秒脉冲信号发生器等部 分组成 秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源 译码器输出两组信号灯的控制信号 经驱动电路后驱动信号灯工作 控制器是系统的主要部分 由它控制定时器和译码器的工作 图中 TL 表示甲车道或乙车道绿灯亮的时间间隔为 25 秒 即车辆正常通行的时间间隔 定时时间到 TL 1 否则 TL 0 TY 表示黄灯亮的时间间隔为 5 秒 定时时间到 TY 1 否则 TY 0 ST 表示定时器到了规定的时间后 由控制器发出状态转换信号 由它控制定时器开始下个工作状态的 定时 图 12 1 交通灯控制系统的原理框图 2 画出交通灯控制器的 ASM Algorithmic State Machine 算法 状态机 1 图甲车道绿灯亮 乙车道红灯亮 表示甲车道上的车辆允许通行 乙车道禁止通行 绿灯亮足规定 的时间隔 TL 时 控制器发出状态信号 ST 转到下一工作状态 2 甲车道黄灯亮 乙车道红灯亮 表示甲车道上未过停车线的车辆停止通行 已过停车线的车辆继续 通行 乙车道禁止通行 黄灯亮足规定时间间隔 TY 时 控制器发出状态转换信号 ST 转到下一工作状态 3 甲车道红灯亮 乙车道黄灯亮 表示甲车道禁止通行 乙车道上的车辆允许通行绿灯亮足规定的时 间间隔 TL 时 控制器发出状态转换信号 ST 转到下一工作状态 4 甲车道红灯亮 乙车道黄灯亮 表示甲车道禁止通行 乙车道上位过县停车线的车辆停止通行 已 过停车线的车辆停止通行 已过停车线的车辆继续通行 黄灯亮足规定的时间间隔 TY 时 控制器发出状 态转换信号 ST 系统又转换到第 1 种工作状态 交通灯以上 4 种工作状态的转换是由控制器器进行控制的 设控制器的四种状态编码为 00 01 11 10 并分别用 S0 S1 S3 S2 表示 则控制器的工作状态及功能如表 12 1 所示 控制器应送出甲 乙车道 红 黄 绿灯的控制信号 为简便起见 把灯的代号和灯的驱动信号合二为一 并作如下规定 表 12 1 控制器工作状态及功能 控制状态 信号灯状态 车道运行状态 S0 00 甲绿 乙红 甲车道通行 乙车道禁止通行 S1 01 甲黄 乙红 甲车道缓行 乙车道禁止通行 S3 11 甲红 乙绿 甲车道禁止通行 甲车道通行 S2 10 甲红 乙黄 甲车道禁止通行 甲车道缓行 AG 1 甲车道绿灯亮 BG 1 乙车道绿灯亮 AY 1 甲车道黄灯亮 BY 1 乙车道黄灯亮 AR 1 甲车道红灯亮 BY 1 乙车道红灯亮 由此得到交通灯的 ASM 图 如 图 12 2 所示 设控制器的初始状态为 S0 用状态框表示 S0 当 S0 的持续时间小于 25 秒时 TL 0 用判断框表示 TL 控制器保持 S0 不变 只有当 S0 的持续时间等于 25 秒时 TL 1 控制器发出状态转换信号 ST 用条件输出框表示 ST 并转换到下一个工作状态 依此类 推可以弄懂 ASM 图所表达的含义 3 单元电路的设计 1 定时器 定时器由与系统秒脉冲 由时钟脉冲产生器提供 同步的计数器构成 要求计数器在状态信号 ST 作用下 首先清零 然后在时钟脉冲上升沿作用下 计数器从零开始进行增 1 计数 向控制器提供模 5 的定时信 号 TY 和模 25 的定时信号 TL 计数器选用集成电路 74LS163 进行设计较简便 74LS163 是 4 位二进制同步计数器 它具有同步清零 同步置数的功能 74LS163 的外引线排列图和时序波形图如图 12 3 所示 其功能表如表 12 2 所示 图 中 是低电平有效的同步清零输入端 是低电平有效才同步并行置数控制端 CTp CTT 是计 图 12 2 交通灯的 ASM 图数控制端 CO 是进位输出端 D0 D3 是并行数据输入端 Q0 Q 3 是数据输出端 由 两片 74LS163 级联组成的定时器电路如图 12 4 所示 电路的工作原理请自行分析 a 图 12 3 74LS163 的外引线排列图和时序波形图 2 控制器 控制器是交通管理的核心 它应该能够按照交通管理规则控制信号灯工作状态的转换 从 ASM 图可以列 出控制器的状态转换表 如表 12 3 所示 选用两个 D 触发器 FF1 FFO 做为时序寄存器产生 4 种状态 控制器状态转换的条件为 TL 和 TY 当控制器处于 Q1n 1Q0n 1 00 状态时 如果 TL 0 则控制器保 持在 00 状态 如果 则控制器转换到 Q1n 1Q0n 1 01 状态 这两种情况与条件 TY 无关 所以用无关 项 X 表示 其余情况依次类推 同时表中还列出了状态转换信号 ST 图 12 4 定时器电路图 表 12 2 74LS163 功能表 表 12 3 控制器状态转换表 根据表 12 3 可以推出状态方程和转换信号方程 其方法是 将 Q1n 1 Q0n 1 和 ST 为 1 的项所对应 的输人或状态转换条件变量相与 其中 1 用原变量表示 0 用反变量表示 然后将各与项相或 即可得到 下面的方程 根据以上方程 选用数据选择器 74LS153 来实现每个 D 触发器的输入函数 将触发器的现态值 加 到 74LS153 的数据选择输入端作为控制信号 即可实现控制器的功能 控制器的逻辑图如图 12 5 所示 图中 R C 构成上电复位电路 图 12 5 控制器逻辑图 3 译码器 译码器的主要任务是将控制器的输出 Q1 Q0 的 4 种工作状态 翻译成甲 乙车道上 6 个信号灯的工作 状态 控制器的状态编码与信号灯控制信号之间的关系如表 12 4 所示 实现上述关系的译码电路请读者 自行设计 四 实验仪器设备 1 数字电路实验箱 2 集成电路 74LS74 1 片 74LS10 1 片 74LS00 2 片 74LS153 2 片 74LS163 2 片 NE555 1 片 3 电阻 51K 1 只 200 6 只 4 电容 10Uf 1 只 5 其它 发光二极管 6 只 五 实验内容及方法 表 12 4 控制器状态编码与信号灯关系表 状态AG AY ARBG BY BR 001 0 0 0 0 1 010 1 00 0 1 100 0 11 0 0 110 0 10 1 0 1 设计 组装译码器电路 其输出接甲 乙车道上的 6 只信号灯 实验时用发光二极管代替 验证电路 的逻辑功能 2 设计 组装秒脉冲产生电路 3 组装 调试定时电路 当 CP 信号为 1Hz 正方波时 画出 CP Q0 Q1 Q2 Q3 Q4 TL TY 的波形 并注意它们之间一的时序关系 4 组装 调试控制器电路 5 完成交通灯控制电路的联调 并测试其功能 六路抢答器 六路抢答器 KT230 配套实验 配套实验 六路抢答器实验 KT230 套件配套程序 KT230 学习套件适用 需外扩八个小开关 1 如果想调节抢答时间或答题时间 按 抢答时间调节 键或 答题时间调节 键进入调节状态 此时会显示现在 设定的抢答时间或回答时间值 如想加一秒按一下 加 1s 键 如果想减一秒按一下 1s 键 时间 LED 上会显 示改变后的时间 调整范围为 0s 99s 0s 时再减 1s 会跳到 99 99s 时再加 1s 会变到 0s 2 主持人按 抢答开始 键 会有提示音 并立刻进入抢答倒计时 预设 15s 抢答时间 如有选手抢答 会有提示音 并会显示其号数并立刻进入回答倒计时 预设 10s 抢答时间 不进行抢答查询 所以只有 第一个按抢答的选手有效 倒数时间到小于 5s 会每秒响一下提示音 3 如倒计时期间 主持人想停止倒计时可以随时按 停止 按键 系统会自动进入准备状态 等待主持人按 抢答开始 进入下次抢答计时 4 如果主持人未按 抢答开始 键 而有人按了抢答按键 犯规抢答 LED 上不断闪烁 FF 和犯规号数并响 个不停 直到按下 停止 键为止 P1 0 为开始抢答 P1 7 为停止 p1 1 p1 6 为六路抢答输入 数码管段选 P0 口 位选 P2 口 蜂鸣器输出 为 P3 6 口 OK EQU 20H 抢答开始标志位 将 P1 口与 P2 口互换 P3 0 P1 0 P3 1 P1 7 RING EQU 22H 响铃标志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040H MAIN MOV R1 0FH 初设抢答时间为 15s MOV R2 0AH 初设答题时间为 10s MOV TMOD 11H 设置未定时器 模式 1 MOV TH0 0F0H MOV TL0 0FFH 越高发声频率越高 越尖 MOV TH1 3CH MOV TL1 0B0H 50ms 为一次溢出中断 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1 允许四个中断 T0 T1 INT0 INT1 CLR OK CLR RING SETB TR1 SETB TR0 一开始就运行定时器 以开始显示 FFF 如果想重新计数 重置 TH1 TL1 就可以了 查询程序 START MOV R5 0BH MOV R4 0BH MOV R3 0BH ACALL DISPLAY 未开始抢答时候显示 FFF JB P1 0 NEXT ddddddd ACALL DELAY JB P1 0 NEXT 去抖动 如果 开始键 按下就向下执行 否者跳到非法抢答查询 ACALL BARK 按键发声 MOV A R1 MOV R6 A 送 R1 R6 因为 R1 中保存了抢答时间 SETB OK 抢答标志位 用于 COUNT 只程序中判断是否查询抢答 MOV R3 0AH 抢答只显示计时 灭号数 AJMP COUNT 进入倒计时程序 查询有效抢答的程序 在 COUNT 里面 NEXT JNB P1 1 FALSE1 JNB P1 2 FALSE2 JNB P1 3 FALSE3 JNB P1 4 FALSE4 JNB P1 5 FALSE5 JNB P1 6 FALSE6 AJMP START 非法抢答处理程序 FALSE1 ACALL BARK 按键发声 MOV R3 01H AJMP ERROR FALSE2 ACALL BARK MOV R3 02H AJMP ERROR FALSE3 ACALL BARK MOV R3 03H AJMP ERROR FALSE4 ACALL BARK MOV R3 04H AJMP ERROR FALSE5 ACALL BARK MOV R3 05H AJMP ERROR FALSE6 ACALL BARK MOV R3 06H AJMP ERROR INT0 抢答时间 R1 调整程序 INT0SUB MOV A R1 MOV B 0AH DIV AB MOV R5 A MOV R4 B MOV R3 0AH ACALL DISPLAY 先在两个时间 LED 上显示 R1 JNB P3 4 INC0 P3 4 为 1s 键 如按下跳到 INCO JNB P3 5 DEC0 P3 5 为 1s 键 如按下跳到 DECO JNB P1 7 BACK0 P3 1 为确定键 如按下跳到 BACKO AJMP INT0SUB INC0 MOV A R1 CJNE A 63H ADD0 如果不是 99 R2 加 1 如果加到 99 了 R1 就置 0 重新加起 MOV R1 00H ACALL DELAY1 AJMP INT0SUB ADD0 INC R1 ACALL DELAY1 AJMP INT0SUB DEC0 MOV A R1 JZ SETR1 如果 R1 为 0 R1 就置 99 DEC R1 ACALL DELAY1 AJMP INT0SUB SETR1 MOV R1 63H ACALL DELAY1 AJMP INT0SUB BACK0 RETI INT1 回答时间 R2 调整程序 INT1SUB MOV A R2 MOV B 0AH DIV AB MOV R5 A MOV R4 B MOV R3 0AH ACALL DISPLAY JNB P3 4 INC1 JNB P3 5 DEC1 JNB P1 7 BACK1 AJMP INT1SUB INC1 MOV A R2 CJNE A 63H ADD1 MOV R2 00H ACALL DELAY1 AJMP INT1SUB ADD1 INC R2 ACALL DELAY1 AJMP INT1SUB DEC1 MOV A R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUB SETR2 MOV R2 63H ACALL DELAY1 AJMP INT1SUB BACK1 RETI 倒计时程序 抢答倒计时和回答倒计时都跳到改程序 COUNT MOV R0 00H 重置定时器中断次数 MOV TH1 3CH MOV TL1 0B0H 重置定时器 RECOUNT MOV A R6 R6 保存了倒计时的时间 之前先将抢答时间或回答时间给 R6 MOV B 0AH DIV AB 除十分出个位 十位 MOV 30H A 十位存于 30H MOV 31H B 个位存于 31H MOV R5 30H 取十位 MOV R4 31H 取个位 MOV A R6 SUBB A 07H JNC LARGER 大于 5s 跳到 LARGER 小于等于 5s 会提醒 MOV A R0 CJNE A 0AH FULL 1s 中 0 5s 向下运行 CLR RING AJMP CHECK FULL CJNE A 14H CHECK 下面系 1s 的情况 响并显示号数并清 R0 重新计 SETB RING MOV A R6 JZ QUIT 计时完毕 MOV R0 00H DEC R6 一秒标志减 1 AJMP CHECK LARGER MOV A R0 CJNE A 14H CHECK 如果 1s 向下运行 否者跳到查 停 显示 DEC R6 计时一秒 R6 自动减 1 MOV R0 00H CHECK JNB P1 7 QUIT 如按下停止键退出 ACALL DISPLAY JB OK ACCOUT 如果是抢答倒计时 如是则查询抢答 否者跳过查询继续倒数 这里起到锁抢答作用 AJMP RECOUNT ACCOUT JNB P1 1 TRUE1 JNB P1 2 TRUE2 JNB P1 3 TRUE3 JNB P1 4 TRUE4 JNB P1 5 TRUE5 JNB P1 6 TRUE5 AJMP RECOUNT QUIT CLR OK 如果按下了 停止键 执行的程序 CLR RING AJMP START 正常抢答处理程序 TRUE1 ACALL BARK 按键发声 MOV A R2 MOV R6 A 抢答时间 R2 送 R6 MOV R3 01H CLR OK 因为答题的计时不再查询抢答 所以就锁了抢答 AJMP COUNT TRUE2 ACALL BARK MOV A R2 MOV R6 A MOV R3 02H CLR OK AJMP COUNT TRUE3 ACALL BARK MOV A R2 MOV R6 A MOV R3 03H CLR OK AJMP COUNT TRUE4 ACALL BARK MOV A R2 MOV R6 A MOV R3 04H CLR OK AJMP COUNT TRUE5 ACALL BARK MOV A R2 MOV R6 A MOV R3 05H CLR OK AJMP COUNT TRUE6 ACALL BARK MOV A R2 MOV R6 A MOV R3 06H CLR OK AJMP COUNT 犯规抢答程序 ERROR MOV R0 00H MOV TH1 3CH MOV TL1 0B0H MOV 34H R3 犯规号数暂存与 34H HERE MOV A R0 CJNE A 0AH

温馨提示

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

评论

0/150

提交评论