单片机原理与应用课程设计报告简易教学用打铃器姓名:专业: 电子信息工程班级: 08314学号: 08314指导老师: 徐猛华2011年6 月5日目录一.设计任务与要求 (2)1. 主要任务及目标 (2)2. 设计的主要内容 (2)二.总体设计方案 (3)1. 设计思路 (3)2. 关键芯片介绍 (3)3. 总体电路方框图 (6)4. 总程序流程图 (7)5. 校时程序流程图 (8)6. 校分及显示流程图 (9)三.各部分电路设计 (11)1. 校时与定时电路图 (11)2. 振荡电路 (11)四.整体电路图 (13)五.设计程序清单 (13)六.设计总结 (21)1. 遇到的问题及解决方法 (21)2. 设计体会 (21)参考文献 (21)附A:课程设计评分表 (22)一.设计任务与要求1. 主要任务及目标用单片机设置一个多路打铃时间点的教学打铃器(1)可以实现显示当前时间;(2)可以用键盘设定多个预订打铃时间;2. 设计的主要内容(1)时钟范围:24h,60s,60s;(2)按键调整时间设定;(3)按键设定电铃,精度为分钟;(4)可任意设定时间达到定时控制,定时点有2个;(5)定时时间到,打铃10s,然后自动关闭打铃;二.总体设计方案1. 设计思路利用单片机及定时器设计的一个时钟,在每次秒加 1的计时过程中,都与规定的时间作比较,如果相等就进行开关电铃,不等则返回。
利用单片机及定时器设计的一个时钟,定时打铃主要由显示模块,校时模块和时钟运算模块三大部分组成。
其中校时模块和时钟运算模块要对时,分,秒的数值进行操作,并且计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。
这样,才能循环计时。
主要采用了8只LED数码管,时钟运算模块的主要功能是对时,分,秒的运算。
2. 关键芯片介绍AT89S52是一款低功耗、高性能CMOS8位微控制器,具有8K可编程 Flash 存储器。
使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。
AT89S52具有以下标准功能:8K字节Flash, 256字节RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个6向量 2级中断结构,全双工串行口,片内晶振及时钟电路。
其引脚如图3-2所示,下面简要介绍其引脚功能:图 1 AT89S52引脚图VCC:电源。
本设计中接电源正极。
GND:地。
本设计中接电源负极。
P0口:P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写"1"时,引脚用作高阻抗输入。
P1口:P1口是一个具有内部上拉电阻的8 位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
对 P1 端口写"1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写"1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写"1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
RST:复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
EA/VPP:访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
本设计中不需要外部程序存储器,因此需接高电平。
ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:振荡器反相放大器的输出端。
以上是AT89S52的引脚功能介绍,下面简要介绍AT89S52的存储器结构。
AT89S52有单独的程序存储器和数据存储器,外部程序存储器和数据存储器都可以64K寻址。
程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。
对于AT89S52,如果EA接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:2000H~FFFFH。
数据存储器:AT89S52有256字节片内数据存储器。
高128字节与特殊功能寄存器重叠。
也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间。
3. 总体电路方框图图2 总体电路方框图4. 总程序流程图图 3 总程序流程图总体流程图的定时器首先设定一个时间,执行程序时及进入计时程序。
通过加一比较程序与设定的计时程序进行比较,如果不到计时时间执行中断返回指令。
在此时如果校时键启动时可进行校时作用。
而LED显示器也通过8051控制程序实时传来的数据进行显示工作。
LED也是动态的显示方式。
5. 校时程序流程图图 4 校时程序流程图首先进入校时显示模式,此时K1如果有按下,校时程序即可执行。
此时如果K2手工操作下被按下则计时加一,达到与想要的结果一致即可停止K2的操作,如果计时结果在现在时间之前则可一直按下直到到达24小时一个循环时候,然后再次按下达到想要的计时结果。
而24时也是校时循环终点。
此时指示灯也有所变化。
可以作为执行程序效果的参考。
而校分流程图也对整体软件流程产生影响,最终达到时间的精确。
小时和分钟的实时显示是定时的基础。
6. 校分及显示流程图图5 校分及显示流程图首先进入校分模式时看K1是否按下,如果按下则看K3是否有按下,如果有则分钟加一,如此便起到修改分钟的作用,如果分钟修改到达60分钟则分钟全部清零,分钟计时重新开始。
如果K1键没有按下,则小时和分钟数据进入显示缓存器,然后进入显示器显示,此时看K1键是否还在断开状态,如果没有按下则时间还是显示而不做变化,如果K1键按下则此时进入定时器进入工作状态,因此K1键是程序运行的关键所在,在K1键进入工作状态的同时修改小时和分钟及定时器的工作程序才能进行。
三.各部分电路设计1. 校时与定时电路图图6 校时与定时电路图按下K1(模式选择键),将模式选择为校时模式,K2,K3,K4分别为加1键,减1键,定时键。
按下K1(模式选择键),将模式选择为定时模式,K2为定时器组选择键,K3,K4分别为定时器时钟加1键和定时器分钟加1键,每按K5一次,此组的定时器状态改变一次,并将此组数据存入片内数据存储器中按下K1(模式选择键),将模式选择为工作模式,K2,K3,K4无用。
此模式为正常工作模式。
2. 振荡电路图 7 振荡电流单片机晶振的作用是为系统提供基本的时钟信号。
通常一个系统共用一个晶振,便于各部分保持同步。
四.整体电路图见后大图五.设计程序清单D8255 EQU 8506H ;8255状态/数据口地址D8255A EQU 8500H ;8255 PA口地址D8255B EQU 8502H ;8255 PB口地址Z8279 EQU 08701H ;8279 状态/命令口地址D8279 EQU 08700H ;8279 数据口地址LEDMOD EQU 00H ;左边输入八位字符显示;外部译码键扫描方式,双键互锁LEDFEQ EQU 2FH ;扫描速率LEDCLS EQU 0C1H ;清除显示RAMLEDWR0 EQU 80H ;设定的将要写入的显示RAM地址KEYV AL EQU 09H ;读到的键码ORG 0000HAJMP STARTORG 001BH ;INT T1 入口地址AJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALL INIT8279 ;初始化8279MOV DPTR,#D8255MOV A,#90H ;置8255状态;方式0,PB,PC口输出,PA口输入MOVX @DPTR,AMOV R3,#0H ;时MOV R2,#0H ;分MOV R1,#0H ;秒;标志MOV R6,#00HMOV TMOD,#10HMOV TL1,#00H ;50 mS 的时间常数MOV TH1,#04CHMOV R0,#20SETB TR1SETB ET1SETB EA ;允许中断WAIT:LCALL RD_KBMOV A,#0FFHCJNE A,KEYV AL,DISBUFJX: LCALL DISPLAYSJMP W AITDISBUF: LCALL DISPJX1: LCALL DELAYLCALL DELAYSJMP JXDISP: MOV A,KEYV ALCJNE A,#5BH,TFFMOV R1,#00HSJMP JX1TFF:CJNE A,#06H,TSMOV R4,#3MOV R5,#24LCALL DISLEDMOV R4,#4MOV R5,#24LCALL DISLEDMOV A,R2ADD A,#1DA AMOV R2,ACJNE R2,#60H,JX1MOV R2,#00HSJMP JX1TS:CJNE A,#3FH,JX1MOV R4,#6MOV R5,#24LCALL DISLEDMOV R4,#7MOV R5,#24LCALL DISLEDMOV A,R3ADD A,#1DA AMOV R3,ACJNE R3,#24H,JX1MOV R3,#00HSJMP JX1INIT8279: ;8279初始化子程序PUSH DPH ;保存现场PUSH DPLPUSH ACCLCALL DELAY ;延时MOV DPTR ,#Z8279MOV A,#LEDMOD ;置8279工作方式MOVX @DPTR,AMOV A,#LEDFEQ ;置键盘扫描速率MOVX @DPTR,AMOV A,#LEDCLS ;清除LED 显示MOVX @DPTR,ALCALL DELAY ;延时POP ACC ;恢复现场POP DPLPOP DPHRET;显示字符子程序;输入: R4,位置R5,值DISLED: PUSH DPH ;保存现场PUSH DPLPUSH ACCMOV A,#LEDWR0 ;置显示起始地址ADD A,R4 ;加位置偏移量MOV DPTR,#Z8279MOVX @DPTR,A ;设定显示位置MOV DPTR,#LEDSEG ;置显示常数表起始位置MOV A,R5MOVC A,@A+DPTR ;查表MOV DPTR,#D8279MOVX @DPTR,A ;显示数据POP ACC ;恢复现场POP DPLPOP DPHRETDELAY: ;延时子程序PUSH 0 ;保存现场PUSH 1MOV 0,#0HDELAY1: MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP 1 ;恢复现场POP 0RETINT_T1: ;INT_T1中断服务子程序PUSH DPH ;保护现场PUSH DPLPUSH ACCPUSH PSWCLR TR1MOV TL1,#00H ;50mS 定时常数MOV TH1,#4CHSETB TR1DJNZ R0,EXIT ;判断毫秒=0MOV R0,#20 ;DELAY 1 SECONDMOV R6,#0FFH ;置秒标志CJNE R1,#59H,SECOND ;判断秒=59MOV R1,#99HCJNE R2,#59H,MINUTE ;判断分=59MOV R2,#99HCJNE R3,#23H,HOUR ;判断时=23MOV R3,#99HHOUR:MOV A,R3ADD A,#1 ;时加1DA AMOV R3,AMINUTE:MOV A,R2ADD A,#1 ;分加1DA AMOV R2,Axrl A,#01HJZ HOTSECOND:MOV A,R1ADD A,#1 ;秒加1DA AMOV R1,AXRL A,#10HJZ STOPEXIT:POP PSW ;恢复现场POP ACCPOP DPLPOP DPHRETI ;中断返回HOT:MOV A,R3XRL A,#00HJZ LINGSJMP SECONDLING:MOV A,#0FEHMOV P1,ASJMP SECONDSTOP:MOV A,#0FFHMOV P1,ANOPSJMP EXITRD_KB: ;键盘扫描MOV A,#02H ;扫描第一行MOV DPTR,#D8255BMOVX @DPTR,AMOV DPTR,#D8255AMOVX A,@DPTRMOV R7,#00HCJNE A,#0FFH,KEYCAL ;判键是否按下MOV A,#01H ;扫描第二行MOV DPTR,#D8255BMOVX @DPTR,AMOV DPTR,#D8255AMOVX A,@DPTRMOV R7,#08HCJNE A,#0FFH,KEYCALSJMP NOKEY ;无键按下KEYCAL: ;计算键码MOV B,#08HSHIFT:RRC AJNC CALCINC R7DJNZ B,SHIFTCALC: ;换算显示码MOV DPTR,#LEDSEGMOV A,R7MOVC A,@A+DPTRMOV KEYV AL,ARETNOKEY: MOV KEYV AL,#0FFH ;返回无键标志RETDISPLAY:MOV A,R3ANL A,#0FHMOV R5,AMOV R4,#6LCALL DISLED ;显示小时低位MOV A,R3SW AP AANL A,#0FHMOV R5,AMOV R4,#7LCALL DISLED ;显示小时高位MOV A,R2ANL A,#0FHMOV R5,AMOV R4,#3LCALL DISLED ;显示分钟低位MOV A,R2SW AP AANL A,#0FHMOV R5,AMOV R4,#4LCALL DISLED ;显示分钟高位MOV A,R1ANL A,#0FHMOV R5,AMOV R4,#0LCALL DISLED ;显示秒低位MOV A,R1SW AP AANL A,#0FHMOV R5,AMOV R4,#1LCALL DISLED ;显示秒高位MOV R4,#5MOV R5,#23LCALL DISLEDMOV A,R1MOV B,#02HDIV ABMOV A,BMOV R4,#2MOV R5,#24CJNE A,#00H,EXMOV R5,#23EX: LCALL DISLEDRETLEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, 'DB 09H,00HEND六.设计总结1. 遇到的问题及解决方法(1)在课程设计中有好多的元器件器件都不是很熟悉,通过参阅这些资料对器件的功能和接线图的描述,使我有了进一步的认识:更使我在电路图的设计及绘制中有了充分展现自己设计思想的空间而显得得心应手。