范文一:静脉输液滴速是什么
输液是很常见的,输液在治疗疾病上有很好帮助,不过输液方法要注意,一定要正确的进行,这样对自身血管不会有影响,而且输液的时候,速度都是不能过快,否则对自身身体是没有任何好处的,那静脉输液滴速都有什么呢,下面就详细的介绍下,使得对静脉输液滴速有更多了解。
[静脉输液滴速是什么]精彩内容,尽在百度攻略:https://gl.baidu.com
静脉输液滴速:
一般速度:补充每日正常生理消耗量的输液以及为了输入某些液物(如抗菌素、激素、维生素、止血液、治疗肝脏疾病的输助药等)时,一般每分钟5ml左右。通常所说的输液速度每分钟60~80滴,就是指这类情况。静滴氯化钾,如速度过快可使血清钾突然上升引起高血钾,从而抑制心肌,以致使心脏停搏于舒张期状态。因为血清钾达7.5毫当量/升时,即有可能发生死亡。
如果把1克氯化钾(13.9毫当量)直接推入血液,那么在短暂时间内,就可使血清钾水平从原来的基础上立即增高3~3.5毫当量/升,显然是极危险的。所以氯化钾的输注速度,一般要求稀释成0.3%的浓度,每分钟4~6ml。葡萄糖溶液如输入过快,则机体对葡萄糖不能充分利用,部分葡萄糖就会从尿中排出。 精彩内容,尽在百度攻略:https://gl.baidu.com
据分析,每公斤体重,每小时接受葡萄糖的限度大约为0.5g。因此,成人输注10%的葡萄糖时,以每分钟5~6ml较为适宜。此外,输入生理盐水时,也不宜过快,因为生理盐水中,只有钠的溶度和血浆相近似,而氯的含量却远远高于血浆浓度(生理盐水的氯浓度154毫当量/升,血浆的氯浓度只有103毫当量/升),输液过快的结果,可使氯离子在体内迅速增多。如肾功能健全时,过多的氯离子尚可由尿中排出,以保持离子间平衡;如肾功能不全,则可造成高氯性的酸中毒。
⒉ 快速:严重脱水病人,如心肺功能良好,一般应以每分钟10ml左右的速度进行补救,全日总输量宜在6~8小时完成,以便输液完毕后病人得以休息。血容量严重不足的休克病人,抢救开始1~2小时内的输液速度每分钟应在15ml以上。
因为,倘若在2小时内输入2000ml液体,就可使一个休克病人迅速好转的话,若慢速输入,使2000ml液体在24小时内缓缓滴入,则对休克无济于事。急性肾功能衰竭进行试探性补救时,常给10%葡萄糖溶解500ml,以每分钟15~25ml速度输入。 精彩内容,尽在百度攻略:https://gl.baidu.com
为了扩容输入5%碳酸氢钠或低分子右旋糖肝,为了降低颅内压或急性肾功能衰竭而早期使用甘露醇时,每分钟均需以10ml左右的速度进行。
在对静脉输液滴速认识后,进行静脉输液滴速的时候,都是要注意以上情况,根据自身疾病治疗不同,输液速度也是不一样的,而且在进行输液的时候,都是不要乱动,否则针头会扎到血管,使得有出血现象,这样对自身也没有好处的。
范文二:输液滴速有讲究
输液滴速有讲究,调节滴速需谨慎
分类:健康小贴士 | 标签: 过快 药物 输液 化疗 心律失常
病房里,常见到病人不顾护士的劝说自行调节输液滴速的现象,输液是很快滴完了,时间是节省了,可是您知道这潜在多大的危险吗?
在肿瘤科,最常见、最重要的治疗就是化疗,而大多数化疗药物根据其不同的性质更是有严格的输注速度要求,如:
1. 需要快速滴注的药物:吉西他滨(滴注时间延长会使药物毒性增大)。
2. 需要缓慢滴注的药物:依托泊苷(滴注过快可有低血压,喉痉挛等过敏反应)。
3. 需要控制在一般滴速的药物:柔红霉素(滴注过快会导致心律失常,滴注过慢会增加药物对血管的伤害)等。
合适的滴速是为了在保证病人安全的前提下使药物的利用率达到最大。除化疗药之外,许多药物对输注速度也有各自的要求,而患者的身体状况也是调节输液速度的一个参考指标,例如我们科室常用的含钾药,短时间内输注过多过快,钾离子浓度过高时会抑制心肌,甚至使心脏突然停搏;头孢青霉素类输注过快也会导致静脉炎;氨茶碱输注过快可出现头晕,胸闷心悸,心律失常,甚至血压急剧下降;降压类药物输注过快会导致血压急剧下降;小孩和老人短时间输注过多液体会导致心脏负担过重,甚至发生心力衰竭,肺水肿等现象。
所以,在临床工作中,最佳滴速应由医护人员根据患者的年龄、病情和药物的性质来控制,一定不要擅自调节输液滴速。
范文三:儿童输液滴速
儿童输液滴速(按每1ml液体20滴计算)
成 人 40-60 gtt/min ;
早产儿 4-6 gtt/min,12-18ml/h;
新生儿 6-8 gtt/min,18-24ml/h; 婴 儿 (<1周岁) 8-10="" gtt/min,24-30/h;="" 幼="" 儿="" (1-3周岁)="" 10-15="" gtt/min;="" 学龄前儿童="" (3-6周岁)="" 15-30="" gtt/min;="" 学龄期儿童="" (6-12周岁)="" 20-40="" gtt/min;="">1周岁)>
儿童输液滴速(按每1ml液体20滴计算)
成 人 40-60 gtt/min ;
早产儿 4-6 gtt/min,12-18ml/h;
新生儿 6-8 gtt/min,18-24ml/h; 婴 儿 (<1周岁) 8-10="" gtt/min,24-30/h;="" 幼="" 儿="" (1-3周岁)="" 10-15="" gtt/min;="" 学龄前儿童="" (3-6周岁)="" 15-30="" gtt/min;="" 学龄期儿童="" (6-12周岁)="" 20-40="" gtt/min;="">1周岁)>
儿童输液滴速(按每1ml液体20滴计算)
成 人 40-60 gtt/min ;
早产儿 4-6 gtt/min,12-18ml/h;
新生儿 6-8 gtt/min,18-24ml/h; 婴 儿 (<1周岁) 8-10="" gtt/min,24-30/h;="" 幼="" 儿="" (1-3周岁)="" 10-15="" gtt/min;="" 学龄前儿童="" (3-6周岁)="" 15-30="" gtt/min;="" 学龄期儿童="" (6-12周岁)="" 20-40="">1周岁)>
范文四:输液滴速转换卡
输液滴速转换卡
滴速 (滴 /分) 50ml 100ml 250ml 500ml
10 100 200 500 1000 20 50 100 250 500 30 33 67 167 333 40 25 50 125 250 50 20 40 100 200 60 17 33 83 167 70 14 29 71 143 80 13 25 63 125 90 11 22 56 111 100 10 20 50 100 120 8 17 42 83 140 7 14 36 71 160 6 13 31 63
输液滴速转换卡
滴速 (滴 /分) 50ml 100ml 250ml 500ml
10 100 200 500 1000 20 50 100 250 500 30 33 67 167 333 40 25 50 125 250 50 20 40 100 200 60 17 33 83 167 70 14 29 71 143 80 13 25 63 125 90 11 22 56 111 100 10 20 50 100 120 8 17 42 83 140 7 14 36 71 160 6 13 31 63
范文五:输液滴速监控系统
输液滴速自动监控系统设计
一、 设计任务
1.根据题目要求进行资料收集及检测方案设计;
2.主要功能要求:(1)试试检测并控制输液滴速,并显示滴速和输液时间;
(2)滴速过高或过低时进行声光报警;(3)能手动关停报警;(4)正常滴
速及其上下限可以进行键盘设置;(5)有监控启动开关。
二(设计的目的和意义
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。目前医院普遍使用的是人工监控点滴输液装置器,将液体容器挂在一定高度,利用势差将液体输人病人体内,用软管夹对软管夹紧和放松控制滴速。医护人员按药剂特性对滴速进行控制。如何使这种手工操作走向自动化或半自动化,让护理人员监控病人打点滴的进程时间得到充分利用,使能自理的病人自己能掌握点滴的速度,这就要求医疗器械加速自动化与半自动化进程,提高医护质量。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本系统以Atmel89C52单片机为核心,键盘、LED 显示、光电传感器数据采集等外围电路组成,实现点滴速度监控系统。
单片机输液滴速控制是医院中常见的问题。输液滴速控制针对不同的病人情况采用不同的点滴速度进行输液控制,比如对成人输液滴速一般设在60~80滴/分钟,而对儿童输液滴速一般设在30~40滴为宜。医院中常见的输液管虽然能进行速度调节,但调节不准确,不易控制,而且常因为疏忽大意发生血液回流现象,有时速度过快还会对病人造成不良反应,另外作为医疗过程,医务人员也需要对每个病人的输液过程进行监控和记录完善病人档案,为此研究点滴速度控制就显得非常必要。且单片机的控制容易实现,控制过程也比较简单,更能够满足输液滴速的高要求控制。目前市场上常见的点滴速度控制产品主要是输液泵,此种设备控制精度高,功能也比较强大,但价格不菲,适用于输液要求较高的场合,而且使用前后都要进行清洗,不太方便。针对以上情况我们对系统进行改进设计了
一种方便实用、低成本的滴速速测控系统。
在输液点滴速度控制系统中,广泛应用与8051系列兼容的单片机,滴速检测和液面检测可用光电传感器或者电容式传感器,显示部分选择数码管显示。键盘可采用4*4 扩展键盘。报警电路同时采用蜂鸣器和发光二极管。 三(系统的主题设计
3.1 系统设计总体方案
本系统以AT89C52单片机为核心,辅以一些必须的外围电路,实现滴速检测及报警,组成一个监控系统。采用LED显示器,可以显示当前滴速、声光报警.,更嵌入时间显示模块,实现简单友好的人机界面,符合实际要求。键盘直接采用I/O扩展而成,充分考虑到了操作的便捷和简易性。监测与点滴速度调节构成的主要功能,其主要模块除单片机控制部分外,还有滴速检测、异常报警电路、速度设定与数码显示等。系统采用光电耦合传感器来进行检测滴速和液面高度产生中断进行计数,如果检测到的滴速在要求误差范围内过快或者过则报警。
3.2 滴速检测设计方案
采用光电传感器检测点滴速度以及储液瓶液面信号,原理如图3.2所示。发光二极管发射的平行光束穿过滴管投射到光敏三极管的感光面上,在没有液滴滴落时,光敏三极管接收到的光照度最大,产生的光电流也最大,当有液滴滴落时,由于液滴的形状特性,使平行光束发散,投射到光敏三极管上的光照度将减弱,从而使光敏三极管产生的光电流减小,形成低信号脉冲。
图3.2 光电传感器检测滴速和液装置
2
光电控制方式虽然结构复杂,红外发射接收传感器具有体积小、测量精度高、灵敏度好、避免与被测物直接接触且安装方便等优点。易受外界光源影响,但可防止药品的污染,保证患者用药安全(
3.3 键盘、显示及声光报警部分
显示部分选数码管显示。键盘选4×4 键盘。声光报警电路也可直接利用单片机I/O口输出放大驱动二极管发出声光报警。
四(系统硬件设计
4.1 单片机及外围电路的系统框图。
4.2 矩阵键盘设计
在本设计中,键盘即只有在按下某一个特定的按键(本设计中为“设定”键)时,才向单片机发送一个中断信号,使单片机产生中断,从而使单片机转向处理键盘程序,对键盘进行动态扫描,接受外界输入的键值(包括数字键和“确定”键),当按下“确定”时,系统便退出键盘程序,转向主程序进行滴速的检测。也就是说在未按“设定”键以前,按数字键和“确定”是无效的。
键盘接线如图4.2所示。
3
图4.2 I/O扩展键盘接线图
4.3 声光报警电路
设计要求系统发生故障时发出声光报警信号,可选择一只蜂鸣器来实现这一功能。压电式蜂鸣器工作时约需10mA的驱动电流,由于单片机输出信号不能直接驱动蜂鸣器,因此外接驱动电路,电路设计如图3.3所示。蜂鸣器作为三极管VT3的集电极负载,当VT3导通时,蜂鸣器发出鸣叫声;VT3截止时,蜂鸣 不发声,R是限流电阻。
将VT3的基极接到单片机的P2.7管脚上,P3.7作为输出口使用。当P2.7,0时,VT3、VT2导通时,使蜂鸣器和LED1的两个管脚间获得将近5V的直流电压,蜂鸣器和故障灯中有电流通过,而产生蜂鸣和故障灯点亮;当P2.7,1时,VT截止,故障灯和蜂鸣器的两管脚间的直流电压接近0V,故不工作,而正常灯两管脚间有接近5V电压而工作。
VCC
R13 VT3P2.7
100Ω LS
VT2
VT1LED2
SPEAKERR14LED1 200Ω正常灯R15
故障灯200Ω
图3.3 声光报警电路
4.4滴速检测电路设计
本系统采用光电传感器作为滴速,但是实际测验时用光敏电阻代替光电传感器来进行仿真。
光电传感器原理:红外对管夹在滴管两边一个发射管发出的红外光被一头的接收管所接收。一旦光路上有水滴通过,由于水对红外光的反射与折射,使得接
4
收管的接收信号变弱,形成一个小脉冲。仿真时光敏电阻连接图如下。
图3.7 光电传感器仿真电路.
4.5 LED显示电路设计
本系统采用8路共阴极LED8段数码管,用来显示设定值,AD采样值,及计时时间的显示。电路连接图如下。
5
五(软件设计
5.1 输液滴速监控系统总框图
5.2 键盘显示程序设计
用单片机8个借口对矩阵键盘检测,先送一列为低电平,其余几列全为高低
6
电平,然后立即轮流检测一次各行是否有低电平,若检测到某一列为低电平,则我们便可确认当前被按下的键是哪一行哪一列,用同样的方法检测各行。就可以知道按下哪一个键。
我们用到0-9十个键来对应数码管显示0-9然后找一个键作为设定键,只有设定键作用时0-9按键及确定键可用。再选取一个键作为数码管显示AD测量值或时间。再选一个按键作为报警停止与启动按键。用来控制报警。再选一个按键作为确定值。确定键用来确定设定值,上限,下限。键盘检测设计图如下。
7
5.3 报警程序设计
如果AD检测的返回值大于或小于设定的上限及下限则进行声光报警。在程序中加入一个报警停止的开关。
5.4 滴速和液面判断及报警
实际应用中用光电传感器,而在本次仿真中我们用到光敏电阻来测试。
8
5.5时间显示程序设计
采用定时器一模式1进行,时钟频率采用12MHZ,12个时钟周期为一个机器周期,所以机器周期就是1us,计满TH1和TL1就需要65535,在来一个脉冲计数器溢出,随即向CPU申请中断,因此溢出一次共需要65536us,约65.5ms,如果定时50ms就需要给TH1和TL1装一个初值计50000个数后,定时器溢出,就用50ms中断一次。需要设定1s就需要记20次。所以初值TH1=(65536-50000)/256,
TL1=(65536-50000)%256。
时间显示的是时,分,秒。所以秒和分到60的时候清零,分到24的时候清零。 具体程序详见附录。
六 实验总结
整个设计通过了软件和硬件上的调试,基本上完成了试验任务的要求。我想这对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误
9
思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。对于教材管理系统,其程序是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
10
参考文献
[1] 多单片机系统应用技术[M]( 宗光华,李大寨编著.北京:国防工业出版社,2003.10
赵亮,侯国锐编著(北京:人民邮电出版社,2003.9 [2] 单片机C语言编程与实例[M](
[3] 单片机技术实用教程[M]( 胡锦等编著(北京:高等教育出版社,2003
[4] IAR System[M]( M SP430 C Complier Programming Guide Dallas TX:TI,1996 [5] 单片机原理及应用[M](孙涵芳等编著( 北京:北京航空航天大学出版社,1998 [6] Digital Signal Processing[M]( Paulo S(R(Diniz(电子工业出版社,2002 [7] 实用计算机控制技术[M](王新贤 (济南:山东科学技术出版社,1994 [8] 数字电路与逻辑设计[M](邓元庆(北京:电子工业出版社,2001 [9] 电子设计自动化[M](刘润华(北京:石油大学出版社,2001
[10] 单片微型计算机技术[M]( 刘国荣主编(北京:机械工业出版社,1996
[11] 单片机原理及应用[M](刘大茂主编( 上海:上海交通大学出版社,2001
单片机主函数以及一些主要的子函数
#include #include "delay.h" #include "display.h" #define AddWr 0x90 //写数据地址 #define AddRd 0x91 //读数据地址 #define uchar unsigned char #define uint unsigned int unsigned char const dofly[]={0x3f,0,0x06,1,0x5b,2,0x4f,3,0x66,4,0x6d,5,0x7d,6,0x07,7,0x7f,8,0x6f,9, 0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F sbit SPK=P1^0; extern bit ack; 11 unsigned int i,j; unsigned int A1,A2,A3,A4,A5,A6; uchar key,count; char miao,shi,fen; unsigned char ReadADC(unsigned char Chl); bit WriteDAC(unsigned char dat); uchar keyscan(void); /*------------------------------------------------ 主程序 ------------------------------------------------*/ main() { unsigned char num=0; unsigned char num1=0; Init_Timer0(); fen=0; miao=0; shi=0; count=0; TMOD |=0x01;//定时器设置 10ms in 12M crystal,工作在模式1,16位定时 TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET1=1; //打开中断 TR1=1; //打开定时开关 while (1) //主循环 { j=0;A4=0;A5=0;A6=0; key=keyscan(); if (key==0xdb){//进入设定 TempData[0]=dofly_DuanMa[num1/100]; TempData[1]=dofly_DuanMa[(num1%100)/10]; 12 TempData[2]=dofly_DuanMa[(num1%100)%10]; TempData[3]=0x00; TempData[4]=0x00; TempData[5]=0x00; while(1){ key=keyscan(); if(key == 0xd7) { //确定 TempData[0]=0x3f; TempData[1]=0x3f; TempData[2]=0x3f; TempData[3]=0x00; TempData[4]=0x00; TempData[5]=0x00; A1 =A4*100+ A5*10 +A6 ; A4=0;A5=0;A6=0; break; } if((key ==0xe7)||(key == 0x7d)||(key ==0x7b)||(key ==0x77)||(key ==0xbe)||(key ==0xbd)||(key ==0xbb)||(key ==0xb7)||(key == 0xde)||(key == 0xdd)) { DelayMs(2000); switch(key) { case 0xe7:key=dofly[0];j=0;break;//0 按下相应的键显示相对应的码值 case 0x7d:key=dofly[2];j=2;break;//1 case 0x7b:key=dofly[4];j=4;break;//2 case 0x77:key=dofly[6];j=6;break;//3 case 0xbe:key=dofly[8];j=8;break;//4 case 0xbd:key=dofly[10];j=10;break;//5 case 0xbb:key=dofly[12];j=12;break;//6 13 case 0xb7:key=dofly[14];j=14;break;//7 case 0xde:key=dofly[16];j=16;break;//8 case 0xdd:key=dofly[18];j=18;break;//9 } TempData[2] = TempData[1] ; TempData[1] = TempData[0] ; TempData[0] = key; A6=A5; A5=A4; A4=dofly[j+1]; } } DelayMs(2000); while(1){ key=keyscan(); if(key == 0xd7){ //确定 TempData[0]=0x3f; TempData[1]=0x3f; TempData[2]=0x3f; A2 =A4*100+ A5*10 +A6 ; A4=0;A5=0;A6=0; break; } if((key ==0xe7)||(key == 0x7d)||(key ==0x7b)||(key ==0x77)||(key ==0xbe)||(key ==0xbd)||(key ==0xbb)||(key ==0xb7)||(key == 0xde)||(key == 0xdd)) { DelayMs(2000); switch(key) { 14 case 0xe7:key=dofly[0];j=0;break;//0 case 0x7d:key=dofly[2];j=2;break;//1 case 0x7b:key=dofly[4];j=4;break;//2 case 0x77:key=dofly[6];j=6;break;//3 case 0xbe:key=dofly[8];j=8;break;//4 case 0xbd:key=dofly[10];j=10;break;//5 case 0xbb:key=dofly[12];j=12;break;//6 case 0xb7:key=dofly[14];j=14;break;//7 case 0xde:key=dofly[16];j=16;break;//8 case 0xdd:key=dofly[18];j=18;break;//9 } TempData[2] = TempData[1] ; TempData[1] = TempData[0] ; TempData[0] = key; A6=A5; A5=A4; A4=dofly[j+1]; } } DelayMs(2000); while(1){ key=keyscan(); if(key == 0xd7){ //确定 TempData[0]=0x3f; TempData[1]=0x3f; TempData[2]=0x3f; A3 =A4*100+ A5*10 +A6 ; break; } if((key ==0xe7)||(key == 0x7d)||(key ==0x7b)||(key ==0x77)||(key 15 ==0xbe)||(key ==0xbd)||(key ==0xbb)||(key ==0xb7)||(key == 0xde)||(key == 0xdd)) { DelayMs(2000); switch(key) { case 0xe7:key=dofly[0];j=0;break;//0 case 0x7d:key=dofly[2];j=2;break;//1 case 0x7b:key=dofly[4];j=4;break;//2 case 0x77:key=dofly[6];j=6;break;//3 case 0xbe:key=dofly[8];j=8;break;//4 case 0xbd:key=dofly[10];j=10;break;//5 case 0xbb:key=dofly[12];j=12;break;//6 case 0xb7:key=dofly[14];j=14;break;//7 case 0xde:key=dofly[16];j=16;break;//8 case 0xdd:key=dofly[18];j=18;break;//9 } TempData[2] = TempData[1] ; TempData[1] = TempData[0] ; TempData[0] = key; A6=A5; A5=A4; A4=dofly[j+1]; } } } DelayMs(100); num=255-ReadADC(0); //值取差值,用于显示光强越小,数值越小 key=keyscan(); if(key!=0xeb){ TempData[0]=dofly_DuanMa[num/100]; TempData[1]=dofly_DuanMa[(num%100)/10]; TempData[2]=dofly_DuanMa[(num%100)%10]; TempData[3]=0x00; 16 TempData[4]=0x00; TempData[5]=0x00;} else{ TempData[0]=dofly_DuanMa[shi/10]; TempData[1]=dofly_DuanMa[shi%10]; TempData[2]=dofly_DuanMa[fen/10]; TempData[3]=dofly_DuanMa[fen%10]; TempData[4]=dofly_DuanMa[miao/10]; TempData[5]=dofly_DuanMa[miao%10]; } key=keyscan(); if((num>=A2||num<=a3)&&(key!=0xed)){>=a3)&&(key!=0xed)){> for(i=0;i<2;i++) 喇叭发声的时间循环,改变大小可以改变发声时间长短="">2;i++)> { DelayMs(50); //参数决定发声的频率,估算值,可以自行更改参数并 SPK=!SPK; } SPK=1; //喇叭停止工作,间歇的时间,可更改 DelayMs(10); } DelayMs(100); }} void timer1() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; count++; if(count==150) { count=0; 17 miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } } } } } /*------------------------------------------------ 读AD转值程序 输入参数 Chl 表示需要转换的通道,范围从0-3 返回值范围0-255 ------------------------------------------------*/ unsigned char ReadADC(unsigned char Chl) { unsigned char Val; Start_I2c(); //启动总线 SendByte(AddWr); //发送器件地址 if(ack==0)return(0); SendByte(0x40|Chl); //发送器件子地址 if(ack==0)return(0); Start_I2c(); 18 SendByte(AddWr+1); if(ack==0)return(0); Val=RcvByte(); NoAck_I2c(); //发送非应位 Stop_I2c(); //结束总线 return(Val); } uchar keyscan(void) //键盘扫描函数,使用行列反转扫描法 { uchar cord_h,cord_l;//行列值中间变量 P3=0x0f; //行线输出全为0 cord_h=P3&0x0f; //读入列线值 if(cord_h!=0x0f) //先检测有无按键按下 { DelayUs2x(100); //去抖 if(cord_h!=0x0f) { cord_h=P3&0x0f; //读入列线值 P3=cord_h|0xf0; //输出当前列线值 cord_l=P3&0xf0; //读入行线值 return(cord_h+cord_l);//键盘最后组合码值 } }return(0xff); //返回该值 } 19