数码万年历课程设计.docx

上传人:b****4 文档编号:27166831 上传时间:2023-06-27 格式:DOCX 页数:35 大小:880.51KB
下载 相关 举报
数码万年历课程设计.docx_第1页
第1页 / 共35页
数码万年历课程设计.docx_第2页
第2页 / 共35页
数码万年历课程设计.docx_第3页
第3页 / 共35页
数码万年历课程设计.docx_第4页
第4页 / 共35页
数码万年历课程设计.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

数码万年历课程设计.docx

《数码万年历课程设计.docx》由会员分享,可在线阅读,更多相关《数码万年历课程设计.docx(35页珍藏版)》请在冰豆网上搜索。

数码万年历课程设计.docx

数码万年历课程设计

湖北科技学院

设计名称:

数码万年历的设计与制造

院系:

电信学院

班级:

12光电

指导老师:

阮诗森徐四六

组别:

第12组

时间:

2015.6

组员:

卢道泼饶鹏

王川阚学聪

光电系统课程设计

目录

1.绪论…………………………………………………………………3

1.1选择题目……………………………………………………………3

1.2系统概述……………………………………………………………3

2.前言…………………………………………………………………3

2.1课题背景   ………………………………………………………3

2.2课题意义 ………………………………………………………4

2.3人员分工 ………………………………………………………4

3.系统结构……………………………………………………………4

3.1设计要求……………………………………………………43.2结构框图………………………………………………………5

3.3材料使用………………………………………………………5

4.主要器材选择与材料信息…………………………………………7

4.1主控芯片………………………………………………………7

4.2时钟芯片……………………………………………………9

4.3液晶显示屏……………………………………………………10

5.制作过程及电路图……………………………………………11

5.1制作过程……………………………………………………11

5.2电路原理图………………………………………………12

5.3成品实物图…………………………………………………13

6.数码万年历设计图………………………………………………13

6.1LCD液晶显示屏接线图…………………………………14

6.2DS12c887时钟芯片接线图…………………………………14

6.3按键部分接线图…………………………………………15

7.程序…………………………………………………………………15

1.绪论

1.1选择题目

电子万年历是一种应用非常广泛日常计时工具,对现代社会越来越重要,有很重要的现实意义。

而且由于我们组单片机课程基础和电路板的制作掌握的不是很到位,为了能够有信心做好此次课程设计。

我们组最终打算做相对比较简单的万年历,以便让自己的基础知识掌握的更加扎实,为以后毕业答辩积累知识和经验,提供思路和方法,增强自信和应对能力。

1.2系统概述

随着电子技术的不断发展,人们不断创新,各式各样的万年历在市场随处可见。

运用自己所学的知识,自己动手做一个万年历,很方便快捷,而且很有成就感,何乐而不为呢?

2.前言

2.1课题背景   

在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响,随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。

为了在观测时间的同时,能够了解其它与人类密切相关的信息,比星期、日期等,电子万年历诞生了,它集时间、日期、星期功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势。

电子万年历的出现给人们的生活带来的诸多方便,作为一种附加功能,现在越来越广泛的被应用于各种电子产品中,具有广阔的市场前景。

 

2.2 课题意义 

电子万年历作为电子类小产品不仅是市场上的宠儿,也是是单片机设计培训中一个很实用的题目。

因为这个课题有很好的开放性和可发挥性,对制作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。

而且要求设计的电子万年历在操作上力求简洁,功能上尽量齐全,显示界面也要出色。

所以,电子万年历制作无论从实用目的,还是从培养能力的角度来看都是很有价值的毕业设计课题。

2.3人员分工 

卢道泼:

负责硬件电路的设计与制作调试工作

饶鹏:

负责程序控制来实现相应的功能

王川:

负责PPT的制作和课程设计报告的书写和完善

阚学聪:

负责收集提供资料,遇到问题寻求帮助

3.系统结构

3.1设计要求

1.能够显示时分秒,星期;

2.能够显示年月日;

3.能够复位清屏;

4.可以调节时间,日期;

5.有闹钟设置;

3.2结构框图

系统结构:

 

3.3材料使用

单片机芯片(STC89C52)一片

时钟芯片(DS12C887)一个

液晶显示屏(LCD1602)一个

双面覆铜板一块

PCB打印机一台

腐蚀剂一袋

蜂鸣器一个

103电位器一个

三极管(s9014)若干

电阻(1K

,10K

,500

等)若干

电容若干

排阻(10K

)一个

晶振(12MHz)一个

40引脚插座一个

24引脚插座一个

插针若干

按键若干

USB母头一个

USB据线一根

导线若干

小刀一把

焊接工具(电烙铁,焊丝,松香,支架)一套

程序烧录软件

4.主要器材选择与材料信息

4.1主控芯片

4.1.1本设计采用STC89C52芯片作为硬件核心,该芯片采用FlashROM,内部具有8KBROM存储空间,相对于本设计而言程序空间完全够用。

能于5V电压工作,与MCS-51系列单片机完全兼容,而且运用于电路设计中时具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,避免芯片的多次拔插对芯片造成的损坏。

STC89C52芯片引脚

STC89C52芯片

4.1.2STC89C52芯片各引脚功能介绍:

VCC(40):

+5V。

GND(20):

接地。

P0口(39-32):

P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流。

P1口(1-8):

P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流。

P2口(21-28):

P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流。

P3口(10-17):

P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口。

RST(9):

复位输入。

当振荡器复位时,要保持RST引脚2个机器周期的高电平时间。

ALE/PROG(30):

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲。

PSEN(29):

外部程序存储器的选通信号。

在由外部程序存储器取指期间,

每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现。

EA/VPP(31):

当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有内部程序存储器。

FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1(19):

反向振荡器放大器的输入及内部时钟工作电路的输入。

XTAL2(18):

来自反向振荡器的输出。

4.2时钟芯片

采用日历时钟芯片DS12C887来产生时间,数据经单片机处理后送到数码管显示。

由于DS12C887能够自动产生世纪,年,月,日,时,分,秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决了“千年”问题;DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能保持10年之久。

对于一天内的时间记录,有12小时制和24小时制两种模式。

在12小时制模式中,用AM和PM区分上午和下午。

DS12C887中带有128字节RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM供用户使用。

此外,用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。

DS12C887芯片

DS12C887引脚

   4.3液晶显示屏

采用LCD1602液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,显示多样,清晰可见,对于电子万年历而言,一个1602的液晶屏即可,价格也还能接受,,需要的接口线较多,但会给调试带来诸多方便,所以此设计中采用LCD1602液晶显示屏作为显示模块。

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。

LCD1602液晶显示屏引脚

LCD1602液晶显示屏

第1脚:

VSS为电源地

第2脚:

VCC接5V电源正极

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

第6脚:

E(或EN)端为使能(enable)端,高电平

(1)时读取信息,负跳变时执行指令。

第7~14脚:

D0~D7为8位双向数据端。

第15~16脚:

空脚或背灯电源。

15脚背光正极,16脚背光负极。

5.制作过程及电路图

5.1第一步:

选好课题后,从网上购买所需器材。

第二步:

用AltiumDesigner软件画出电路原理图,并生成PCB封装图,打印出PCB图。

第三步:

根据打印出的原理图腐蚀刻出焊接电路板。

第四步:

测试电子元件的功能是否完好,然后根据原理图用焊接工具焊接上电子元器件。

第五步:

写好控制程序,烧录入单片机芯片中,运行程序,测试调整程序。

5.2数码万年历的原理图

根据原理图生成的PCB图:

5.3成品实物图

6.数码万年历设计框图

6.1LCD液晶显示屏接线图

6.2DS12c887时钟芯片接线图

6.3按键部分接线图

7.程序

7.1define.h

#defineucharunsignedchar

#defineuintunsignedint

sbitrs=P3^4;

sbitlcden=P3^5;

sbits1=P3^2;

sbits2=P3^1;

sbits3=P3^7;

sbits4=P3^6;

sbitrd=P3^0;

sbitbeep=P2^3;

sbitdscs=P1^4;

sbitdsas=P1^5;

sbitdsrw=P1^6;

sbitdsds=P1^7;

sbitdsirq=P3^3;

bitflag1,flag_ri;//定标志位flag1设置闹钟

ucharcount,s1num,flag,t0_num;

charmiao,shi,fen,week,year,month,day,amiao,afen,ashi;

ucharcodetable[]="2015/06/09THU";//20--

ucharcodetable1[]="00:

00:

00";//:

:

voidwrite_ds(uchar,uchar);//函数申明

voidset_alarm(uchar,uchar,uchar);

voidread_alarm();

voidxianshi();

ucharread_ds(uchar);

voidset_time();

 

7.2ks.c

#include

#include

voiddelayms(uintz)//延时毫秒程序

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voiddidi()//蜂鸣器报警声音

{

beep=0;

delayms(100);

beep=1;

}

voidwrite_com(ucharcom)//写液晶命令函数

{

rs=0;

lcden=0;

P0=com;

delayms(3);

lcden=1;

delayms(3);

lcden=0;

}

voidwrite_date(uchardate)//写液晶数据函数

{

rs=1;

lcden=0;

P0=date;

delayms(3);

lcden=1;

delayms(3);

lcden=0;

}

voidinit()

{

ucharnum;

EA=1;//开总中断

EX1=1;//开外部中断0

IT1=1;//外部中断下降沿触发*/

flag1=0;

t0_num=0;

s1num=0;

week=1;

year=1;

month=1;

day=1;

lcden=0;

rd=0;

//set_alarm(14,13,10);

write_ds(0x0A,0x20);//打开振荡器

write_ds(0x0B,0x26);//设置24小时模式,数据二进制模式,开启闹铃中断

set_time();//设置上电默认时间

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{

write_date(table[num]);

delayms

(1);

}

write_com(0x80+0x40);

for(num=0;num<11;num++)

{

write_date(table1[num]);

delayms

(1);

}

}

voidwrite_sfm(ucharadd,uchardate)

//1602液晶刷新时分秒4为时,7为分,10为秒

{

charshi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

voidwrite_nyr(ucharadd,uchardate)//年月日

{//1602液晶刷新时分秒年月日3为时,6为分,9为秒

ucharshi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

voidwrite_week(ucharwe)//星期

{

write_com(0x80+12);

if(we==1)

{

write_date('M');delayms(5);

write_date('O');delayms(5);

write_date('N');

}

if(we==2)

{

write_date('T');delayms(5);

write_date('U');delayms(5);

write_date('E');

}

if(we==3)

{

write_date('W');delayms(5);

write_date('E');delayms(5);

write_date('D');

}

if(we==4)

{

write_date('T');delayms(5);

write_date('H');delayms(5);

write_date('U');

}

if(we==5)

{

write_date('F');delayms(5);

write_date('R');delayms(5);

write_date('I');

}

if(we==6)

{

write_date('S');delayms(5);

write_date('A');delayms(5);

write_date('T');

}

if(we==7)

{

write_date('S');delayms(5);

write_date('U');delayms(5);

write_date('N');

}

}

voidkeyscan()

{

if(flag_ri==1)//按任意键取消报警

{

if((s1==0)||(s2==0)||(s3==0)||(s4==0))

{

delayms(5);

if((s1==0)||(s2==0)||(s3==0)||(s4==0))

{

while(!

(s1&s2&s3&s4));didi();

flag_ri=0;

}

}

}

if(s1==0)

{

delayms(5);

if(s1==0)

{s1num++;

if(flag1==1)

if(s1num==4)

s1num=1;

flag=1;

while(!

s1);didi();

if(s1num==1)

{

write_com(0x80+0x40+10);

write_com(0x0f);

}

if(s1num==2)

{

write_com(0x80+0x40+7);

}

if(s1num==3)

{

write_com(0x80+0x40+4);

}

if(s1num==4)

{

write_com(0x80+12);

}

if(s1num==5)

{

write_com(0x80+9);

}

if(s1num==6)

{

write_com(0x80+6);

}

if(s1num==7)

{

write_com(0x80+3);

}

if(s1num==0)

{

write_com(0x0c);

flag=0;

write_ds(0,miao);

write_ds(2,fen);

write_ds(4,shi);

write_ds(6,week);

write_ds(7,day);

write_ds(8,month);

write_ds(9,year);

}

}

}

if(s1num!

=0)

{

if(s2==0)

{

delayms

(1);

if(s2==0)

{

while(!

s2);didi();

if(s1num==1)

{

miao++;

if(miao==60)

miao=0;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(s1num==2)

{

fen++;

if(fen==60)

fen=0;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(s1num==3)

{

shi++;

if(shi==24)

shi=0;

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

if(s1num==4)

{

week++;

if(week==8)

week=1;

write_week(week);

write_com(0x80+12);

}

if(s1num==5)

{

day++;

if(day==32)

day=1;

write_nyr(9,day);

write_com(0x80+9);

}

if(s1num==6)

{

month++;

if(month==13)

month=1;

write_nyr(6,month);

write_com(0x80+6);

}

if(s1num==7)

{

year++;

if(year==100)

year=0;

write_nyr(3,year);

write_com(0x80+3);

}

}

}

if(s3==0)

{

delayms

(1);

if(s3==0)

{

while(!

s3);didi();

if(s1num==1)

{

miao--;

if(miao==-1)

miao=59;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(s1num==2)

{

fen--;

if(fen==-1)

fen=59;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(s1num==3)

{

shi--;

if(shi==-1)

shi=23;

write_sfm(4,shi);

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1