1、单片机课程设计科信学院课程设计说明书(2012 /2013 学年第 二 学期)课程名称 : 单片机课程设计 题 目 : 简易数字钟课程设计 专业班级 : 学生姓名 : 学 号 : 指导教师 : 苗敬利、王立国等 设计周数 : 2周 设计成绩 : 2013年06 月27 日目 录目 录1 设计任务描述11.1 设计题目:简易数字钟的设计11.2 设计要求:11.2.1 设计目的11.2.2 基本要求11.2.3元件清单12 设计方框图22.1 数字钟硬件部分示意图22.2 数字钟软件部分组成框图32.2.1 时间调整的程序流程32.2.2 时钟显示程序流程43 各部分模块介绍53.1 单片机AT
2、89C52芯片分析53.2 晶振电路模块63.3 复位电路模块63.4 显示模块73.5 时间校对按键模块84 简易数字钟源程序8源程序85 数字钟源程序的仿真125.1 编译、连接125.2 仿真125.3 生成HEX文件136 数字钟硬件原理图15 总原理图15小 结16171 设计任务描述 1.1 设计题目:简易数字钟的设计 1.2 设计要求:1.2.1 设计目的熟练使用Keil开发环境,具备编写单片机程序(汇编语言或C语言)的初步能力,通过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。1.2.2 基本要求简要说明任务和要求设计简易的数字钟,该数字钟满足以下要求:设计一台
3、以MCS-5为核心的简易数字钟。四位数码管显示小时和分钟,中间那个点来区分小时和分钟;每秒用一个LED灯闪烁一下;四个按键,分别为:选择键,加键,减键,确认键。时间要精确,整点报时,声音间隔一秒,并且可以调整时间,调整位闪烁提示。1.2.3 元件清单如下:元件名称型号数量用途元件名称型号数量用途单片机AT89S511控制核心电阻10K7按键电路晶振12MHz1晶振电路按键4电容30pF2数码管8段4位4显示电路电解电容30uF/10V1复位电路电阻3307电阻1k1电阻1001蜂鸣器及其驱动电路按键20014蜂鸣器DC5V1电源+5V/0.5A1提供+5V电源三极管901342 设计方框图2.
4、1 数字钟硬件部分示意图该简易数字钟硬件部分主要由晶振、手动复位、单片机AT89C52、数码管显示、时间调整按键模块组成。框图如下:单片机AT89S52电源复位电路晶振电路声音提示数码管显示按键电路基于AT89S51单片机数字钟系统框图 图2.1 数字钟硬件系统示意图 2.2 数字钟软件部分组成框图2.2.1 时间调整的程序流程YYNINT1中断服务子程序时钟分位调整时钟分位+11小时到时钟分位清零返回时钟小时位调整?时钟小时+124小时到时钟小时位清零NY图2.2 时间调整程序流程框图2.2.2 时钟显示程序流程T1中断服务子程序重置T1定时初值1秒到?秒位+11分到?分位+1、秒位清零1小
5、时到?小时位+1、分位清零24小时到?小时位清零返回NNNN图2.3 24小时时钟3 各部分模块介绍3.1 单片机AT89C51芯片分析AT89C51单片机引脚图如下:图 3.1 AT89C51引脚图该单片机是标准的40引脚双列直插式集成电路芯片,其各个引脚功能如下:VCC:+5V电源。VSS: 接地。RST:复位信号。当输入的复位信号延续两个周期以上的高电平时即为有效,用来完成单片机的初始化操作。XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。PO口:P0口作为一个8位漏极开路双向I/O口,当作输出
6、口使用时,必须接上拉电阻才有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”时对引脚输入的干扰。本次设计采用P0口作为数码管段选输出使用。P2口:内部有上拉电阻的8位I/O口,本次设计中作为数码管位选输出使用。3.2 晶振电路模块在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。 图3.2 晶振电路3.3 复位电路模块 单片
7、机复位的条件是:必须使RST/VPD或RST引脚加上两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12MHz,每个机器周期为1us,则只需要2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图所示。电路为上电复位,它利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻分压,在RESET端产生一个复位高电平。图3.3 复位电路3.4 显
8、示模块考虑采用动态显示部分,用P0口作为数码管数据(段选),P2口作为数码管控制(位选)。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。6位数码管,实验室的硬件是共阴极的,故我们的数码表采用0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00;图3.4 显示模块3.5 时间校对按键模块本次设计要求了该简易数字钟必须具备时、
9、分的调整功能。故必须接入2个简单的按键(本设计设置问p1.4调时、p1.5调分,按键为实验箱单次脉冲按键模块),并且在软件部分必须引入这2个独立按键的子程序。图3.5 时间校对按键电路4 简易数字钟源程序 源程序#include unsigned char code dispcode=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00; unsigned char dispbitcode=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f;
10、unsigned char dispbuf8=0,0,16,0,0,16,0,0; unsigned char dispbitcnt; unsigned char second; unsigned char minite; unsigned char hour; unsigned int tcnt; unsigned char mstcnt; unsigned char i,j; sbit P3_0=P30;sbit P3_1=P31;sbit P3_2=P32;void main(void) P2=0X00;TMOD=0x02; TH0=0x06; TL0=0x06; TR0=1; ET0=
11、1; EA=1; while(1) if(P3_0=0) for(i=5;i!=0;i-) for(j=248;j!=0;j-); if(P3_0=0) second+; if(second=60) econd=0; dispbuf0=second%10 ; dispbuf1=second/10; while(P3_0=0); if(P3_1=0) for(i=5;i!=0;i-) for(j=248;j!=0;j-); if(P3_1=0) minite+; if(minite=60) minite=0; dispbuf3=minite%10 ; dispbuf4=minite/10; while(P3_1=0); if(P3_2=0) for(i=5;i!=0;i-) for(j=248;j!=0;j-); if(P3_2=0) hour+; if(hour=24) hour=0; dispbuf6=hour%10 ; dispbuf7=hour/10; while(P3_2=0); void t0(void) interrupt 1 using 0 mstcnt+; if(mstcn
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1