单片机课程设计电子时钟淮阴工学院计算机工程学院.docx
- 文档编号:5917616
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:25
- 大小:154.38KB
单片机课程设计电子时钟淮阴工学院计算机工程学院.docx
《单片机课程设计电子时钟淮阴工学院计算机工程学院.docx》由会员分享,可在线阅读,更多相关《单片机课程设计电子时钟淮阴工学院计算机工程学院.docx(25页珍藏版)》请在冰点文库上搜索。
单片机课程设计电子时钟淮阴工学院计算机工程学院
计算机工程学院
单片机与应用
课程设计报告
设计题目:
电子时钟设计
专业:
通信工程
组别:
第一组
学生姓名:
XX学号:
XXXXXXXXXXXX
起止日期:
2010年12月26日~2010年12月31日
指导教师:
金鹰戴峻峰王福德张粤
计算机工程学院
单片机与应用课程设计
任务书
设计题目:
电子时钟设计
专业:
通信工程
组别:
第一组
学生姓名:
XXX学号:
XXXXXXXXXXX
起止日期:
2010年12月26日~2010年12月31日指导教师:
金鹰戴峻峰王福德张粤
题目
电子时钟设计
姓名
XXX
学号
XXXXXX
班级
通信XXXX
系别
计算机工程学院
专业
通信工程
组别
XXX
组长
XXXX
组员
XXXXXXXXXXXXXXXXXX
指导教师
金鹰戴峻峰王福德张粤
实习目的
(1)使学生增进对MCS51单片机电路的感性认识,加深对理论方面的理解。
(2)使学生掌握软硬件的有关知识等。
(3)使学生了解和掌握软硬件设计过程、方法与实现,为以后设计和实现应用系统打下良好基础。
(4)通过简单课题的设计练习,可使学生了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
实习环境
指导老师;一人一台PC机;焊接。
任务和要求
(1)初步了解电路图设计方法
(2)分析给定电路图(3)电路焊接
(4)设计简单程序
工作进度计划
序号
起止日期
工作内容
1
12.26~12.27
布置任务,提出要求,时间按排;查阅资料。
2
12.28~12.30
画电路原理图;领器件、焊接电路;调试。
3
12.30~12.31
调试,写报告;答辩。
系审核意见:
系主任签字:
年月日
教学院审核意见:
院长签字:
年月日
指导教师评语
学号
姓名
班级
通信
选题
名称
电子时钟设计
序号
评价内容
权重(%)
得分
1
考勤记录、学习态度、工作作风与表现。
5
2
自学情况:
上网检索机时数、文献阅读情况(笔记)。
10
3
论文选题是否先进,是否具有前沿性或前瞻性。
5
4
成果验收:
是否完成设计任务;能否运行、可操作性如何等。
20
5
报告的格式规范程度、是否图文并茂、语言规范与流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。
30
6
文献引用是否合理、充分、真实。
5
7
答辩情况:
自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。
25
合计
指导教师(签章):
年月日
摘要
单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:
CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
单片机也被称为微控制器(Microcontroller),它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
单片机诞生于20世纪70年代末,经历了SCM、MCU、SOC三大阶段。
本文设计了一种基于STC公司的STC89C52单片机,实时时钟芯片DS1302提供当前日期和时间数据,并将实时的日期数据字符型液晶显示器LCD上显示,本次设计的多功能数字钟采用数字电路对日期进行控制设置,我们采用以24小时的计时方式在LCD上显示,根据LCD显示原理进行显示,定时器计数。
在本次设计中,电路具有显示日期、时间、星期的基本功能,还可以实现对它们的调整。
本次设计要达到的目的是:
具有时间显示和手动校对功能,24小时制;具有年、月、日、时、分、星期、秒显示和手动校对功能;掉电后需重新设置时间和日期;系统不但接口设计简单、便于控制,而且具有很好的人机界面,可以对当前的时间进行调整。
关键字:
单片机芯片STCLCD时间
5总结…………………………………………………………………………………………….19
6致谢………………………………………………………………………………...20
7参考文献……………………………………………………………………….......21
1课题综述
1.1课题来源
电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而电子钟得到广泛应用。
随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。
1.2课题目的
设计了一种基于STC公司的STC10F08XE单片机,实时时钟芯片DS1302提供当前日期和时间数据,并将实时的日期数据字符型液晶显示器LCD上显示,本次设计的多功能数字钟采用数字电路对日期进行控制设置,我们采用以24小时的计时方式在LCD上显示,根据LCD显示原理进行显示,定时器计数。
在本次设计中,电路具有显示日期、时间、星期的基本功能,还可以实现对它们的调整。
之所以选择这个芯片,是因为STC单片机降低成本,提升性能,原有程序直接使用,硬件无需改动。
并且其抗干扰性强,加密性强,超低功耗,可以远程升级,内部有专用复位电路,价格也较便宜,一般的利用STC系列的单片机芯片加上一些外围的供电电路,复位电路,下载电路,特定功能电路等就能实现特定的功能。
由于这些特点使得STC系列单片机的应用日趋广泛。
1.3面对的问题
要求该电路具有显示日期、时间、的基本功能,还可以通过按键实现对它们的调整,并且能够显示星期。
1.4需要解决的关键技术
具有时间显示和手动校对功能;具有年、月、日显示和手动校对和切换功能;具有显示当前星期的功能。
通过DS1302芯片来控制整个时钟电路的万年历计时功能。
2系统分析
2.1涉与的基础知识
2.1.1单片机介绍
单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:
CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
单片机也被称为微控制器(Microcontroller),它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
单片机诞生于20世纪70年代末,经历了SCM、MCU、SOC三大阶段。
STC单片机完全兼容51单片机,并有其独到之处,其抗干扰性强,加密性强,超低功耗,可以远程升级,内部有专用复位电路,价格也较便宜,由于这些特点使得STC系列单片机的应用日趋广泛。
本文设计了一种基于STC公司的STC10F08XE单片机,使用Dallas的实时时钟芯片DS1302提供当前日期和时间数据,数据在显示器LCD上显示,本次设计的电子钟采用数字电路对日期进行控制设置,我们采用LCD显示,以24小时的计时方式,根据LCD显示原理进行显示,定时器计数。
在本次设计中,电路具有显示日期、时间、的基本功能,还可以实现对它们的调整和切换。
2.1.2DS1302芯片介绍
DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1RES复位2I/O数据线3SCLK串行时钟时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信DS1302工作时功耗很低保持数据和时钟信息时功率小于1mW。
2.2解决的基本思路
按照勾画出的电路图正确焊接电路板上的器件,待检测过硬件正确工作后,进行软件代码的设计。
软件设计代码是通过COM和相关软件把代码程序输入到单片机芯片中。
待全部完成后,继续进行调试。
3设计方案
3.1总体设计
采用单片机DS1302芯片以与相关的芯片来实现电子钟。
该设计选用Dallas的实时时钟芯片DS1302提供当前日期和时间数据,并将实时的日期数据在显示器LCD上显示出来。
本次设计的电子钟采用数字电路对日期进行控制设置,我们以24小时的计时方式,根据LCD显示原理进行显示,定时器计数。
在本次设计中,电路具有显示日期、时间、的基本功能,还可以通过按键实现对它们的切换和调整。
系统采用USB2.0接口给系统传输电,采用COM口给单片机输入相应的代码程序。
该系统不但接口设计简单、便于控制,而且具有很好的人机界面,可以通过几个按键对当前的时间进行调整,并且通过切换按键可以获得相应的年,月、日,时、分,星期、秒等功能。
其原理框图如下图3.1所示:
图3.1电子钟原理框图
3.2硬件设计
3.2.1DS1302时钟电路
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月、年,一个月小于31天时可自动进行调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力,因此广泛应用于测量系统中。
DS1302是由DS1202改进而来的,增加了以下的特性:
双电源管脚用于主电源和备份电源供应,Vcc1为课编程涓流充电电源,附加七个字节存储器。
它广泛应用于电话、传真、便携式仪器以与电池供电的仪器仪表等产品领域。
其外部引脚分配图与应用电路原理图如下面两幅图所示:
图3.2DS1302的外部时钟引脚分配
图3.3DS1302应用电路原理图
3.2.2串行接口连接电路
MAX232是电压转换芯片,将TTL电平转换成可以和电脑串口匹配的电压。
DB9通过下载线缆与电脑连接,可以将程序下载到单片机上。
图3.4串行通信接口电路
3.2.3按键电路
本次设计中用到了按键电路,通过低电平选中,以便来控制时,分,秒,年,月,日的调整以与切换。
其电路如图所示:
图3.5按键控制电路
3.2.4LCD显示电路
本设计中会将时分秒,年月日以与星期的设置,全部都会显示到LCD上面,用的是0到9十个数字。
其原理图如下图所示:
图3.6LCD显示电路
3.3软件设计
3.3.1软件内容
本次设计选择的软件主要是Keil。
Keil公司成立于1986年,主要开发、制造和销售嵌入式8051、251、ARM、XC16x/C16x/ST10等微控制器软件开发工具,提供ANSIC编译器、宏汇编程序、实时管理、调试和模拟器、综合评估板等。
Keil公司的uVision把编辑、编译、链接和仿真等模式打包成集成开发环境,当然其集成的C51编译器肯定跟Franklin公司的相关模块肯定有交叉性,uVision还包含项目管理和调试器等非常有用的功能。
而软件仿真部分就用的是仿真软件PROTUES。
PROTUES软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机与外围器件。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
在PROTUES绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。
PROTUES是单片机课堂教学的先进助手。
PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:
元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
3.3.2设计流程
本次设计的系统软件设计主要包括主程序设计和日历日期数据子模块程序、按键控制子模块程序和LCD显示子模块程序设计等。
主程序主要完成器件的初始化,并判断有无按键按下,并根据判断的结果调用相应的子模块程序;日历日期数据子模块程序完成相应的数据采集、处理和保存,按键处理子模块程序完成日期的设置,而LCD显示子模块只要把上述子模块储存的数据送去显示即可。
对时钟芯片的操作主要包括2个方面:
一是将芯片中的日期等数据读出来,二是在进行日期等设置时将设置的数据写入芯片,这也是按键处理时的主要内容。
无论是读数据还是写数据,都要满足DS1302对时序的要求。
而对芯片各个数据部分的访问是通过地址进行的,且读和写的地址不一样。
读出的数据同样要转为ASCII码,然后储存起来,等待送去显示。
系统总的流程图如下图所示:
图3.7主程序流程
3.3结果分析
第一,通过USB接口给单片机上电,打开单片机开关,首先观察单片机电源指示灯是否亮。
按照如上步骤,我们的电子钟电源灯是亮的,这说明系统能够正常供电。
第二,显示电路的调试检查它与单片机的连线:
设计是RS接的P07口,要保证它为高电平。
EN接口接单片机的P05端,也要保证它为高电平;读写信号低电平有效;编写一段显示程序,烧录到单片机看是否能正常显示。
很遗憾的是我们的单片机打开开关后还是只有电源指示灯亮,后来我们发现是我们代码编写错误。
4设计代码
/***P0位选,P1段选***/
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDR1=P1^0;
sbitDR2=P1^1;
sbitDR3=P1^2;
sbitDR4=P1^3;
sbitkey1=P1^4;
sbitkey2=P1^5;
sbitkey3=P1^6;
sbitkey4=P1^7;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
sbitsclk=P3^2;
sbitio=P3^3;
sbitrst=P3^4;
ucharm=0;
ucharsec=0x00,
min=0x00,
hour=0x00,
day=0x31,
month=0x12,
week=0x05,
year=0x10;
ucharmin_temp=00,
hour_temp=00;
ucharcodetable[12]={0x14,0xd7,0x4c,0x45,0x87,
0x25,0x24,0x57,0x04,0x05};
voiddelay(uintx)
{
uinti,j;
for(i=x;i>0;i--)
for(j=114;j>0;j--);
}
voidwrite_ds1302byte(uchardat)
{
uchari;
ACC=dat;
for(i=8;i>0;i--)
{
io=ACC0;
sclk=0;
sclk=1;
sclk=0;
ACC=ACC>>1;
}
}
ucharread_ds1302byte()
{
uchari;
for(i=8;i>0;i--)
{
ACC=ACC>>1;
ACC7=io;
sclk=1;
sclk=0;
}
returnACC;
}
voidwrite_ds1302(ucharaddr,uchardat)
{
rst=0;
sclk=0;
delay
(1);
rst=1;
write_ds1302byte(addr);
write_ds1302byte(dat);
rst=0;
sclk=1;
}
ucharread_ds1302(ucharaddr)
{
ucharda;
rst=0;
sclk=0;
rst=1;
write_ds1302byte(addr);
da=read_ds1302byte();
rst=0;
sclk=1;
returnda;
}
voidinit_ds1302()
{
write_ds1302(0x8e,0x00);//写保护关
write_ds1302(0x80,sec);//写秒,十进制初值
write_ds1302(0x82,min);//分
write_ds1302(0x84,hour);//时
write_ds1302(0x86,day);//day
write_ds1302(0x88,month);//month
write_ds1302(0x8a,week);//week
write_ds1302(0x8c,year);//year
write_ds1302(0x90,0x00);//涡流
write_ds1302(0x8e,0x80);//写保护开
}
voiddisplay_year()
{
ucharshi,ge;
year=read_ds1302(0x8d);
ge=year&0x0f;
shi=(year>>4)&0x07;
DR4=0;
P0=table[ge];
delay(4);
DR4=1;
DR3=0;
P0=table[shi];
delay(4);
DR3=1;
DR2=0;
P0=0x14;
delay(4);
DR2=1;
DR1=0;
P0=0x4c;
delay(4);
DR1=1;
}
voiddisplay_month_day()
{
ucharshi,ge;
day=read_ds1302(0x87);
ge=day&0x0f;
shi=(day>>4)&0x07;
DR4=0;
P0=table[ge];
delay(4);
DR4=1;
DR3=0;
P0=table[shi];
delay(4);
DR3=1;
month=read_ds1302(0x89);
ge=month&0x0f;
shi=(month>>4)&0x07;
DR2=0;
P0=table[ge];
delay(4);
DR2=1;
DR1=0;
P0=table[shi];
delay(4);
DR1=1;
}
voiddisplay_hour_min()
{
ucharshi,ge;
min=read_ds1302(0x83);
ge=min&0x0f;
shi=(min>>4)&0x07;
DR4=0;
P0=table[ge];
delay(4);
DR4=1;
DR3=0;
P0=table[shi];
delay(4);
DR3=1;
hour=read_ds1302(0x85);
ge=hour&0x0f;
shi=(hour>>4)&0x07;
DR2=0;
P0=table[ge];
delay(4);
DR2=1;
DR1=0;
P0=table[shi];
delay(4);
DR1=1;
}
voiddisplay_week_sec()
{
ucharshi,ge;
week=read_ds1302(0x8b);
ge=week&0x0f;
shi=(week>>4)&0x07;
DR2=0;
P0=table[ge];
delay(4);
DR2=1;
DR1=0;
P0=table[shi];
delay(4);
DR1=1;
sec=read_ds1302(0x81);
ge=sec&0x0f;
shi=(sec>>4)&0x07;
DR4=0;
P0=table[ge];
delay(4);
DR4=1;
DR3=0;
P0=table[shi];
delay(4);
DR3=1;
}
voidmain()//主程序;
{
uchari;
uchartemp1,temp2;
ucharflag=0x00;
for(i=0;i<2;i++)
delay(3);//延时电路,抗抖动;
init_ds1302();
while
(1)
{
if(key1==0)//低电平有效;
{
delay(10);
if(key1==0)
m=m+1;//按键按下,开始加1;
while(!
key1);
if(m==4)m=0;
}
if(key2==0)
{
delay(10);
if(key2==0)
{
if(flag==0x00)
write_ds1302(0x8e,0x00);//写保护关
else
write_ds1302(0x8e,0x80);//写保护开
flag=~flag;
}
while(!
key2);
}
if(key3==0)
{
delay(10);
if(key3==0)
{
hour_temp++;
if(hour_temp>=24)hour_temp=0;
temp1=hour_temp%10;//个位
temp2=hour_temp/10;//十位
temp1=((temp2&0x03)<<4)|temp1;
write_ds1302(0x84,temp1);
}
while(!
key3);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 电子 时钟 淮阴 工学院 计算机 工程学院