1、 - 单片机原理与接口技术 课程设计报告 课程设计名称:医院住院病人呼叫器设计 学院: 信息工程学院 班级:通信0802班 :马 滔 学号:2021001307 同组人:童 辉 -
2、 word.zl - - 目 录 一、课题名称及设计技术指标2 1〕课题名称2 2〕设计技术指标
3、2 二、总体方案设计与论证2 三、程序设计及调试3 1〕主程序3 2〕T0中断:5 3〕暂停程序6 4〕重新显示中断7 四、电路设计及器件选择8 1〕电路设计主图8 2〕器件清单8 3〕器件简介8 80C51 8 七段数码管11 蜂鸣器12 复位电路13 电源电路13 五、电路仿真13 六、调试运行及结果14 七、课设心得14 八、参考资料15 九、源程序代码16 - word.zl -
4、 - 一、课题名称及设计技术指标 1〕课题名称 医院住院病人呼叫器设计 2〕设计技术指标 1) 能同时检测8个床位的病人呼叫 2) 显示病人呼叫总数 3) 循环显示呼叫病人的床号 4) 可以暂停显示 5) 具有重新显示功能 6〕在复位电路的作用下,复位单
5、片机 7〕使暂停功能的优先级高于重显功能,重显功能优先级高于定时功能 二、总体方案设计与论证 本方案选用80c51单片机,P1口依次连接病人床位,实时检测P1口的信号。假设与前一次的信号不一样,那么判断端口是否为0。如果没有病人呼叫那么关蜂鸣器;如果有病人呼叫翻开蜂鸣器提示一户人员, 统计病人总数同时显示总数,统计病人床位并保存。 开启定时器进展循环显示床号,在显示的空闲时间继续检测P1口的端口状态。如果有病人呼叫或者呼叫完毕重新开场统计总数和床号,显示床号和总数。 重新显示时,只循环显示一次床号和总数。利用外中断1实现中断跳转执行重显程序。 暂停功能,用外中断0引入,通过检
6、查P3.3的值完毕暂停。 使用74ls373锁存器驱动七段数码管显示器,可以不用单片机实时刷新七段数码管显示。通过输出码表中的值显示相应的数字。 51单片机拥有5个中断源,其中两个定时/计数器中断,两个外部中断。能够实现上述对单片机的控制功能。同时可以通过设定PI存放器的值设定优先级。 本方案可以通过参加接口扩展芯片,扩展检测病人数量。同时参加T1中断后可以实现多种蜂鸣声音报警。具有很强的扩展能力。 具体思路详见程序流程图 三、程序设计及调试 在waves6000按照流程图依次编写主程序、T0中断程序、暂停程序和重新显示程序。进展编译调试。程序附在最后 程序流程图如下
7、 1〕主程序: 2〕T0中断: 3〕暂停程序: 4〕重新显示中断: 四、电路设计及器件选择 1〕电路设计主图 2〕器件清单 器件名称 80c51单片机 晶体管 蜂鸣器 电阻 七段数码管 电容 开关 220v交流电或者5v直流电源 3〕器件简介 80C51 80C51单片机属于MCS-51系列单片机,由Intel公司开发,其构造是8048的延伸,改良了8048的缺点,增加了如乘〔MUL〕、除〔DIV〕、减〔SUBB〕、比拟〔PUSH〕、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。采用40引
8、脚双列直插式DIP〔Dual In Line Package〕,有128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心。 选型表 特性 y 80C51 核心处理单元 4k 字节FLASH 89C51X2 8k 字节FLASH 89C52X2 16k 字节FLASH 8
9、9C54X2 32k 字节FLASH 89C58X2 128 字节RAM 89C51X2 256 字节RAM 89C52X2/54X2/58X2 布尔处理器 Vss(20脚):接地 VCC〔40脚〕: 主电源+5V XTAL1〔19脚〕:接外部晶体的一端。在片它是振荡电路反相放大器的输入端。在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。 XTAL2〔18脚〕: 接外部晶体的另一端。在片它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。假设需采用外部时钟电路,对于HMOS单片机,该引脚输入外
10、部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。 RST〔9脚〕: 单片机刚接上电源时,其部各存放器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位〔RESET〕 PSEN〔29脚〕: 在片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。 ALE/PROG〔30脚〕:在片外程序存储器时,此端输出负脉冲作为存储器读
11、选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。 EA/VPP〔31脚〕: 当EA端输入高电平时,CPU从片程序存储器地址0000H单元开场执行程序。当地址超出4KB时,将自动执行片外程序存储器的程序。当EA输入低电平时,CPU仅片外程序存储器。在对87C51EPROM编程时,此引脚用于施加编程电压VPP。 输入/输出引脚: 〔1〕P0.0—P0.7 (39脚—32脚
12、) 〔2〕P1.0—P1.7 〔1脚—8脚〕 〔3〕P2.0—P2.7 〔26脚—21脚〕 七段数码管 蜂鸣器 蜂鸣器是一种一体化构造的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、机、定时器等电子产品中作发声器件。 ;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H〞或“HA〞〔旧标准用“FM〞、“LB〞、“JD〞等〕表示。 蜂鸣器的构造原理 1.压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二
13、极管。 多谐振荡器由晶体管或集成电路构成。当接通电源后〔1.5~15V直流工作电压〕,多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由锆钛酸铅或铌镁酸铅压电瓷材料制成。在瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。 2.电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 复位电路 电源电路 五、电路仿真 采用PROTEUS
14、仿真软件效果非常好。 六、调试运行及结果 当床2和4开关按下去后总数显示为2,蜂鸣器报警。循环显示床号2、4.。当按下显示开关,开场重新显示,显示完后继续主程序的执行。当按下暂停按键,暂停显示,数值保持不变。关闭床2的开关后重新显示总数和床号1与4。当全部关闭后,蜂鸣器关闭,显示总数为0,床号为0。 与设计技术要求相符。 七、课设心得 医院住院病人呼叫器作为单片机实际应用的一个例子,在日常生活中发挥着非常重要的作用。从此可以看出单片机在日常生活中得到广泛的运用。要实现意见具体的事件判断和做出反响,实现自动化。 万事开头难。选定课题后,确定方案的时候让人很头痛。由于以前学
15、习过汇编语言,所以对汇编语言没有多大困难。主要是算法确实定。通过查阅资料和自习阅读教材深刻体会单片机硬件运行原理后,思路逐渐清晰。记得花了两个晚上构思出整体算法,画出流程图。流程图在编写程序时非常必要。它可以明确思路,便于对程序进度的把握。在画流程图时选定各个端口的功能和相应器件的选择。这个过程是同步进展的。通过这次编程提高了我的编程能力和是通过程序对外部器件的控制。 硬件电路设计。由于采用锁存器驱动数码管的显示,这样就不用单片机实时刷新,只有当有改变时才更新数据。一些经典电路,如:电源和复位电路,我是通过查阅得到的。由于使用PROTEUS软件不是很熟练,在电路设计的过程中又学习了该软件的
16、使用。熬夜设计电路,是我第二天成为熊猫超人,但当最后电路仿真的结果出现在眼前时,一切的付出都是值得的。 与童辉的合作使得课设的进度大大加快,互相补充思路的缺陷。设计电路选择器件。 这次课设恰逢“考试周〞,所以时间不多,做的还不够好。还可以对本设计进展扩展,如:采用无线通信,检测更多床位,通过驱动多媒体部件实现更多的功能。 课设就是一次工业设计,从工程建立、方案确定、程序编写、硬件电路设计到最后产品的完成。单片机的课设,我收获了很多,对单片机的认识更加透彻,感受了它在实际生活中的运用。付出就有回报。 八、参考资料 1〕?单片机原理与接口技术?牛昱光主编 2〕?微型计算机原理
17、与应用?学坚 周斌 编著 - word.zl - - 九、源程序代码 主程序: ORG 0000H
18、AJMP MAIN ORG 0003H LJMP PAUSE ORG 000BH LJMP DINGSHI ORG 0013H LJMP SHOW ORG 0030H MAIN: ;显示编码初始化 MOV 40H,#3FH MOV 41H,#06H MOV 42H,#5BH MOV 43H,#4FH MOV 44H,#66H MOV 45H,#6DH MOV 46H,#7DH MOV 47H,#07H MOV 48H,#7FH MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB EA
19、开中断,并设定优先级 SETB ET0 SETB EX0 SETB IT0 SETB PX0 SETB PX1 MOV R7,#00H MOV R4,#00H MOV R1,#21H SAO1: MOV R5,P1 MOV A,R5 CLR C SUBB A,R7 JZ SAO1 BTAO: MOV A,R5 ;检测到变化时,进展下一次重复判断显示 MOV R7,A JNZ NOSO CLR P2.7 ;关蜂鸣
20、器 SETB P2.1 ;显示总数0 MOV P0,#3FH CLR P2.1 SETB P2.2 ;显示床号为0 MOV P0,#3FH CLR P2.2 AJMP SAO1 ;JI ZONG SHU NOSO: MOV R2,#8 MOV A,R7 JI: ANL A,#01H JZ NOJI INC R4 ;加总数 MOV 31H,A ;保存A中的值 MOV A,#9H CLR C SUBB A,R2
21、 MOV R1,A ;床号 INC R1 MOV A,31H ;恢复A NOJI: RR A DJNZ R2,JI ;总数显示 MOV A,R4 ADD A,#40H MOV R0,A SETB P2.1 MOV P0,R0 CLR P2.1 SETB P2.7 ;开蜂鸣 MOV TMOD,#01H ;T0初始化 MOV TH0,#3CH MOV TL0,#0B0H MOV R1,#21H SETB TR0 ;启动T0
22、 SMO: MOV A,R1 ;床号显示 ADD A,#40H SETB P2.2 MOV P0,A CLR P2.2 MOV 33H,#00H ;初始化中断返回标志, JCE: MOV A,33H CJNE A,#00H,SM0 ;T0中断返回显示床号 MOV R5,P1 MOV A,R5 CLR C SUBB A,R7 JZ JCE CLR TR0 LJMP BTAO ;检测到变化,跳至开场重新判断显示 ;;
23、主程序完毕 - word.zl - - 暂停程序: ;;;; PAUSE ORG 0900H
24、 PAUSE: CLR TR0 CLR EA PUSH PSW PUSH ACC MOV C,P3.3 ;检查P3.3是否恢复为0 NCH: JNC NCH POP ACC POP PSW SETB EA SETB TR0 RETI T0中断程序: ;;;;;;; T0中断 ORG 0A00H DINGSHI: PUSH PSW PUSH ACC MOV TH0,#3CH MOV TL0,#0B0H MOV 33
25、H,#01H ;中断返回标志 MOV A,R4 ADD A,#20H MOV 32H,A MOV A,R1 CJNE A,32H,BUXUN ;如果显示到最后一个床号那么循环显示 MOV R1,#21H AJMP TC ;循环开场显示I BUXUN: INC R1 TC: POP ACC POP PSW RETI 重新显示程序: ;;;;;;;;SHOW ORG 0B00H SHOW: CLR PX1 ;使T0
26、中断能引发中断 MOV 34H,R1 PUSH 33H MOV 35H,R4 MOV 36H,R0 PUSH ACC PUSH PSW MOV TMOD,#01H ;定时器T0初始化 MOV TH0,#3CH MOV TL0,#0B0H ;;;;; ZONG XIAN MOV A,R4 ADD A,#40H MOV R0,A SETB P2.1 MOV P0,R0 CLR P2.1 MOV R1,#21H SETB TR0 ;开定时 SSS: MOV 33H,#00H ;中断返回标志位初始
27、化 MOV A,R1 ;床号显示 ADD A,#40H SETB P2.2 MOV P0,A CLR P2.2 DJNZ R4,TTTT SSSS: MOV A,33H CJNE A,#00H,SSS ;T0中断返回,显示床号 AJMP SSSS TTTT: POP PSW POP ACC POP 33H MOV R1,34H MOV R4,35H MOV R0,36H SETB PX1 RETI - word.zl






