




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机PID算法实现在网络上收集了一个PID控制程序,看到很多研友的毕业设计可能涉及到PID控制,这是一个PID的程序,希望能做到抛砖引玉,仅供大家参考。/*/*/* initial interrupter */*/*/void init_interrupter(void) /*/TMOD=0x21; /* 设置计时器0工作于模式1,设置计时器1工作于模式2*/TL0=0x00; /* T0=0000定时时间为71.1ms;71.1ms*151.066s*/TH0=0xdc; /*T0=DC00定时时间为10ms;10ms*1001s*/ /*T0=FC66定时时间为1ms;10ms*10001s*/TL1=0xfd; /* 设置串口通信速率9600bps*/TH1=0xfd;PCON=0x00; /* SMOD=0, 速率不倍增*/SCON=0x50; /* 8位数据通信,串行通信方式1,允许单片机接收数据*/IP=0x10; /*serial com is preferential*/IE=0x92; /* 定时器0, 串口中断允许;定时器1中断禁止*/rs485_receive=0;rs485_transmitte=0;TR0=1; /* 启动定时器0*/TR1=1; /* 启动定时器1*/void timer0_server(void) interrupt 1 using 1 /*/ TL0=0x00; TH0=0xdc;/*T0=DC00 timing interval is 10ms;10ms*1001s*/ /*T0=FC66 timing interval is 1ms;10ms*10001s*/ if (flag_serial=1) timer0_counter_3+; if (timer0_counter_311) 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 equipments temperature-*/ scan_current_Temperature(); origina_address=0x82; display1_Temperature(current_Temperature,origina_address); /*-calculate out_value-*/ PID_algorithm_function(PID_mode,PP,II,DD,BB,current_Temperature,seted_temperature); /out_value=0.5; if (out_value0.0) /*out_value=0.0, then 占空比 is zero*/ control_0=1; ledctrl_address=0x8c; leddata_address=0xff; /reset timer0_counter_1 and timer0_counter_2, timer0_counter_1=0; /indexing timing_intervals 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=0x8c; leddata_address=0x00; 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 00HAJMP MAINORG 30HMAIN: MOV SP,#5FHMOV R0,#30HMOV A,R2MOV B,#100DIV ABMOV R0,AINC R0MOV A,#10XCH A,BDIV ABSWAP AADD A,BMOV R0,ASJMP $END软件练习十一:BCD码数据转换成二进制数据实验目的:熟悉51 单片机指令系统,掌握程序设计方法。实验内容:将R2 中的内容转换成二进制数据,并传送到20H 单元中。实验程序框图:实验步骤:将R2 送#99H 后,执行程序得到结果是否与你预计一致。程序清单:ORG 0000HAJMP MAINORG 0030HMAIN: MOV SP,#5FHMOV R2,#99HMOV A,R2SWAP AANL A,#0FHMOV B,#0AHMUL ABMOV R3,AMOV A,R2ANL A,#0FHADD R3,AMOV 20H,ASJMP $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是进位输出端,D0D3是并行数据输入端,Q0Q 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 BR001 0 0 0 0 1010 1 0001100 0 1100110 0 10101设计、组装译码器电路,其输出接甲、乙车道上的6只信号灯(实验时用发光二极管代替),验证电路的逻辑功能。2设计、组装秒脉冲产生电路。 3组装、调试定时电路。当 CP信号为 1Hz正方波时,画出CP、 Q0、 Q1、 Q2、Q3、Q4、TL、TY的波形,并注意它们之间一的时序关系。4组装、调试控制器电路。5完成交通灯控制电路的联调,并测试其功能。六路抢答器(KT230配套实验)六路抢答器实验(KT230套件配套程序)*KT230学习套件适用,需外扩八个小开关 1、如果想调节抢答时间或答题时间,按抢答时间调节键或答题时间调节键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下加1s键,如果想减一秒按一下-1s键,时间LED上会显示改变后的时间,调整范围为0s99s, 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.7RING EQU 22H;响铃标志位ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040HMAIN: 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 ET1SETB EX0SETB EX1;允许四个中断,T0/T1/INT0/INT1 CLR OKCLR RING SETB TR1 SETB TR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了;=查询程序=START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BHACALL 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 ERRORFALSE2: ACALL BARKMOV R3,#02H AJMP ERRORFALSE3: ACALL BARKMOV R3,#03H AJMP ERRORFALSE4: ACALL BARKMOV R3,#04H AJMP ERRORFALSE5: ACALL BARKMOV R3,#05H AJMP ERRORFALSE6: ACALL BARKMOV 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 INT0SUBINC0: MOV A,R1 CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99了,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1AJMP INT0SUBADD0: INC R1 ACALL DELAY1 AJMP INT0SUBDEC0: MOV A,R1 JZ SETR1;如果R1为0, R1就置99, DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0: RETI ;=INT1(回答时间R2调整程序)=INT1SUB:MOV A,R2 MOV B,#0AH DIV ABMOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P1.7,BACK1 AJMP INT1SUBINC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1AJMP INT1SUBADD1: INC R2 ACALL DELAY1 AJMP INT1SUBDEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUBSETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUBBACK1: 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 CHECKFULL: CJNE A,#14H,CHECK;下面系1s的情况,响并显示号数并清R0,重新计 SETB RING MOV A,R6 JZ QUIT;计时完毕 MOV R0,#00H DEC R6;一秒标志减1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查停/显示 DEC R6;计时一秒R6自动减1 MOV R0,#00HCHECK: JNB P1.7,QUIT;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNTACCOUT: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 RECOUNTQUIT: CLR OK;如果按下了停止键执行的程序 CLR RING AJMP START;=正常抢答处理程序=TRUE1: ACALL BARK;按键发声 MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#01H CLR OK;因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNTTRUE2:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: 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,FLASH;0.5s向下运行-灭并停响 CLR RING MOV R3,#0AH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创建课件脚本文件
- 内科心脏瓣膜病课件
- 化学品安全作业培训总结课件
- 化学品企业员工安全培训课件
- 《壶口瀑布》 公开课一等奖创新教学设计(表格式)
- 第三单元 课外古诗词诵读 庭中有奇树 公开课一等奖创新教学设计-【课堂无忧】新课标同步核心素养课堂
- 14 普罗米修斯 公开课一等奖创新教案(2课时)
- 化妆品安全科普公益培训课件
- 先兆子宫破裂课件
- 企业的股权转让协议的范本6篇
- (完整)中小学“学宪法、讲宪法”知识竞赛题库及参考答案
- 2025版防洪堤坝加固工程施工合同
- 智能培训系统构建
- 2025广东广州越秀区矿泉街招聘禁毒专职人员1人考试备考题库及答案解析
- DBJT15-147-2018 建筑智能工程施工、检测与验收规范
- 华为鸿蒙课件
- 全站仪使用课件
- 2025年成人高考专升本民法真题及答案
- 2024年云南省公务员考试行测真题参考答案详解
- 高血压防治知识课件下载
- 初中普法主题教育
评论
0/150
提交评论