当前位置:文档之家› 基于51的电子闹钟设计报告(附原理图、PCB图、程序)

基于51的电子闹钟设计报告(附原理图、PCB图、程序)

25FFh
2600h
27FFh
第五扇区
第六扇区
第七扇区
第八扇区
起始地址
结束地址
起始地址
结束地址
起始地址
结束地址
起始地址
结束地址
2800h
29FFh
2A00h
2BFFh
2C00h
2DFFh
2E00h
2FFFh
每个扇区512字节,建议同一次修改的数据放在同一扇区,不是同一次修改的数据放在不同的扇区,不必用满,当然可全用。
2.
PCB制作完成后,为检测其能否正常工作,我编写了将数码管全部点亮,蜂鸣器控制口置低电平的程序。发现如下问题:
1.某一数码管右侧的所有数码管的相同段不亮;
2.数码管的小数点全部不亮;
3.蜂鸣器负极直接单片机IO口,蜂鸣器声音微小。
经检查后发现原因如下:
1.数码管板底层走线较细,钻孔时被打断,由于两块PCB已焊接到一起,拆解修补困难,故在数码管板顶层直接飞线;
SWBS
SWRST
-
-
WT2
WT2
WT0
ISPEN: ISP/IAP功能允许位。0:禁止IAP/ISP读/写/擦除Data Flash/EEPROM
1:允许IAP/ISP读/写/擦除Data Flash/EEPROM
SWBS:软件选择从用户应用程序区启动(送0),还是从系统ISP监控程序区启动(送1)。
要与SWRST直接配合才可以实现
SWRST:0:不操作;1:产生软件系统复位,硬件自动复位。
设置等待时间
CPU等待时间(机器周期),(1个机器周期=12个CPU工作时钟)
WT2
WT1
WT0
Read/读
Program/编程
(=72uS)
Sector Erase
扇区擦除
(=13.1304ms)
Recommended System Clock
成都信息工程学院
第五届嵌入式创新技术大赛
基于MCS51的智能电子闹钟
设计报告
姓名
学院
班级
实物图
目录
1.电子时钟的设计原理和方法1
1.1设计原理1
1.2硬件电路的设计1
1.2.1 STC89C51RC简介1
1.2.2键盘电路的设计2
1.2.3蜂鸣器驱动电路3
1.2.4数码管驱动电路3
1.2.5电源电路4
ISP_TRIG: ISP/IAP操作时的命令触发寄存器。
在ISPEN(ISP_CONTR.7) = 1时,对ISP_TRIG先写入46h,再写入B9h,ISP/IAP命令才会生效。
ISP/IAP操作完成后,ISP地址高八位寄存器ISP_ADDRH、ISP地址低八位寄存器ISP_ADDRL和ISP命令寄存器ISP_CMD的内容不变。如果接下来要对下一个地址的数据进行ISP/IAP操作,需手动将该地址的高8位和低8位分别写入ISP_ADDRH和ISP_ADDRL寄存器。
charh_ala= 0,min_ala= 1,sw_ala=1;
charflag_set,flag_sw;
char count;
sbitnum1 = P0^0;
sbitnum2 = P0^4;
sbitnum3 = P2^7;
sbitnum4 = P2^3;
sbitnum5 = P2^0;
sbitnum6 = P2^1;
STC89C51RC系列单片机内部EEPROM详细地址表
具体某型号有多少扇区的EEPROM,参照前面的EEPROM空间大小选型一览表,每个扇区0.5 K字节
第一扇区
第二扇区
第三扇区
第四扇区
起始地址
结束地址
起始地址
结束地址
起始地址
结束地址
起始地址
结束地址
2000h
21FFh
2200h
23FFh
2400h
-
-
MS1
MS0
MS2
MS1
MS0
命令/操作模式选择
0
0
0
Standby待机模式,无ISP操作
0
0
1
从用户的应用程序区对"Data Flash/EEPROM区"进行字节读
0
1
0
从用户的应用程序区对"Data Flash/EEPROM区"进行字节编程
0
1
1
从用户的应用程序区对"Data Flash/EEPROM区"进行扇区擦除
1.2.5
由于系统需要在7~12V的供电下正常工作,故采用了78M05三段稳压芯片。78M05能将7~35V的直流电源转换成5V直流电压。
1.3
1.3.1
程序部分主要采用了程序结构的模块化设计,避免了一些函数的不必要的重复书写,使程序变得单间易懂。程序在执行时,主程序要须通过调用子函数就可完成相应的功能。
ISP_ADDRL : ISP/IAP操作时的地址寄存器低八位。该寄存器地址为E4H,复位后值为00H.
3. ISP/IAP命令寄存器ISP_CMD
ISP/IAP命令寄存器IAP_CMD格式如下:
SFR name
Address
bit
B7
B6
B5
B4
B3
B2
B1
B0
ISP_CMD
E5H
name
-
-
-
-
ISP_DATA : ISP/IAP操作时的数据寄存器。
ISP/IAP从Flash读出的数据放在此处,向Flash写的数据也需放在此处
2. ISP/IAP地址寄存器ISP_ADDRH和ISP_ADDRL
ISP_ADDRH : ISP/IAP操作时的地址寄存器高八位。该寄存器地址为E3H,复位后值为00H.
11111111B
ISP_ADDRH
ISP/IAP Flash Address High
E3H
0000 0000B
ISP_ADDRL
ISP/IAP Flash Address Low
E4H
0000 0000B
ISP_CMD
ISP/IAP Flash Command Register
E5H
- - - - - - MS1MS0
VCC:供电电压
GND:接地
P0:P0是一个8位漏级开路双向I/O口,低8位地址复用总线端口。
P1:P1是一个内部提供上拉电阻的8位双向I/O口,静态通用端口。
P2:P2是一个内部提供上拉电阻的8位双向I/O口,高8位地址总线动态端口。
P3:P3是一个内部提供上拉电阻的8位双向I/O口,双功能静态端口。P3口也可作为一些特殊功能口。P3.0RXD(串行输入口)P3.1TXD(串行输出口)。
RST:复位自输入。
XTAL1/XTAL2:反向振荡器的输入与输出。
1.2.2
键盘采用四个个独立按键配以实现对时钟和闹钟的设定及修改。按键未按下时,IO口为高电平,按键按下后IO口被拉低。
1.2.3
发音部分是通过三极管放大驱动蜂鸣器工作,当IO口输出低电平时,三极管导通,蜂鸣器响。
1.2.4
由于点亮数码管所需电流较大,对单片机IO口连接上拉电阻,提高IO口的电流输出能力。
1.3软件部分的设计4
1.3.1主程序部分的设计4
3.2中断计时器及时间进位5
1.3.3闹钟子函数7
1.3.4按键扫描8
1.3.5时钟闹钟设置9
1.3.6显示数字函数10
1.3.7显示界面函数10
1.3.8闹钟记录及读取11
2.硬件调试13
附录A:电路原理图15
附录B:电路PCB图16
附录C:源程序17
sbitbell = P2^2;
sbitkey_set= P3^0;
跟等待参数对应的推荐系统时钟
0
1
1
6个机器周期
30个机器周期
5471个机器周期
5MHz
0
1
0
11个机器周期
60个机器周期
10942个机器周期
10MHz
0
0
1
22个机器周期
120个机器周期
21885个机器周期
20MHz
0
0
0
43个机器周期
240个机器周期
43769个机器周期
40MHz
STC89C51RC/RD+系列单片机EEPROM空间大小及地址
设计中采用了中断方式1作为定时中断,其定时计数初值的设置可由以下公式计算得到。
1.3.3
闹钟时间的判别主要是通过设定时间与实时时间对逐位对比确定是否进行闹铃。
1.3.4
这些函数主要是判断是否有按键按下,并根据相应按键按下的情况调用相关函数执行。
1.3.5
此部分主要是通过判断flag_sw、flag_set在不同值时通过调用加1、减1子函数对时间和闹钟进行设置。
STC89C51RC/RD+系列单片机内部可用EEPROM的地址与程序空间是分开的:程序在用户应用程序区时,可以对EEPROM行IAP/ISP操作。
具体某个型号单片机内部EEPROM大小及详细地址请参阅:
1. STC89C51RC/RD+系列单片机内部EEPROM详细地址表
2. STC89C51RC/RD+系列单片机内部EEPROM空间大小选型一览表
EEPROM可用于保存一些需要在应用过程中修改并且掉电不丢失的参数数据。在用户程序中,可以对EEPROM进行字节读/字节编程/扇区擦除操作。
IAP及EEPROM新增特殊功能寄存器介绍
符号
描述
地址
位地址及符号
MSB LSB
相关主题