病床呼叫系统设计_毕业论文.doc_第1页
病床呼叫系统设计_毕业论文.doc_第2页
病床呼叫系统设计_毕业论文.doc_第3页
病床呼叫系统设计_毕业论文.doc_第4页
病床呼叫系统设计_毕业论文.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计论文病床呼叫系统设计i摘要病房呼叫系统是传送临床信息的重要手段,可将病人的请求快速传送给值班医生或护士,它主要用于协助医院病员在病床上方便地呼叫医务人员,是提高医院和病室护理水平的必备设备之一。让患者需要服务时,只要按一下随身携带的呼叫器,信息立马就能传至护工处.避免没有看护人在时,病人急需服务却无法通知医生的情况.它要求及时、准确、可靠、简便可行。本设计的呼叫系统由按键检测,数据处理,信息显示三部分组成。由c51单片机作为主要控制器,利用液晶显示器作为显示部分,使用3x8矩阵开关分别模拟医院病房与病床位数。病人按下按键时,c51立即获取病人的病房号和病床号,同时采集此时的时间并一起显示在液晶显示器上,当护士看到显示器上病人的信息,并按下清零键后,液晶显示器恢复到初始状态。本系统对键盘的检测采用中断的方式,能够提高系统的立即性和高效性。当同时有数个病床呼叫时,本系统还可以循环呼叫记录显示。关键词:病房呼叫 单片机 中断 液晶显示35目录1设计任务及要求分析11.1 设计任务11.2 任务要求分析12 系统设计和方案选择22.1 设计思路22.2 键盘采集方案选择22.3设计芯片的选择33病床呼叫系统硬件电路设计43.1单片机控制系统硬件设计43.2液晶显示的硬件设计43.3扫描键盘的硬件设计53.4时钟芯片的硬件设计63.4中断电路设计64病房呼叫系统软件设计74.1主程序设计74.2矩阵键盘的中断程序的设计84.3液晶lcd12864驱动程序的设计104.4实时时钟ds1302驱动程序的设计115仿真结果及分析125.1 无病人呼救时的仿真结果125.2 有病人呼救时的仿真结果125.3 有多个病人呼救时的仿真结果126心得体会14参考文献15附录1系统原理图16附录2程序源代码171设计任务及要求分析近年来,随着人们生活水平的不断提高,人们对医疗水平的要求也不断提高,特别是突发情况下病人请求值班医生或护士进行及时诊断或护理,这一环节对提高医院的管理服务质量显得尤其重要,这同时也大大提高了医院医护人员应对突发事件的能力。因此,一种新型临床呼叫仪器的研制成为近些年来的研究热点之一。呼叫系统的优劣直接关系到病员的安危,历来受到各大医院的普遍重视。它要求及时、准确、可靠、简便可行、利于推广。利用电力线载波通信技术、单片机多机通信和计算机监控管理技术设计的具有呼叫、振铃、显示排队、优先权设定、存储记录等功能的病床呼叫系统,满足了医院的病房管理和护理要求。1.1 设计任务本病床呼叫系统中,使用3x8矩阵开关分别模拟医院病房与病床位数,当某开关按下时,系统显示呼叫的病房与病床、呼叫的时间。处理完毕可清除该呼叫显示记录。当同时有数个病床呼叫时,本系统还可以循环呼叫记录显示。1.2 任务要求分析通过对上述设计任务的分析,可以将之细分为以下几点,最后的调试也将以下面各点为依据。当有病人按下按键时,液晶显示器上显示病人的病房号,病床号,以及按键时的时间。在护士按下清零键后,液晶显示器上内容恢复到初始状态。若在护士按下清零键前有多个病人按键,则液晶显示器上将循环显示各个病人的信息,直到护士按下清零键后,液晶显示器上内容恢复到初始状态。2 系统设计和方案选择2.1 设计思路根据设计要求,该病床呼叫系统利用c51单片机作为核心,外接3x8矩阵键盘,每一个键对应着不同的床位。在没有病人呼叫时,单片机循环等待按键按下;当病人按下床头对应的按键,产生中断信号。单片机收到中断信号后调用中断服务程序识别出呼叫病床的病房号码和床位号码,同时记录当时系统的时间,将呼叫记录通过lcd12864显示出来,护士通过读取屏幕上提示的呼叫信息即可快速的、正确的查出病人的床位,并做相应的准备以及时处理,处理完成后,按下清除按钮,即可清除本次呼叫记录,等待下次呼叫,同时液晶屏幕上再次显示“一切正常”。其结构图如下:单片机键盘液晶显示实时时钟芯片 图2.1 病床呼叫系统结构图2.2 键盘采集方案选择键盘的工作方式应该根据实际应用系统中cpu的工作状况而定其选取的原则是既要保证cpu能及时响应按键操作又不要过多占用cpu的工作时间。通常键盘的工作方式有三种即编程扫描、定时扫描和中断扫描。 1编程扫描方式 编程扫描方式是利用cpu完成其他工作的空余时间调用键盘扫描子程序来检验按键态响应键盘输入。执行键功能程序时cpu不再享有键输入要求直到cpu重新扫描键盘为止。 2定时扫描方式 定时扫描方式就是每隔一段时间对键盘扫描一次她利用单片机内部的定时器产生一定时间如20ms的定时定时时间到产生定时器溢出中断。cpu在中断服务程序中键盘进行扫描并在有键按下时识别出该键并保存键号然后在中断服务程序或主程序中执行该键的功能程序。 3中断扫描方式 中断扫描方式就是当按键有按下时,产生中断信号,cpu收到中断信号后就执行相应的中断服务子程序响应该按键,处理完后cpu又开始循环等待下一次按键按下。当采用前两种键盘描方式时,无论是否有键按下cpu都要定时扫描键盘而单片机应用系统工作时并非经常需要键盘输入。因此cpu经常处于空扫描状态,浪费cpu大量时间。cpu不扫描键盘而有键按下时通过相应电路产生中断请求,cpu响应中断,执行键盘扫描子程序并识别键号。 所以本设计中采用中断扫描方式采集键盘信息。2.3设计芯片的选择c51单片机:单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的cpu、ram、rom、多路i/o口和中断系统、定时器/计数器等功能集成到一块芯片上的一个小系统,通过编写程序下载到单片机的程序存储器以实现不同的功能。液晶显示器lcd12864:相对于数码管、led二极管点阵等,液晶显示具有可以实现汉字的显示,硬件电路连接比较简单等优点。3病床呼叫系统硬件电路设计3.1单片机控制系统硬件设计单片机控制系统功能是:键盘数据采集并保留采集结果、控制液晶显示设计要求的内容、读取实时时间,并作适当的数据处理。该控制系统中单片机at89c51的p0,p1,p2及p3.0,p3.1接口作普通i/o使用,其中p0口作为lcd12864的数据传输口,p2.0p2.5口的作为其控制端口,p2.6、p2.7、p3.0以及p1口为键盘的行列口,p3.0作为清除按键的数据输入口。p3.2作为外部中断信号输入口。p3部分口与时钟芯片ds1302相连实现时间的通信。具体电路图显示如图3.1所示。图3.1 单片机控制系统电路图3.2液晶显示的硬件设计液晶显示的功能包括:没有病人呼叫时,显示“一切正常”;当有病人呼叫时,显示病人的具体位置和呼叫的时间、日期。通用型lcd12864共有18个引脚,其中db7db0是连接控制器的数据总线,其他的引脚中6根控制线,另外还有电源线,具体连接见图3.2。其中上拉电阻是由于p0口作普通口时内部没有上拉电阻。图3.2液晶lcd12864电路图3.3扫描键盘的硬件设计键盘输入的功能:每个按键对应着一张病床,由3x8矩阵键盘组成。该矩阵键盘的总共需要11个接口,其中列分别与单片机p2.6、p2.7、p3.0口相接,行占用了整个p1口。具体连接如图3.3所示。图3.3 3x8矩阵键盘3.4时钟芯片的硬件设计时钟芯片ds1302有两个电源引脚,vcc1和vcc2,其中vcc1是主电源,vcc2是备份电源。当vcc2vcc1+0.2v时,由vcc2向ds1302供电,当vcc2vcc1时,由vcc1向ds1302供电,以防止系统掉电时芯片内部的数据不会丢失。其通信引脚有3个,另外外接32.768khz晶振是为芯片提供计时脉冲。其连接电路图如图3.4所示。图3.4 时钟芯片电路图3.4中断电路设计若系统初始化时将l1,l2,l3设置为高电平,p0口设置为低电平,则当有按键按下时,l1,l2,l3会有一个变为低电平。同样当按下清除键时,clear也会为低电平。这样通过一个4输入与门连接到p3.2上即可实现对键盘的中断检测。其连接电路图如图3.5所示。图3.5 中断电路图4病房呼叫系统软件设计对于一个完整的设计,除了需要设计硬件电路外,还需要根据功能需求设计要求设计一个运行高效、冗余指令少、稳定性强的软件系统。在这一块的完成上,我们采用的主要是各个子程序设计,主函数只需要做简单的数据处理和各个子程序的调用,从而逐步完成题目的全部要求。4.1主程序设计主程序主要是对各子程序,中断服务子程序进行初始化,并循环显示病人信息。其流程图如图4.1所示。图4.1主程序流程图主程序设计如下:void main()uchar i;init_lcd();init1302();set_line(0);clear_display();ea=1;ex0=1;int0=1;p1=0x00;l1=l2=l3=1;while(1)for(i=0;it;i+)key_display(i);delay(1000);4.2矩阵键盘的中断程序的设计矩阵键盘的中断程序主要是对按键的扫描以实现对按键的键号识别,同时对键号对应的病房,病床号以及按键的时间进行存储。主函数通过调用存储的数据便可实现病房信息的循环显示。其设计流程图如图4.2所示。需要说明的是,在此中断程序中抖动的识别可以通过延时一段时间后再对l1,l2,l3及clear的高低电平进行判断来实现,若延时后仍然有低电平则不是抖动而是真的有按键按下。矩阵键盘的中断程序设计如下:void int0( ) interrupt 0 using 0uchar i;ex0=0;delay(5);if(l1&l2&l3)!=1)if(l1=0)room_num=1;else if(l2=0)room_num=2;elseroom_num=3;p1=0xff;l1=l2=l3=0;for(i=0;i8;i+)if(p1=tablei)bed_num=i+1;break;numt0=room_num;numt1=bed_num;timet0=read_1302(0x81);timet1=read_1302(0x83);timet2=read_1302(0x85);timet3=read_1302(0x87);timet4=read_1302(0x89);timet5=read_1302(0x8d);t+;p1=0x00;l1=l2=l3=1; if(clear=0) clear_display(); ex0=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) 写数据函数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。5仿真结果及分析在protues和单片机编译软件keil c51中分别完成硬件电路设计和软件系统的设计后,生成hex文件载入单片机中开始逐步调试程序,经过多次调试,系统能够正常的运行,并能够正确的在液晶屏上显示呼叫病床的病房号和床位号以及系统当时的时间与日期。5.1 无病人呼救时的仿真结果点击“运行”按钮,系统开始运行,并在液晶屏上显示“一切正常”表示没有病人求救,如图4.1所示。图5.1没有呼叫时液晶显示结果5.2 有病人呼救时的仿真结果当某一房间的病人按下求救按钮(如按下2-3键)时液晶屏提示值班人员的显示,如图4.2,左边是ds1302内部系统时间,通过对比可以看出显示时间是定在按键时间的。图5.2 2号房间第5床的病人求救当按下“清除”键后,在没有病人求救的情况下,液晶屏幕会再次出现“一切正常”。与运行开始时的结果是一致的。5.3 有多个病人呼救时的仿真结果当有多个病人同时按键时,液晶显示屏上以一定的时间间隔循环显示各个病人的病房,病床信息以及按键时间。其仿真结果见图5.3,图5.4(这里假设只有两个病人同时按键)。图5.3 2号房间第2床位的病人求救图5.4 3号房间第3床位的病人求救当按下“清除”键后,在没有病人求救的情况下,液晶屏幕会再次出现“一切正常”。与运行开始时的结果是一致的。6心得体会本设计是以at89c51为核心的病人呼叫系统,对该系统的硬件和软件结构进行了相应的描述。通过对病区的数据采集实现医院医疗人员值班室和病人房之间的通信联系具有使用方便、操作简单等特点。此次设计为有线呼叫系统虽存在布线复杂、维修不便、病房不能与值班室的语音对话等缺陷。但相对于无线呼叫系统而言它的可靠性能高而且不干扰其他医疗设备。如果采用无线传输会节约布线和改造线路的资金为医院节约成本并且及时、简便可行比目前的同类产品更能受到医院及病人的认可有更强的竞争力能大量推广。在系统设计期间,尤其是程序的调试间段出现很多次差错,主要包括lcd12864显示和ds1302部分子程序的错误,这主要是由于自己对lcd12864的显示原理和对ds1302的子函数返回值不熟悉所导致。在设计多病人呼叫循环显示时,我也遇到了许多难题。为了将病人的键号和按键时间及时存储下来,我在主程序外定义了两个无符号整型的数组,并按24个病人的长度进行定义,结果导致数据段内存不够,不能编译。后来将数组改能无符号字符型,并将长度降为10,这样已经可以满足实际需要。修改后程序才能顺利编译运行。通过本次设计不仅让我对医院病床呼叫系统有了进一步的了解,也在熟悉芯片的同时,加强了我在编程方面的技巧。另外,在这次的设计过程中,我不断地查阅资料并请将同学,这让我的自学能力也有了很大的提高。参考文献1李群芳.单片微型计算机与接口技术m.第3版.北京:电子工业出版社,20082窦振中.基于单片机的嵌入式系统式工程设计m.北京:中国电力出版社,20083冯建华。单片机应用系统设计与产品开发m,北京:人民邮电出版社,20044谭浩强.c程序设计(第三版)m.清华大学出版社,20085王巧芝,郑锋,刘瑞国,高学辉.51单片机开发应用从入门到精通m.中国铁道出版社,2011附录1系统原理图附录2程序源代码#include#include#define uint unsigned int#define uchar unsigned char#define lcd_databus p0uchar room_num,bed_num,n,y,r,s,f,m,t=0;uchar num102,time106;uchar code table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar keyscan();sbit rs=p24; /rs为0命令,为1数据sbit rw=p25; /rw为1写,为0读sbit en=p22; /使能端sbit cs1=p20; /片选1低电平有效,控制左半屏sbit cs2=p21; /片选2低电平有效,控制右半屏sbit l1=p26;sbit l2=p27;sbit l3=p30;sbit io=p37;sbit sclk=p36;sbit rst=p35;sbit clear=p31;sbit acc0=acc0;sbit acc7=acc7;uchar code zk=/*- 文字: 病 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x60,0x00,0xfc,0x04,0x24,0x24,0x24,0x25,0xe6,0x24,0x24,0x24,0x24,0x04,0x00,0x84,0x42,0x31,0x0f,0x00,0xff,0x11,0x09,0x05,0x03,0x05,0x59,0x81,0x7f,0x00,0x00,/*- 文字: 床 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0xfc,0x04,0x44,0x44,0x44,0x45,0xf6,0x44,0x44,0x44,0x44,0x44,0x04,0x00,0x40,0x30,0x0f,0x20,0x10,0x08,0x06,0x01,0xff,0x01,0x06,0x08,0x10,0x20,0x20,0x00,/*- 文字: 房 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0xfc,0x24,0x24,0x24,0x25,0x66,0xa4,0x24,0x24,0x24,0x24,0x3c,0x00,0x00,0x40,0x30,0x0f,0x81,0x41,0x31,0x0f,0x09,0x09,0x09,0x49,0x89,0x79,0x01,0x00,0x00,/*- 文字: 时 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0xfc,0x84,0x84,0x84,0xfc,0x00,0x10,0x10,0x10,0x10,0x10,0xff,0x10,0x10,0x00,0x00,0x3f,0x10,0x10,0x10,0x3f,0x00,0x00,0x01,0x06,0x40,0x80,0x7f,0x00,0x00,0x00,/*- 文字: 间 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0xf8,0x01,0x06,0x00,0xf0,0x12,0x12,0x12,0xf2,0x02,0x02,0x02,0xfe,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x1f,0x11,0x11,0x11,0x1f,0x00,0x40,0x80,0x7f,0x00,0x00,/*- 文字: 日 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x00,0xfe,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xff,0x00,0x00,0x00,0x00,/*- 文字: 期 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x04,0xff,0x24,0x24,0x24,0xff,0x04,0x00,0xfe,0x22,0x22,0x22,0xfe,0x00,0x00,0x88,0x48,0x2f,0x09,0x09,0x19,0xaf,0x48,0x30,0x0f,0x02,0x42,0x82,0x7f,0x00,0x00,/*- 文字: 号 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x80,0x80,0x80,0xbe,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xbe,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x44,0x84,0x44,0x3c,0x00,0x00,0x00,0x00,/*- 文字: 一 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/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,/*- 文字: 切 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x40,0x40,0xff,0x20,0x20,0x20,0x04,0x04,0xfc,0x04,0x04,0x04,0xfc,0x00,0x00,0x00,0x00,0x00,0x1f,0x08,0x84,0x42,0x20,0x18,0x07,0x40,0x80,0x40,0x3f,0x00,0x00,/*- 文字: 正 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x02,0x02,0xc2,0x02,0x02,0x02,0xfe,0x82,0x82,0x82,0x82,0x82,0x02,0x00,0x00,0x40,0x40,0x40,0x7f,0x40,0x40,0x40,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,/*- 文字: 常 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x20,0x18,0x08,0xea,0xac,0xa8,0xa8,0xaf,0xa8,0xa8,0xac,0xea,0x08,0x28,0x18,0x00,0x00,0x00,0x3e,0x02,0x02,0x02,0x02,0xff,0x02,0x02,0x12,0x22,0x1e,0x00,0x00,0x00,;uchar code sk=/*- 文字: 0 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00,0x00,0x0f,0x10,0x20,0x20,0x10,0x0f,0x00,/*- 文字: 1 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x10,0x10,0xf8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3f,0x20,0x20,0x00,0x00,/*- 文字: 2 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*- 文字: 3 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0e,0x00,/*- 文字: 4 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0xc0,0x20,0x10,0xf8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3f,0x24,0x00,/*- 文字: 5 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xf8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0e,0x00,/*- 文字: 6 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xe0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0f,0x11,0x20,0x20,0x11,0x0e,0x00,/*- 文字: 7 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x38,0x08,0x08,0xc8,0x38,0x08,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,/*- 文字: 8 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1c,0x22,0x21,0x21,0x22,0x1c,0x00,/*- 文字: 9 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0f,0x00,/*- 文字: : -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0x00,0xc0,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,/*- 时间号: : -*/*- 宋体12;此符号下对应的点阵为: 宽x高=8x16 -*/0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,0x00,/*- 文字: - -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,;void delay(uint i) uint x,y; for(x=i;x0;x-) for(y=110;y0;y-);void read_busy() /读忙函数,数据线最高位为db7为1则busy p0=0x00;rs=0;rw=1;en=1;while(p0&0x80);en=0;void write_lcd_command(uchar value)read_busy();rs=0;rw=0;lcd_databus=value;en=1;_nop_();_nop_();en=0;void write_lcd_data(uchar value)read_busy();rs=1;rw=0;lcd_databus=value;en=1;_nop_();_nop_();en=0;void set_page(uchar page)page=page|0xb8;write_lcd_command(page);void set_line(uchar startline)startline=0xc0|startline;write_lcd_command(startline);void set_column(uchar column)column=column&0x3f;column=0x40|column;write_lcd_command(column);void setonoff(uchar onoff)onoff=0x3e|onoff;write_lcd_command(onoff);void selectscreen(uchar screen)switch(screen)case 0:cs1=0;cs2=0;break;case 1:cs1=0;cs2=1;break;case 2:cs1=1;cs2=0;break;default:break;void clearscreen(uchar screen)uchar i,j;selectscreen(screen);for(i=0;i8;i+)set_page(i);set_column(0);for(j=0;j64;j+)write_lcd_data(0x00);void init_lcd()read_busy();selectscreen(0);setonoff(0);selectscreen(0);setonoff(1);selectscreen(0);clearscreen(0);set_line(0);void display(uchar ss,uchar page,uchar column,uchar p)uint i;selectscreen(ss);set_page(page);set_column(column);for(i=0;i16;i+)write_lcd_data(zki+p*32);set_page(page+1);set_column(column);for(i=0;i16;i+)write_lcd_data(zki+16+p*32);void display1(uchar ss,uchar page,uchar column,uchar p)uint i;selectscreen(ss);set_page(page);set_column(column);for(i=0;i8;i+)write_lcd_data(ski+p*16);set_page(page+1);set_column(column);for(i=0;i0;kk-)io=acc0;sclk=0;sclk=1;acc=acc1;uchar read_byte1302()uchar kk;rst=1;for(kk=8;kk0;kk-)acc7=io;sclk=1;sclk=0;acc=acc1;return acc;void write_1302(uchar add,uchar dat)rst=0;sclk=0;rst=1;write_byte1302(add);write_byte1302(dat);sclk=1;rst=0;uchar read_1302(uchar add)uchar temp;rst=0;sclk=0;rst=1;write_byte1302(add);temp=read_byte1302();sclk=1;rst=0;return(temp/16*10+temp%16);/返回十进制数据显示void init1302()rst=0;sclk=0;write_1302(0x80,0x00);void key_display(uchar aa) m=timeaa0;f=timeaa1;s=timeaa2;r=timeaa3;y=timeaa4;n=timeaa5;rst=0;clearscreen(0);display(1,0,0*16,0); /病display(1,0,1*16,2); /房display1(1,0,2*16,11); / 冒号display1(2,0,0*16,numaa0); /房号数display(2,0,1*16,7); /号display(1,2,0*16,0); /病display(1,2,1*16,1); /床display1(1,2,2*16,11); /冒号display1(2,2,0*16,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论