数码管模块化显示电子万年历
{
uchar status;
DQ = 1; delayms(8); DQ = 0 ; delayms(90); DQ = 1; delayms(8);
status = DQ; delayms(100);
DQ = 1;
return status;
}
//-------------------------------------------------------
extern void write1(uchar addr,uchar dat);
extern void init();//7221初始化
extern void init1();
#endif
/*max7221.c*/
#include "max7221.h"
#include <intrins.h>
uchar CurrentT = 0 ; //当前读取的温度整数部分
uchar Temp_Value[] = {0x00,0x00}; //从DS18B20读取的温度值
bit ng=0;//正负数标志位,ng=0,为正数,反之为负数,正数负数的处理方法不同,
bit DS18B20_IS_OK=1;//为1时表示当前读取温度正常,否则读取失败。
//----------------------------------------------------------------
void Process_Temperature()
{
// uchar i;
//延时值与负数标识
// uchar ng = 0;
//高5位全为1(0)则为负数,为负数时取反加1,并设置负数标识
Temp_Value[1] = ReadOneByte(); //温度高8位
DS18B20_IS_OK = 1;
}
}
//----------------------------------------------------------------
//对读取的温度值进行判断,处理,负数的情况,整数情况
#define NOP() {_nop_(),_nop_(),_nop_(),_nop_()}
sbit DQ=P1^3; //DS18B20控制线,单线模式。
extern bit ng; //正负数标志位,ng=0,为正数,反之为负数,正数负数的处理方法不同,
extern bit DS18B20_IS_OK;//为1时表示当前读取温度正常,否则读取失败。
uchar Display_Digit[4]={0,0,0,0}; //读取的温度值转换后存在这个数组中
//-------------------------------------------------------
//初始化DS18B20
//-------------------------------------------------------
dat<<=1;
DIN=CY;
CLK=1;
_nop_();
_nop_();
CLK=0;
}
CSB=1;
}
void write1(uchar addr,uchar dat)
{
uchar i;
CSB1=0;
for(i=0;i<8;i++)
{
CLK1=0;
addr<<=1;
DIN1=CY;
CLK1=1;
_nop_();
void WriteOneByte(uchar dat)
{
uchar i ;
for (i = 0; i < 8; i++)
{
DQ = 0 ; DQ = dat & 0x01 ; delayms(5); DQ = 1; dat>>=1;
}
}
//----------------------------------------------------------------
SCLK=1;
RST=0;
return dat;
}
void gettime()//ds1302读取当前时间存储在datetime中
{
uchar i,add=0x81;
for(i=0;i<7;i++)
{
datetime[i]=read_data(add);
add+=2;
}
}
/*max7221.h*/
#ifndef _MAX7221_H_//注:Max7221只能用来驱动共阴数码管,对共阳的没效
数码管显示模块化显示电子万年历
数码管共阳极7407驱动共阴极max7221/7419驱动
Ds1302实时时间显示
Ds18b20温度显示芯片
/*delay.h*/
#ifndef _DELAY_H
#define _DELAY_H_
#define uint unsigned int
#define uchar unsigned char
write(0x0a,0x07); //亮度地址0x0a,0x00-0x0f,0x0f时最亮
write(0x0b,0x07); //扫描数码管个数地址0x0c,最多扫描8只数码管
write(0x0c,0x01); //工作模式地址0x0c0x00:关闭;0x01:正常
}
void init1()
{
write1(0x09,0xff);
#define uchar unsigned char
sbit IO=P1^0; //ds1302跟单片机接口
sbit SCLK=P1^1;
sbit RST=P1^2;
extern unsigned char datetime[7]; //存储获得的时间值
extern void gettime();//读取时间值函数
{
IO=X&0X01;
SCLK=1;
SCLK=0;
X>>=1;
}
}
uchar get_a_byte_from_ds1302()
{
uchar i,b=0x00;
for(i=0;i<8;i++)
{
b|=_crol_((uchar )IO,i);
SCLK=1;
SCLK=0;
}
//return b/16*10+b%16; //返回的BCD码转换为十进制
write1(0x0a,0x07);
write1(0x0b,0x07);
write1(0x0c,0x01);
}
/*ds18b20.h*/
#ifndef _DS18B20_H
#define _DS18B20_H
#include <reg51.h>
#include "delay.h"
#include <intrins.h>
else
{
WriteOneByte(0xCC); //跳过序列号
WriteOneByte(0x44); //启动温度转换
Init_DS18B20();
WriteOneByte(0xCC); //跳过序列号
WriteOneByte(0xBE); //读取温度寄存器
Temp_Value[0] =ReadOneByte(); //温度低8位
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void delayms(uint xms)//毫秒级别延时
{
while(xms--);
}
/*ds1302.h*/
#ifndef _DS1302_H_
#define_DS1302_H_
#include <reg51.h>
#define uint unsigned int
void write(uchar addr,uchar dat) //写数据,写地址函数
{
uchar i;
CSB=0;
for(i=0;i<8;i++)
{
CLK=0;
addr<<=1;
DIN=CY;
CLK=1;
_nop_();
_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
CLK=0;
//读一字节
//-------------------------------------------------------
uchar ReadOneByte()
{
uchar i, dat = 0;
DQ = 1; _nop_();
for (i = 0; i < 8; i++)
{
DQ = 0; dat >>= 1; DQ = 1; _nop_();_nop_();
extern uchar Display_Digit[4];//读取的温度值转换后存在这个数组中
externvoid Read_Temperature(); //读取当前温度值
extern void Process_Temperature();//处理当前获得的温度值,正数,负数等。
#endif
/*ds18b20.c*/
if(DQ) dat |= 0x80;
delayms(30);
DQ = 1;
}
return dat;
}
数码管显示万年历时钟
数码管显示万年历时钟数码管显示万年历时钟功能介绍一、功能说明:1.整体功能达到了市售电子日历效果,显示内容包括年、月、日、星期、时、分、秒、室温;2.实时时钟芯片采用了两种:DS12C887+和DS1302。
可供学习和使用过程中进行选择;3.数码管控制采用了MAX7219专用扫描驱动芯片,可通过PS/2键盘对数码管的显示亮度进行15级调节;4.电路板上留有PS/2键盘接口,用于调节当前时间、数码管显示亮度、闹铃时间。
这一点和变通电子日历用明显区别,以达到一个有点专业的电子钟的要求;5.电路板上安装有继电器,可作为简单的时间控制(定时控制)或温度控制装置;二、待改进之处:1.可在板上合适的位置增加几个独立按键,日常使用调节更方便些;2.显示内容可增加农历和湿度;3.可以用光敏电阻配合串行A/D转换芯片实现显示亮度的自动调节,以适应环境光线的变化,这样子就更加具有专业性了。
三、PS/2键盘调整说明:1.使用PS2键盘F1进入运行时间设定、F2进入数码管显示亮度设定、F3进入闹铃时间设定、F4启动闹铃、F5关闭闹铃2.按下F1然后依次设定年、月、日、星期、时、分、秒时间信息,中途可以按小键盘区的ENTER键,退出设定状态3.按下F2然后选择小键盘区0-9和字符A-F可设定16级显示亮度,按下选择参数自动恢复走时状态4.按下F3然后依次设定时、分、秒三个闹铃时间参数,设定好任一参数可按小键盘区的ENTER键退出设定状态5.按下F4开启闹铃,继电器吸合其下方工作指示LED点亮,按下F5关闭闹铃,继电器释放同时LED熄灭,如蜂鸣器已经开始闹铃,可按F6或复位键6.按下F1或F2或F3但不想设定任何参数,都可按ESC退出相应的设定状态。
带温度显示的万年历_数码管显示(附电路图和源代码)
设计报告设计任务:设计一个智能化万年历时钟电路,LED数码管作为电路的显示部分,按钮开关作为调时部分,通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期、温度。
并能准确计算闰年闰月的显示。
设计要求:通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期等功能,并能准确计算闰年闰月的显示,三个个按钮连接P3.0、P3.1、P3.2可以精确调整每一个时间数值,通过对所设计的万年历时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术所连线路和单片机接口仿真图如图3所示:图3 仿真按键4)温度采集部分:DS18B20温度传感器,测温范围-55℃~+125℃,固有测温分辨率0.5℃。
独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
DS18B20的采集数据通过DQ传入单片机,单片机读取数据后将数据输出!如图所示:程序如下:ReadOneChar(void){unsigned char i=0;// 定义i用于循环unsigned char dat = 0;// 读取的8位数据for (i=8;i>0;i--)//8次循环{DQ = 0;// 拉低DQ总线开始读时序dat>>=1;// dat左移一位DQ = 1; //释放DQ总线if(DQ)// 如果DQ=1,执dat|=0x80;(0x80即第7位为1,如果DQ为1,即读取的数据为1,将dat的第7为置1,然后dat>>=1,循环8次结束,dat 即为读取的数据)//DQ=0,就跳过dat|=0x80;Tdelay(4);// 延时以完成此次读时序,之后再读下一数据}return(dat); 返回读取的dat}//写一个字节WriteOneChar(unsigned char dat){unsigned char i=0;//for (i=8; i>0; i--)//{DQ = 0;//DQ = dat&0x01;//Tdelay(5);//延时以完成此次读时序,之后再读下一数据DQ = 1;//dat>>=1;//}}//读取温度ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;//Init_DS18B20();WriteOneChar(0xCC);// 写指令,跳过ROM,WriteOneChar(0x44);// 启动温度转换Init_DS18B20();WriteOneChar(0xCC);// 写指令,跳过ROM,WriteOneChar(0xBE);// 写指令,读暂存存储器a=ReadOneChar();//读低8位b=ReadOneChar();//读高8位t=b;//t<<=8;//t=t|a;//tt=t*0.0625;//t= tt*10+0.5;//return(t); //获得0.01°C 的精度并返回}LED数码管的选择LED数码管分为共阴和共阳两种,以利用STC89C51的P0口作为LED显示的数据部分,以P2口的七个口作为显示部分的位选,通过三八译码器和4-16译码器扩展为17位的位选分别接在一个四位数码管和13个数码管的位选部分。
电子万年历
电子万年历设计摘要随着现代生活节奏的不断加快,时间对于我们每个人来说也越来越重要,我们都需要有工具来度量时间。
电子万年历作为一种应用广泛的日常计时工具,由于它具有读取方便、显示直观、价格低廉等诸多优点,在当代社会中的应用也越来越广泛,大大方便了人们的生活和工作。
本设计是基于单片机技术原理,采用AT89S52单片机芯片作为主控制器,并采用时钟芯片DS1302来实现时钟,通过硬件电路的制作及软件程序的编制,利用单片机的控制作用通过共阳极数码管显示时间,实现显示阳历的年、月、日、星期、时、分、秒以及阴历的月、日的功能,还具有掉电继续计时的功能。
本设计主要由按键模块、显示模块、DS1302时钟模块、AT89S52主控制系统组成,其中按键电路采用3个按键构成独立连接式键盘,显示电路采用19个共阳极数码管构成,并利用74LS164译码器将二进制代码转化为对应的高低电平信号,并利用74LS138芯片来实现数码管的动态选择。
时钟模块采用DS1302芯片,它的使用寿命长、误差小,满足电子万年历需要精确计时的要求。
关键词:AT89S52,DS1302,数码管,译码器THE DESIGN OF ELECTRONIC CALENDARABSTRACTAs the pace of modern life continues to increase,time is becoming more and more important for us. We all need the tools to measure time. As a widely used timing tool, Electronic calendar has many advantages, such as easy to read, direct display and low cost. In modern society, it is becoming more and more extensive and makes our life and work easier.This design is based on principles of single-chip computer, using chip AT89S52 as the core controller and clock chip DS1302 as the clock. By combining the hardware circuits and software programs preparation, using common anode LED to display time under the control of single-chip computer. It can display the date of solar calendar and lunar calendar. It can continue to measure time after power lost.This design consists of four main parts, including key module, display module, DS1302 clock module and AT89S52 master control system. Buttons circuit uses three buttons to make up the independent keyboard. Display circuit consists of 19 common anodes LED. It uses 74LS164 to translate binary code into the corresponding high level signal and uses 74ls138 to choose the corresponding digital tube. The clock module uses clock chip DS1302, DS1302 meets the requirement of accurate timekeeping because of its long service life and small error.KEY WORDS:AT89S52,DS1302,Digital tube,Decoder目录前言 (1)第1章系统设计方案的选择 (3)§1.1电子万年历的设计意义 (3)§1.2 国内外同类设计的发展概况 (3)§1.3 设计要求 (4)§1.4 设计方案的选择与论证 (5)§1.4.1 单片机芯片的选择 (5)§1.4.2 时钟芯片的选择 (5)§1.4.3 显示模块的选择 (6)§1.4.4 键盘模块的选择 (6)§1.5 本设计的最终方案 (6)第2章系统的硬件设计与实现 (7)§2.1 电路设计总框图 (7)§2.2 系统的硬件概述 (7)§2.3 主要单元电路的设计 (8)§2.3.1 AT89S52主控制系统设计 (8)§2.3.2 键盘模块设计 (13)§2.3.3 时钟模块设计 (14)§2.3.4 显示模块的设计 (18)第3章系统的软件设计 (23)§3.1 主程序流程图 (23)§3.2 阳历程序设计 (24)§3.2.1 DS1302初始化 (24)§3.2.2 BCD码转化为十进制子程序 (27)§3.3 时间调整程序的设计 (27)§3.4 阴历程序的设计 (29)§3.4.1 计算阳历天数的程序设计 (29)§3.4.2 阳历转阴历程序 (32)结论 (33)参考文献 (34)致谢 (36)附录 (37)前言在当代繁忙的工作与生活中,时间与我们每个人都有非常密切的关系,每个人都受到时间的影响。
电子万年历毕业设计
目录摘要 ........................................................... 错误!未定义书签。
一.设计要求与方案论证............................................ 错误!未定义书签。
1.1设计要求................................................... 错误!未定义书签。
1.1.1基本要求................................................ 错误!未定义书签。
1.1.2创新要求................................................ 错误!未定义书签。
1.2系统基本方案选择和论证...................................... 错误!未定义书签。
1.2.1单片机芯片.............................................. 错误!未定义书签。
1.2.2 显示模块 ............................................... 错误!未定义书签。
1.2.3时钟芯片................................................ 错误!未定义书签。
1.2.4温度传感器.............................................. 错误!未定义书签。
1.3电路设计最终方案决定........................................ 错误!未定义书签。
二.电子万年历硬件设计与实现...................................... 错误!未定义书签。
2.1电子万年历系统设计.......................................... 错误!未定义书签。
基于51单片机的电子万年历
基于51单片机的电子万年历制作【摘要】本次设计就是设计一款万年历,以AT89S52单片机为核心,配备数码管显示模块、按键等功能模块。
分别采用A/D转换器TLC1549和温度传感器LM35来实现的。
万年历采用24小时制方式显示时间,在数码管上显示年、月、日、小时、分钟、秒等功能。
设计的核心主要包括硬件设计和软件编程两个方面。
硬件电路设计主要包括中央处理单元电路、时钟电路、执行电路等几部分。
软件用汇编语言来实现,主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。
【绪论】万年历,就是记录一定时间范围内(比如100年或更多)的具体阳历与阴历的日期的年历,方便有需要的人查询使用。
万年只是一种象征,表示时间跨度大。
这次设计通过对万年历系统的设计,详细介绍了51 单片机应用中的按键处理、数码管显示原理、动态和静态显示原理、定时中断、A/D转换等原理。
该系统能够显示年、月、日、小时、分钟、秒、星期、农历、温度,通过按键可以修改时间和设定闹钟等功能。
此系统结构简单、功能齐全,具有一定的推广价值。
1.系统说明1.1方案选择●方案一:采用日历时钟芯片DS12887来产生时间,数据经单片机处理后送到数码管显示。
DS12887内部有晶体振荡器、振荡电路、充电电路和可充电锂电池。
此外,片内有114B的RAM。
●方案二:采用纯单片机制作。
方案一中因为有了日历时钟芯片,这就使得单片机的软件部分简单很多。
但是考虑到芯片成本高,因此采用方案二。
1.2 系统方框图:如图1-1所示:图1-1 系统方框图1.3 说明系统由51系列单片机AT89S52、按键、温度采集、数码管显示、闹钟报时,电源等部分构成。
单片机部分包括时钟电路、复位电路;按键部分能够实现对时间的调整和定时时间的设定。
四个按键的功能分别为:退出、闹钟、设置、修改。
温度采集部分包括温度传感器、A/D转换。
传感器采样进来的信号经A/D转换后送给单片机,经软件处理后送至7段共阳数码管显示。
单片机课程设计报告电子万年历
单片机课程设计报告电子万年历单片机课程设计报告:电子万年历一、设计简介在本次单片机课程设计中,我们选择了电子万年历作为设计主题。
电子万年历是一种结合了数字电路、单片机技术和实时时钟(RTC)技术的电子产品,它具有显示年份、月份、星期、日、时、分、秒的功能,还可以根据用户的需求进行定时、闹钟、报时等功能。
二、硬件设计我们采用了基于8051内核的单片机作为主控芯片。
该单片机具有丰富的I/O 端口,适于实现各种复杂的输入输出操作。
此外,它还内置了定时器和中断控制器,可以很方便地实现实时时钟功能。
1.显示模块:为了方便用户查看时间信息,我们选用了LCD显示屏作为显示设备。
LCD屏具有功耗低、体积小、显示内容丰富等优点。
2.实时时钟(RTC)模块:我们采用了常用的DS1302芯片作为实时时钟模块。
该芯片可以提供秒、分、时、日、星期、月、年的信息,而且还有可编程的报警功能。
3.按键模块:为了实现人机交互,我们设计了一组按键。
用户可以通过按键来调整时间、设置闹钟等。
4.电源模块:为了保证系统的稳定工作,我们采用了稳定的5V直流电源。
三、软件设计我们采用了C语言编写程序。
程序主要由以下几个部分组成:1.主程序:主程序主要负责读取RTC模块的时间信息,并控制LCD显示屏显示时间。
同时,主程序还要检测按键输入,根据用户的需求进行相应的操作。
2.RTC驱动程序:为了正确地读取和设置DS1302芯片的时间信息,我们编写了相应的驱动程序。
驱动程序包括初始化和读写寄存器两部分。
3.按键处理程序:按键处理程序用于检测按键输入,并根据按键值执行相应的操作。
比如,用户可以通过按键来增加或减少时间,设置闹钟等。
4.LCD显示程序:LCD显示程序用于控制LCD显示屏的显示内容。
在本设计中,我们使用了点阵字符库,将时间信息以字符的形式显示在LCD屏上。
四、测试与验证为了确保我们的电子万年历设计正确无误,我们进行了以下的测试和验证:1.硬件测试:首先,我们对硬件电路进行了测试,确保每个模块都能正常工作。
(汇编)实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历
;///////////////////////////////////////////;本程序源代码由湖南工程职业技术学院提供.;专业单片机培训,让你学习单片机更容易.;程序员:蒋庆桥;QQ:xxxxxxxxx;本程序用汇编实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历,H_ADJ BIT P3.0 ;时/年调整M_ADJ BIT P3.1 ;分/月调整S_ADJ BIT P1.4 ;秒/日调整DT_SET BIT P1.6 ;时间/日期选择STR BIT P1.5;启动走时T_RST BIT P1.0 ;实时时钟复位线引脚T_CLK BIT P1.1 ;实时时钟时钟线引脚T_IO BIT P1.2 ;实时时钟数据线引脚HH_BIT EQU 40H ;时高位HL_BIT EQU 41H ;时低位MH_BIT EQU 42H ;分高位ML_BIT EQU 43H ;分低位SH_BIT EQU 44H ;秒高位SL_BIT EQU 45H ;秒低位TEMPER_L EQU 46HTEMPER_H EQU 47HYH_BIT EQU 48H ;年高位YL_BIT EQU 49H ;年低位MOH_BIT EQU 4aH ;月高位MOL_BIT EQU 4bH ;月低位DH_BIT EQU 4cH ;日高位DL_BIT EQU 4dH ;日低位SEC EQU 30HMIN EQU 31HHOUR EQU 32HDAY EQU 33HMONTH EQU 34HWEEK EQU 35HYEAR EQU 36HTEMPER equ 37hFLAG1 BIT 20h.0 ;DS18B20存在标志位DQ BIT P1.3A_BIT EQU 55HB_BIT EQU 56HDS1302_ADDR EQU 5EHDS1302_DATA EQU 5FHORG 00HLJMP STARTSTART:MOV SP,#60HMOV TMOD,#11HMOV TH0,#3CHMOV TL0,#0B0HMOV R0,#10SETB EASETB ET0SETB TR0MOV R1,37HMOV YEAR,#13H ;上电预置日期、时间MOV WEEK,#03H ;周1 MONMOV MONTH,#07H ;2011 04 25 12:00:00MOV DAY,#05HMOV HOUR,#23HMOV MIN,#00HMOV SEC,#00HMOV 50H,#0/////////////////////////////////////////////////////////////////////// ////MAIN:LCALL KEY//MAIN2:CALL FENLILCALL INIT_18B20LCALL GET_TEMPERcall CHANGEcall dispcall displayAJMP MAINFENLI:MOV A,YEARMOV B,#10HDIV ABMOV YL_BIT,BMOV YH_BIT,AMOV A,MONTHMOV B,#10HDIV ABMOV MOL_BIT,BMOV MOH_BIT,AMOV A,DAYMOV B,#10HDIV ABMOV DL_BIT,BMOV DH_BIT,AMOV A,HOURMOV B,#10HDIV ABMOV HL_BIT,BMOV HH_BIT,AMOV A,MINMOV B,#10HDIV ABMOV ML_BIT,BMOV MH_BIT,AMOV A,SECMOV B,#10HDIV ABMOV SL_BIT,BMOV SH_BIT,ARETKEY: ;按键子程序JB F0,MAIN10 ;F0=1,开始走时。
数码管万年历
d0 d1 d2 d3 d4 d5 d6 d7 w0 w1 w2 w3 w4 w5
U4
19 XTAL1 18 XTAL2
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
❖ alarm();
❖ led_display1();
❖
❖}
❖}
D0 D1 D2 D3 D4 D5 D6 D7
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
11 1
LE OE
74HC573
19 d0 18 d1 17 d2 16 d3 15 d4 14 d5 13 d6 12 d7
0a 1a 2a 3a 4a 5a 6a
U3
00 2 01 3 02 4 03 5 04 6 05 7 06 8 07 9
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
C程序
❖ #include<reg52.h> ❖ #include"dingshiqi.h" ❖ #include"led_display.h" ❖ #include"tiaoshi.h" ❖ #include"key.h" ❖ #include"jishi.h"
单片机课程设计—万年历[1]
郑州轻工业学院软件学院单片机与接口技术课程设计总结报告设计题目:电子万年历学生:系别:专业:班级:学号:指导教师:2021年12月16日设计题目:电子万年历设计任务与要求:1、显示年月日时分秒及星期信息2、具有可调整日期和时间功能3、增加闰年计算功能方案比拟:方案一:系统分为主控制器模块、显示模块、按键开关模块,主控制模块采用AT89C52单片机为控制中心,显示模块采用普通的共阴LED数码管,键输入采用中断实现功能调整,计时使用AT89C52单片机自带的定时器功能,实现对时间、日期的操作,通过按键盘开关实现对时间、日期的调整。
方案二:系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,电源电路、复位电路、晶振电路等模块。
主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对时间、日期的操作。
两个方案工作原理大致相同,只有显示模块和时钟电路不同。
LED数码管价格适中,对于数字显示效果较好,而且使用单片机的端口也较少; LCD1602液晶显示屏,显示功能强大,可以显示大量文字、图形,显示多样性,清晰可见,价格相对LED数码管来说要昂贵些,但是基于本设计显示的东西较多,假设采用LED数码管的话,所需数码管较多,而且不利于控制,因此选择LCD1602作为显示模块。
DS1302是一款高性能的实时时钟芯片,以计时准确、接口简单、使用方便、工作电压范围宽和低功耗等优点,得到广泛的应用,实时时钟有秒、分、时、星期、日、月和年,月小于31天时可以自动调整,并具有闰年补偿功能,而且在掉电时能够在外部纽扣电池的供电下继续工作。
单片机有定时器的功能,但时间误差较大,且需要编写时钟程序,因此采用DS1302作为时钟电路。
比照以上方案,结合设计技术指标与要求我们选择了方案二进行设计。
逻辑总框图:该电子万年历的总体设计框图如图(1)所示。
基于STCC单片机的多功能电子万年历
基于STCC单片机的多功能电子万年历————————————————————————————————作者:————————————————————————————————日期:摘要本文介绍了基于STC89C52单片机的多功能电子万年历的硬件结构和软硬件设计方法。
本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。
系统以STC89C52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。
温度采集选用DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602A液晶显示模块,可以在LCD上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。
此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。
关键字:万年历温度计液晶显示ABSTRACTThis paper introduces the based on STC89C52 multi-function electronic calendar of the hardware structure and software and hardware design method. This design by data display module, temperature acquisition module, time processing module and set module four modules. With STC89C52 single-chip microcomputer system for the controller to serial clock calendar chip DS1302 record calendar and time, it can be to date and time, minutes and seconds for the time, also has a leap year compensation and other functions. Temperature gathering choose DS18B20 chip, calendar by using object digital display, data showed that the 1602 A liquid crystal display module, can be in the LCD shows at the same time year, month, day, Sunday, when, minutes and seconds, still have time calibration etc. Function. This calendar has read the convenient, direct display, functional diversity, simple circuit, low cost, and many other advantages, has a broad market prospect.Key words:Perpetual Calendar thermometer LCD display目录摘要 (III)ABSTRACT (IV)前言 (VI)1 绪论 01.1 课题研究的背景 01.2课题的研究目的与意义 01.3课题解决的主要内容 02 系统的方案设计与论证 (1)2.1单片机芯片设计与论证 (2)2.2按键控制模块设计与论证 (2)2.3时钟模块设计与论证 (2)2.4温度采集模块设计与论证 (3)2.5显示模块模块设计与论证 (3)3 系统硬件的设计 (4)3.1 STC89C52单片机 (4)3.2时钟芯片DS1302接口设计与性能分析 (7)3.3温度芯片DS18B20接口设计与性能分析 (11)3.4 LCD显示模块 (16)3.5按键模块设计 (17)3.6复位电路的设计 (18)4 系统的软件设计 (20)4.1主程序流程图的设计 (20)4.2 程序设计 (21)5 系统的机体设计 (27)5.1系统的模块组成 (27)5.2 功能实现 (27)结论 (29)参考文献 (30)致谢 (31)附录 (32)前言随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
