单片机课程设计-简易电子时钟.doc
《单片机课程设计-简易电子时钟.doc》由会员分享,可在线阅读,更多相关《单片机课程设计-简易电子时钟.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机课程设计报告题目:简易电子时钟 专业: 自动化 班级: 12级自动化1班 日期: 2014 年 3月 一、 设计目的 随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用STC89C51单片机作为核心,功耗小,能在5V的低压工作,电压可选用35
2、V电压供电。综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。本电路为实现电子万年历的功能,采用单片机STC89C51,辅助以必要的外围电路,用C语言编写程序,并进行模块化设计而成的电子万年历系统.它通过LCD能正确显示阳历星期和时分秒,温度等,可以进行整点提醒,具有功能稳定,精确度高和可调的特点。1、通过单片机原理及应用教程了解单片微型计算机的发展;2、根据课程设计的要求,学会设计程序的过程,学会应用程序设计调试软件、学会根据要求运用PCB设计电路板硬件部分;3、通过调试程序设计模块,掌握单片微型计算机的结构原理,
3、了解程序设计的编程思想;4、通过软件调试熟悉使用单片机指令系统,掌握C语言程序设计方法及编程技巧,掌握子程序的设计与使用,熟悉定时器中断服务程序的设计及调用过程。5、综合课程设计更全方面了解单片机的硬件和软件知识。 二、 设计要求和方案选择 设计要求:1、 显示出基本时间:时、分、秒;(基础部分)2、 显示年、月、日、周具体时间(拓展部分)3、 断电保护时间功能(拓展部分)4、 环境温度感应功能显示(拓展部分)5、 整点报时功能(拓展部分)方案选择:根据题目基本要求以及外拓展功能,本次单片机课程设计打算以AT89S52单片机系统为基础实现以上的设计要求,并在此分为软硬件模块结合实现所要求的功能
4、,各重要模块如下:1、 AT89S52单片机最小系统 最小系统包括晶体振荡电路、复位开关和电源部分。图2为STC89C52RC单片机的最小系统。2、 DS1302时钟芯片模块 时钟模块采用DS1302芯片,DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:RST复位、I/O数据线、SCLK串行时钟。时钟/RAM的
5、读/写数据以一个字节或多达31个字节的字符组方式通信。3、 18B20温度感应芯片模块温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55125,可编程为9位12位A/D转换精度,测温分辨率达到0.0625,采用寄生电源工作方式,CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。4、 LCD1602液晶显示器模块LCD液晶显示模块采用LCD1602型号,具有很低的功耗,正常工作时电流仅2.0mA/5.0V。通过编程实现自动关闭屏幕能够更有效的降低功耗。LCD1602分两行显示,每行可显示多达16个字符。LCD1602液
6、晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制,并且还能利用空余的空间自定义字符。5、 蜂鸣器模块 三、 软件设计当硬件做出来的时候下一步就是在软件上实现所要求的功能,各个芯片最好都应该有各自的基本C文件程序,然后再在主函数上用函数的调用的方法最后实现功能。以下是本次课程设计的全部代码:#include#includeDS18B20_3.H#define uint unsigned int#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,week,flag,
7、key1n,temp;/flag用于读取头文件中的温度值,和显示温度值#define yh 0x80 /LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)#define er 0x80+0x40 /LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)/液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)sbit rs=P20;sbit en=P22;sbit rw=P21; /如果硬件上rw接地,就不用写这句和后面的rw=0了sbit led=P26; /LCD背光开关/DS1302时钟芯片与C51之间的引脚连接定义sbit I
8、O=P11;sbit SCLK=P10;sbit RST=P12;sbit ACC0=ACC0;sbit ACC7=ACC7;/*ACC累加器=AACC.0=E0H ACC.0就是ACC的第0位。Acc可以位寻址。累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。 */校时按键与C51的引脚连接定义sbit key1=P15; /设置
9、键sbit key2=P16; /加键sbit key3=P17; /减键sbit buzzer=P13;/蜂鸣器,通过三极管9012驱动,端口低电平响/*/uchar code tab1=20 - - ; /年显示的固定字符uchar code tab2= : : ;/时间显示的固定字符/延时函数,后面经常调用void delay(uint xms)/延时函数,有参函数uint x,y;for(x=xms;x0;x-) for(y=110;y0;y-);/*液晶写入指令函数与写入数据函数,以后可调用*/*在这个程序中,液晶写入有关函数会在DS1302的函数中调用,所以液晶程序要放在前面*/w
10、rite_1602com(uchar com)/*液晶写入指令函数*rs=0;/数据/指令选择置为指令rw=0; /读写选择置为写P0=com;/送入数据delay(1);en=1;/拉高使能端,为制造有效的下降沿做准备delay(1);en=0;/en由高变低,产生下降沿,液晶执行命令write_1602dat(uchar dat)/*液晶写入数据函数*rs=1;/数据/指令选择置为数据rw=0; /读写选择置为写P0=dat;/送入数据delay(1);en=1; /en置高电平,为制造下降沿做准备delay(1);en=0; /en由高变低,产生下降沿,液晶执行命令lcd_init()/
11、*液晶初始化函数*write_1602com(0x38);/设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c);/开显示不显示光标write_1602com(0x06);/整屏不移动,光标自动右移write_1602com(0x01);/清显示write_1602com(yh+1);/日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a14;a+)write_1602dat(tab1a);/向液晶屏写日历显示的固定符号部分/delay(3);write_1602com(er+2);/时间显示固定符号写入位置,从第2个位置后开始显示fo
12、r(a=0;a0;a-)IO=ACC0;SCLK=0;SCLK=1;ACC=ACC1;uchar read_byte()/读一个字节RST=1;for(a=8;a0;a-)ACC7=IO;SCLK=1;SCLK=0;ACC=ACC1;return (ACC);/-void write_1302(uchar add,uchar dat)/向1302芯片写函数,指定写入地址,数据RST=0;SCLK=0;RST=1;write_byte(add);write_byte(dat);SCLK=1;RST=0;uchar read_1302(uchar add)/从1302读数据函数,指定读取数据来源地
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 简易 电子 时钟
限制150内