万年历单片机课程设计.docx

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

万年历单片机课程设计.docx

《万年历单片机课程设计.docx》由会员分享,可在线阅读,更多相关《万年历单片机课程设计.docx(17页珍藏版)》请在冰点文库上搜索。

万年历单片机课程设计.docx

万年历单片机课程设计

课程设计任务书

学生某某:

专业班级:

电信1104

指导教师:

曾刚工作单位:

信息工程学院

题目:

万年历显示模块设计

初始条件:

具备电子电路的设计知识和能力;具备单片机系统的设计方法;具备单片机软件编程技术;熟悉单片机常用软件的使用;

要求完成的主要任务:

〔包括课程设计工作量与其技术要求,以与说明书撰写等具体要求〕

1、了解并参与万年历电路的设计

2、对万年历显示局部进展计算机仿真

3、设计万年历显示电路

4、具备时间、日期与星期的切换显示功能

5、完成符合学校要求的设计说明书

时间安排:

设计时间2周,其中3天原理设计,3天仿真,3天电路调试,1天辩论

指导教师签名:

年月日

系主任〔或责任教师〕签名:

年月日

摘要

单片计算机即单片微型计算机。

由RAM,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。

它体积小,本钱低,功能强,广泛应用于智能产业和工业自动化上。

而51系列单片机是各单片机中最为典型和最有代表性的一种。

这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

本次课程设计包括AT89C51单片机最小系统包括复位和时钟电路与供电系统、LCD液晶显示电路。

利用相关设计软件进展原理图设计即利用Keil软件编程以与Proteus软件仿真来巩固单片机应用、模拟电路、数字电路课程与学会各种工程软件的使用。

关键字:

单片机AT89C51DS1302

 

 

1设计方案选择

1.1控制局部的方案选择

采用51系列的89C51单片机,89C51单片机有丰富的中断源和时基,方便本实验的设计。

它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。

I/O口功能也比拟强大,方便使用。

用89C51单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。

这些都方便对设计进展扩展,使设计更加完善。

本钱也相对低一些。

1.2显示模块选择方案和论证

方案一:

采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形、显示多样,清晰可见,所以在此设计中采用LCD液晶显示屏。

所以采用了液晶显示屏作为显示。

方案一:

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然减少芯片的使用,节约本钱,但是,实现的时间误差较大。

所以不采用此方案。

方案二:

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以与闰年补偿的年进展计数,而且精度高,位的RAM做为数据暂存区,工作电压~X围内,时耗电小于300nA。

综上各方案所述,对此次作品的方案选定:

采用AT89C51作为主控制系统;DS1302提供时钟;液晶显示屏作为显示。

2系统的硬件设计与实现

2.1电路设计框图

按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键盘接口模块共4个模块组成,电路系统构成框图如图3-1所示。

主控芯片使用51系列AT89C51单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DSl302。

采用DSl302作为主要计时芯片,可以做到计时准确。

更重要的是,DSl302可以在很小电流的后备电源(2.5—5.5V电源,在2.5V时耗电小于300nA)下继续计时,并可编程选择多种充电电流来对后备电源进展慢速充电,可以保证后备电源根本不耗电。

显示模块采用普通的液晶显示屏,键输入采用查询法实现调整功能。

图3-1电路设计框图

2.2系统硬件概述

本电路是由AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进展计时,具有闰年补偿功能,工作电压为~。

采用三线接口与CPU进展同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31*8的用于临时性存放数据的RAM存放器。

可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部份由液晶显示屏对数字的显示。

2.3主要单元电路的器件

单片机主控制模块

AT89C51单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口〔P0、P1、P2、P3〕,每一条I/O线都能独立地作输出或输入。

1.内部结构

按功能分为8局部:

CUP,程序存储器,数据存储器,时钟电路,串行口,并行I/O口,中断系统,定时/计数器。

2.控制引脚

XTAL1和XTAL2:

时钟引脚,外接晶体引线端。

当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

RST/

RST是复位信号输入端,

是备用电源输入端。

当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。

当主电源

发生故障而突然下降到一定低电压或断电时,第2功能

将为片内RAM提供电源以保护片内RAM中的信息不丢失。

ALE/PROG:

地址锁存允许信号输入端。

在存取外存储器时,用于锁存低8位地址信号。

当单片机正常工作后,ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。

此引脚的第2功能PROG是对片内带有4K字节EPROM的8751固外程序时,作为编程脉冲输入端。

:

程序存储器允许输出端。

当片外程序存储器的读选通信号,低电平有效。

CPU从外部程序存储器取指令时,

信号会自动产生负脉冲,作为外部程序存储器的选通信号。

/

:

程序存储器地址允许输入端。

为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片

外程序存储器指令;当

/

为低电平时,CPU只执行片外程序存储器指令。

3.I/O口引脚

P0.0~P0.7:

P0口8位双向I/O口;

P1.0~P1.7:

P1口8位准双向I/O口;

P2.0~P2.7:

P2口8位准双向I/O口;

P3.0~P3.7:

P3口8位准双向I/O口。

4.片外总线结构

分为三局部:

数据总线DataBus(DB〕,地址总线AddressBus(AB〕,控制总线ControlBus(CB)。

时钟电路模块的设计

〔1〕时钟芯片DS1302引脚与功能特点

图3-2示出DS1302的引脚排列,其中

为后备电源,

为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由

两者中的较大者供电。

大于

时,

给DS1302供电。

小于

时,DS1302由

供电。

X1和X2是振荡源,外接晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

RST输入有两种功能:

首先,RST接通控制逻辑,允许地址/命令序列送入移位存放器;其次,RST提供终止单字节或多字节数据的传送手段。

当RST为高电平时,所有的数据传送被初始化,允许对DS1302进展操作。

如果在传送过程中RST置为低电平,如此会终止此次数据传送,I/O引脚变为高阻态。

上电动行时,在

大于等于之前,RST必须保持低电平。

中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端〔双向〕。

SCLK始终是输入端。

图3-2DS1302引脚排列

(2)时钟芯片DS1302的工作原理:

DS1302在每次进展读、写程序前都必须初始化,先把SCLK端置“0〞,接着把RST端置“1〞,最后才给予SCLK脉冲。

表3-1为DS1302的控制字,此控制字的位7必须置1,假如为0如此不能把对DS1302进展读写数据。

对于位6,假如对程序进展读/写时RAM=1,对时间进展读/写时,CK=0。

位1至位5指操作单元的地址。

位0是读/写操作位,进展读操作时,该位为1;该位为0如此表示进展的是写操作。

控制字节总是从最低位开始输入/输出的。

表6为DS1302的日历、时间存放器内容:

“CH〞是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。

“WP〞是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。

当“WP〞为1时,写保护位防止对任一存放器的写操作。

表3-1DS1302的控制字格式

RAMRD

1A4A3A2A1A0

/CK/WR

(3)数据输入输出〔I/O〕

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。

同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

2.3.3显示模块的设计

方案一:

采用8段数码管虽经济实惠,但操作比液晶显示来说略显繁琐。

方案二:

液晶显示方式。

液晶显示效果出众,可以运用菜单项来方便操作,比拟简单,所以,最后选择液晶显示方案。

显示电路图如图2.2所示。

图2.2液晶显示电路

2.3.4实时时钟电路设计

图2.3是DS1302与单片机的连接,其中Vcc1为后备电源,Vcc2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由Vcc1或Vcc2两者中的较大者供电。

当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。

当Vcc2小于Vcc1时,DS1302由Vcc1供电。

X1和X2是振荡源,外接32.768KHz晶振。

图2.3DS1302时钟电路

2.3.5功能按钮设计

当按钮被按下时,该按钮对应的I/O口被拉为低电平,松开时按钮对应的I/O口由内部的上拉电阻将该I/O拉为高电平,如图2.5所示:

 

图2.5键盘电路设计

 

3整体电路图

4心得体会

对于本次课程设计结合上学期所学习的单片机的根底知识,将硬件和软件的知识全都联系起来,硬件方面有电路的连接和芯片的选取,软件方面有程序的设计和编写。

本次课程设计是我遇到的较难的课程设计,是以前没有接触过如此复杂的硬件电路以与软件编程,在软、硬件设计和调试中遇到了不少的困难,在同学的帮助才逐一克制了难题,学习到了不少的专业知识。

在整个设计过程之前,我已经在网上找了相关方面的资料,万事开始难,一开始不知道从哪里下手。

后来慢慢学会分析系统,将系统模块化,各个模块可以在软件或者硬件上实现。

在确保各个模块的硬件电路和与之相搭配的程序能够正常工作后在把它们组成一个系统。

在今后的日子里,我会进一步加强自己的动手能力,丰富自己的知识面,不过总的来说这次单片机课设还是让我学到非常多的东西,也增加了我的动手机会,,希望自己以后更加严格的要求自己,做到更好。

 

参考文献

[1]谢自美.电子线路设计实验测试(第三版).某某:

华中科技大学

[2]李群芳.单片微型计算机与接口技术〔第3版〕.电子工业,2008

[3]X教瑜.单片机原理与应用.某某理工大学,2011

[4]X东亮.单片机原理与应用.人民邮电,2009

 

 

附件

万年历源程序

#include

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

//*******LCD*******

sbitLCDRS=P2^0;//LCD数据/命令选择端

sbitLCDRW=P2^1;

sbitLCDEN=P2^2;//LCD使能新号端

sbitQ=P1^3;

//******DS1302******

sbitIO=P1^0;//1302数据线

sbitSCLK=P1^1;//1302时钟线

sbitRST=P1^2;//复位

uintnum=0;

uchar*week[]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"};

ucharDate[]={"Date:

2000-00-00"};

ucharDate1[16]={"SSS"};

ucharTime[]={"Time:

*00:

00-00*"};

uchardate_time[7];//从ds1302读取的当前日期时间

//=======延时=======

voiddelay(uintz)

{

uintx,y;

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

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

}

//********向1302写数据*********

voidwrite_ds1302(uchardat)

{

uchari;

for(i=0;i<8;i++)

{

IO=dat&0x01;//保持最后一位为1,读状态

SCLK=1;

delay

(1);

SCLK=0;

dat>>=1;

}

}

//*********从1302读数据*********

ucharread_ds1302()

{

uchari,b=0x00;

for(i=0;i<8;i++)

{

b|=_crol_((uchar)IO,i);

SCLK=1;

delay

(1);

SCLK=0;

}

returnb/16*10+b%16;//与BCD码转换

}

//*********从指定位置读数据********

ucharread_data(ucharaddr)

{

uchardat;

RST=0;

SCLK=0;

RST=1;

write_ds1302(addr);

dat=read_ds1302();

SCLK=1;

RST=0;

returndat;

}

//*********读取当前日期时间*********

voidread_date_time()

{

uchari,addr=0x81;

for(i=0;i<7;i++)

{

date_time[i]=read_data(addr);

addr+=2;

}

}

//----------LCD写指令----------

voidlcd_write_(uchar)

{

LCDRS=0;//RS为0时,写指令,RS为1时,写数据

P0=;

delay(5);

LCDEN=1;

delay(5);

LCDEN=0;

}

//----------LCD写数据----------

voidlcd_write_data(uchardat)

{

LCDRS=1;

P0=dat;

delay(5);

LCDEN=1;

delay(5);

LCDEN=0;

}

//-------LCD初始化-------

voidlcd_init()

{

LCDEN=0;

lcd_write_(0x38);//LCD显示模式设置

lcd_write_(0x0c);//LCD显示开/关与光标设置

lcd_write_(0x06);//当写一个字符后地址指针加1,且光标加1

lcd_write_(0x01);//显示清屏

}

//---------设置液晶显示位置-----------

voidset_lcd_pos(ucharp)

{

lcd_write_(p|0x80);

}

//---------液晶显示程序----------

voidlcd_print(ucharp,uchar*s)

{

set_lcd_pos(p);

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

{

lcd_write_data(s[num]);

delay(10);

}

}

//----------日期时间转换-----------

voidformat_datetime(uchard,uchar*p)

{

p[0]=d/10+'0';

p[1]=d%10+'0';

}

//---------主程序----------

voidmain()

{

uintk=0;

LCDRW=0;

lcd_init();

read_date_time();

format_datetime(date_time[6],Date+8);//年月日

format_datetime(date_time[4],Date+11);

format_datetime(date_time[3],Date+14);

strcpy(Date1,week[date_time[5]]);

format_datetime(date_time[2],Time+7);//时间转换

format_datetime(date_time[1],Time+10);

format_datetime(date_time[0],Time+13);

lcd_print(0x00,Date);

while

(1)

{

read_date_time();

format_datetime(date_time[6],Date+8);//年月日

format_datetime(date_time[4],Date+11);

format_datetime(date_time[3],Date+14);

strcpy(Date1,week[date_time[5]]);

format_datetime(date_time[2],Time+7);//时间转换

format_datetime(date_time[1],Time+10);

format_datetime(date_time[0],Time+13);

if(Q==0)

{k=k+1;

switch(k%3)

{

case0:

lcd_print(0x00,Date);break;

case1:

lcd_print(0x00,Time);break;

case2:

lcd_print(0x00,Date1);break;

}

}

}

}

本科生课程设计成绩评定表

姓名

性别

专业、班级

课程设计题目:

课程设计辩论或质疑记录:

成绩评定依据:

最终评定成绩〔以优、良、中、与格、不与格评定〕

 

指导教师签字:

 

年月日

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

当前位置:首页 > 小学教育 > 语文

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

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