无线餐厅点菜机 - 图文(3)

2019-05-24 17:12

}

send_data1(eng[i]); }

List.c文件中定义了一个结构体数组,存放着要显示的相关记录。 Key.c文件中存放着按键中断服务子程序,是实现人机界面的关键部分。每个函数对应着一个按键的处理程序,按键中断服务子程序通过调用各程序来完成各自的功能。具体功能的实现见附录1。

5.1 主程序流程图及其功能 在主程序中,首先关闭了看门狗和总中断,避免了在初始化过程中看门狗或其他中断导致单片机复位,使初始化无法完成。初始化过程分模块进行,增加了程序的可读性,而已便于分块调试,缩短了调试周期。

考虑到LCD和UART对时序的要求,在

时钟初始化部分对系统的默认时钟进行了调整,开启了XT2震荡器,调整了分频因子,使整个系统能协调工作。

在对各个模块初始化完成之后,就打开中断并进入最低功耗模式。此时全部活动部件停止工作,只有RAM、端

1. 主程序流程图

口和寄

存器的内容保持,此时功耗达到最低。当有外

部中断发生时,CPU被唤醒并执行相应操作,完成后再次进入低功耗模式。整个系统除了响应中断之外,其他时间都处于最低功耗模式,满足了低功耗的要求。

5.2 中断服务子程序

在本设计中,中断服务子程序是整个系统的核心,几乎所有外围模块的功能都在中断服务子程序中实现。当执行完中断服务子程序后,系统又进入低功耗模式。 5.2.1 热释电红外中断服务子程序流程图及功能

热释电红外传感器主要用来实现智能化,当热释电红外传感器检测到有人靠近时,便产生中断唤醒MCU,使其进入工作状态,并显示出欢界面、当前时间,同时启动定时器并打开定时器中断。延迟一段时间后,自动进入点菜界面。

图2. 红外中断服务子程序流程图

5.2.1 定时器中断服务子程序流程图及功能

当红外中断使MCU进入工作状态时,定时器定时为15s 并开始工作。在每次按键产生中断时,定时器都会重新开始计时。如果在15s 内没有任何操作,则定时器产生中断。在中断服务子程序中,首先关闭液晶背光,使系统降低功耗,然后做系统进入低功耗前的准备工作:使能红外中断,关闭定时器中断,然后进入低功耗模式。

图3. 定时器中断服务子程序流程图

5.2. 2按键中断服务子程序流程图及功能

图4. 按键中断服务子程序流程图

在进入按键中断服务子程序后,都必须首先重启定时器,因为系统在15s内无

方向键(KEY_UP、KEY_DOWN)中断程序流程图

任何操作,定时器便会产生中断,使MCU进入低功耗模式并关闭所有外围模块。 5.2.3.1

图5. KEY_UP键程序流程图

在本设计中,使用向上(KEY_UP)、向下(KEY_DOWN)两个方向键来改变

光标所指向的当前记录,并用反白显示出来,当按KEY_UP、KEY_DOWN键时,

反白显示条上下移动来指示光标的当前位置,实现方法如下(以KEY_UP键为例):

cls_chn(2,line,13); //清除当前记录 disp_record(line,record[number].Num,record[number].Name,record[number].Price); //再次显示当前记录 line-=1; OVERTURN; //写入反色指令

number-=1; disp_record(line,record[number].Num,record[number].Name,record[number].Price); //反色显示上一条记录 OVERTURN; //再次写入反色指令,取消反色 当光标已经指向第一条记录时,如果按KEY_UP键,则会在相应位置显示错误标志(Err)并不停闪烁。同样,当光标已经到达了最后一条记录,如果按KEY_DOWN键,也会显示出(Err)标志。除此之外,他们还具有自动翻页功能,当光标指向了当前页的首/尾记录。 5.2.3.2

选择(SELECT) 、取消(CANCEL)键中断程序流程图

当进入SELECT键中断服务子程序后,首先在已选中的列表中查找是否有该编号的记录,如果该记录已经存在,则将已选标志位置1 (select_flag=1),在后面的程序中,先判断 select_flag 是否为 1,如果为 1 则直接从中断返回;否则将该记录的编号存入已选中列表中,选中计数器自加一(r_counter+=1)并显示在LCD的左上角:

if(r_counter>9) { disp_char(0,8,r_counter/10+48);

disp_char(1,8,r_counter+48); } Else disp_char(0,8,r_counter+48); 图6. 选择键程序流程图

图7. KEY_UP键程序流程图

CANCEL键的中断服务子程序与SELECT键基本相同,首先也必须判断光标当前所指记录是否已经选中,不同的是当该记录不存在时直接从中断返回,存在时则删除选中列表中的记录,清除选中标志,选中计数器减 1,并显示出来。

5.2.3.3

发送(SEND)键中断程序流程图

当按下SEND键时,就进入发送中断服务子程序,在此段程序中,首先读出已选中列表中的编号,在根据编号去查找与之对应的菜名,并显示出来。并询问是否发送,如果发送则再次按SEND键即可将数据发送出去,发送由发送中断服务子程序来完成,每16个BIT数据构成一个数据桢,数据在发送过程中,数据在发送时遵循串口通讯协议。

图8. 发送中断程序流程图

5.2 程序清单 见附1。 4,系统组装与调试

6.1 整机结构和工艺及pcb制作

整机分为手持终端、PC连接器和PC机三个部分,由于本系统使用无线

电高频发射,在制作PCB时,要对相关规则进行设置,具体设置要求如下: 1 导线布设尽可能短,导线拐弯处应成45度或圆角式 3 导线的公共接地应尽可能宽,在20~40mil

4 相邻导线间距必须能满足电器安全要求,间距应尽量宽

5 PCB的公共地线应尽量布置在边缘部分,在PCB上应尽量保留铜箔做地线,这样可以减小分布电容的作用

6 焊盘的焊孔尺寸必须从元件引脚直径和公差尺寸搪炀层厚度,孔径公差,金属化孔电镀等方面考虑,焊盘的钻孔一般不小于30mil

综合以上制作原则我们对电路板设计具体是:手持终端部分由于元件和布线比较多,把线宽设定为20mil,地线35mil,线与线间距10mil,线与焊盘距离10mil。连接部分元件较少,线宽为30mil,地线40mil,平行导线间距15mil ,线与焊盘距离15mil,具体布局如图6-1-1

参考文献

[1] Texas Iinstruments 公司.MSP430x1xx Family User’s Guide.

[2] 魏小龙 .MSP430系列单片机接口技术及系统设计实例 . 北京:北京航空航

天大学出版社,2002.

[3] 秦龙. MSP430单片机C语言应用程序设计实例精讲.北京:电子工业出版

社,2006.

[4] 胡大可 . MSP430系列单片机C语言程序设计与开发 . 北京:北京航空航天大

学出版社, 2002. [5] 胡大可.MSP430系列超低功耗16位单片机原理与应用.北京:北京航空航

天大学出版社,2004.

[6] 魏小龙 . 南航MSP430课程试用书.PDF.www.mcu-china.com [7] IAR Embedded Workbench User’s Guide.

[8] MSP430开发环境—AQ430使用说明.PDF . www.lierda.com

[9] 彭良清.基于节点编号的通用树状菜单设计方法与实现.www.lierda.com [10] 3v与5v混合系统中逻辑器接口耦合问题. www.microcontrol.cn [11] 金鹏公司. B系列中文液晶显示模块使用说书.PDF www.gptlcm.cn [12] 印制电路板排版设计 科学技术文献出版社

[13] 李学海.PIC单片机原理.北京:北京航空航天大学出版社


无线餐厅点菜机 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:模拟量输入输出模块

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

马上注册会员

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