1、嵌入式课题论文嵌 入 式 课 程 设 计 姓 名: 袁 伟 组 员: 黄鹏 李昂 周亚西 凌诗文 学 号: 20097074 学 院: 涉外学院 专业班级: 09电信二班 课程标题:化学反应过程控制系统程序设计 任课老师: 谢铁强 设计时间: 2012.6.21 一、设计描述某化学反应过程的装置如下图,它由4个容器组成(4#池很大),容器之间用泵连接,以此进行化学反应。1#-3#容器都有检测容器空和满的传感器,2#容器还有加热器和温度传感器,3#容器还有搅拌器。化学反应流程如下:按启动按钮后,1#、2#容器分别用泵P1、P2抽入碱和聚合物,抽满后各自的传感器发出信号,P1、P2关闭。2#容器在
2、P2启动后10s开始启动加热器,当2#容器中的聚合物加热到60时,温度传感器发出信号,关闭加热器。当加热器关闭后,P3和P4启动,分别将1#、2#容器中的溶液送到3#反应器中,同时启动搅拌器,当3#满或1#、2#空,则P3、P4停止,P3、P4停止后搅拌器继续搅拌60s后,P5启动将混合液抽到产品池4#容器,直到3#空。当按下停止按钮后,应该完成一个完整的生产流程,即把1#、2#容器中的反应物用完,把3#容器所有混合液抽空到4#池,最终1#、2#、3#池处于空状态,然后才停止所有工作。2、设计要求在LPC2292开发板上编程实现上述控制流程。 S1为启动按钮,S2为停止按钮。1#-3#池的空和
3、满传感器都是数字量输入,分别通过键盘S3-S8输入;2#池温度为模拟量输入,接AIN0,需要进行AD转换。P1-P4、加热器、搅拌器的控制都使用开关量控制,用D1-D6指示,指示灯亮表示“开”。要求在液晶屏上第一行显示2#池温度。界面设计要求简单清晰明了。3、扩展功能 增加智能检测功能,能够判断系统以下基本故障,并在液晶屏上第二行显示故障类型信息。1)当P1开时间超过2分钟,1#满传感器没有指示则指示故障1;2)当P3开时间超过2分钟,1#空传感器没有指示则指示故障2;3)当加热器开时间超过3分钟,温度没有达到60度则显示故障3;4)当P5开时间超过3分钟,3#空传感器没有指示则指示故障4.
4、增加并行功能以提高工作效率,即当P3、P4关闭后,即启动P1、P2。4、设计流程1、仔细分析整个工作流程细化成状态找出状态切换条件将状态逐步联系起来绘制状态网络图,如图一2、根据状态网络图和开发板硬件原理图合理的设置状态指示和开关切换状态3、根据上面的状态网络图和硬件设置,绘制程序流程图4、仔细分析流程图编写程序5、进行程序调试,修改6、验证程序,确认设计要求7、设计总结5、设计方案分析说明 设计方案总体框架图总说明:8路LED做状态指示,8路按键引发状态切换,12864液晶显示各种故障提示以及实时显示温度,AD模拟温度,子说明:LED详细状态说明及按键详细说明见下表LED1LED2LED3L
5、ED4LED5LED6LED7LED8P1开P2开P3开P4开P5开加热搅拌-KEY1KEY2KEY3KEY4KEY5KEY6KEY7KEY8开始停止1#满1#空2#满2#空3#满3#空注:1、P1P5开都是在其对应的LED亮的情况下,类推,当对应的LED暗的时候就意味着是关的状态;2、LED1LED8对应开发板的D1D8;3、KEY1KEY8对应开发板的K1K8;6、设计软件程序图主状机状态转换图7、体会此次课程设计在历时两个星期之久,通过两个星期多的学习实践,让我们经历了从理论到实践的过程,了解了实际产品开发的标准流程,经历了团队合作的重要过程。使我们对arm构架有了基本的了解,熟悉了ar
6、m9中的外部中断,定时器中断,RTC,IO口的配置和使用。本次课设提高我对嵌入式学习的浓厚的兴趣,增加了学好嵌入式的信心,增强了面对学习中克服困难的勇气。同时也总结了一些经验和教训,比如:项目开发经验不足,有时会出现实际的开发脱离先前的设计,遇到难的问题解决起来较慢。需求分析不全面等。因此在以后的学习实践过程中,要认真思考,勇于面对各种困难,全面系统分析一切遇到的问题。同时它也让我学会了如何通过自己的努力去认知一个新事物,更重要的是端正自己的学习态度,只有真正下功夫去学习,才能有收获,正所谓“一份耕耘,一份收获。”没有付出,何谈回报呢?再者,通过本次课程设计,我也学会了如何去分析问题,继而去排
7、除解决问题,这就是一个自我学习的过程。当我们通过课程设计去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。参考文献周立功主编,ARM嵌入式系统基础教程,北京航空航天大学出版社,2008.9嵌入式系统基础与应用,北京科海电子出版社,2009.1附录 程序清单注:相关头文件在项目压缩文件中均已包含/* 文 件 名:main.c* 功 能:LED显示控制。通过GPIO直接控制4个LED产生流水灯效果* 说 明:将跳线器JP12全部短接,这个警告可忽略,C2892E: signed constant overflow*/#include config.h#in
8、clude def.h#include LPC2294.h#include board.h#include LCD_YM12864I.h#define uchar unsigned char#define uint unsigned int#define LED1_ON (IO0CLR = IO0CLR | (12) #define LED1_OFF (IO0SET = IO0SET | (12)#define LED2_ON (IO0CLR = IO0CLR | (14) #define LED2_OFF (IO0SET = IO0SET | (14)#define LED3_ON (IO0
9、CLR = IO0CLR | (15) #define LED3_OFF (IO0SET = IO0SET | (15)#define LED4_ON (IO0CLR = IO0CLR | (16) #define LED4_OFF (IO0SET = IO0SET | (16)#define LED5_ON (IO0CLR = IO0CLR | (128) #define LED5_OFF (IO0SET = IO0SET | (128)#define LED6_ON (IO0CLR = IO0CLR | (129) /加热器 #define LED6_OFF (IO0SET = IO0SE
10、T | (129)#define LED7_ON (IO0CLR = IO0CLR | (130) #define LED7_OFF (IO0SET = IO0SET | (130) /搅拌器#define LED8_ON (IO0CLR = IO0CLR | (131) #define LED8_OFF (IO0SET = IO0SET | (120)&(p1_state != 1) /时间到了,还没有收到满信号则显示故障; Display_GuZhang1(yi); if (readkey=Get_Keystoke() = 3) / 1 池满关闭1 P1_state = 1; LED1_O
11、FF; if (readkey=Get_Keystoke() = 5) / 池满关闭 p2_state = 1; LED2_OFF; if (t010) state1 = 2; t3_num = 0; LED6_ON; ; break; case 2:/ Display_AD_Data(wendu); / LED6_ON / 加热开 if (p1_state != 1) /池没有满则打开 LED1_ON; p1_state = 2; /开了,池当然不是是空的 if (p2_state != 1) /池没有满则打开 LED2_ON; p2_state = 2; /开了,池当然不是是空的 if (t1_num20)&(p1_state != 1)/时间到了,还没有收到满信号则显示故障; Display_GuZhang1(); /故障 if (t3_num20)&(wendu60); Display_GuZhang1(); /故障3 if (readkey=Get_Keystoke() = 3) /1 池满 关闭1 p1_state = 1; LED1_OFF; if (readkey=Get_Keystoke() = 5) / 池满关闭 p2_state = 1; LED2_OFF;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1