嵌入式课题论文Word文件下载.docx
- 文档编号:20945863
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:29
- 大小:112.97KB
嵌入式课题论文Word文件下载.docx
《嵌入式课题论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《嵌入式课题论文Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
要求在液晶屏上第一行显示2#池温度。
界面设计要求简单清晰明了。
3、扩展功能
●增加智能检测功能,能够判断系统以下基本故障,并在液晶屏上第二行显示故障类型信息。
1)当P1开时间超过2分钟,1#满传感器没有指示则指示故障1;
2)当P3开时间超过2分钟,1#空传感器没有指示则指示故障2;
3)当加热器开时间超过3分钟,温度没有达到60度则显示故障3;
4)当P5开时间超过3分钟,3#空传感器没有指示则指示故障4.
●增加并行功能以提高工作效率,即当P3、P4关闭后,即启动P1、P2。
4、设计流程
1、仔细分析整个工作流程——细化成状态——找出状态切换条件——将状态逐步联系起来——绘制状态网络图,如图一
2、根据状态网络图和开发板硬件原理图合理的设置状态指示和开关切换状态
3、根据上面的状态网络图和硬件设置,绘制程序流程图
4、仔细分析流程图编写程序
5、进行程序调试,修改
6、验证程序,确认设计要求
7、设计总结
5、设计方案分析说明
设计方案总体框架图
总说明:
8路LED做状态指示,8路按键引发状态切换,12864液晶显示各种故障提示以及实时显示温度,AD模拟温度,
子说明:
LED详细状态说明及按键详细说明见下表
LED1
LED2
LED3
LED4
LED5
LED6
LED7
LED8
P1开
P2开
P3开
P4开
P5开
加热
搅拌
------
KEY1
KEY2
KEY3
KEY4
KEY5
KEY6
KEY7
KEY8
开始
停止
1#满
1#空
2#满
2#空
3#满
3#空
注:
1、P1~P5开都是在其对应的LED亮的情况下,类推,当对应的LED暗的时候就意味着是关的状态;
2、LED1~LED8对应开发板的D1~D8;
3、KEY1~KEY8对应开发板的K1~K8;
6、设计软件程序图
主状机状态转换图
7、体会
此次课程设计在历时两个星期之久,通过两个星期多的学习实践,让我们经历了从理论到实践的过程,了解了实际产品开发的标准流程,经历了团队合作的重要过程。
使我们对arm构架有了基本的了解,熟悉了arm9中的外部中断,定时器中断,RTC,IO口的配置和使用。
本次课设提高我对嵌入式学习的浓厚的兴趣,增加了学好嵌入式的信心,增强了面对学习中克服困难的勇气。
同时也总结了一些经验和教训,比如:
项目开发经验不足,有时会出现实际的开发脱离先前的设计,遇到难的问题解决起来较慢。
需求分析不全面等。
因此在以后的学习实践过程中,要认真思考,勇于面对各种困难,全面系统分析一切遇到的问题。
同时它也让我学会了如何通过自己的努力去认知一个新事物,更重要的是端正自己的学习态度,只有真正下功夫去学习,才能有收获,正所谓“一份耕耘,一份收获。
”没有付出,何谈回报呢?
再者,通过本次课程设计,我也学会了如何去分析问题,继而去排除解决问题,这就是一个自我学习的过程。
当我们通过课程设计去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。
参考文献
周立功主编,ARM嵌入式系统基础教程,北京航空航天大学出版社,2008.9
嵌入式系统基础与应用,北京科海电子出版社,2009.1
附录程序清单
相关头文件在项目压缩文件中均已包含
/********************************************************************
*文件名:
main.c
*功能:
LED显示控制。
通过GPIO直接控制4个LED产生流水灯效果
*说明:
将跳线器JP12全部短接,这个警告可忽略,C2892E:
signedconstantoverflow
********************************************************************/
#include"
config.h"
def.h"
LPC2294.h"
board.h"
LCD_YM12864I.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineLED1_ON(IO0CLR=IO0CLR|(1<
<
2))
#defineLED1_OFF(IO0SET=IO0SET|(1<
2))
#defineLED2_ON(IO0CLR=IO0CLR|(1<
4))
#defineLED2_OFF(IO0SET=IO0SET|(1<
4))
#defineLED3_ON(IO0CLR=IO0CLR|(1<
5))
#defineLED3_OFF(IO0SET=IO0SET|(1<
5))
#defineLED4_ON(IO0CLR=IO0CLR|(1<
6))
#defineLED4_OFF(IO0SET=IO0SET|(1<
6))
#defineLED5_ON(IO0CLR=IO0CLR|(1<
28))
#defineLED5_OFF(IO0SET=IO0SET|(1<
28))
#defineLED6_ON(IO0CLR=IO0CLR|(1<
29))//加热器
#defineLED6_OFF(IO0SET=IO0SET|(1<
29))
#defineLED7_ON(IO0CLR=IO0CLR|(1<
30))
#defineLED7_OFF(IO0SET=IO0SET|(1<
30))//搅拌器
#defineLED8_ON(IO0CLR=IO0CLR|(1<
31))
#defineLED8_OFF(IO0SET=IO0SET|(1<
31))
U8num[]={0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00};
U8chi[]={0x10,0x60,0x02,0xCC,0x80,0x80,0xFC,0x40,0x20,0xFF,0x10,0x08,0xF8,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x00,0x00,0x3F,0x40,0x40,0x4F,0x40,0x44,0x47,0x40,0x78,0x00};
U8wen[]={0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00};
U8du[]={0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00};
U8gu[]={0x10,0x10,0x10,0xFF,0x10,0x10,0x50,0x20,0xD8,0x17,0x10,0x10,0xF0,0x10,0x10,0x00,0x00,0x7F,0x21,0x21,0x21,0x7F,0x80,0x40,0x21,0x16,0x08,0x16,0x21,0x40,0x80,0x00};
/*故*/
U8zhang[]={0x00,0xFE,0x02,0x22,0xDA,0x06,0x10,0xD2,0x56,0x5A,0x53,0x5A,0x56,0xD2,0x10,0x00,0x00,0xFF,0x08,0x10,0x08,0x07,0x10,0x17,0x15,0x15,0xFD,0x15,0x15,0x17,0x10,0x00};
/*障*/
U8yi[]={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
/*一*/
U8er[]={0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00};
/*二*/
U8san[]={0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00};
/*三*/
U8si[]={0x00,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00};
/*四*/
U8dot[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00};
/*.*/
U8maohao[]={0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00};
/*:
*/
U8sheshi[]={0xC6,0x36,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00};
/*C--*/
U8num0[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};
U8num1[]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};
U8num2[]={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00};
U8num3[]={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00};
U8num4[]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00};
U8num5[]={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00};
U8num6[]={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00};
U8num7[]={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00};
U8num8[]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};
U8num9[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};
U8Data[10][16]={{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00}};
ucharGet_Keystoke(void);
voidDelay(uintms);
voidPortInit(void);
voidTime0Init(void);
staticunsignedshortRead_Adc(unsignedcharch);
staticvoidADC_Init(U32Adc_Clk);
voidLcd_Display_English_Left_128X64(U8row,U8col,U8*S);
//以0为起始
voidLcd_Display_English_Right_128X64(U8row,U8col,U8*S);
voidDisplay_AD_Data(doubledata);
voidLcd_Display_Hz_Post(U8*S,U8x,U8y);
//以1为起始
voidLcd_Display_Zf_Post(U8*S,U8x,U8y);
voidLcd_Clear_AD_Data(void);
voidDisplay(void);
voidDisplay_GuZhang(U8*S);
voidDisplay_GuZhang1(void);
voidDisplay_GuZhang2(void);
voidDisplay_GuZhang3(void);
voidDisplay_GuZhang4(void);
ucharstate=0;
ucharstate1=1;
uintreadadc=0;
ucharreadkey=0;
ucharstop_flag=0;
doublewendu=0;
ucharflag=0;
//小状态机运行标志
ucharp1_state=0;
//每个池的状态 1代表满,0代表空2代表不空也不满
ucharp2_state=0;
ucharp3_state=0;
uchart0=0;
uchart1=0;
uchart1_num=0;
uchart2_num=0;
uchart3_num=0;
uchart4_num=0;
Uchartemp=0;
//保持小状态机的状态值
intmain(void)
{/*PINSEL2使用启动代码的默认配置,切勿任意配置PINSEL2,否则总线会受到干扰*/
PortInit();
LED1_OFF;
LED2_OFF;
LED3_OFF;
LED4_OFF;
LED5_OFF;
LED6_OFF;
LED7_OFF;
LED8_OFF;
ADC_Init(1000000);
Time0Init();
Lcd_YM12864_Init();
Lcd_Clear();
Display();
while
(1)
{
readadc=Read_Adc(0x01);
wendu=((readadc*100.0)/1024);
if(state==2||state1==2)
{
Display_AD_Data(wendu);
}
if((readkey=Get_Keystoke())==2)
stop_flag=1;
if(flag)//小状态机
switch(state1)
{
case1:
if(p1_state!
=1)//1#池没有满 则P1打开
{
LED1_ON;
p1_state=2;
//P1开了,1#池当然不是是空的
}
if(p2_state!
=1)//2#池没有满 则P2打开
{
LED2_ON;
p2_state=2;
//P2开了,2#池当然不是空的
if((t1_num>
20)&
&
(p1_state!
=1))//时间到了,还没有收到满信号 则显示故障1;
Display_GuZhang1(yi);
}
if((readkey=Get_Keystoke())==3)//1#池满 关闭P1
{
P1_state=1;
}
if((readkey=Get_Keystoke())==5)//2#池满 关闭P2
p2_state=1;
if(t0>
10)
state1=2;
t3_num=0;
LED6_ON;
};
break;
case2:
//Display_AD_Data(wendu);
//LED6_ON//加热开
if(p1_state!
LED1_ON;
}
if(p2_state!
{
LED2_ON;
//P2开了,2#池当然不是是空的
if((t1_num>
=1))//时间到了,还没有收到满信号 则显示故障1;
{
Display_GuZhang1();
//故障1
if((t3_num>
(wendu<
60));
//故障3
if((readkey=Get_Keystoke())==3)//1#池满 关闭P1
p1_state=1;
}
if((readkey=Get_Keystoke())==5)//2#池满 关闭P2
p2_state=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 课题 论文