病床呼叫系统设计(3)

2019-04-13 18:11

武汉理工大学《能力强化训练》课程设计说明书

4病房呼叫系统软件设计

对于一个完整的设计,除了需要设计硬件电路外,还需要根据功能需求设计要求设计一个运行高效、冗余指令少、稳定性强的软件系统。在这一块的完成上,我们采用的主要是各个子程序设计,主函数只需要做简单的数据处理和各个子程序的调用,从而逐步完成题目的全部要求。

4.1主程序设计

主程序主要是对各子程序,中断服务子程序进行初始化,并循环显示病人信息。其流程图如图4.1所示。

主程序设计如下: void main() { uchar i; init_LCD();

init1302();

开始液晶显示器初始化时钟芯片初始化中断初始化显示“一切正常”等待中断并循环显示 图4.1主程序流程图

7

武汉理工大学《能力强化训练》课程设计说明书

}

set_line(0); clear_display(); EA=1; EX0=1; INT0=1; P1=0x00; L1=L2=L3=1; while(1) for(i=0;i

key_display(i); delay(1000);

4.2矩阵键盘的中断程序的设计

矩阵键盘的中断程序主要是对按键的扫描以实现对按键的键号识别,同时对键号对应的病房,病床号以及按键的时间进行存储。主函数通过调用存储的数据便可实现病房信息的循环显示。

其设计流程图如图4.2所示。

需要说明的是,在此中断程序中抖动的识别可以通过延时一段时间后再对L1,L2,L3及CLEAR的高低电平进行判断来实现,若延时后仍然有低电平则不是抖动而是真的有按键按下。

矩阵键盘的中断程序设计如下: void int0( ) interrupt 0 using 0 {

uchar i; EX0=0; delay(5);

8

武汉理工大学《能力强化训练》课程设计说明书

if((L1&L2&L3)!=1) { if(L1==0) room_num=1; else if(L2==0) room_num=2; else

room_num=3; P1=0xff; L1=L2=L3=0; for(i=0;i<8;i++) if(P1==table[i]) { bed_num=i+1; break;

}

num[t][0]=room_num; num[t][1]=bed_num; time[t][0]=read_1302(0x81); time[t][1]=read_1302(0x83); time[t][2]=read_1302(0x85); time[t][3]=read_1302(0x87); time[t][4]=read_1302(0x89); time[t][5]=read_1302(0x8d); t++; P1=0x00; L1=L2=L3=1;

if(CLEAR==0)

9

武汉理工大学《能力强化训练》课程设计说明书

}

}

clear_display();

EX0=1;

开始关中断YES抖动?NO将L1,L2,L3分别与0比较判断病房号P1=oxff;L1=L2=L3=0P1口各位分别赋0循环检测判断病床号存储病房号和病床号存储按键时间P1=ox00;L1=L2=L3=1开中断开始 图4.2矩阵键盘的中断程序流程图

4.3液晶LCD12864驱动程序的设计

编写液晶LCD12864驱动程序前首先要对系统中用到的汉字,数字以及特殊字符的数据组进行设计。针对液晶驱动程序主要考虑以下的编写: 1、void read_busy() 读忙函数

2、void write_LCD_command(uchar value) 写指令函数 3、void write_LCD_data(uchar value) 写数据函数

10

武汉理工大学《能力强化训练》课程设计说明书

4、void set_page(uchar page) 设置页 5、void set_line(uchar startline) 设置起始行 6、void set_column(uchar column) 设置起始列

7、void setonoff(uchar onoff) 开、关显示(0开,1关)

8、void selectscreen(uchar screen) 选屏函数(00全屏01左半屏10右半屏) 9、void clearscreen(uchar screen) 清屏函数 10、void init_LCD() 初始化函数

11、void display(uchar ss,uchar page,uchar column,uchar p) 显示汉字函数 12、void display1(uchar ss,uchar page,uchar column,uchar p) 显示字符 上述函数的具体编写参看附录2。

4.4实时时钟DS1302驱动程序的设计

由于DS1302是SPI总线驱动方式,它不仅要向寄存器写入控制字,还需要读取相应的寄存器数据,所以要想与其通信,首先得了解DS1302控制字,而且SPI总线进行数据通行时只有两条数据线,即SCLK和RST,通过不同时刻两条总线的电瓶变化不同可以进行不同的操作。

其驱动函数包括:

1、void write_byte1302(uchar dat) 写一个字节 2、uchar read_byte1302() 读一个字节 3、void write_1302(uchar add,uchar dat)写数据 4、uchar read_1302(uchar add) 读数据 5、void init1302() 初始化 上述函数的具体编写参看附录2。

11


病床呼叫系统设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新华社国会街礼堂加固改造工程施工组织设计

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

马上注册会员

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