数字仿真电子钟.docx
- 文档编号:30390719
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:14
- 大小:202.07KB
数字仿真电子钟.docx
《数字仿真电子钟.docx》由会员分享,可在线阅读,更多相关《数字仿真电子钟.docx(14页珍藏版)》请在冰豆网上搜索。
数字仿真电子钟
数字仿真电子钟
目录
第一部分课程设计任务书1
一、课程设计题目1
二、课程设计时间1
三、课程设计提交方式1
四、设计要求1
第二部分课程设计报告2
一、单片机发展简史2
二、MCS-51单片机系统简介2
三、设计思路2
四、硬件设计电路2
五、软件设计流程2
六、程序源代码2
七、结束语2
八、参考文献2
第一部分课程设计任务书
一、课程设计题目
仿真数码管电子钟
二、课程设计时间
一周
三、课程设计提交方式
提交打印课程设计报告
四、设计要求
在任务一的基础上增加按键设置时间功能,使数字钟具有时、分、秒的调节功能:
1)自动计时,显示24小时制时间,由6位LED显示器显示时、分、秒。
2)具备校准功能,可以直接由按键设置当前时间。
第二部分课程设计报告
一、单片机发展概况
AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4KB的可反复擦除的只读程序存储器(PEROM)和128B随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合。
二、MCS-51单片机系统简介
AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4KB的可反复擦除的只读程序存储器(PEROM)和128B随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合。
主要性能参数:
①与MCS-51产品指令系统完全兼容
②4K字节可重擦写FLASH闪速存储器
③1000次擦写周期
④全静态操作:
0HZ-24MHZ
⑤三级加密程序存储器
⑥128
8字节内部RAM
⑦32个可编程I/O口线
⑧2个16位定时/计数器
⑨6个中断源
⑩可编程串行UART通道
图3.111AT89C51引脚封装图
芯片引脚介绍:
(1)主电源引脚
◇VCC:
+5V电源
◇VSS:
地线。
(2)时钟电路引脚
◇XTAL1和XTAL2:
外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
(3)控制信号引脚
◇RST/VPD:
复位信号。
当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作;当单片机掉电时,此引脚上可接备用电源,由VPD向片内RAM提供备用电源,一保持片内RAM中的数据不丢失。
◇ALE/PROG:
地址锁存控制信号。
在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。
此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。
对于EPROM型单片机,在EPRAM编程期间,此引脚接收编程脉冲。
◇PSEN:
片外程序存储器读选通信号输出端。
◇EA/VPP:
访问程序存储控制信号。
当EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。
对于EPROM型单片机,在EPRAM编程期间,此引脚接上加21VEPROM编程电源VPP。
(4)I/O引脚
P0.0~P0.7:
P0口8位双向口线。
P1.0~P1.7:
P1口8位双向口线。
P2.0~P2.7:
P2口8位双向口线。
P3.0~P3.7:
P3口8位双向口线。
P3口线的第二功能。
P3的8条口线都定义有第二功能,详见表3-1。
表3-11P3口各引脚与第二功能表
引脚
第二功能
信号名称
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
外部RAM写选通
P3.7
RD
外部RAM读选通
以上把8051单片机的全部信号引脚分别以第一功能和第二功能的形式列出。
对于各种型号的芯片,其引脚的第一功能信号是相同的,所不同的只在引脚的第二功能信号。
对于9、30和31三个引脚,由于第一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾。
但是P3口的情况却有所不同,它的第二功能信号都是单片机的重要控制信号。
因此,在实际使用时,都是先按需要选用第二功能信号,剩下的才以第一功能的身份作数据位的输入/输出使用。
三、设计思想
本系统主要采用单片机作为主控芯片,外接复位模块、调整校时模块、驱动显示模块和外部时钟脉冲。
本设计采用50HZ激励源仿真时钟脉冲,驱动显示模块主要由单片机P2.0—P2.2三个端口接74LS138译码器,8个输出端口接8片74100的使能端,P2.3接74LS138的使能端,P2.4—P2.7接到8片74100的输入端,采取动态扫描原理来驱动显示。
由于50HZ激励源仿真时钟脉冲接在AT89C51芯片的
中断端口,激励源时钟脉冲周期为0.02秒,在每一个时钟脉冲上升沿触发中断,调用中断子程序。
中断子程序主要为每0.5秒使显示组件中的LED[:
]点亮,每1秒LED[:
]关闭且秒递增,满60秒加分,同时每秒刷新时分秒显示。
系统设置了显示缓冲disp_Buffer[],共有7位,前6位为时分秒显示缓冲(各占两位),第7位控制AM、PM、SET标志以及LED发光管闪光显示。
disp_Buffer[6]从低位到高位,第1位为0时AM显示,为1时PM显示;第2位为0时12h制,为1时24h制,仅当第2位为1时,第1位才有效;第3位为SET标志位,为1时处于设置状态,发光管亮,为0时处于显示状态,发光管灭;第4位为LED闪烁控制位,为0时亮,为1时灭。
系统在显示状态时,中断开,循环执行中断子程序,秒递增,刷新显示,将当前时间current_Time中的相应位装入disp_Buffer中相应位,再从单片机P2端口输出驱动显示。
当系统处于设置状态时,关闭中断,显示暂停,执行调整与设置时钟程序。
四、硬件电路设计
下面为系统的硬件原理图
图3.2系统硬件电路图
五、软件设计框图
图4.1系统主程序流程图
图4-2中断子程序的流程图
图4-2键盘扫描子程序的流程图
图4-2prituse实现的电路图
六、程序源代码
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
uchartCount=0;
sbitK1=P0^0;
sbitK2=P0^1;
sbitK3=P0^2;
sbitK4=P0^3;
ucharcurrent_Time[]={00,00,00};
uchardisp_Buffer[]={0,0,0,0,0,0};
ucharf_24=0,f_AM=0,f_set=0;
voidDelayMS(uintx)
{
uchari;
while(--x)for(i=0;i<125;i++);
}
voidAdd_Hour()
{
++current_Time[0];
if(f_24==1&¤t_Time[0]==24)
current_Time[0]=0;
if(f_24==0&¤t_Time[0]==13)
{
current_Time[0]=1;
}
}
voidAdd_Miniute()
{
++current_Time[1];
if(current_Time[1]==60)
{
current_Time[1]=0;
Add_Hour();
}
}
voidRefresh_Disp_Buffer()
{
uchari;
for(i=0;i<3;i++)
{
disp_Buffer[2*i]=current_Time[i]/10;
disp_Buffer[2*i+1]=current_Time[i]%10;
}
}
voidEX0_INT()interrupt0
{
++tCount;
if(tCount==50)//每秒刷新显示缓冲等
{
tCount=0;
if(++current_Time[2]==60)//秒递增
{
current_Time[2]=0;
Add_Miniute();
}
Refresh_Disp_Buffer();//刷新时分秒的显示缓冲
}
}
voidDisplay_Time()
{
uchari;
for(i=0;i<7;i++)
{
P2=(disp_Buffer[i]<<4)|i|0x08;
DelayMS(5);
P2=P2&0xF7;
DelayMS(5);
}
}
voidadjust_and_set_clock()
{
//设置状态下,调整时与分,12h/24h制等
while(K2==0)
{
//设置12h/24h制
if(K1==0)//切换12h/24h制
{
f_24=1;
}
else
f_24=0;
//加小时
if(K3==0)
{
DelayMS(150);//小时增加时会影响am,pm标志,因此这里可调用数
Add_Hour();
}
//加分钟
if(K4==0)
{
DelayMS(150);//因为加分钟的函数会向小时进位,故单独增加
current_Time[1]=(current_Time[1]+1)%60;
}
Refresh_Disp_Buffer();
Display_Time();
}
}
voidKeyboard_scan()
{
if(K1==0)//切换12h/24h制
{
f_24=1;
}
else
{
f_24=0;
}
if(K2==0)//显示或关闭"set"
{
EX0=0;f_set=1;
//调整与设置时钟,如果K2键未合上,调用将立即返回
adjust_and_set_clock();
}
else
{
EX0=1;f_set=0;
}
}
voidmain()
{
IE=0X81;//允许外部0中断,下降沿触发
IT0=1;
f_24=(K1==0);
while
(1)
{
Display_Time();
Keyboard_scan();
}
}
七、结束语
经过一学期的单片机课程的学习,我们了解了单片机的发展,学到了关于单片机的理论基础知识,也做了一些实验,学会了怎么去用学到的理论知识。
这次课程设计更是加深理解,学以致用。
通过这次课程设计,对这一学期学习的知识也有了一个梳理与整合。
使我们对这门课有了更为深刻的认识。
八、参考文献
[1]蔡美琴等.MCS-51系列单片机系统极其应用.北京:
高等教育出版社,2004
[2]林伸茂.8051单片机彻底研究实习篇.北京:
人民邮电出版社,2004
[3]胡学海.单片机原理极其应用系统设计.北京:
电子工业出版社,2005
[4]张毅刚.单片机原理极其应用.哈尔滨:
哈尔滨工业大学出版社,2004
[5]韩志军等.单片机应用系统设计.北京:
机械工业出版社,2005
[6]舒怀林.单片机原理与接口技术.武汉:
华中科技大学出版社,2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 仿真 电子钟