版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告(本科/专科)课程:单片机课程设计学号:09104210100910421050姓名:肖国健王合杰班级:09普本非师范班教师:刘乐群时间:2012.4.20计算机科学与技术系设计名称:病房救护系统设计内容、目的与要求:本系统利用单片机(at89c51芯片)为控制核心,由按键模块、系统控制模块、床号显示模块、声光提示模块以及电源模块构成。其中,按键模块采用8*8矩阵键盘模式,显示模块采用动态led显示,系统主要通过软件控制实现了所有硬件功能。当病人紧急呼叫是,会产生声、光提示,并显示病人编号,以便医护人员及时处理。(1)设计一个可容64张床位的病房呼救系统。(2)要求每个床位都有一个
2、按钮,当护着需要呼叫护士时,按下按钮。此时护士值班室内的呼叫系统板上显示该患者的床位号。当护士按下“相应”键时,取消当前呼叫。计划与进度安排:第一阶段:查阅资料,查找相关书籍 。第二阶段:proteus软件设计,画出实验图 。第三阶段:编写相应代码,并与 proteus连接,调试程序。第四阶段: 调试完整的程序代码,填写实验报告。设计过程、步骤(可加页):由于需要比较多的输入输出口,所有采用内部存储系统资源比较多的at89c51单片机,2位led动态显示,需要10根数据线,其中8根作为位选线,相当于地址线,选择其中一位显示,另外2跟作为led显示码输入线。 根据按键要求,每个床位需要一个按钮,
3、共64个。扬声器可以用一个准i/o。采用at89c51作为运算和控制单元完全没满足系统的需求。如图1所示。图1 at89c511. 电路设计(1) 复位电路:rst引脚是复位信号输入端吗,高电平有效。采用上点复位,因为本系统设计的值班室“响应按钮”具有复位键,所以不需要进行手动复位,以节省资源,如图2所示图2 复位设计(2) 时钟电路:时钟是时序的基础,时钟可以由两种方式产生,内部方式和外部方式。本系统采用内部方式,在xtal1和xtal2端外接石英芯片作为定时原件。内部反向放大器自激震荡,产生时钟。时钟发生器对震荡脉冲二分频。电容采用33pf电容。如图3所示。 图3 时钟电路设计(3) 数码
4、显示电路:采用2位8段共阴极led,p0口作为led显示码输出端,p3.0、p3.1口接线选端,如图4。图4 数码显示设计(4) 键盘开关矩阵设计:由于都使用按钮形式,每个病房一个按钮,当病人有紧急情况是按下响应按钮,值班室便会及时找到该病人,如图5所示。图5 键盘矩阵设计(5) 提示电路的设计:采用发光二极管和嗡鸣器相串联,用三极管加限流电阻作为控制开关,用单片机p3.7端口控制,当有高电平导通,二极管发光同时嗡鸣器发出“嘀嘀”声作为呼叫提示。电路连接图如6图所示。图6 提示设计2系统软件设计(1) 病房呼叫系统结构设计图7 系统结构设计图8 系统结构框图图9 硬件构成示意图(2) 系统初始
5、化及呼叫过程启动系统后,系统进行初始化,此时,单片机执行ea=1; /开总中断et0=1; /定时器t0中断允许 tmod=0x01; /使用定时器t0的模式1th0=(65536-500)/256; /定时器t0的高8位赋初值tl0=(65536-500)%256; /定时器t0的高8位赋初值tr0=1; /启动定时器t0keyval=0x00; /按键值初始化为0ex0=1; /允许使用外中断 it0=1; /选择负跳变来触发外中断系统进行初始化后led显示00,等待呼叫,如图10所示。图10 初始化显示(3)数码管显示过程接通led的端口输出响应,连接响铃speaker的p3.7端位置,
6、led显示按钮所带变得床位,响铃发出报警响声,提醒值班室的人眼有病人出现紧急情况。如图所示,比如24号按下按钮,led显示24,响铃如图。图11 病房显示程序如下:void display(unsigned char k) p3=0xfe; /点亮数码管1 p0=tabk/10; /显示十位 led_delay(); /动态扫描延时 p3=0xfd; /点亮数码管2 p0=tabk%10; /显示个位 led_delay(); /动态扫描延时 if(keyval!=0x00) p=0; (4)延时程序设计 void led_delay(void) unsigned char j;for(j=0
7、;j200;j+) ; (5)键盘扫描过程端口p2进行键盘横向扫描,初始化后输出高电平。p0端口扫描键盘列向,当有按钮按下时,按钮左右电路接听,有信号输入。void time0_interserve(void) interrupt 1 using 1 tr0=0; /关闭定时器t0 p1=0xff; /所有列线置为高电平? p2=0x00; /所有行线置为低电平“0”?” if(p1&0xff)!=0xff) /列线中有一位为低电平“0”,说明有键按下 delay20ms(); /延时一段时间、软件消抖 if(p1&0xff)!=0xff) /确实有键按下 p2=0xfe; /第一行置为低电平
8、“0”(p1.1出低电平“0”) if(p1=0xfe) keyval=1; /可判断是s1键被按下 if(p1=0xfd) keyval=2; /可判断是s2键被按下 if(p1=0xfb) keyval=3; /可判断是s3键被按下 if(p1=0xf7) keyval=4; /可判断是s4键被按下 if(p1=0xef) keyval=5; /可判断是s5键被按下 if(p1=0xdf) keyval=6; /可判断是s6键被按下 if(p1=0xbf) keyval=7; /可判断是s7键被按下 if(p1=0x7f) keyval=8; /可判断是s8键被按下 p2=0xfd; /第
9、二行置为低电平“0”(p1.1出低电平“0”) if(p1=0xfe) keyval=9; /可判断是s9键被按下 if(p1=0xfd) keyval=10; /可判断是s10键被按下 if(p1=0xfb) keyval=11; /可判断是s11键被按下 if(p1=0xf7) keyval=12; /可判断是s12键被按下 if(p1=0xef) keyval=13; /可判断是s13键被按下 if(p1=0xdf) keyval=14; /可判断是s14键被按下 if(p1=0xbf) keyval=15; /可判断是s15键被按下 if(p1=0x7f) keyval=16; /可判
10、断是s16键被按下 p2=0xfb; /第三行置为低电平“0”(p1.2输出低电平“0”) if(p1=0xfe) keyval=17; /可判断是s17键被按下 if(p1=0xfd) keyval=18; /可判断是s18键被按下 if(p1=0xfb) keyval=19; /可判断是s19键被按下 if(p1=0xf7) keyval=20; /可判断是s20键被按下 if(p1=0xef) keyval=21; /可判断是s21键被按下 if(p1=0xdf) keyval=22; /可判断是s22键被按下 if(p1=0xbf) keyval=23; /可判断是s23键被按下 if
11、(p1=0x7f) keyval=24; /可判断是s24键被按下 p2=0xf7; /第三行置为低电平“0”(p1.2输出低电平“0 if(p1=0xfe) keyval=25; /可判断是s25键被按下 if(p1=0xfd) keyval=26; /可判断是s26键被按下 if(p1=0xfb) keyval=27; /可判断是s27键被按下 if(p1=0xf7) keyval=28; /可判断是s28键被按下 if(p1=0xef) keyval=29; /可判断是s29键被按下 if(p1=0xdf) keyval=30; /可判断是s30键被按下 if(p1=0xbf) keyv
12、al=31; /可判断是s31键被按下 if(p1=0x7f) keyval=32; /可判断是s32键被按下 p2=0xef; /第一行置为低电平“0”(p1.1出低电平“0”) if(p1=0xfe) keyval=33; /可判断是s33键被按下 if(p1=0xfd) keyval=34; /可判断是s34键被按下 if(p1=0xfb) keyval=35; /可判断是s35键被按下 if(p1=0xf7) keyval=36; /可判断是s36键被按下 if(p1=0xef) keyval=37; /可判断是s37键被按下 if(p1=0xdf) keyval=38; /可判断是s
13、38键被按下 if(p1=0xbf) keyval=39; /可判断是s39键被按下 if(p1=0x7f) keyval=40; /可判断是s40键被按下 p2=0xdf; /第二行置为低电平“0”(p1.1出低电平“0”) if(p1=0xfe) keyval=41; /可判断是s41键被按下 if(p1=0xfd) keyval=42; /可判断是s42键被按下 if(p1=0xfb) keyval=43; /可判断是s43键被按下 if(p1=0xf7) keyval=44; /可判断是s44键被按下 if(p1=0xef) keyval=45; /可判断是s45键被按下 if(p1=
14、0xdf) keyval=46; /可判断是s46键被按下 if(p1=0xbf) keyval=47; /可判断是s47键被按下 if(p1=0x7f) keyval=48; /可判断是s48键被按下 p2=0xbf; /第三行置为低电平“0”(p1.2输出低电平“0”) if(p1=0xfe) keyval=49; /可判断是s49键被按下 if(p1=0xfd) keyval=50; /可判断是s50键被按下 if(p1=0xfb) keyval=51; /可判断是s51键被按下 if(p1=0xf7) keyval=52; /可判断是s52键被按下 if(p1=0xef) keyval
15、=53; /可判断是s53键被按下 if(p1=0xdf) keyval=54; /可判断是s54键被按下 if(p1=0xbf) keyval=55; /可判断是s55键被按下 if(p1=0x7f) keyval=56; /可判断是s56键被按下 p2=0x7f; /第三行置为低电平“0”(p1.2输出低电平“0 if(p1=0xfe) keyval=57; /可判断是s57键被按下 if(p1=0xfd) keyval=58; /可判断是s58键被按下 if(p1=0xfb) keyval=59; /可判断是s59键被按下 if(p1=0xf7) keyval=60; /可判断是s60键
16、被按下 if(p1=0xef) keyval=61; /可判断是s61键被按下 if(p1=0xdf) keyval=62; /可判断是s62键被按下 if(p1=0xbf) keyval=63; /可判断是s63键被按下 if(p1=0x7f) keyval=64; /可判断是s64键被按下 tr0=1; /开启定时器t0 th0=(65536-500)/256; /定时器t0的高8位赋初值 tl0=(65536-500)%256; /定时器t0的高8位赋初值 (4)响应过程当有呼叫发出是,值班室人员收到相应信息后,可按下“响应按钮”,单片机执行中断程序。void time0(void) i
17、nterrupt 0 using 0 keyval=0x00;按钮按下时,intr0端口接地,发出中断指令,使p3.7响铃结束,led回到00,如图。图12 复位按键设计结果与分析(可以加页): 1. 系统全局图图13 系统全局图2. 当64号病房紧急呼叫时,显示器显示64并且系统发出警报音图14 病房显示3. 当值班人员响应呼叫时,按下复位键(即响应按键)时,显示器复位,等待下一个病房呼叫。图15 复位显示图16 复位按钮设计体会与建议: 经过这些天的分析,设计和制作,我们终于成功的完成了病房呼救系统。半月的单片机课程设计,让我对proteus软件的使用有了基本的掌握,在对题目的分析过程中,
18、对以前所学的知识特别是单片机知识回顾的过程也对proteus和keil uvision2有了更深层次的理解和领悟。在使用proteus软件画图时,对自己将理论知识运用到实际已经形成严谨思维都有很大帮助。通过翻阅资料,对单片机的知识也有了进一步的认识。在设计过程中,遇到了不少问题,老是和同学的讲解给了我很大的帮助,让我进一步认识到了同学的帮助及相互合作的重要性。这个课程设计对自己的思考及动手能力的提高有一定的帮助,对我们在步入社会之前得到锻炼。附录:实验源程序#include /包含51单片机寄存器定义的头文件unsigned char code tab =0xc0,0xf9,0xa4,0xb0
19、,0x99,0x92,0x82,0xf8,0x80,0x90; /数字09的段码unsigned char keyval; /定义变量储存按键值sbit p=p37;/*函数功能:数码管动态扫描延时*/void led_delay(void) unsigned char j;for(j=0;j200;j+) ; /*函数功能:按键值的数码管显示子程序*/ void display(unsigned char k) p3=0xfe; /点亮数码管1 p0=tabk/10; /显示十位 led_delay(); /动态扫描延时 p3=0xfd; /点亮数码管2 p0=tabk%10; /显示个位
20、led_delay(); /动态扫描延时 if(keyval!=0x00) p=0; /*函数功能:软件延时子程序*/ void delay20ms(void) unsigned char i,j;for(i=0;i100;i+) for(j=0;j60;j+) ; /*函数功能:主函数*/ void main(void) ea=1; /开总中断et0=1; /定时器t0中断允许 tmod=0x01; /使用定时器t0的模式1th0=(65536-500)/256; /定时器t0的高8位赋初值tl0=(65536-500)%256; /定时器t0的高8位赋初值tr0=1; /启动定时器t0ke
21、yval=0x00; /按键值初始化为0ex0=1; /允许使用外中断 it0=1; /选择负跳变来触发外中断/p1=0xff; while(1) /无限循环 display(keyval); /调用按键值的数码管显示子程序/*函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位*/ void time0_interserve(void) interrupt 1 using 1 tr0=0; /关闭定时器t0 p1=0xff; /所有列线置为高电平? p2=0x00; /所有行线置为低电平“0”?” if(p1&0xff)!=0xff) /列线中有一位为低电平“0”,说明有键按下 del
22、ay20ms(); /延时一段时间、软件消抖 if(p1&0xff)!=0xff) /确实有键按下 p2=0xfe; /第一行置为低电平“0”(p1.1出低电平“0”) if(p1=0xfe) keyval=1; /可判断是s1键被按下 if(p1=0xfd) keyval=2; /可判断是s2键被按下 if(p1=0xfb) keyval=3; /可判断是s3键被按下 if(p1=0xf7) keyval=4; /可判断是s4键被按下 if(p1=0xef) keyval=5; /可判断是s5键被按下 if(p1=0xdf) keyval=6; /可判断是s6键被按下 if(p1=0xbf)
23、 keyval=7; /可判断是s7键被按下 if(p1=0x7f) keyval=8; /可判断是s8键被按下 p2=0xfd; /第二行置为低电平“0”(p1.1出低电平“0”) if(p1=0xfe) keyval=9; /可判断是s9键被按下 if(p1=0xfd) keyval=10; /可判断是s10键被按下 if(p1=0xfb) keyval=11; /可判断是s11键被按下 if(p1=0xf7) keyval=12; /可判断是s12键被按下 if(p1=0xef) keyval=13; /可判断是s13键被按下 if(p1=0xdf) keyval=14; /可判断是s1
24、4键被按下 if(p1=0xbf) keyval=15; /可判断是s15键被按下 if(p1=0x7f) keyval=16; /可判断是s16键被按下 p2=0xfb; /第三行置为低电平“0”(p1.2输出低电平“0”) if(p1=0xfe) keyval=17; /可判断是s17键被按下 if(p1=0xfd) keyval=18; /可判断是s18键被按下 if(p1=0xfb) keyval=19; /可判断是s19键被按下 if(p1=0xf7) keyval=20; /可判断是s20键被按下 if(p1=0xef) keyval=21; /可判断是s21键被按下 if(p1=
25、0xdf) keyval=22; /可判断是s22键被按下 if(p1=0xbf) keyval=23; /可判断是s23键被按下 if(p1=0x7f) keyval=24; /可判断是s24键被按下 p2=0xf7; /第三行置为低电平“0”(p1.2输出低电平“0 if(p1=0xfe) keyval=25; /可判断是s25键被按下 if(p1=0xfd) keyval=26; /可判断是s26键被按下 if(p1=0xfb) keyval=27; /可判断是s27键被按下 if(p1=0xf7) keyval=28; /可判断是s28键被按下 if(p1=0xef) keyval=2
26、9; /可判断是s29键被按下 if(p1=0xdf) keyval=30; /可判断是s30键被按下 if(p1=0xbf) keyval=31; /可判断是s31键被按下 if(p1=0x7f) keyval=32; /可判断是s32键被按下 p2=0xef; /第一行置为低电平“0”(p1.1出低电平“0”) if(p1=0xfe) keyval=33; /可判断是s33键被按下 if(p1=0xfd) keyval=34; /可判断是s34键被按下 if(p1=0xfb) keyval=35; /可判断是s35键被按下 if(p1=0xf7) keyval=36; /可判断是s36键被
27、按下 if(p1=0xef) keyval=37; /可判断是s37键被按下 if(p1=0xdf) keyval=38; /可判断是s38键被按下 if(p1=0xbf) keyval=39; /可判断是s39键被按下 if(p1=0x7f) keyval=40; /可判断是s40键被按下 p2=0xdf; /第二行置为低电平“0”(p1.1出低电平“0”) if(p1=0xfe) keyval=41; /可判断是s41键被按下 if(p1=0xfd) keyval=42; /可判断是s42键被按下 if(p1=0xfb) keyval=43; /可判断是s43键被按下 if(p1=0xf7) keyval=44; /可判断是s44键被按下 if(p1=0xef) keyval=45; /可判断是s45键被按下 if(p1=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版港口物流中心运营合同
- 2025年度安全生产标准化咨询服务及现场指导合同3篇
- 2024生物质锅炉余热回收利用项目合作协议3篇
- 2025年度大理石地暖系统设计与施工合同3篇
- 2024软件系统销售合同系统购买合同
- 2024物业企业服务能力提升与市场拓展合作协议3篇
- 敦煌壁画与文创知到智慧树章节测试课后答案2024年秋酒泉职业技术学院
- 森林防火施工员聘用协议
- 建筑工程节能改造合同
- 别墅锌钢栏杆安装施工协议
- 服务推广合同协议(2025年)
- 中国保险行业协会官方-2023年度商业健康保险经营数据分析报告-2024年3月
- 新人教版小学三年级数学上册知识点整理归纳培训课件
- 霉菌性阴道炎VVC的分类及诊治
- 预制舱技术方案思源弘瑞课件
- 四年级科学《运动与摩擦力》说课课件
- 诉讼费退费确认表
- 全球变暖视野下中国与墨西哥的能源现状分析
- 新外研版八年级上册英语全册教案(教学设计)
- 2022年(高级)茶艺师职业资格考试参考题库-下(多选、判断题部分)
- 边坡安全施工组织方案
评论
0/150
提交评论