电子钟设计报告.docx

上传人:b****4 文档编号:5541713 上传时间:2023-05-08 格式:DOCX 页数:33 大小:184.34KB
下载 相关 举报
电子钟设计报告.docx_第1页
第1页 / 共33页
电子钟设计报告.docx_第2页
第2页 / 共33页
电子钟设计报告.docx_第3页
第3页 / 共33页
电子钟设计报告.docx_第4页
第4页 / 共33页
电子钟设计报告.docx_第5页
第5页 / 共33页
电子钟设计报告.docx_第6页
第6页 / 共33页
电子钟设计报告.docx_第7页
第7页 / 共33页
电子钟设计报告.docx_第8页
第8页 / 共33页
电子钟设计报告.docx_第9页
第9页 / 共33页
电子钟设计报告.docx_第10页
第10页 / 共33页
电子钟设计报告.docx_第11页
第11页 / 共33页
电子钟设计报告.docx_第12页
第12页 / 共33页
电子钟设计报告.docx_第13页
第13页 / 共33页
电子钟设计报告.docx_第14页
第14页 / 共33页
电子钟设计报告.docx_第15页
第15页 / 共33页
电子钟设计报告.docx_第16页
第16页 / 共33页
电子钟设计报告.docx_第17页
第17页 / 共33页
电子钟设计报告.docx_第18页
第18页 / 共33页
电子钟设计报告.docx_第19页
第19页 / 共33页
电子钟设计报告.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子钟设计报告.docx

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

电子钟设计报告.docx

电子钟设计报告

 

电子综合项目设计

 

题目电子钟

专业通信工程

班级通信2010级

(1)班

学生姓名刘敬亚、刘梦曦

指导老师高瑜翔

 

2013年1月19日

目录

一、成员分工表·······································3

二、功能描述及设计原理·······························4

三、硬件原理图·······································6

四、软件流程图·······································7

五、调试及测试·······································7

六、总结与心得·······································7

附录一:

器件清单······································8

附录二:

程序设计及代码································8

 

一、成员分工表

姓名

班级

学号

组号

分工

1

刘敬亚

通信101

2010101012

6组

资料查找,设计硬件电路,

画PCB板,代码设计

2

刘梦曦

2010101026

资料查找

板子制作、焊接

二、功能描述及设计原理

1、设计思路

本次电路设计采用AltiumDesignerRelease10设计。

图1:

电子钟电路组成框图

2、各区域设计

(1)复位电路

首先设计的为复位电路:

采用手动复位电路如图2所示

该电路设计原理:

需要人为的在复位输入端RSt上加入高电平,所以在RST与VCC间接一个按钮。

图2:

复位电路设计图

(2)时钟电路

采用内部时钟方式。

在引脚x1与x2两端接入晶振。

晶振大小为12MHZ。

图3:

时钟电路设计图

(3)按键电路

因为要求有定时、调整时间的功能。

故目前采用4个按键的设计。

按键1进行时间的调整。

按键2换分钟位。

按键3换小时位。

按键4为确定定时等功能。

图4:

按键电路设计图

(4)蜂鸣器

因为设计的单片机为AT89C52,所以直接接在p3口并且接一个4.7k的上拉电阻。

图5:

蜂鸣器电路设计

(5)数码管显示

采用四位共阴数码管,接p0口需要接上拉电阻。

上拉电阻改为排阻。

图6:

数码管电路设计

(6)开关以及指示灯

图7:

开关、指示灯电路设计

 

三、硬件原理图

本组的电子钟设计图如下。

(部分连线,通过放置网络标号表示连接)

图8:

protel的原理图

图9:

Pcb设计图

四、软件流程图

图10:

软件流程图

五、调试及测试

1、硬件

调试过程中出现的问题:

喇叭音量过小,几乎听不到。

解决方案:

加上了一个三极管和一个上拉电阻。

2、软件

调试过程中出现的问题:

时钟定时没有写对。

测试报告:

能够正确的定时和时间的调整。

六、总结与心得

通过对这个项目的设计,我们学到了很多知识,比如Protel的基本实用方法、制板的基本过程、单片机等相关知识。

在学习和项目进行当中,虽然参考了很多资料,但是还是遇到了很多问题,比如Protel软件在WIN7系统中的兼容问题,封装的设定以及网络表的导入。

在PCB板的制作过程中,由于没有经验,对元器件的布局没有整体的统筹规划。

在原理的设计中,对一些单片机、感应器等知识不是很了解,但都通过参考资料和请教他人得以解决。

下一步我们会尽快将实物做出来并加以调试。

在今后的学习中,我们要进一步加强相关知识的学习,加深工程的概念,努力提高自己的实际操作和动手能力。

附录一:

器件清单

序号

名称

型号

数量

1

发光二极管

1

2

自锁开关

1

3

单片机

AT89C52

1

4

插座

1

5

四位共阴数码管

1

6

晶振

12MHz

1

7

排阻

1

8

电阻

1kΩ

3

9

电阻

4.7kΩ

1

10

瓷片电容

30pf

2

11

电解电容

22pf

1

12

按键

5

13

蜂鸣器

1

14

三极管

9013

1

15

导线若干

16

插针若干

 

附录二:

程序设计及代码

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitkey1=P2^0;

sbitkey2=P2^1;

sbitkey3=P2^2;定义按键接口

sbitkey4=P2^3;

sbitbeep=P2^4;

sbitspeaker=P3^5;

sbitcom1=P1^4;

sbitcom2=P1^5;

sbitcom3=P1^6;4位led的选位线

sbitcom4=P1^7;

ucharflag=1;

uchartemp=0;

ucharnum1=0,num4=0;

ucharspeaker_num;

ucharclk_hour=20,clk_min=13,clk_miao=14;

ucharalm_hour=13,alm_min=15;

ucharnian=2013,yuan=1,ri_ri=4;

ucharcount=0;

ucharT0_int_nums;

ucharcodetable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x80};

intflag1=0;

//延时程序

voiddelayms(uintxms)

{

uinti,j;

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

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

}

//显示程序

voiddisplay()

{

if(num1==0&&num4==0)

{

if(count<50)

{

com4=0;com3=1;com2=1;com1=1;

P0=table[clk_hour/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[clk_hour%10];

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[clk_min/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[clk_min%10];

delayms

(1);

}

else

{

com4=0;com3=1;com2=1;com1=1;

P0=table[clk_hour/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[clk_hour%10]+0x80;

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[clk_min/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[clk_min%10];

delayms

(1);

}

}

elseif(num1!

=0)

{

if(num1==1)

{if(count<50)

{com4=0;com3=1;com2=1;com1=1;

P0=table[clk_hour/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[clk_hour%10];

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[clk_min/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[clk_min%10];

delayms

(1);

}

else

{com4=0;com3=1;com2=1;com1=1;

P0=table[clk_hour/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[clk_hour%10]+0x80;

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=0x00;

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=0x00;

delayms

(1);

}

}

if(num1==2)

{

if(count<50)

{com4=0;com3=1;com2=1;com1=1;

P0=table[clk_hour/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[clk_hour%10];

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[clk_min/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[clk_min%10];

delayms

(1);}

else

{com4=0;com3=1;com2=1;com1=1;

P0=0x00;

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=0x00+0x80;

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[clk_min/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[clk_min%10];

delayms

(1);

}

}

if(num1==3)

{

if(count<50)

{com4=0;com3=1;com2=1;com1=1;

P0=table[alm_hour/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[alm_hour%10];

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[alm_min/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[alm_min%10];

delayms

(1);

}

else

{

com4=0;com3=1;com2=1;com1=1;

P0=table[alm_hour/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[alm_hour%10]+0x80;

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=0x00;

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=0x00;

delayms

(1);

}

}

if(num1==4)

{

if(count<50)

{com4=0;com3=1;com2=1;com1=1;

P0=table[alm_hour/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[alm_hour%10];

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[alm_min/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[alm_min%10];

delayms

(1);

}

else

{

com4=0;com3=1;com2=1;com1=1;

P0=0x00;

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=0x00+0x80;

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[alm_min/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[alm_min%10];

delayms

(1);

}

}

if(num1==5)

{

if(count<50)

{com4=0;com3=1;com2=1;com1=1;

P0=table[yuan/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[yuan%10];

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[ri_ri/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[ri_ri%10];

delayms

(1);

}

else

{com4=0;com3=1;com2=1;com1=1;

P0=table[yuan/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[yuan%10]+0x80;

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=0x00;

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=0x00;

delayms

(1);

}

}

if(num1==6)

{

if(count<50)

{com4=0;com3=1;com2=1;com1=1;

P0=table[yuan/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[yuan%10];

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[ri_ri/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[ri_ri%10];

delayms

(1);

}

else

{com4=0;com3=1;com2=1;com1=1;

P0=0x00;

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=0x00+0x80;

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[ri_ri/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[ri_ri%10];

delayms

(1);

}

}

}

else

{

if(count<50)

{

com4=0;com3=1;com2=1;com1=1;

P0=table[yuan/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[yuan%10]+0x80;

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[ri_ri/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[ri_ri%10];

delayms

(1);

}

else

{com4=0;com3=1;com2=1;com1=1;

P0=table[yuan/10];

delayms

(1);

com4=1;com3=0;com2=1;com1=1;

P0=table[yuan%10]+0x80;

delayms

(1);

com4=1;com3=1;com2=0;com1=1;

P0=table[ri_ri/10];

delayms

(1);

com4=1;com3=1;com2=1;com1=0;

P0=table[ri_ri%10];

delayms

(1);

}

}

}

//定义分加按键

voidkey_min_jia()

{

if(key2==0)

{

delayms(5);

if(key2==0)

{

while(!

key2)

display();

clk_min++;

if(clk_min==60)

clk_min=0;

}

}

}

//定义分减按键

voidkey_min_jian()

{if(key3==0)

{

delayms(5);

if(key3==0)

{

while(!

key3)

display();

clk_min--;

if(clk_min==-1)

clk_min=59;

}

}

}

//定义时加按键

voidkey_hour_jia()

{if(key2==0)

{delayms

(2);

if(key2==0)

{

while(!

key2)

display();

clk_hour++;

if(clk_hour==24)

clk_hour=0;

}

}

}

//定义时减按键

voidkey_hour_jian()

{if(key3==0)

{delayms

(2);

if(key3==0)

{

while(!

key3)

display();

clk_hour--;

if(clk_hour==-1)

clk_hour=23;

}

}

}

//定义闹铃分加按键

voidalm_min_jia()

{if(key2==0)

{delayms(5);

if(key2==0)

{

while(!

key2)

display();

alm_min++;

if(alm_min==60)

alm_min=0;}

}

}

//定义闹铃分减按键

voidalm_min_jian()

{if(key3==0)

{delayms(5);

if(key3==0)

{

while(!

key3)

display();

alm_min--;

if(alm_min==-1)

alm_min=59;}

}

}

//定义闹铃时加按键

voidalm_hour_jia()

{if(key2==0)

{delayms(5);

if(key2==0)

{

while(!

key2)

display();

alm_hour++;

if(alm_hour==24)

alm_hour=0;}

}

}

//定义闹铃时减按键

voidalm_hour_jian()

{if(key3==0)

{delayms(5);

if(key3==0)

{

while(!

key3)

display();

alm_hour--;

if(alm_hour==-1)

alm_hour=23;}

}

}

//定义月加按键

voidyuan_jia()

{if(key2==0)

{delayms(5);

if(key2==0)

{

while(!

key2)

display();

yuan++;

if(yuan==13)

yuan=1;

}

}

}

//定义月减按键

voidyuan_jian()

{if(key3==0)

{delayms(5);

if(key3==0)

{

while(!

key3)

display();

yuan--;

if(alm_hour==0)

alm_hour=12;}

}

}

//定义日加按键

voidri_jia()

{if(key2==0)

{delayms(5);

if(key2==0)

{

while(!

key2)

display();

ri_ri++;

if(ri_ri==29)

{

if(((nian-1996)%4!

=0)&&(yuan==2))//考虑是否为2月,是否为平年

{

ri_ri=1;

}

}

if(ri_ri==30)

{

if(((nian-1996)%4==0)&&(yuan==2))

{

ri_ri=1;

}

}

if(ri_ri==31)

{

if(yuan==4||yuan==6||yuan==9||yuan==11)//有30天的月

{

ri_ri=1;

}

}

if(ri_ri==32)

{

ri_ri=1;

}

}

}

}

//定义日减按键

voidri_jian()

{if(key3==0)

{delayms(5);

if(key3==0)

{

while(!

key3)

display();

ri_ri--;

if(ri_ri==0)

{

if(yuan==1||yuan==3||yuan==5||yuan==7||yuan==8||yuan==10||yuan==12)//有31天的月

{

ri_ri=31;

}

if(yuan==4||yuan==6||yuan==9||yuan==11)//有30天的月

{

ri_ri=30;

}

else

{ri_ri=28;}

}

}

}

}

//定义按键功能

voidkey_proc()

{

beep=0;

if(key1==0)

{

delayms

(1);

if(key1==0)

{while(!

key1);

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

当前位置:首页 > 医药卫生 > 基础医学

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

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