多路呼叫器课程设计.docx
《多路呼叫器课程设计.docx》由会员分享,可在线阅读,更多相关《多路呼叫器课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
多路呼叫器课程设计
课程设计说明书
2011/2012学年第2学期
学院:
电子与计算机科学技术学院
专业:
微电子学
学生姓名:
学号:
课程设计题目:
多路呼叫器
起迄日期:
2012年5月28日~2012年6月22日
课程设计地点:
电子科学与技术专业实验室
指导教师:
系 主 任:
下达任务书日期:
2012年5月28日
目录
一、课程设计目的......................................3
二、课程设计内容与要求................................3
三、设计方案..........................................3
1、整体设计.........................................3
2、硬件设计.........................................4
2.1电路原理图....................................4
2.2元器件列表....................................6
3、软件设计.........................................6
3.1程序流程图......................................6
3.2程序源代码......................................7
四、实验结果........................................10
4.1仿真图与仿真结果................................10
4.2印刷板图......................................14
4.33D板图........................................14
五、课程设计总结.....................................15
六、参考文献.........................................15
一、课程设计目的:
1掌握电子系统的一般设计方法和设计流程;
2学习使用PROTEL软件绘制电路原理图及印刷板图;
3掌握应用Protues等软件对所设计的电路进行仿真,通过仿真结果验证设计的正确性。
二、课程设计内容与要求
设计一个多路呼叫器,具体要求如下:
1.N个按键模拟N个呼叫源(N>=4)。
2.当有一个按键按下时,由数码管显示呼叫源号码。
3.当有多个呼叫同时发生时,用指示灯指明多个呼叫源在同时呼叫,并按优先级顺序由数码管显示多个呼叫源号码。
1号呼叫源优先级最高,按顺序N号呼叫源优先级最低。
三、设计方案
1、整体设计
临床求助呼叫(监护)是传送临床信息的重要手段,病房呼叫系统是病人请求值班医生或护士进行诊断和护理的紧急呼叫工具,可将病人的请求快速传送给值班医生或护士,并在值班室的监控中心电脑上留下准确完整的记录,是提高医院和病室护理水平的必备设备之一。
呼叫系统的优劣直接关系到病员的安危,历来受到各大医院的普遍重视。
它要求及时、准确、可靠、简便可行。
本呼叫系统基于Ateml89C51单片机,振荡电路的晶振采用12MHz,由控制核心Ateml89C51单片机、电源电路、振荡电路、复位电路、数码管解码芯片、病房选择和七段数码管等部分组成,系统框图3.1.1:
图3.1.1
2、硬件设计
2.1电路原理图
工作原理为:
电源电路为单片机以及其他模块提供5V电源。
晶振模块为单片机提供时钟标准,使系统各部分能协调工作。
复位电路模块为单片机系统提供复位功能。
单片机作为主控制器,根据输入信号对系统进行相应的控制。
病房一共为四个,从1号病房到4号病房病人的情况由重到轻,即1号病房的优先级最高,4号病房的优先级最低。
所以,当有两个病房一起呼叫时,优先级高的病房号显示;当低优先级的病房呼叫完毕后高优先级的病房呼叫,系统显示的号码改变;当优先级高的病房呼叫完毕后工作人员未复位的情况下,低优先级的病房呼叫无效。
另外,当有病房呼叫时蜂鸣器响直至复位。
此次设计的电路如附录图2.1.1,图2.1.2
图2.1.1
图2.1.2
2.2元器件列表如表2.2.1
表2.2.1
3、软件设计
3.1程序流程图
程序流程图如图3.1.1:
图3.1.1
3.2程序源代码:
#include
#defineucharunsignedchar
sbitkey4=P3^0;//定义按键位置
sbitkey3=P3^1;
sbitkey2=P3^2;
sbitkey1=P3^3;
sbitreset=P1^5;//复位
sbitBEEP=P1^7;//定义蜂鸣器端口
sbitleed=P1^6;//定义指示灯
ucharflag,i;
ucharflag,j;
voidchoice();
voidclean();
voiddelay();
voidde();
voidring();
voidmain()
{
while
(1)
{
P3=0xff;//定义P3口为高电平
leed=0;//指示灯为低电平
reset=0;//定义P3.4口为低电平
BEEP=0;//定义P1.7口为低电平
flag=0;
choice();
delay();
clean();
}
}
voidchoice()//确定病人
{while(reset!
=1&&flag==0)
{
if(key1==0)
{
de();
if(key1==0)
{P0=0X86;flag=1;}//OX86=10000110B,数码管显示1
}
elseif(key2==0)
{
de();
if(key2==0&&key1!
=0)
{P0=0Xdb;flag=1;}//OXdb=11011011,数码管显示2
}
elseif(key3==0)
{
de();
if(key3==0&&key1!
=0&&key2!
=0)
{P0=0Xcf;flag=1;}//OXcf=11001111,数码管显示3
}
elseif(key4==0)
{
de();
if(key4==0&&key1!
=0&&key2!
=0&&key3!
=0)
{P0=0Xe6;flag=1;}//OXe6=11100110,数码管显示4
}
}
}
voidclean()//RESET为高的时候复位
{
if(reset==1)
{
BEEP=0;//蜂鸣器端口置0,停止蜂鸣
P0=0x3f;//OX3f=00111111,数码管显示0
leed=0;
}
}
voiddelay()//RESET为低的时候延时
{
while(!
reset)
{
ring();//复位端为低电平时延时
}
}
voidring()
{
for(i=0;reset==0;i++)//喇叭发声的时间循环,直到复位端为低电平停止发声
{
de();
BEEP=!
BEEP;//蜂鸣
if(key1==0||key2==0||key3==0)//第二次呼叫
{
if(P3==0Xf7||P3==0Xfb||P3==0Xfd||P3==0Xfe||P3==0Xff)
leed=0;
else
leed=1;
if(P0==0X86)//如果数码管显示1,无论键任何键
P0=0X86;//显示1不变
elseif(P0==0Xdb&&key1==0)//如果数码管显示2,键k1
P0=0X86;//数码管显示1
elseif(P0==0Xcf&&key1==0)//如果数码管显示3,键k1
P0=0X86;//数码管显示1
elseif(P0==0Xcf&&key1==1&&key2==0)//如果数码管显示3,不键k1,键k2
P0=0Xdb;//数码管显示2
elseif(P0==0Xe6&&key1==0)//如果数码管显示4,键k1
P0=0X86;//数码管显示1
elseif(P0==0Xe6&&key1==1&&key2==0)//如果数码管显示4,不键k1,键k2
P0=0Xdb;//数码管显示2
elseif(P0==0Xe6&&key1==1&&key2==1&&key3==0)//如果数码管显示4,不键k1,不键k2,键k3
P0=0Xcf;//数码管显示3
}
}
}
voidde()
{
for(i=300;i>0;i--);
}
四、实验结果
4.1、仿真图与仿真结果
1、未通电,如图4.1.1:
图4.1.1
2、通电:
初始状态晶体管显示0,如图4.1.2
图4.1.2
3、低优先级病房先呼叫:
键4,晶体管显示4,蜂鸣器响,表示4号有呼叫,如图4.1.3。
图4.1.3
高优先级病房后呼叫:
按4后,再键3,晶体管显示3,蜂鸣器响,指示灯D2亮,表示有多个呼叫,如图4.1.4。
图4.1.4
4、高优先级病房先呼叫:
键1,晶体管显示1,蜂鸣器响,如图4.1.5。
图4.1.5
低优先级病房后呼叫:
1的优先级最高,键K1后,显示管显示1,蜂鸣器响,由于2,3的优先级均比1低,故键K2、K3后仍显示1,指示灯亮,表示有多个呼叫,如图4.1.6。
图4.1.6
5、有多个病房同时呼叫:
键K1,K2,K3,K4,表示1,2,3,4号同时呼叫,蜂鸣器响,晶体管按最优先级顺序显示,即显示1,指示灯亮,表示有多个呼叫,如图4.1.7。
图4.1.7
4.2、印刷板图
图4.2.1
4.3、3D板图
图4.3.1
五、总结
本呼叫系统基于Ateml89C51单片机,振荡电路的晶振采用12MHz,由控制核心Ateml89C51单片机、电源电路、振荡电路、复位电路、数码管解码芯片、病房选择和七段数码管等部分组成,此次编程我全部采用了C语言,是因为相对于汇编语言而言,C语言思路更加清晰。
在做的过程中也出现过一些错误,但通过实验老师的指导和自己的反复修改,最终仿真结果符合要求。
六、参考文献
主要参考文献:
①童诗白.模拟电子技术基础.北京:
高等教育出版社,2002
②张建华.数字电子技术.北京:
机械工业出版社,2004
③陈汝全.电子技术常用器件应用手册.北京:
机械工业出版社,2005
④毕满清.电子技术实验与课程设计.北京:
机械工业出版社,2005
⑤潘永雄.电子线路CAD实用教程.西安:
西安电子科技大学出版社,2002
⑥张亚华.电子电路计算机辅助分析和辅助设计.北京:
航空工业出版社,2004