完美升级版电子万年历毕业论文报告.docx

上传人:b****5 文档编号:11784620 上传时间:2023-04-01 格式:DOCX 页数:28 大小:243.13KB
下载 相关 举报
完美升级版电子万年历毕业论文报告.docx_第1页
第1页 / 共28页
完美升级版电子万年历毕业论文报告.docx_第2页
第2页 / 共28页
完美升级版电子万年历毕业论文报告.docx_第3页
第3页 / 共28页
完美升级版电子万年历毕业论文报告.docx_第4页
第4页 / 共28页
完美升级版电子万年历毕业论文报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

完美升级版电子万年历毕业论文报告.docx

《完美升级版电子万年历毕业论文报告.docx》由会员分享,可在线阅读,更多相关《完美升级版电子万年历毕业论文报告.docx(28页珍藏版)》请在冰豆网上搜索。

完美升级版电子万年历毕业论文报告.docx

完美升级版电子万年历毕业论文报告

(此文档为word格式,下载后您可任意编辑修改!

 

大连民族学院机电信息工程学院

自动化系

单片机系统课程设计报告

 

题目:

电子万年历

专业:

自动化

班级:

114

学生姓名:

曹学亮张怀宇马建龙

指导教师:

赵凤强张艳

 

设计完成日期:

2013年10月15日

课程设计任务书

题目:

电子万年历

课程设计时间:

2013.9.24~2013.10.19

一、设计任务

给定1602液晶显示器和单片机最小系统,学习使用单片机最小系统,设计在1602上显示年月日、时间和星期并能更改,完成相关的软件。

二、设计内容及要求

⒈系统设计的方案;

⒉检测电路和过程通道的设计;

⒊系统软件设计与实现;

⒋需要的详细材料和工具清单;

设计的性能指标;

撰写设计报告;

资料归档。

三、设计重点

检测电路和过程通道设计;

系统软件设计、调试。

四、课程设计进度要求

13.9.25~13.9.28系统方案设计;

⒉13.9.29~13.10.5检测电路和过程通道设计;

13.10.6~13.10.7完成系统硬件设计与实现;

13.10.8~13.10.13检测电路和过程通道设计;

13.10.13~13.10.15撰写设计报告;

13.10.19验收答辩。

五、参阅书目

[1]祁伟,杨亭,单片机C51程序设计教程与实验[M]。

北京:

北京航空航天大学出版社,2006.1

[2]徐科军,传感器与检测技术[M]。

北京:

电子工业出版社,2010.11

[3]方彦军,孙健,智能仪器技术及其应用[M]。

北京:

化学工业出版社,2004.4

[4]徐爱钧,智能化测量控制仪表原理与设计[M]。

北京:

北京航空航天大学出版社,2004.9

1任务分析和性能指标1

1.1任务分析1

1.2性能指标1

2总体设计方案1

2.1硬件方案1

2.2软件方案1

3系统硬件设计2

3.1检测电路2

3.2控制电路2

4系统软件设计2

4.1主程序设计2

4.2数据采集程序设计2

4.3监控程序设计2

5调试及性能分析2

5.1调试分析2

5.1.1软件调试2

5.1.2硬件调试2

5.1.3系统功能调试3

5.2性能分析3

总结3

参考文献4

附录1元器件清单5

附录2调试系统照片6

1任务分析和性能指标

1.1任务分析

电子万年历是日常生活中常见的小型电子产品,其形式多种多样,小到带有日期的电子腕表,大到公共场所悬挂的大型电子日历,此外,眼下我们还常能在宾馆、饭店等场所见到一种带有年、月、日、时、分、秒、星期甚至节气等信息的电子日历牌。

电子日历的主要功能是给人们提供时间和日期信息,无论其形式如何,从外部都可分为显示和校准两部分。

为使电子日历协调工作,整个系统从功能上可分为实时时钟、显示和键盘三个模块,分别完成时间和日期的计算以及人机交互的管理等。

1.2性能指标

实时时钟(RTC:

Real Time Clock)是系统的核心,其运行精度直接影响产品质量。

 实时时钟的实现有两种方案可选,一是利用单片机系统时钟和中断完成时间和日期的计算;二是利用专用时钟芯片。

前者不用附加芯片,系统简单,但是累计误差较大,只有 短时计时才可使用。

长时间计时一般都采用后者。

后者采用32.768KHz晶体振荡器振作 为脉冲源,内部的15位计数器刚好产生标准秒脉冲。

该类芯片除时钟计时外,还有年 月日和星期的计算功能,并且还可计算闰年。

芯片初始化后可脱离CPU自动运行,有 些芯片内部带有电池,出厂时芯片即开始运行。

专用时钟芯片的种类很多,与CPU的 通信方式有并行, 也有串行。

 常见的芯片有DALLAS 公司生产的DS1302和DS12C887, 前者为串行,需要外加后备电池;后者为并行,芯片内置锂电池和晶体振荡器,无外加 电源的情况下可运行10年。

此外,还有许多时钟芯片,如Epson、Holtek、深圳兴威帆 等公司都推出自己的时钟芯片.因为我们具备单片机相关知识的基础,所以我们利用单片机系统时钟和中断完成时间和日期的计算。

2总体方案设计

2.1硬件方案

显示部分

数据显示常采用液晶,液晶显示有耗电低、外形美观的优点,并且,点阵液晶可显示较复杂的字符或图案。

键盘部分

时钟系统的键盘设置三个键:

确认键、加1键、减1键。

实时时钟部分

利用单片机系统时钟和中断完成时间和日期的计算。

2.2软件方案

C语言编属于高级语言,具有可移植性,能够结构化编程。

使用标准C语言的程序,几乎都可以不作改变移植到不同的微机平台上,对于嵌入式等的微控制芯片,属于标准C语言的部分也很少需要修改,而且程序很容易读懂。

C语言编写程序结构清晰,移植性好,容易维护和修改。

汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性。

但是汇编语言是针对专门的控制器的,所以运行速度可以精确到一个指令周期。

汇编语言的程序读懂需要借助微控制器的指令手册以及各个寄存器的说明,所以很难读懂。

汇编语言编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。

经过我们三人的讨论我们决定使用c语言来编写程序,因为c语言程序容易学,也很容易读懂,编写程序结构清晰,易于我们组员之间的讨论和学习。

而且相对于汇编我们更加擅长c语言。

3硬件设计与实现

由于单片机系统时钟和中断能完成年、月、日、时、分、秒等时间信息,对于一天内的时间记录,有12小时制和24小时制两种模式。

在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示。

而显示部分我们采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见,而其体积较小,使用方便,可以使电路更加简洁,所以选择了液晶显示器。

3.11602显示电路

3.2键盘电路

3.3晶振电路

3.4复位电路

3.5单片机电路

4软件设计与实现

4.1主程序

voidmain()

{

init();

while

(1)

{

anjian();

}

}

4.2子程序

4.2.1按键程序

voidanjian()按键函数

{

rd=0;

if(s1==0)

{

delay(5);

if(s1==0)

{s1num++;

while(!

s1);

if(s1num==1)

{

TR0=0;

write_com(0x80+0x40+12);

write_com(0x0f);

}

}

if(s1num==2)

{

write_com(0x80+0x40+9);

}

if(s1num==3)

{

write_com(0x80+0x40+6);

}

if(s1num==4)

{

write_com(0x80+15);

}

if(s1num==5)

{

write_com(0x80+9);

}

if(s1num==6)

{

write_com(0x80+6);

}

if(s1num==7)

{

write_com(0x80+1);

}

if(s1num==8)

{

s1num=0;

write_com(0x0c);

TR0=1;

if(yue==1)

{

tian=ri-ri4;

}

if(yue==2)

{

tian=31+ri-ri4;

}

if(yue==3)

{

tian=59+ri-ri4;

}

if(yue==4)

{

tian=90+ri-ri4;

}

if(yue==5)

{

tian=120+ri-ri4;

}

if(yue==6)

{

tian=151+ri-ri4;

}

if(yue==7)

{

tian=181+ri-ri4;

}

if(yue==8)

{

tian=212+ri-ri4;

}

if(yue==9)

{

tian=243+ri-ri4;

}

if(yue==10)

{

tian=272+ri-ri4;

}

if(yue==11)

{

tian=304+ri-ri4;

}

if(yue==12)

{

tian=334+ri-ri4;

}

ri4=0;

}

}

if(s1num!

=0)

{

if(s2==0)

{

delay(5);

if(s2==0)

{

while(!

s2);

if(s1num==1)

{

miao++;

if(miao==60)

miao=0;

write_sfm(12,miao);

write_com(0x80+0x40+12);

}

if(s1num==2)

{

fen++;

if(fen==60)

fen=0;

write_sfm(9,fen);

write_com(0x80+0x40+9);

}

if(s1num==3)

{

shi++;

if(shi==24)

shi=0;

write_sfm(6,shi);

write_com(0x80+0x40+6);

}

if(s1num==4)

{

xingqi++;

if(xingqi==8)

xingqi=1;

write_xq(15,xingqi);

write_com(0x80+15);

}

if(s1num==5)

{

ri++;

if(ri==32)

ri=1;

write_yr(9,ri);

write_com(0x80+9);

}

if(s1num==6)

{

yue++;

if(yue==13)

{

yue=1;

tian=1;

}

write_yr(6,yue);

write_com(0x80+6);

}

if(s1num==7)

{

nian++;

write_n(1,nian);

write_com(0x80+1);

}

}

}

if(s3==0)

{

delay(5);

if(s3==0)

{

while(!

s3);

if(s1num==1)

{

miao--;

if(miao==-1)

miao=59;

write_sfm(12,miao);

write_com(0x80+0x40+12);

}

if(s1num==2)

{

fen--;

if(fen==-1)

fen=59;

write_sfm(9,fen);

write_com(0x80+0x40+9);

}

if(s1num==3)

{

shi--;

if(shi==-1)

shi=23;

write_sfm(6,shi);

write_com(0x80+0x40+6);

}

if(s1num==4)

{

xingqi--;

if(xingqi==0)

xingqi=7;

write_xq(15,xingqi);

write_com(0x80+15);

}

if(s1num==5)

{

ri--;

ri4++;

if(ri==0)

{

ri=31;

}

write_yr(9,ri);

write_com(0x80+9);

}

if(s1num==6)

{

yue--;

if(yue==0)

{

yue=12;

tian=334+ri;

}

write_yr(6,yue);

write_com(0x80+6);

}

if(s1num==7)

{

nian--;

write_n(1,nian);

write_com(0x80+1);

}

}

}

}

}

4.2.2中断程序

voidtimer0()interrupt1开中断1(定时器中断0)包括时间的算法程序

{

t0++;

if(t0==20)

{

t0=0;

miao++;

}

if(miao==60)

{

miao=0;

fen++;

}

write_sfm(12,miao);调用函数write-()都为调用上边的显示子函数下同

if(fen==60)

{

fen=0;

shi++;

}

write_sfm(9,fen);

if(shi==24)

{

shi=0;

xingqi++;

tian++;

}

write_sfm(6,shi);

if(xingqi==8)

{

xingqi=1;

}

write_xq(15,xingqi);

if(tian!

=0)

{

ri=tian;

if(tian<=31)

{

yue=1;

}

write_yr(6,yue);

if(tian>=32&&tian<=59)

{

yue=2;

ri=tian-31;

}

write_yr(6,yue);

if(60<=tian&&tian<=90)

{

yue=3;

ri=tian-59;

}

write_yr(6,yue);

if(91<=tian&&tian<=120)

{

yue=4;

ri=tian-90;

}

write_yr(6,yue);

if(121<=tian&&tian<=151)

{

yue=5;

ri=tian-120;

}

write_yr(6,yue);

if(152<=tian&&tian<=181)

{

yue=6;

ri=tian-151;

}

write_yr(6,yue);

if(182<=tian&&tian<=212)

{

yue=7;

ri=tian-181;

}

write_yr(6,yue);

if(213<=tian&&tian<=243)

{

yue=8;

ri=tian-212;

}

write_yr(6,yue);

if(244<=tian&&tian<=273)

{

yue=9;

ri=tian-243;

}

write_yr(6,yue);

if(274<=tian&&tian<=304)

{

yue=10;

ri=tian-273;

}

write_yr(6,yue);

if(305<=tian&&tian<=334)

{

yue=11;

ri=tian-304;

}

write_yr(6,yue);

if(335<=tian&&tian<=365)

{

yue=12;

ri=tian-334;

}

write_yr(6,yue);

if(tian==366)

{

tian=1;

yue=01;

ri=1;

nian++;

}

write_n(1,nian);

}

write_yr(9,ri);

}

4.2.3显示年

voidwrite_n(ucharadd,uintdate)液晶显示年

{

uintshi,ge,bai,qian;

qian=date1000;

bai=date100%10;

shi=date10%10;

ge=date%10;

write_com(0x80+add);

write_date(0x30+qian);

write_date(0x30+bai);

write_date(0x30+shi);

write_date(0x30+ge);

}

4.2.4显示星期

voidwrite_xq(ucharadd,uchardate)液晶显示星期

{

write_com(0x80+add);

write_date(0x30+date);

}

4.2.5显示月日

voidwrite_yr(ucharadd,uchardate)液晶显示月日

{

ucharshi,ge;

shi=date10;

ge=date%10;

write_com(0x80+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

4.2.6显示时分秒

voidwrite_sfm(ucharadd,uchardate)液晶显示时分秒

{

ucharshi,ge;

shi=date10;

ge=date%10;

write_com(0x80+0x40+add);液晶屏第二行的选着地址

write_date(0x30+shi);

write_date(0x30+ge);液晶屏显示数字的方式

}

4.2.7程序初始化

voidinit()函数初始化一些相应的变量

{

miao=53;

fen=59;

shi=23;

xingqi=5;

ri4=0;

tian=284;

nian=2013;

dula=0;

wela=0;

lcden=0;

write_com(0x38);显示模式设置,设置16乘2显示,5×7点阵,八位数据接口

write_com(0x0c);显示状态为整体显示

write_com(0x06);光标的设定当读或写一个字符后地址指针加一,光标加一

write_com(0x80);液晶屏第一行选着地址

write_com(0x01);清除显示否则后面出现黑一块

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

{

write_date(table1[num]);

delay(5);

}

write_com(0x80+0x40);

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

{

write_date(table2[num]);

delay(5);

}

TMOD=0x01;中断初始化定时器0的工作方式一

EA=1;

ET0=1;

TR0=1;

}

4.2.8写数据到液晶显示器

voidwrite_date(uchardate)液晶屏数据指令

{

rs=1;

lcden=0;

P0=date;

delay(5);

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

当前位置:首页 > 考试认证 > 财会金融考试

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

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