基于Zigbee技术的煤矿瓦斯监测系统 - 图文(6)

2019-03-15 13:38

江西理工大学应用科学学院毕业设计

收发的处理。 { ??

void PHYSetTRXState(PHY_TRX_STATE state) {

PHYBegin();

if ( state == PHY_TRX_RX_ON ) {

PHYPut(STROBE_SRXON); }

else if ( state == PHY_TRX_OFF || state == PHY_TRX_FORCE_OFF ) {

PHYPut(STROBE_SRFOFF); }

else if ( state == PHY_TRX_TX_ON ) {

PHYPut(STROBE_STXON); }

PHYEnd(); } ?? }

4.2.1 信号采集软件设计 系统初始化代码 Void Init(void) {

Stm32_Clock_Init(15); delay_init(120); uart_init(120,9600); KEY_Init(); LED_Init(); LCD_Init(0); While(1)

{

MAIN_task(); ?? }

}

void MAIN_task(void *pdata) {

u8 res,t; RETURN:

ICO_Cheak();

LCD_Clear(WHITE);

20

江西理工大学应用科学学院毕业设计

LCD_DisplayOff();

Windows(0,0,320,480,\ for(res=0;res<16;res++) {

ShowMainUi(res,WHITE,(u8*)names[res]); }

LCD_ShowString(100,0,80,16,16,1,\ LCD_ShowString(254,0,254,16,16,1,\ LCD_DisplayOn(); while(1) {

RTC_TimeShow(); LED1=!LED1; t=0;

t=TOUCH_Scan(); if(t!=0) {

GUI_HuaKuangKuang(t,BLUE); delay_ms(300); RecdiveData(); switch(t) {

case 1: GetClum();MAIN_task(pdata);goto RETURN;

case 2: dipslay_remain();MAIN_task(pdata);goto RETURN;

case 3:

AI_LoadPicFile(\ case 4: UI_ShowHelp(20,20);

MAIN_task(pdata);

goto RETURN;

case 5: Temp_Show();break;

case 6: break; } }

delay_ms(50); } }

4.2.1 串口通讯软件设计 u8 usmart_sys_cmd_exe(u8 *str) {

21

江西理工大学应用科学学院毕业设计

u8 i;

u8 sfname[MAX_FNAME_LEN]; u8 pnum; u8 rval; u32 res;

res=usmart_get_cmdname(str,sfname,&i,MAX_FNAME_LEN); if(res)return USMART_FUNCERR;

str+=i; for(i=0;i<8;i++) {

if(usmart_strcmp(sfname,sys_cmd_tab[i])==0)break; }

switch(i)

{ case 0: case 1:

printf(\#if USMART_USE_HELP #else

#endif

break; case 2:

printf(\

for(i=0;i

for(i=0;i

usmart_get_fname((u8*)usmart_dev.funs[i].name,sfname,&pnum,&rval); printf(\//

}

printf(\ break;

case 4://hex??á? printf(\

usmart_get_aparm(str,sfname,&i); if(i==0)//2?êy?y3£ {

22

江西理工大学应用科学学院毕业设计

i=usmart_str2num(sfname,&res); if(i==0) {

printf(\ }else if(i!=4)return USMART_PARMERR; else {

printf(\\\r\\n\ usmart_dev.sptype=SP_TYPE_HEX; }

}else return USMART_PARMERR; printf(\ break; case 5:

printf(\

usmart_get_aparm(str,sfname,&i); if(i==0) {

i=usmart_str2num(sfname,&res); if(i==0) {

printf(\ }else if(i!=4)return USMART_PARMERR; else {

printf(\\\r\\n\ usmart_dev.sptype=SP_TYPE_DEC; }

}else return USMART_PARMERR; printf(\ break; case 6:

printf(\

usmart_get_aparm(str,sfname,&i); if(i==0) {

i=usmart_str2num(sfname,&res); if(i==0) {

if(usmart_dev.sptype==SP_TYPE_HEX)printf(\);

23

江西理工大学应用科学学院毕业设计

}

else printf(\ }else return USMART_PARMERR; }else return USMART_PARMERR; printf(\ break; default:

return USMART_FUNCERR; }

return 0;

采用流行的嵌入式实时操作系统uC/OS-II。uC/OS-II是一种基于优先级的可抢先的硬实时内核。自从92年发布以来,在世界各地都获得了广泛的应用,它是一种专门为嵌入式设备设计的内核,目前已经被移植到40多种不同结构的CPU上,运行在从8位到64位的各种系统之上。尤其值得一提的是,该系统自从2.51版本之后,就通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上。鉴于uC/OS-II可以免费获得代码,对于嵌入式RTOS而言,选择uC/OS无疑是最经济的选择。 软件设计中采用操作系统会使工作进行的非常安全稳定。uC/OS-II有具有很大的优势,占用内存也很小,所以选择它作为操作系统。uC/OS-II 采用的是可剥夺型实时多任务内核。可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。uC/os-II的任务调度是完全基于任务优先级的抢占式调度,也就是最高优先级的任务一旦处于就绪状态,则立即抢占正在运行的低优先级任务的处理器资源。为了简化系统设计,uC/OS-II规定所有任务的优先级不同,因为任务的优先级也同时唯一标志了该任务本身。对于作品中所有的功能可以分成几个模块,形成单个任务。每个任务规定不同的优先级,当受到请求信号之后执行相应的任务,不仅实时性好,而且工作非常的稳定。

为了方便用户操作及合理利用资源减少消耗,根据微处理器提供的各种模式,可以在特定的时间和场合将微处理器设定为不同的状态。

根据作平的功能需求及其他方面的安全性考虑,操作系统任务调度中可以划分为以下几个任务:

1.开关机及复位 2.数据采集分析处理

3.甲烷气体浓度超标报警控制 4.键盘检测及LCD显示

各任务具有不同的优先级,这里需要说明任务3的优先级是最高的,任务2其次。其他任务的优先级低。

4.3 本章小结

本章详细地介绍了ZigBee网络系统软件开发平台Cortex-M3,简单介绍了Cortex-M3内核结构及其内核机制和通信机制的研究,详述了相关的程序设计。

24


基于Zigbee技术的煤矿瓦斯监测系统 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新视野大学英语4选词填空原文和翻译

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: