电子时钟课程设计.docx

上传人:b****2 文档编号:1696123 上传时间:2023-05-01 格式:DOCX 页数:15 大小:78.94KB
下载 相关 举报
电子时钟课程设计.docx_第1页
第1页 / 共15页
电子时钟课程设计.docx_第2页
第2页 / 共15页
电子时钟课程设计.docx_第3页
第3页 / 共15页
电子时钟课程设计.docx_第4页
第4页 / 共15页
电子时钟课程设计.docx_第5页
第5页 / 共15页
电子时钟课程设计.docx_第6页
第6页 / 共15页
电子时钟课程设计.docx_第7页
第7页 / 共15页
电子时钟课程设计.docx_第8页
第8页 / 共15页
电子时钟课程设计.docx_第9页
第9页 / 共15页
电子时钟课程设计.docx_第10页
第10页 / 共15页
电子时钟课程设计.docx_第11页
第11页 / 共15页
电子时钟课程设计.docx_第12页
第12页 / 共15页
电子时钟课程设计.docx_第13页
第13页 / 共15页
电子时钟课程设计.docx_第14页
第14页 / 共15页
电子时钟课程设计.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电子时钟课程设计.docx

《电子时钟课程设计.docx》由会员分享,可在线阅读,更多相关《电子时钟课程设计.docx(15页珍藏版)》请在冰点文库上搜索。

电子时钟课程设计.docx

电子时钟课程设计

湖南工程学院

课程设计

课程名称单片机原理与应用

课题名称电子时钟设计

专业

班级

学号

姓名

指导教师_李XX

2012年5月5日

湖南工程学院

课程设计任务书

 

课程名称单片机原理与应用

课题电子时钟设计

 

专业班级

学生姓名

学号

指导老师李XX

审批

 

任务书下达日期2011年5月5日

任务完成日期2011年5月20日

设计内容与设计要求

设计内容:

本课题以单片机为核心,利用其定时器和6位数码管,设计一个电子时钟。

要求有以下功能:

1、开机时,显示00:

00:

00的时间开始计时;

2、要求有秒,分,时的调节。

3、具有复位功能。

设计要求:

1)确定系统设计方案;

2)进行系统的硬件设计;

3)完成必要的参数计算与元器件选择;

4)完成应用程序设计;

5)进行单元电路及应用程序的调试;

6)写出使用说明书

主要设计条件

1、MCS-51单片机实验操作台1台;

2、PC机及单片机调试软件;

3、单片机应用系统板1套;

4、制作工具1套;

5、系统设计所需的元器件。

说明书格式

1.课程设计任务书

2.目录

3.说明书内容

1)课题的设计要求、目的、意义

2)系统总体方案选择与说明

3)系统结构框图与工作原理

4)各单元硬件设计说明及计算方法

5)软件设计与说明(包括流程图)

6)调试结果与必要的调试说明

7)使用说明

8)程序清单

9)总结

10)参考文献

附录

附录A系统原理图

附录B程序清单

评分表

进度安排

设计时间为两周

第一周

星期一、上午:

布置课题任务,讲课及课题介绍

下午:

借阅有关资料,总体方案讨论

星期二、确定总体设计方案

星期三、硬件模块方案设计

星期四、软件模块方案设计

星期五、各硬件模块设计

第二周

星期一、各硬件模块设计

星期二、各软件模块设计

星期三、各软件模块设计

星期四、写说明书

星期五、上午:

写说明书,整理资料

下午:

交设计资料,答辩

参考文献

[1]付家才.单片机控制工程实践技术.北京:

化学工业出版社,2004

[2]孙育才,王荣兴,孙化芳.新型AT89S52系列单片机及其应用.北京:

清华大学出版社,20

电气信息学院课程设计评分表

项目

评价

及格

设计方案合理性与创造性(10%)

开发板焊接及其调试完成情况*(10%)

硬件设计或软件编程完成情况(20%)

硬件测试或软件调试结果*(10%)

设计说明书质量(20%)

答辩情况(10%)

完成任务情况(10%)

独立工作能力(10%)

出勤情况(10%)

综合评分

指导教师签名:

________________

日期:

________________

注:

表中标*号项目是硬件制作或软件编程类课题必填内容;

此表装订在课程设计说明书的最后一页。

课程设计说明书装订顺序:

封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。

以下为课程设计的指导书(程序及电路图全有)

程序部分:

/**************************

按下设置键对应的位(时分秒)闪烁,再按下数字键即可设置时间,设置好后按确定退出

程序可在整点提示,无闹钟设置

**************************/

#include"reg51.h"//包含51单片机头文件

#defineucharunsignedchar

#defineuintunsignedint

sbitBuzzer=P2^7;//定义喇叭接口,用于报时

uintsec;//秒寄存器

uintmin=0;//分寄存器

uinthour=0;//小时寄存器

uinttcnt;//计数器值

uintcursor=0;

uchara=0xff;

uchartempkey,num,numclear;

ucharcodeSeg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示0-9的对应P0输出的16进制代码

uintcodetab[3][4]={{'1','2','3','4'},

{'5','6','7','8'},

{'9','0','S','Q'}

};//矩阵(3行4列)表示0到F的16个键值

voiddelay(uintt)//延时函数

{

uinti;

while(t--)

{for(i=0;i<125;i++);}

}

voidTdelay(unsignedinti)//短时间延时函数

{

while(i--);

}

voidKdelay()//长时间延时函数

{

uchari,j;

for(i=100;i>0;i--)

for(j=248;j>0;j--);

}

voiddisplay(ucharL9,ucharL10,ucharL11,ucharL12,ucharL13,ucharL14)//数码管显示函数,L9-L14分别为1-6个数码管显示的值即:

时分秒

{

//P2=0xFF;

if(cursor==3){P1=0x7F|a;P0=L9;delay

(1);}else{P1=0x7F;P0=L9;delay

(1);}//hour

if(cursor==3){P1=0xBF|a;P0=L10;delay

(1);}else{P1=0xBF;P0=L10;delay

(1);}//hour

if(cursor==2){P1=0xDF|a;P0=L11;delay

(1);}else{P1=0xDF;P0=L11;delay

(1);}//min

if(cursor==2){P1=0xEF|a;P0=L12;delay

(1);}else{P1=0xEF;P0=L12;delay

(1);}//min

if(cursor==1){P1=0xF7|a;P0=L13;delay

(1);}else{P1=0xF7;P0=L13;delay

(1);}//sec

if(cursor==1){P1=0xFB|a;P0=L14;delay

(1);}else{P1=0xFB;P0=L14;delay

(1);}//sec

}

charkbscan()//键盘扫描函数,若有按键函数将返回键值

{

unsignedcharhang,lie,key;

if(P3!

=0x0f)//0x0f==00001111,此处扫描是否有按键按下

delay(5);//延时用于按键消抖

if(P3!

=0x0f)

{

switch(P3&0x0f)//分析按键“列”值(矩阵键盘有行列之分)

{

case0x0e:

lie=0;break;//0x0e==00001110

case0x0d:

lie=1;break;//0x0d==00001101

case0x0b:

lie=2;break;//0x0b==00001011

case7:

lie=3;break;

}

P3=0xf0;

P3=0xf0;

switch(P3&0xf0)//分析按键“行”值

{

case0xe0:

hang=0;break;//0xe0==11100000

case0xd0:

hang=1;break;//0xd0==11010000

case0xb0:

hang=2;break;//0xb0==10110000

}

P3=0x0f;

while(P3!

=0x0f);//等待按键松开

key=tab[hang][lie];

}

else

key=0;

return(key);//键值返回给函数

}

voidSetTime1()//此定时器增加数码管动态闪烁

{

//----------定时器用1

TMOD|=0x20;//使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响

TH1=(65536-50000)/256;//50毫秒

TL1=(65536-50000)%256;//给定初值,这里使用定时器最大值从0开始计数一直到65535溢出

EA=1;//总中断打开

ET1=1;//定时器中断打开

TR1=1;//定时器开关打开

}

main()

{

unsignedchartemp,str[32];

TMOD=0x02;//设置模式为定时器T0的模式2(8位自动重装计数初值的计数值)

TH0=0x06;//设置计数器初值高位,靠TH0存储重装的计数值X0=256-250=6

TL0=0x06;//设置计数器初值低位

TR0=1;//启动T0

ET0=1;//开启定时器T0中断允许

EA=1;//开启中断总控制

P3=0x0f;//给P3口付初值0x0f==00001111,以便按键扫描

num=0;

Buzzer=0;//关闭蜂鸣器

while

(1)

{

if(min==0&&sec<1)Buzzer=1;elseBuzzer=0;//到整点蜂鸣器响

temp=kbscan();//扫描是否有按键操作

if(temp!

=0)

{

if(temp=='S')//判断按键是“设置键”

{

delay

(1);

if(temp=='S')//防抖动

{

++cursor;

if(cursor>3){cursor=0;TR0=1;TR1=0;}//cursor=1-3分别为设置秒、分、时3种状态

}

}

if(cursor==0&&temp=='Q'){min=0;sec=0;hour=0;}//非设置状态下按下“确定、复位”键清零时间

if(temp=='Q')//判断按键为“确定”键:

在设置时间状态下按下此键为确定设置完毕

{

delay

(1);

if(temp=='Q')

{

for(numclear=0;numclear<32;numclear++)//全部写零

{

str[numclear]=0;

}

if(min>=60)

{

min=0;

}

if(hour>=24)

{

hour=0;

}

cursor=0;

TR0=1;

TR1=0;

}

}

if(cursor!

=0&&temp!

='S'&&temp!

=0)//设置状态下改变时间

{

delay

(1);

if(cursor!

=0&&temp!

='S'&&temp!

=0)

{

TR0=0;

if(cursor==1){sec=temp-48;str[++num]=sec;sec=str[num-1]*10+sec;SetTime1();}

if(cursor==2){min=temp-48;str[++num]=min;min=str[num-1]*10+min;SetTime1();}

if(cursor==3){hour=temp-48;str[++num]=hour;hour=str[num-1]*10+hour;SetTime1();}

}

}

}

display(Seg[hour/10],Seg[hour%10],Seg[min/10],Seg[min%10],Seg[sec/10],Seg[sec%10]);//显示时间到数码管上

}

}

voidt0(void)interrupt1using0//t0的中断程序,用于时间运作

{

tcnt++;

if(tcnt==4000)//定时器的定时计数,4000次250us为1秒

{

tcnt=0;

a=~a;

sec++;

if(sec>=60)

{

sec=0;

min++;

if(min>=60)

{

min=0;

hour++;

if(hour>=24)

{

hour=0;

}

}

}

}

}

voidTime_1()interrupt3using1//中断处理函数,用于在设置时间时数码管闪烁

{

staticunsignedintn=0;

n++;

if(n==500)

{

n=0;

a=~a;

}

}

电路图(protus仿真图):

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2