ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:193.78KB ,
资源ID:10308419      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10308419.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机PID算法实现.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机PID算法实现.docx

1、单片机PID算法实现单片机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

2、;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) interrup

3、t 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=!d

4、og;/*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_inte

5、rval) /*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,

6、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; /

7、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 d

8、elta; 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; retur

9、n (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码数据转换成二进制数据实验目的

10、:熟悉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设计一个十字路口的交通

11、灯控制电路,要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为25秒;2要求黄灯先亮5秒,才能变换运行车道;3黄灯亮时,要求每秒钟闪亮一次 。二、实验预习要求1复习数字系统设计基础。2复习多路数据选择器、二进制同步计数器的工作原理。3根据交通灯控制系统框图,画出完整的电路图。三、设计原理与参考电路1分析系统的逻辑功能,画出其框图交通灯控制系统的原理框图如图12、1所示。它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器

12、和译码器的工作。图中: TL: 表示甲车道或乙车道绿灯亮的时间间隔为25秒,即车辆正常通行的时间间隔。定时时间到,TL=1,否则,TL=0。TY:表示黄灯亮的时间间隔为5秒。定时时间到,TY=1,否则,TY=0。ST:表示定时器到了规定的时间后,由控制器发出状态转换信号。由它控制定时器开始下个工作状态的定时。图12、1 交通灯控制系统的原理框图2画出交通灯控制器的ASM(Algorithmic State Machine,算法状态机)(1)图甲车道绿灯亮,乙车道红灯亮。表示甲车道上的车辆允许通行,乙车道禁止通行。绿灯亮足规定的时间隔TL时,控制器发出状态信号ST,转到下一工作状态。(2)甲车道

13、黄灯亮,乙车道红灯亮。表示甲车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,乙车道禁止通行。黄灯亮足规定时间间隔TY时,控制器发出状态转换信号ST,转到下一工作状态。(3)甲车道红灯亮,乙车道黄灯亮。表示甲车道禁止通行,乙车道上的车辆允许通行绿灯亮足规定的时间间隔TL时,控制器发出状态转换信号ST,转到下一工作状态。(4)甲车道红灯亮,乙车道黄灯亮。表示甲车道禁止通行,乙车道上位过县停车线的车辆停止通行,已过停车线的车辆停止通行,已过停车线的车辆继续通行。黄灯亮足规定的时间间隔TY时,控制器发出状态转换信号ST,系统又转换到第(1)种工作状态。 交通灯以上4种工作状态的转换是由控制器

14、器进行控制的。设控制器的四种状态编码为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

15、:乙车道黄灯亮;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

16、的定时信号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)控制器控制

17、器是交通管理的核心,它应该能够按照交通管理规则控制信号灯工作状态的转换。从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、可以推出状态方程和转换信号方程,其方法是:

18、将Q1n+1、Q0n+1和 ST为1的项所对应的输人或状态转换条件变量相与,其中1用原变量表示,0用反变量表示,然后将各与项相或,即可得到下面的方程:根据以上方程,选用数据选择器 74LS153来实现每个D触发器的输入函数,将触发器的现态值( )加到74LS153的数据选择输入端作为控制信号即可实现控制器的功能。控制器的逻辑图如图12、5所示。图中R、C构成上电复位电路 。图 12、5控制器逻辑图 (3)译码器 译码器的主要任务是将控制器的输出 Q1、 Q0的4种工作状态,翻译成甲、乙车道上6个信号灯的工作状态。控制器的状态编码与信号灯控制信号之间的关系如表 12、4所示。实现上述关系的译码电

19、路请读者自行设计。四、实验仪器设备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组装、调试定时电

20、路。当 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

21、、主持人按抢答开始键,会有提示音,并立刻进入抢答倒计时(预设15s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设10s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。倒数时间到小于5s会每秒响一下提示音。 3、如倒计时期间,主持人想停止倒计时可以随时按停止按键,系统会自动进入准备状态,等待主持人按抢答开始进入下次抢答计时。 4、如果主持人未按抢答开始键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下停止 键为止。*P1.0为开始抢答,P1.7为停止,p1.1-p1.6为六路抢答输入 数码管段选P0口,位选P2口,蜂鸣

22、器输出为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;越高发声频率越高,越

23、尖 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

24、;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询 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 ER

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1