资源描述
- -
单片机原理与接口技术
课程设计报告
课程设计名称:医院住院病人呼叫器设计
学院: 信息工程学院
班级:通信0802班
:马 滔
学号:2021001307
同组人:童 辉
- word.zl
- -
目 录
一、课题名称及设计技术指标2
1〕课题名称2
2〕设计技术指标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
- -
一、课题名称及设计技术指标
1〕课题名称
医院住院病人呼叫器设计
2〕设计技术指标
1) 能同时检测8个床位的病人呼叫
2) 显示病人呼叫总数
3) 循环显示呼叫病人的床号
4) 可以暂停显示
5) 具有重新显示功能
6〕在复位电路的作用下,复位单片机
7〕使暂停功能的优先级高于重显功能,重显功能优先级高于定时功能
二、总体方案设计与论证
本方案选用80c51单片机,P1口依次连接病人床位,实时检测P1口的信号。假设与前一次的信号不一样,那么判断端口是否为0。如果没有病人呼叫那么关蜂鸣器;如果有病人呼叫翻开蜂鸣器提示一户人员, 统计病人总数同时显示总数,统计病人床位并保存。
开启定时器进展循环显示床号,在显示的空闲时间继续检测P1口的端口状态。如果有病人呼叫或者呼叫完毕重新开场统计总数和床号,显示床号和总数。
重新显示时,只循环显示一次床号和总数。利用外中断1实现中断跳转执行重显程序。
暂停功能,用外中断0引入,通过检查P3.3的值完毕暂停。
使用74ls373锁存器驱动七段数码管显示器,可以不用单片机实时刷新七段数码管显示。通过输出码表中的值显示相应的数字。
51单片机拥有5个中断源,其中两个定时/计数器中断,两个外部中断。能够实现上述对单片机的控制功能。同时可以通过设定PI存放器的值设定优先级。
本方案可以通过参加接口扩展芯片,扩展检测病人数量。同时参加T1中断后可以实现多种蜂鸣声音报警。具有很强的扩展能力。
具体思路详见程序流程图
三、程序设计及调试
在waves6000按照流程图依次编写主程序、T0中断程序、暂停程序和重新显示程序。进展编译调试。程序附在最后
程序流程图如下
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引脚双列直插式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 89C54X2
32k 字节FLASH 89C58X2
128 字节RAM 89C51X2
256 字节RAM 89C52X2/54X2/58X2
布尔处理器
Vss(20脚):接地
VCC〔40脚〕: 主电源+5V
XTAL1〔19脚〕:接外部晶体的一端。在片它是振荡电路反相放大器的输入端。在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。
XTAL2〔18脚〕: 接外部晶体的另一端。在片它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。假设需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。
RST〔9脚〕: 单片机刚接上电源时,其部各存放器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位〔RESET〕
PSEN〔29脚〕: 在片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。
ALE/PROG〔30脚〕:在片外程序存储器时,此端输出负脉冲作为存储器读选通信号。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脚)
〔2〕P1.0—P1.7 〔1脚—8脚〕
〔3〕P2.0—P2.7 〔26脚—21脚〕
七段数码管
蜂鸣器
蜂鸣器是一种一体化构造的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、机、定时器等电子产品中作发声器件。 ;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H〞或“HA〞〔旧标准用“FM〞、“LB〞、“JD〞等〕表示。
蜂鸣器的构造原理
1.压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。
多谐振荡器由晶体管或集成电路构成。当接通电源后〔1.5~15V直流工作电压〕,多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
压电蜂鸣片由锆钛酸铅或铌镁酸铅压电瓷材料制成。在瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。
2.电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
复位电路
电源电路
五、电路仿真
采用PROTEUS仿真软件效果非常好。
六、调试运行及结果
当床2和4开关按下去后总数显示为2,蜂鸣器报警。循环显示床号2、4.。当按下显示开关,开场重新显示,显示完后继续主程序的执行。当按下暂停按键,暂停显示,数值保持不变。关闭床2的开关后重新显示总数和床号1与4。当全部关闭后,蜂鸣器关闭,显示总数为0,床号为0。
与设计技术要求相符。
七、课设心得
医院住院病人呼叫器作为单片机实际应用的一个例子,在日常生活中发挥着非常重要的作用。从此可以看出单片机在日常生活中得到广泛的运用。要实现意见具体的事件判断和做出反响,实现自动化。
万事开头难。选定课题后,确定方案的时候让人很头痛。由于以前学习过汇编语言,所以对汇编语言没有多大困难。主要是算法确实定。通过查阅资料和自习阅读教材深刻体会单片机硬件运行原理后,思路逐渐清晰。记得花了两个晚上构思出整体算法,画出流程图。流程图在编写程序时非常必要。它可以明确思路,便于对程序进度的把握。在画流程图时选定各个端口的功能和相应器件的选择。这个过程是同步进展的。通过这次编程提高了我的编程能力和是通过程序对外部器件的控制。
硬件电路设计。由于采用锁存器驱动数码管的显示,这样就不用单片机实时刷新,只有当有改变时才更新数据。一些经典电路,如:电源和复位电路,我是通过查阅得到的。由于使用PROTEUS软件不是很熟练,在电路设计的过程中又学习了该软件的使用。熬夜设计电路,是我第二天成为熊猫超人,但当最后电路仿真的结果出现在眼前时,一切的付出都是值得的。
与童辉的合作使得课设的进度大大加快,互相补充思路的缺陷。设计电路选择器件。
这次课设恰逢“考试周〞,所以时间不多,做的还不够好。还可以对本设计进展扩展,如:采用无线通信,检测更多床位,通过驱动多媒体部件实现更多的功能。 课设就是一次工业设计,从工程建立、方案确定、程序编写、硬件电路设计到最后产品的完成。单片机的课设,我收获了很多,对单片机的认识更加透彻,感受了它在实际生活中的运用。付出就有回报。
八、参考资料
1〕?单片机原理与接口技术?牛昱光主编
2〕?微型计算机原理与应用?学坚 周斌 编著
- word.zl
- -
九、源程序代码
主程序:
ORG 0000H
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 ;开中断,并设定优先级
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 ;关蜂鸣器
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
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
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 ;检测到变化,跳至开场重新判断显示
;;;;;;;主程序完毕
- word.zl
- -
暂停程序:
;;;; PAUSE
ORG 0900H
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 33H,#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中断能引发中断
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 ;中断返回标志位初始化
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
展开阅读全文