数字时钟的实验报告.docx
- 文档编号:4075726
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:26
- 大小:815.89KB
数字时钟的实验报告.docx
《数字时钟的实验报告.docx》由会员分享,可在线阅读,更多相关《数字时钟的实验报告.docx(26页珍藏版)》请在冰点文库上搜索。
数字时钟的实验报告
北方民族大学
电气信息工程学院
实训报告
课程名称电子作品制作与开发项目实践选修课系列Ⅰ
题目数字时钟
院(部、中心)电气信息工程学院
学生姓名何勇
专业测控技术与仪器 学号20080280
指导教师签名毛建东周春艳
报告提交时间 2010年12月25日
同组人员伏露赵金鹏杨强杨窕
北方民族大学教务处制
评语:
成绩:
⑴答辩:
(%)
⑵报告:
(%)
⑶平时:
(%)
总成绩:
指导教师:
年月日
一:
数字时钟的要求与任务
要求:
掌握单片机控制数码管显示系统的开发设计
任务:
设计并制作一个数字钟。
要求外接4个按键,分别为“设定”、“加1”、“减1”和“确定”键,用于调整时间;外接8个LED数码管,分别显示时、分、秒,以24小时制显示时间。
另外需要使用AC220V转AC(单)12V变压器、二极管IN4004、稳压块7905、7805等自制5v电源一套。
建议单片机使用40脚双列直插AT89S51实现,LED显示使用74LS164串入并出芯片模拟串口实现。
二:
数字时钟的原理
1数字时钟结构
该实训作品是利用AT89S51单片机结合数码管设计出的一个可调时的数字
时钟,其主要利用单片机的输入/输出功能,定时/计数功能和中断功能。
AT89S51介绍
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚(引脚图如图1-2所示),4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
·VCC:
电源电压
·GND:
地
·P0口:
P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
·P1口:
Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,Pl接收低8位地址。
表1具有第二功能的P1口引脚
端口引脚
第二功能:
P1.5
MOSI(用于ISP编程)
P1.6
MOSI(用于ISP编程)
P1.7
MOSI(用于ISP编程)
·P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
·P3口:
P3口是一组带有内部上拉电阻的8位双向I/0口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:
表2具有第二功能的P1口引脚
端口引脚
第二功能:
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外中断0)
P3.3
/INT1(外中断1)
P3.4
T0(定时/计数器0外部输入)
P3.5
T1(定时/计数器1外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD外部数据存储器读选通)
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
·RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
·ALE/————PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
·————PSEN程序储存允许(————PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次————PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的————PSEN信号。
·——EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。
·XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
单片机时钟结构分硬件和软件两部分。
硬件主要由单片机,LED数码管显示器和按键等组成。
电路设计如图。
图2电路主体设计图
2、数字钟的电路结构组成:
1)晶振电路和复位电路。
2)驱动电路及显示单元。
3)校时控制电路。
4)5V稳压直流电源电路。
3、单元电路设计:
1)译码驱动及显示单元
图1LED数码管显示
图2输送段码电路
当74LS373的LE=1,OE(非)=0时其输出口随输入口变化,即输出段码。
再由P0选中相应位显示输出低电平,使三极管9015导通驱动共阳数码管。
2)校时控制电路。
程序设计时给P2口高电平,当有对应按键按下时由于另一端接地,所以对应口变成低电平,单片机根据各按键信号运行相应程序。
K1为设定键,按下后进入调时状态,计时也瞬时停止。
按一次进入调整小时的状态,在调时状态再按K1进入分调整状态,在分调整状态再按一次进入秒调整状态!
进入相应状态后,利用K2,K3键进行调整,K2为加1,K3为减1。
K4键为确定键,当处在调时状态时,K4按下时跳出调时状态,进入计时状态。
3)5V稳压直流电源电路。
图3电源电路
电源主要使用的是AC220V转AC12V变压器,二极管IN4004,稳压块7805等。
220V交流电由变压器转为12V交流电,电路板外接12V交流电,经过IN4004整流及电容滤波,在通过稳压块7805得到5V左右的直流电,该电路接了电源指示灯D1,通电时变亮。
4)晶振电路和复位电路。
图4晶振电路和复位电路
三、数字时钟的原理图
四、数字时钟Protel整体原理图及PCB板
五、数字时钟的程序
1、流程图
2、程序
/**********************************************************************
*程序名;时钟实验1
*功能:
数码管通过动态扫描显示时间,时间可设定,调整时间时时钟不走.
*编程者:
ZJP
*编程时间:
2010/11/9
**********************************************************************/
#include
#defineuintunsignedint
#defineucharunsignedchar
sbit_led=P2^7;
sbitkey1=P2^0;
sbitkey2=P2^1;
sbitkey3=P2^2;
sbitkey4=P2^3;
ucharnum=0,temp=0,count=0;
ucharaa;
ucharhour,min,sec;
ucharcodetable[]={0x60,0xf3,0xa4,0xa1,0x33,0x29,0x28,0xe3,0x20,0x21};
voiddelay(uintz);
voiddisplay(uchara,ucharb,ucharc,uchard,uchare,ucharf,ucharaa);
voidread_key();
voidled();
voidtime_change();
/******************主函数*******************/
voidmain()
{P2=0xff;
hour=12;
min=0;
sec=0;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
aa=0xff;
while
(1)
{
time_change();
display(table[hour/10],table[hour%10],table[min/10],
table[min%10],table[sec/10],table[sec%10],0xff);
}
}
/******************显示函数*******************/
voiddisplay(uchara,ucharb,ucharc,uchard,uchare,ucharf,ucharaa)
{if
(1)
{
P0=0xfb&aa;P1=0xbf;delay
(2);
P0=0xdf&aa;P1=0xbf;delay
(2);}
if(num==1)
{
P0=0xfe&aa;P1=a;delay
(2);}
else
{
P0=0xfe;P1=a;delay
(2);}//hour
if(num==1)
{
P0=0xfd&aa;P1=b;delay
(2);}
else
{P0=0xfd;P1=b;delay
(2);}//hour
if(num==2)
{
P0=0xf7&aa;P1=c;delay
(2);
}
else
{
P0=0xf7;P1=c;delay
(2);}//min
if(num==2)
{
P0=0xef&aa;P1=d;delay
(2);
}
else
{P0=0xef;P1=d;delay
(2);}//min
if(num==3)
{
P0=0xbf&aa;P1=e;delay
(2);}
else
{P0=0xbf;P1=e;delay
(2);}//sec
if(num==3)
{
P0=0x7f&aa;P1=e;delay
(2);}
else
{P0=0x7f&aa;P1=f;delay
(2);}//sec
}
/**************定时器0中断函数***************/
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
temp++;
}
/**************定时器1中断函数***************/
voidtimer1()interrupt3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
if(count>=20)
count=0;
}
/******************延时子函数*******************/
voiddelay(uintz)
{
uintj,k;
for(j=z;j>0;j--)
for(k=120;k>0;k--);
}
/******************读按键函数*******************/
voidread_key()
{
if(key1==0)
{
_led=0;
delay(100);
if(key1==0)
{
delay(100);
_led=1;
num++;
if(num>3){num=0;}
while
(1)
{
if(key1==0)
{
_led=0;
delay(10);
if(key1==0)
{
num++;
if(num>3){num=0;break;}
}
while(!
key1);
delay(10);
while(!
key1);
_led=1;
}
if(key2==0)
{
_led=0;
delay(80);
if(key2==0)
{
if(num==1){hour++;if(hour==24)hour=0;}
if(num==2){min++;if(min==60)min=0;}
if(num==3){sec++;if(sec==60)sec=0;}
}
while(!
key1);
delay(10);
while(!
key1);
_led=1;
}
if(key3==0)
{
_led=0;
delay(80);
if(key3==0)
{
if(num==1){hour--;if(hour==0)hour=23;}
if(num==2){min--;if(min==0)min=59;}
if(num==3){sec--;if(sec==0)sec=59;}
}
while(!
key1);
delay(10);
while(!
key1);
_led=1;
}
if(key4==0)
{
_led=0;
delay(80);
if(key4==0)
{
num=0;break;
}
}
if(count<=15)
display(table[hour/10],table[hour%10],table[min/10],
table[min%10],table[sec/10],table[sec%10],0xff);
if(count>15)
display(table[hour/10],table[hour%10],table[min/10],
table[min%10],table[sec/10],table[sec%10],0x00);
}
}
while(!
key1);
delay(10);
while(!
key1);
_led=1;
}
}
/******************时间调整函数*******************/
voidtime_change()
{
read_key();
if(temp>=20)
{
temp=0;
sec++;
if(sec>=60)
{
sec=0;
min++;
if(min>=60)
{
min=0;
hour++;
if(hour>=24)
{
hour=0;
}
}
}
六、元件清单
序号
元器件名称
元件数目(个)
1
40脚双列直插AT89S51单片机
1
2
40脚双列直插芯片底座
1
3
20脚74HC373锁存器
1
4
20脚双列直插芯片底座
1
5
稳压块7805
1
6
极性电容50V220uF
2
7
极性电容50V22uF
1
8
电容16V1uF
2
9
瓷片电容30pF
2
10
按键
5
11
12MHz晶振
1
12
0.56寸共阳极7段数码管
8
13
10KΩ1/4W金属膜电阻1%色环铜脚电阻
19
14
9015三极管
8
15
IN4004二极管
4
16
发光二极管
1
17
3脚接插件(含簧片),脚距:
2.54
1
18
AC220V-AC12V变压器
1
19
开关
1
20
电线1米
1
21
插头
1
七、制作的心得
通过这次实习,我们完成了从选方案,制图,改写程序到画板,制板,焊接电路,一直到做出实物的一整体过程。
在这个全过程中,我们体会了在制作过程中的艰难与辛苦,特别是在制板和焊接过后的调试阶段,在检查错误,改正错误的过程中收获颇丰,在不断的改正过程中我们充分的认识到了我们的方案的不足之处,通过不断的改正错误和不足对方案是一种改进,同时对自己的能力也是一种提高。
我们采用的方案有哪些不足的,落后的以及错误的地方都在调试阶段有所发现,并找出了合适的解决方案,把问题逐一解决。
最终终于能正常工作时,那是激动人心的一刻,多日的辛劳与汗水终于得到了验证,同时也是无比自豪的,多想大喊一声,终于做出来了。
在这次试训中,充分的把理论与实践相结合,用实践来验证理论,用理论来指导实践,无论是在理论方面还是在动手方面都得到了该有的提高。
本次设计课题是一个以小组为单位的设计任务,我们小组成员密切配合,努力工作,不但提出问题,解决问题,使我们的作品较好地达到预期要求。
通过这次设计活动,使我们知道以前学的一些专业基础课有什么作用,对以前的几门课程起到了复习与加深的作用,还提高了我们分析问题解决问题的能力。
对电路设计的基本技能也起到了一个很好的锻炼作用。
更重要的是这是一个团队活动,培养了我们团队合作的精神,集合大的智慧,互相讨论,相互辩驳最后找到解决问题的最优方案,分工合作,最后完成老师交待的设计任务。
在这次实习的过程中,充分的体会到了团队合作的重要性,相互配合,相互补充,这些对我们的心灵是一种提升,对自己的能力是一种补充,以便以后能走上社会更好的工作。
八、实物图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 时钟 实验 报告