版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、郑州交通职业学院毕 业 论 文(设 计)论文(设计)题目:基于单片机的电铃系统的设计与实现 所属系别 专业班级 姓名 学号 指导教师 撰写日期 2012 年 5 月摘 要 本文介绍了以at89c51单片机为控制核心的自动打铃器产品,at89c51是一种带4k字节闪存可编程可擦除只读存储器的低电压、高性能cmos 8位微处理器,俗称单片机。该电路具有时钟功能,可通过产品上的设置键对要报警的时间点逐个的设置进去,打铃器只要走到设置好的时间就能报警。利用单片机及定时器设计的时钟,在每次加1的过程中,都与规定的时间作比较,如果相等就进行开关电铃,不等则返回,24小时累加为一天,如果天数大于5天时,电铃
2、也不打铃。要求按学生上下课响铃次序,周六周日不打铃,输出效果由报警模块与显示模块组成,显示模块主要采用数码管来显示时间,让人们可以看到自动打铃器的时间是否与我们生活的时间一致,如果有误差则可以通过按键对时间进行调整。该打铃器是一种电路比较简单,功能完善,而且比较实用的自动打铃器。它不但适用于学校及企业工厂等场所。 关键词:at89c51,定时器,数码管显示 take to this paper introduces the at89c51 mcu as the control core of the automatic bell products, at89c51 is a 4k flash
3、programmable and erasable read only memory of the low voltage, high performance cmos 8 bit microprocessor, commonly known as the single chip microcomputer. the circuit has a clock function, through the product set key to alarm time point by setting in, ring a bell just walk to set up good time can a
4、larm. using single chip computer and a timer design of the clock, in each plus 1 of the process, and the time for comparison, if equal to switch from bell, returns, 24 hours accumulated for a day, if the number of days more than 5 days, the bell is ringing. required students to the school bell order
5、, saturday sunday bell, the output effect by the alarm module and a display module, display module is mainly used to display digital time, so that people can see automatic bell device whether the time and the time of our lives, if there is an error, the keys can adjust the time. the ringer circuit i
6、s a relatively simple, perfect function, and to compare the utility of automatic bell device. it does not only apply to the schools and enterprises factories etc.key words: scm, timer, digital display目 录1 设计目的52 设计要求53 总体设计方案53.1 设计思路53.2 关键芯片介绍53.3 总体电路方框流程图63.4 总程序流程图7 3.5 效时程序流程图83.6 效分及显示流程图94 个
7、部分电路设计104.1 效时与定时电路114.2 振荡电路125 整体电路图126 设计程序清单137 设计总结228 参考文献24 致谢25 引 言1 设计目的 根据设计要求做出一个电子打铃器,熟悉单片机的程序,在其过程中培养学生的动手能力。2 设计要求 要求按学生上下课铃响铃次序设计电子打铃器,周六周日不打铃。1 总体设计方案1.1 设计思路 利用单片机及定时器设计的一个时钟,在每次加1的过程中,都与规定的时间作比较,如果相等就进行开关电铃,不等则返回,24小时累加为一天,如果天数大于5天时,电铃也不打铃。1.2 关键芯片介绍 at89c51是一种带4k字节闪存可编程可擦除只读存储器(fp
8、erom-flash programmable and erasable read only memory)的低电压、高性能cmos 8位微处理器,俗称单片机。at89c51是一种带2k字节闪存可编程可擦除只读存储器的单片机。单片机可擦除只读存储器可以反复查除1000次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是他的一种精简版本。at89c51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示
9、: 图1.21 at89c51封装及管脚排列1.3 总体电路设计方框图 图1.32 总体电路系统框图1.4 总程序流程图 图1.43 总程序流程图 总程序流程图的定时器首先设定一个时间,执行程序时及进入记时程序。通过加以比较程序与设定的计时程序进行比较,如果不到计时时间执行中断返回指令。在此时如果效时键启动时可进行校时作用。而led显示器也通过8051控制程序实时传来的数据进行显示工作。led也是动态的显示方式。1.5 校时程序流程图 图1.54 校时程序流程图 首先进入校时显示模式,此时k1如果有按下,校时程序即可执行。此时如果k2手工操作下被按下则计时加一,达到与想要的结果一致即可停止k2
10、的操作,如果计时结束在现在时间之前则可一直按下直到到达24小时一个循环时候,然后再次按下达到想要的计时结果。而24小时也是校时循环终点。此时指示灯也有所变化。可以作为执行程序效果的参考。而校分流程图也对整体软件流程图产生影响,最终达到时间的精确。小时和分钟的实时显示是定时的基础。1.6 校分及显示流程图图1.65 校分及显示流程图首先进入进如入校时模式时看k1是否按下,如果按下则看k3是否按下,如果有则分钟加一,此便起到修改分钟的作用,如果分钟修改到达60分钟则分钟全部清零,分钟计时重新开始。如果k1键没按下,则小时和分钟数据进入显示缓存器,然后进入显示器显示,此时看k1键是否还在断开状态,如
11、果没有按下则时间还是显示而不做变化,如果k1键按下则此时进入定时器工作状态,因此k1键是程序运行的关键所在,在k1键进入工作状态的同时修改小时和分钟及定时器的工作程序才能进行。2 各部分电路设计2.1 校时与定时电路图图4.11 校时与定时电路图 按下k1(模式选择键),将模式选择为校时模式(模式指示灯黄灯亮),k2,k3,k4分别为时钟加一键,分钟加一键,秒钟加一键,k5无用。按下k1(模式选择键),将模式选择为定时模式(模式指示灯绿灯亮),k2为定时器组选择(本装置有24组定时器)键,k3,k4分别为定时器时钟加一键和定时器分钟加一键,k5为定时器状态选择键,每按k5一次,此组的定时器状态
12、改变一次,并将此组数据存入片内数据存储器中按下k1(模式选择键),将模式选择为工作模式(模式指示灯红灯亮),k2,k3,k4,k5无用。此模式为正常工作模式。2.2 振荡电路图4.22 振荡电路(为单片机提供时钟信号)3 整体电路图图31 整体电路图6 程序清单 read equ 0 write equ 2 ewen equ 4 ewds equ 6 adr46 equ 21h thigh equ 0f8h tlow equ 5fh timen equ 30 cs bit p3.7 ;93c46 cs clk bit p3.6 di bit p3.5 do bit p3.4 org 0000h
13、 ajmp start org 000bh ;timer0中断起始地址 ajmp tim0 ;跳至timer0中断子程序start:mov sp,#60h ;设置堆栈在60h mov 28h,#00 ;显示寄存器初值为00 mov r6,#12h ;?时?寄存器值为12h mov r5,#00h ;分寄存器值为00h mov r4,#00h ;秒寄存器值为00h mov tmod,#01h ;设timer0为mode1 mov th0,#thigh ;计时中断为4000微秒 mov tl0,#tlow mov ie,#82 ;timer中断使能 mov r2,#250 ;中断250次 setb
14、 tr0 ;启动timer0;键值处理程序:loop: setb p0.5 ;工作模式 clr p0.6 clr p0.7 jb p0.0,n1 ;k1(模式选择键)按了?不是则跳至n1 acall delay ;消除抖动 jnb p0.0,$ ;k1(模式选择键)放开了? acall delay ;消除抖动 ajmp set ;转到定时模式setn1: mov 2fh,r6 ;将时钟数据载入2fh中 mov 2eh,r5 ;将分钟数据载入2eh中 mov adr46,#00 ;把93c46地址置0 setb rs0 ;将工作寄存器组选择1区loop1:mov a,#read ;读93c46
15、acall to93c46 mov a,r3 ;取出定时器的状态 anl a,#01h cjne a,#01h,n2 ;定时器为关闭,则跳转至n2 mov a,r4 ;取出定时器分钟数据 cjne a,2fh,n2 ;定时器分钟数据与时钟分钟不同则转至n2 mov a,r5 ;取出定时器时钟数据 cjne a,2eh,n2 ;定时器时钟数据与时钟时钟不同则转至n2 setb p2.1 ;定时器时间到,打铃 mov a,adr46 ;将93c46地址载入a中n2: cjne a,#1eh,n3 ;到定时器数据表表尾?没到转至n3 mov adr46,#00 ;到表尾,置93c46地址为表头 aj
16、mp loop1 ;转至loop1n3: inc adr46 ;93c46地址加2 inc adr46 ajmp loop1 ;转至loop1set: clr p0.5 ;校时模式 setb p0.6 clr p0.7loops:jb p0.0,n11 ;k1(模式选择键)按了?不是则跳至n11 acall delay ;消除抖动 jnb p0.0,$ ;k1(模式选择键)放开了? acall delay ;消除抖动 ajmp settime ;转至settimen11: jb p0.1,n13 ;k2(时钟加1键)按了?不是则跳至n13 acall delay ;消除抖动 mov a,r6
17、;将时寄存器的值载入a add a,#01h ;a内容加1 da a ;做十进制调整 mov r6,a ;将a的值存入时寄存器 cjne a,#24h,n12 ;是否超过24时?不是则跳至n12 mov r6,#00h ;是则清除时寄存器的值为00n12: jnb p0.1,$ ;k2(时钟加1键)放开了? acall delay ;消除抖动n13: jb p0.2,n15 ;k3(分钟加1键)按了?不是则跳至n15 acall delay ;消除抖动 mov a,r5 ;将分寄存器的值载入a add a,#01 ;a内容加1 da a ;做十进制调整 mov r5,a ;将a的值存入分寄存器
18、 cjne a,#60h,n14 ;是否超过60分?不是则跳至n14 mov r5,#00h ;是则清除分寄存器的值为00n14: jnb p0.2,$ ;k3(分钟加1键)放开了? acall delay ;消除抖动n15: jb p0.3,n17 ;k4(秒钟加1键)按了?不是则跳至n17 acall delay ;消除抖动 mov a,r4 ;将秒寄存器的值载入a add a,#01 ;a内容加1 da a ;做十进制调整 mov r4,a ;将a的值存入秒寄存器 cjne a,#60h,n16 ;是否超过60秒?不是则跳至n16 mov r4,#00 ;是则清除分寄存器的值为00n16
19、: jnb p0.3,$ ;k4(秒钟加1键)放开了? acall delay ;消除抖动n17: ajmp loops ;转至loopssettime:clr p0.5 ;定时模式 clr p0.6 setb p0.7 mov adr46,#00h mov a,#read ;读93c46地址为adr46中的数据 acall to93c46loopb:acall disp ;调用disp jb p0.0,n21 ;k1(模式选择键)按了?不是则跳至n21 acall delay ;消除抖动 jnb p0.0,$ ;k1(模式选择键)放开了? acall delay ;消除抖动 ajmp loo
20、p ;转至loopn21: jb p0.1,n22 ;k2(定时器组加1键)按了?不是则跳至n22 acall delay ;消除抖动 mov a,adr46 ;将地址载入a clr c ;清除进位位 rrc a ;a右移1位 add a,#01h ;地址加1 mov r6,a ;将a存入r6 clr c ;清除进位位 rlc a ;a左移1位 mov adr46,a ;将a中地址存入adr46 mov a,#read ;读93c46地址为adr46中的数据 acall to93c46 jnb p0.1,$ ;k2(定时器组加1键)放开了? acall delay ;消除抖动n22:jb p0
21、.2,n24 ;k3(定时器分钟加1键)按了?不是则跳至n24 acall delay ;消除抖动 mov a,r4 ;将定时器分寄存器的值载入a add a,#01 ;a内容加1 da a ;做十进制调整 mov r4,a ;将a的值存入定时器分寄存器 cjne a,#60h,n23 ;是否超过60分?不是则跳至n16 mov r4,#00h ;是则清除分寄存器的值为00n23:jnb p0.2,$ ;k3(定时器分钟加1键)放开了? acall delay ;消除抖动n24:jb p0.3,n26 ;k4(定时器时钟加1键)按了?不是则跳至n26 acall delay ;消除抖动 mov
22、 a,r5 ;将定时器时寄存器的值载入a add a,#01h ;a内容加1 da a ;做十进制调整 mov r5,a ;将a的值存入定时器时寄存器 cjne a,#24h,n25 ;是否超过24时?不是则跳至n25 mov r5,#00 ;是则清除分寄存器的值为00n25:jnb p0.3,$ ;k4(定时器时钟加1键)放开了? acall delay ;消除抖动n26:jb p0.4,n27 ;k5(改变定时器状态存储键)按了?不是则跳至n27 acall delay ;消除抖动 inc r3 ;改变r3最低位的值 ) mov a,#write ;将a的值写入93c46地址为adr46中
23、 acall to93c46 jnb p0.4,$ ;k5(改变定时器状态存储键)放开了? acall delay ;消除抖动n27:ajmp loopb ;转至loopb;读写93c46程序:to93c46:setb cs ;cs=1 setb di ;di=1 setb clk ;clk=1 acall delay clr clk ;clk=0 acall delay mov dptr,#jptbl46 jmp a+dptr;jptbl46:ajmp sread ;读 ajmp swrite ;写 ajmp sewen ;写使能 ajmp sewds ;写禁止sread:mov a,adr
24、46 ;地址载入a add a,#80h ;10xxxx读指令 acall sdt46 ;读入地址 acall rdt46 ;读定时器时钟数据 mov r5,a ;存入r5 acall rdt46 ;读定时器分钟数据 mov r4,a ;存入r4 inc adr46 ;地址加1 mov a,adr46 ;地址载入a add a,#80h ;10xxxx读指令 acall sdt46 ;读入地址 acall rdt46 ;读定时器状态数据 acall rdt46 dec adr46 mov r3,a ;存入r3 ajmp ex9346swrite:mov a,adr46 ;写入地址载入a add
25、 a,#40h ;01xxxx写指令 acall sdt46 ; 载入地址 mov a,r5 ;载入定时器时钟数据 acall sdt46 ;写入定时器时钟数据 mov a,r4 ;载入定时器分钟数据 acall sdt46 ;写入定时器分钟数据 inc adr46 ;地址加1 mov a,adr46 ;写入地址载入a add a,#40h ;01xxxx写指令 acall sdt46 ;载入地址 mov a,r3 ;载入定时器状态数据 dec adr46 ;地址减1 acall adr46 ;写入定时器状态数据 ajmp ex9346 ;转至ex9346sewen:mov a,#30h ;0
26、011xxxx写使能指令 acall sdt46 ajmp ex9346sewds:clr a ;0000xxxx写禁止指令 acall sdt46ex9346:clr cs ;cs=0 retsdt46:mov r2,#8 ;写入8位数据sd1: rlc a mov di,c setb clk acall delay clr clk acall delay djnz r2,sd1 retrdt46:mov r2,#8 ;读出8位数据rd1: setb clk acall delay clr clk acall delay mov c,do rlc a djnz r2,rd1 retdelay
27、:mov r7,#0fh ; djnz r7,$ rettim0:mov th0,#thigh ;重设计时4000微秒 mov tl0,#tlow push acc ;将a的值存入堆栈 push psw ;将psw的值存入堆栈 clr rs0 ;设置工作寄存器为0区 djnz r2,x2 ;计时1秒 mov r2,#250 acall clock ;调用计时子程序clock acall disp ;调用显示子程序x2:acall scan ;调用扫描子程序 pop psw pop acc reti;显示器驱动程序:scan:mov r0,#28h ;(28h)为扫描指针 inc r0 ;扫描指
28、针加1 cjne r0,#6,x3 ;扫描完6个显示器?不是跳至x3 mov r0,#00 ;是则扫描指针为0x3:mov a,r0 ;扫描指针载入a add a,#20 ;a加常数20h(显示寄存器地址)=各时间显示区地址 ;存入r1=各时间显示地址 mov r1,a ;扫描指针存入a mov a,r0 ;将a高低4位交换 (p1高4位为扫描值, swap a ;低4位为显示数据值) orl a,r1 ;扫描值+显示值 mov r1,a ;输出至p1 ret;计时程序:clock:mov a,r4 ;r4为秒寄存器 add a,#01 ;加1 da a ;做十进制调整 mov r4,a ;存
29、入秒 寄存器 cjne a,#timen,x4 ;是否超过打零连续时间?不是则跳至x4 clr p2.0 ;关铃x4:cjne a,#60h,x5 ;是否超过60秒?不是则跳至x5 mov r4,#00 ;是则清除为0 mov a,r5 ;r5为分寄存器 add a,#01 ;加1 da a ;做十进制调整 mov r5,a ;存入分寄存器 cjne a,#60h,x5 ;是否超过60分?不是则跳至x5 mov r5,#00 ;是则清除为0mov a,r6 ;r6为时寄存器 add a,#01 ;加1 da a ;做十进制调整 mov r6,a ;存入时寄存器 cjne a,#60h,x5 ;
30、是否超过24时?不是则跳至x5 mov r6,#00 ;是则清除为0x5:ret;显示程序:disp:mov r1,#20 ;(20h)为显示寄存器,r1=20h mov a,r6 ;将时寄存器的内容存入a mov b,#01h ;设b累加器的值为10h div ab ;a/b,商 (十位数)存入a,余数 (个位数)存入b mov r1,b ;将b的内容存入 (20h) inc r1 ;r1=21h mov r1,a ;将a的内容存入 (21h) inc r1 ;r1=22h mov a,r5 ;将分寄存器的内容存入a mov b,#01h ;设b累加器的值为10h div ab ;a/b,商
31、 (十位数)存入a,余数 (个位数)存入b mov r1,b ;将b的内容存入 (22h) inc r1 ;r1=23h mov r1,a ;将a的内容存入 (23h) inc r1 ;r1=24h mov a,r4 ;将秒寄存器的内容存入a mov b,#01h ;设b累加器的值为10h div ab ;a/b,商 (十位数)存入a,余数 (个位数)存入b mov r1,b ;将b的内容存入 (24h) inc r1 ;r1=25h mov r1,a ;将a的内容存入 (25h) ret end硬件实物调测 4 设计总结 (1)程序书写不熟练,很多指令都不明所以,通过查阅课本及图书馆馆藏资料
32、,并积极想学习好的同学请教,使我明白了很多,这随我之后的设计和编程有了很大的帮助。在课程设计中有好多的器件都不是很熟悉,通过参阅这些资料对器件的功能和接线图的描述,使我有了进一步的认识:更使我在电路图的设计及绘制中有了充分发展自己设计思想的空间而显得得心应手。(2)电路图的设计使我们使我们的第一大难点,我和搭档通过仔细阅读并充分分析课程设计的要求,结合我们的所学一步一步的画了又改,改了又画,直到思路最终确定下来,才把电路图画了下来。参考文献1 李广弟,单片机基础【m】.北京:北京航空航天大学出版社,20082张毅刚,单片机原理及接口技术【m】.哈尔滨:哈尔滨工业大学出版社,20103谭浩强,单片机课程设计【m】.北京:清华大学出版社,20094韩全立,赵德申,微控制技术及应用【m】.北京:机械工业出版社,20085杨恢先 黄恢先,单片机原理及应用【m】.北京:人民邮电出版社,2009致 谢大学三年的学习生涯和美好时光即将结束,在这三年学生生涯过程中,我真的学会了很多、很多、也使我慢慢的成长起来,懂得了很多很多、在此,我要衷心的感谢我的辅导员何老师和课程指导老师翟老师,何老师在这三年中教会了我如何做人。翟老师教会了我许多专业知识,并且他为我完成这篇论文提供了很大的帮助,使我得以顺利完成这篇论文;还要感谢各位任课老师,他们用渊博的知识教会了我许多专业技能,也让我知道了怎样接触
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度企业形象策划合同协议书
- 2024年度地铁车站停车场综合开发利用合同2篇
- 二零二四年度粉煤灰运输安全责任合同2篇
- 2024年度化工产品采购与销售合同标的2篇
- 二零二四年度门卫管理制度设计与实施合同
- 2024年度国际保险业务的再保险合同
- 游乐场规章制度模版(3篇)
- 大型会议接待方案范文(二篇)
- 二零二四年度广告代理服务合同
- 环保技术创新筹资管理办法
- 2022-2023学年浙江省湖州市高二年级上册学期期末数学试题【含答案】
- 锂电池运输规范说明
- DBJ51∕T 081-2017 四川省城镇二次供水运行管理标准
- 《美丽中国是我家》 课件
- 110KV电缆敷设专项施工方案方案
- 《新时代劳动教育100问》读书笔记思维导图
- 仪表“三查四定”检查清单
- GB/T 7284-2016框架木箱
- 电视画面编辑(本科)王晓红课件
- 2023年西藏开发投资集团有限公司招聘笔试题库及答案解析
- 神秘的虚拟货币-比特币课件
评论
0/150
提交评论