当前位置:文档之家› 电子电工课程设计(多功能数字时钟--万年历)

电子电工课程设计(多功能数字时钟--万年历)

电子电工课程设计(多功能数字时钟--万年历)
电子电工课程设计(多功能数字时钟--万年历)

物理与电子科学学院电子电工实验

基于DS1302多功能数字时钟--万年历

实验报告

实验名称:基于DS1302多功能数字钟

试验日期: 2014年 01 月 05 日

专业:电子信息工程

姓名:刘斌

班级:物电 1105 班

学号: 2011112030560

一、设计理念:

电子万年历是一个应用非常广泛的实用日常计时工具,带有显示温度,显示世纪,年,月,日,星期,时,分,秒和按键可调时间及其按键设置闹钟的功能,同时具有月末自动更新,闰年补偿功能,整点报时等多种功能。环境温度检测系统在日常生活和工业应用非常广泛,能实时采集周围的温度信息进行显示。

此系统是基于STC89C52单片机设计的,包含液晶显示模块,DS1302实时时钟模块,DS18B20温度采集模块,键盘扫描模块,蜂鸣器报警模块。STC89C52作为控制核心,具有功耗低,功能强等特点,电压可选3到5V电源供电。显示模块采用1602液晶动态显示,相对数码管而言经济实用,占用空间小,对于显示数字、字母最为合适,而且与单片机连线简单,占用IO口相对较少。实时时钟芯片DS1302是一款经济实惠功能强大的较新型产品,该器件提供RTC/日历,可外加器件实现定时闹钟等功能,如果检测到主电源故障,该器件可自动切换到备用电源供电,可以保证在断电情况下精准走时,计时。温度检测显示模块采用数字式温度传感器DS18B20,该芯片具有精度高,测量范围广等优点,易与单片机连接,模块电路组成简单并同时具有温度报警功能。

关键词:STC89C52,DS1302,DS18B20,1602液晶显示,电子万年历,采集设备周围环境温度、整点报时,闹钟时分通过按键设置,时、分、秒、年、月、日、星期通过按键进行调节校准……

二、设计思路:

核心控制体:STC89C52单片机

实时时钟芯片:DS1302

数字式温度传感器:DS18B20

总共设有四个按键,为节约资源考虑,每个按键都有多种功能。四个按键分别标号为key1,key2,key3,key4。第一次按下key2,key3,key4都没有反应,首先按下key1键可选择指针位置,key2键为加键,key3为减键,key4键为闹钟设置清零键。操作简单,按键灵活。整点报时功能,可以按下key4键终止报警。

系统设计框图:

系统硬件需求介绍:

STC89C52单片机一片,DS1302实时时钟芯片一个,DS18B20数字式温度传感器一个,+5V 无源蜂鸣器一个,12MHZ 、32KHZ 晶振各一个,多个按键和开关,常用电容电阻,连接线,三极管,二极管若干,主

控 模

块 时钟模块

温度检测显示

1602显示模块 键盘扫描模块 闹钟模块

滑动变阻器一个,+3V纽扣电池一个。

三、实施方案:

1、单片机核心控制模块:

核心控制器件选用STC89C52单片机。STC89C52单片机为40管脚双列直插芯片,它是一种高性能,低功耗的8位CMOS微处理器芯片,市场应用最多。而且价格便宜,控制方便,便于应用有4个I/O 口分别为P1,P2,P3,P4。其中每一个管脚都能做独立的输入输出管脚,它的第9脚位复位管脚,接上电容和上拉电阻再带个开关构成复位电路。18,19管脚接外部晶振和两个微调电容构成外部晶振电路。单片机,复位电路,晶振,5V电源构成单片机最小系统。其中与AT89C52单片机管脚连接如下图:

2、实时时钟电路模块:

DS1302引脚排列:如下图

引脚说明:

1)1脚,Vcc2:后备电源,此设计中接+3V纽扣电池;8脚,VCC1:主电源,接+5V。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V 时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。

2)X1、X2即2脚3脚:振荡源,外接32.768kHz晶振。

3)4脚END,接地端。

4)5脚RST:复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。

5)I/O为串行数据输入输出端(双向)。

6)SCLK为时钟输入端。

**特别注意:5,6,7脚在硬件电路实现中,必须接上拉电阻,接+5V.

3、DS18B20 工作模块:

DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。

DS18B20 的主要特征:

全数字温度转换及输出。

先进的单总线数据通信。

最高 12 位分辨率,精度可达土 0.5摄氏度。

12 位分辨率时的最大工作周期为 750 毫秒。

可选择寄生工作方式。

检测温度范围为–55°C ~+125°C (–67°F ~+257°F)

内置 EEPROM,限温报警功能。

64 位光刻 ROM,内置产品序列号,方便多机挂接。

多样封装形式,适应不同硬件系统。

4、液晶显示模块:

1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,本设计采用16列*2行的字符型LCD1602带背光的液晶显示屏。

引脚接口说明:

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操

作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

5、蜂鸣器电路模块

本实验设计中蜂鸣器用CS8050三极管驱动,蜂鸣器用5V的无源蜂鸣器,并接一个发光二极管作为指示灯,同时在负极串接一个限流电阻,数据端口接P3^7.

四、Proteus仿真原理总框图:

五、硬件电路实现:

六、源程序:

Shuzizhong.c

#include

#include"ds18b20.h"

#define uchar unsigned char

#define uint unsigned int

uchar shi,fen,miao,ringshi,ringfen,nian,yue,ri,week,temp,count,m; sbit rs=P2^2;

sbit rw=P2^3;

sbit en=P2^4;

sbit key1=P3^4; //设置键

sbit key2=P3^5; //加键

sbit key3=P3^6;

sbit key4=P3^7;

sbit IO=P1^1; // DS1302数据线

sbit SCLK=P1^2; //DS1302时钟线

sbit RST=P1^0; //DS1302复位线

sbit beep=P1^4;

sbit ACC0=ACC^0;

sbit ACC7=ACC^7;

uchar codetable[]="20 - - ";

uchar codetable1[]=" : : ";

uchar codetone[]={212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0};

uchar codelon[]={9,3,12,12,12,24,9,3,12,12,12,24,

9,3,12,12,12,12,12,9,3,12,12,12,24,0};

void delay(uint z)

{uint x,y;

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

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

}

void yinyue()

{

uint i,j,k=0,l;

{for(l=0;l<26;l++)

{

for(i=0;i

{ if(key4==0){beep=0;break;}

beep=~beep;

for(j=0;j

}

delay(10);

k++;}}}

void write_LCD_com(uchar com)

{rs=0;

rw=0;

P0=com;

delay(5);

en=1;

delay(5);

en=0;

}

void write_LCD_da(uchar data1)

{rs=1;

rw=0;

P0=data1;

delay(5);

en=1;

delay(5);

en=0;

}

void Init_LCD()

{uchar num;

write_LCD_com(0x38); delay(1);

write_LCD_com(0x01); delay(1);

write_LCD_com(0x06); delay(1);

write_LCD_com(0x0c); delay(1);

write_LCD_com(0x80);

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

{write_LCD_da(codetable[num]); delay(1);}

write_LCD_com(0x80+0x40);

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

{write_LCD_da(codetable1[num]); delay(1);}}

void write_LCDsfm(uchar add,uchar date) {uchar ge,shi;

shi=date/10;

ge=date%10;

write_LCD_com(0x80+0x40+add); write_LCD_da(0x30+shi);

write_LCD_da(0x30+ge); }

void write_LCDnyr(uchar add,uchar date) {uchar ge,shi;

shi=date/10;

ge=date%10;

write_LCD_com(0x80+add);

write_LCD_da(0x30+shi);

write_LCD_da(0x30+ge);

}

void write_LCDweek(uchar week)

{ write_LCD_com(0x80+0x0b);

switch(week)

{ case 1:write_LCD_da('M');

write_LCD_da('O');

write_LCD_da('N');

break;

case 2:write_LCD_da('T');

write_LCD_da('U');

write_LCD_da('E');

break;

case 3:write_LCD_da('W');

write_LCD_da('E');

write_LCD_da('D');

break;

case 4:write_LCD_da('T');

write_LCD_da('H');

write_LCD_da('U');

break;

case 5:write_LCD_da('F');

write_LCD_da('R');

write_LCD_da('I');

break;

case 6:write_LCD_da('S');

write_LCD_da('T');

write_LCD_da('A');

break;

case 7:write_LCD_da('S');

write_LCD_da('U');

write_LCD_da('N');

break;}}

void write_LCD_Temperature(uchar add,uchar date) {uchar ge,shi;

shi=date/10;

ge=date%10;

write_LCD_com(0x80+0x40+add);

write_LCD_da(0x30+shi);

write_LCD_da(0x30+ge);

write_LCD_da(0xdf);

write_LCD_da(0x43);

}

void DS1302_write_byte(uchar a)

{ uchar i;

ACC=a;

RST=1;

for(i=8;i>0;i--)

{ IO=ACC0;

SCLK=0;

SCLK=1;

ACC=ACC>>1;

}}

uchar DS1302_read_byte()

{uchar j;

RST=1;

for(j=8;j>0;j--)

{ ACC7=IO;

SCLK=1;

SCLK=0;

ACC=ACC>>1;

}

return(ACC);

}

void DS1302_write_date(uchar addr,uchar dat)//写数据{RST=0;

SCLK=0;

RST=1;

DS1302_write_byte(addr);

DS1302_write_byte(dat);

SCLK=1;

RST=0;

}

uchar DS1302_read_date(uchar addr)

{uchar dat1,b;

RST=0;

SCLK=0;

RST=1;

DS1302_write_byte(addr);

dat1=DS1302_read_byte();

SCLK=1;

RST=0;

b=dat1/16*10+dat1%16;

return(b);

}

void DS1302_Init()

{SCLK=0;

RST=0;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x8e,0x80);

}

void keyscan()

{

if(key1==0)

{

if(key1==0)

{

while(!key1);

count++;

if(count==11) count=1;

switch(count)

{ case 1:TR0=0;

write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('M');

m=miao/10*16+miao%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x80,0x80|m);

DS1302_write_date(0x8e,0x80);

break;

case 2:write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('F');

break;

case 3:write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('S');

break;

case 4:write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('W');

break;

case 5:write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('R');

break;

case 6:write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('Y');

break;

case 7:write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('N');

break;

case 8:write_LCD_com(0x80+0x40+0x0e);

write_LCD_da('R'); delay(3);

write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('F'); delay(3);

write_LCD_com(0x80+0x40+0x04);

break;

case 9:write_LCD_com(0x80+0x40+0x0e);

write_LCD_da('R'); delay(3);

write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('S'); delay(3);

write_LCD_com(0x80+0x40+0x01);

break;

case 10:write_LCD_com(0x80+0x40+0x0e);

write_LCD_da('\0'); delay(3);

write_LCD_com(0x80+0x40+0x0f);

write_LCD_da('\0'); delay(3);

delay(3);

write_LCD_com(0x0c);

TR0=1;

m=(miao)/10*16+(miao)%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x80,0x00|m);

DS1302_write_date(0x8e,0x80);

break;

}}}if(count!=0)

{

if(key2==0)

{delay(10);

if(key2==0)

{while(!key2);

switch (count)

{case 1:miao++;

if(miao==60)

miao=0;

write_LCDsfm(0x06,miao);

m=miao/10*16+miao%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x80,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x40+0x07);

break;

case 2:fen++;

if(fen==60)

fen=0;

write_LCDsfm(0x03,fen);

m=fen/10*16+fen%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x82,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x40+0x04);

break;

case 3:shi++;

if(shi==24)

shi=0;

write_LCDsfm(0x00,shi);

m=shi/10*16+shi%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x84,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x40+0x01);

break;

case 4:week++;

if(week==8)

week=0;

write_LCDweek(week);

m=week/10*16+week%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x8a,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x0d);

break;

case 5:ri++;

if(ri==32)

ri=0;

write_LCDnyr(0x08,ri);

m=ri/10*16+ri%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x86,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x09);

break;

case 6:yue++;

if(yue==13)

yue=1;

write_LCDnyr(0x05,yue);

m=yue/10*16+yue%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x88,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x06);

break;

case 7:nian++;

if(nian==51)

nian=0;

write_LCDnyr(0x02,nian);

m=nian/10*16+nian%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x8c,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x03);

break;

case 8:ringfen++;

if(ringfen==60)

ringfen=0;

write_LCDsfm(0x03,ringfen);

write_LCD_com(0x80+0x40+0x04);

break;

case 9:ringshi++;

if(ringshi==24)

ringshi=0;

write_LCDsfm(0x00,ringshi);

write_LCD_com(0x80+0x40+0x01);

break; }}}

if(key3==0)

{delay(10);

if(key3==0)

{while(!key3);

switch (count)

{case 1:miao--;

if(miao==-1)

miao=59;

write_LCDsfm(0x06,miao);

m=miao/10*16+miao%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x80,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x40+0x07);

break;

case 2:fen--;

if(fen==-1)

fen=59;

write_LCDsfm(0x03,fen);

m=fen/10*16+fen%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x82,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x40+0x04);

break;

case 3:shi--;

if(shi==-1)

shi=23;

write_LCDsfm(0x00,shi);

m=shi/10*16+shi%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x84,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x40+0x01);

break;

case 4:week--;

if(week==0)

week=7;

write_LCDweek(week);

m=week/10*16+week%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x8a,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x0d);

break;

case 5:ri--;

if(ri==0)

ri=31;

write_LCDnyr(0x08,ri);

m=ri/10*16+ri%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x86,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x09);

break;

case 6:yue--;

if(yue==0)

yue=12;

write_LCDnyr(0x05,yue);

m=yue/10*16+yue%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x88,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x06);

break;

case 7:nian--;

if(nian==-1)

nian=50;

write_LCDnyr(0x02,nian);

m=nian/10*16+nian%10;

DS1302_write_date(0x8e,0x00);

DS1302_write_date(0x8c,m);

DS1302_write_date(0x8e,0x80);

write_LCD_com(0x80+0x03);

break;

case 8:ringfen--;

if(ringfen==-1)

ringfen=59;

write_LCDsfm(0x03,ringfen);

write_LCD_com(0x80+0x40+0x04);

break;

case 9:ringshi--;

if(ringshi==-1)

ringshi=23;

write_LCDsfm(0x00,ringshi);

write_LCD_com(0x80+0x40+0x01);

break;}}}}}

void set_dingshiqi()

{TMOD=0x01;

TH0=64536/256;

TL0=64536%256;

EA=1;

ET0=1;

TR0=1;

}

void gettime()

{ beep=0;

temp=Read_Temperature();

miao=DS1302_read_date(0x81);

fen=DS1302_read_date(0x83);

shi=DS1302_read_date(0x85);

week=DS1302_read_date(0x8b);

ri=DS1302_read_date(0x87);

yue=DS1302_read_date(0x89);

nian=DS1302_read_date(0x8d);

write_LCDsfm(0x00,shi);

write_LCDsfm(0x03,fen);

write_LCDsfm(0x06,miao);

if(miao==0&&fen==0&&shi>8&&shi<21) {yinyue();

}

if(fen==ringfen&&shi==ringshi)

{yinyue();if(key4==0){ringshi=0;ringfen=0;}

}

write_LCDweek(week);

write_LCDnyr(0x08,ri);

write_LCDnyr(0x05,yue);

write_LCDnyr(0x02,nian);

write_LCD_Temperature(0x09,temp);

}

void main()

{ Init_LCD();

DS1302_Init();

set_dingshiqi();

while(1)

{ keyscan();}

}

void timer0() interrupt 1

{ TH0=64536/256;

TL0=64536%256;

万年历电子钟设计报告

课程设计报告课程设计名称 SOPC原理及应用专业电子科学与技术 班级电子13-1班 学号 姓名郑航 指导教师冯丽 成绩

2016年1月13日

目录 一、设计目的 (1) 二、设计内容要求 (1) 三、系统软、硬件需求分析 (1) 1. 硬件系统组成规划 (1) 2. 软件系统规划 (2) 四、设计步骤 (3) 3. 新建工程“count_binary” (3) 4. 添加ip核 (4) 5. 添加SDRAM Controller (5) 6. 添加flash (6) 7. 添加外部RAM总线(Avalon三态桥) (7) 8. 添加pio核 (7) 9. 添加cpu核 (8) 10. 添加LCD核 (9) 11. 自动分配基地址并生成系统 (9) 12. 设置顶层模块图 (10) 13. 管脚分配并编译 (11) 14. 启动Nios II IDE,新建工程 (12)

15. 导入设计程序 (12) 16. 编译工程并烧录 (13) 五、设计结果 (14) 六、源程序 (16) 1. 程序......................................... 错误!未定义书签。 2. 程序......................................... 错误!未定义书签。 3. 程序......................................... 错误!未定义书签。 4. 程序 (16) 七、实验心得 (28)

项目基于NiosII系统的电子钟设计 一、设计目的 1.掌握基本的开发流程。 2.熟悉QUARTUS II软件的使用。 3.熟悉NIOS II软件的使用。 4.掌握SOPC硬件系统的搭建和NIOSII软件编程方法。 5.掌握SOPC系统设计方法。 6.进一步了解简单的设置及其编程。 二、设计内容要求 NiosII系统的硬件设计,软件设计,该系统能实现一个电子钟功能。 三、系统软、硬件需求分析 1.硬件系统组成规划 根据系统要实现的功能和开发板配置,本项目中需要用到的Cyclone II开发板上的外围器件有: LCD:电子钟显示屏幕 按钮:电子钟设置功能键 Flash存储器:存储软、硬件程序 SRAM存储器:程序运行时将其导入SRAM 根据所用到的外设和器件特性,在SOPC Builder中建立系统要添加的模块包括:NiosII CPU定时器,按键PIO,LCD,外部RAM总线(Avalon三态桥),

电子万年历课程设计报告

课程:创新与综合课程设计 电子与电气工程系 实践教学环节说明书 题目名称电子万年历 院(系)电子与电气工程学院 专业电子信息工程 班级119411 学号1109635010 学生姓名11 指导教师q1 起止日期13周周一~14周周五

电子万年历 一.设计目的 设计一个具有报时功能、停电正常运行(来电无需校时)、带有年月日、时分秒及星期显示的电子日历。 二.方案设计 硬件控制电路主要用了AT89S52芯片处理器、LCD1602显示器等。根据各自芯片的功能互相连接成电子万年历的控制电路。软件控制程序主要有主控程序、电子万年历的时间控制程序、时间显示及星期显示程序等组成。主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是电子万年历中比较重要的部分。时间控制程序体现了年、月、日、时、分、秒及星期的计算方法。时间控制程序主要是定时器0计时中断程序每隔10ms中断一次当作一个计数,每中断一次则计数加1,当计数100次时,则表示1秒到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否1天到了,再判断是否1月到了,再判断是否1年到了,若计数到了则相关变量清除0。先给出一般年份的每月天数。如果是闰年,第二个月天数不为28天,而是29天。再用公式s=v-1 +〔(y-1/4〕-〔(y-1/100〕+〔(y-1/400〕+ d计算当前显示日期是星期几,当调节日期时,星期自动的调整过来。闰年的判断规则为,如果该年份是4或100的整数倍或者是400的整数倍,则为闰年;否则为非闰年。在我们的这个设计中由于只涉及100年范围内,所以判断是否闰年就只需要用该年份除4来判断就行了。 三.系统的设计框图 本系统以AT89S52单片机为核心,结合时钟芯片DS1302,LCD1602,键盘等外围器件,实现电子万年历的一系列功能,并通过液晶屏和按键控制完成人机交互的功能。系统总体设计框图如图(1)所示

数字万年历的制作

数字万年历的制作 数字显示万年历,它采用一枚专用软封装的时钟芯片,驱动15只红色共阳极数码管,可同时显示公历年、月、日、时、分、星期,以及农历月、日,还有秒点显示和整点报时、定时闹钟功能,使用220V市电供电,预留有备用电池座,外形尺寸为长21cm×宽14.5cm×厚3cm,最厚处6cm,适合放置在办公桌面上使用,具有很好的实用性。成品外观如图1所示。 图1 图2 原理简介 电路原理图如图2所示,为了读图方便,连线稍作了简化。从图中可以看出,IC1是一枚专用时钟芯片,Y1是32768Hz的晶振,为芯片提供时基频率信号,经过芯片内部处理后,输出各显示位的驱动信号,经过PNP(8550)型三极管做功率放大后驱动各数码管显示。芯片采用了动态扫描的输出

方式,由于人眼存在视觉暂留现象,且扫描速度比较快,因此看上去所有数码管都是在显示的。这种方式可以有效减少芯片的输出引脚数量,简化了线路,降低了功耗。 在电源部分中,整流二极管VD1~VD4组成了桥式整流电路,将变压器输出的交流电转换为直流电,经C6滤波后,送至三端稳压块7805,输出5V直流稳压电源,为电路供电。VD3和VD8组成互相隔离的供电电路,目的是在市电停电时,后备纽扣电池通过VD3,自动为芯片IC1提供后备电源,保证芯片计时数据不中断。同时由于VD8、VD9的存在,后备电池将不再向数码管供电,以节约后备电池的耗电量。由于芯片自身耗电较低,因此靠纽扣电池也可以维持芯片在很长时间里,内部计时不中断。当市电恢复后,7805输出经过VD8、VD9分别向芯片和数码管供电,由于DV3的存在,且纽扣电池电压为3V,低于7805输出的5V,因此纽扣电池将自动停止供电,7805输出也不会对纽扣电池充电。 VT9是唯一一只NPN(8050)型三极管,用于驱动喇叭,做为整点报时和定闹发声。LED10、LED14是用于秒点显示的发光二极管,LED11和LED12分别是整点报时显示和定闹显示的发光二极管,均为红色。 图3是万年历的全套散件的照片。表1是元器件清单。 图3 表1 元器件清单 序号元件名称参数元件数量序号元件名称参数元件数量 1 电阻10Ω 1 21 三极管8050 1 2 电阻33Ω8 22 三端稳压块7805 1 3 电阻47Ω 3 23 晶振32768Hz 1 4 电阻75Ω7 24 IC1软封装芯片 1 5 电阻100Ω 1 25 0.5’数码管红11 6 电阻150Ω8 26 0.8’数码管红 4

电子时钟万年历设计

计算机科学与技术学院硬件课程设计报告

在日常生活中,手表,闹钟是不可或缺的。在实际生活生产活动中,也要考虑时间的因素,如工时的计算,霓虹灯的亮灭。 因为集成电路制造技术的不断提高,出现了高性能、高可靠的集成芯片。电子时钟在工业领域,日常生活中得到了广泛的应用。电子时钟在性能方面具有精度高,实时性好,易于调整等优点。这些使得温度控制系统的研究和开发得到的各方面的广泛关注和支持。 本次课程设计,我利用8254计数芯片,8255芯片,4*4小键盘,12864LCD 液晶显示器,蜂鸣器制作了一个带有闹钟功能的电子时钟万年历。它可以实现由4*4小键盘输入初始时间(包括年月日时分秒星期),利用8254计数,通过程序处理进位,判断闰年,在液晶显示屏上实时显示时间。还可以由小键盘选择不同的闹钟模式,设定闹钟时间。 关键词: 电子时钟; 8255A芯片; 8254芯片; 12864LCD液晶显示器;键盘输入;蜂鸣器;闹钟功能;万年历

1.设计任务与要求...........................................................................6- 1.1实验目的 (6) 1.2具体要求 (6) 2.总体方案与说明...........................................................................6- 2.1使用硬件 (6) 2.1流程设计 (6) 2.1.1系统程序模块 (6) 2.1.1系统流程图 (7) 3.硬件方案 (7) 3.1硬件说明 (7) 3.1.1计数芯片8254 (7) 3.1.2可编程外围接口芯片8255A (8) 3.1.2 128×64字符液晶显示器 (11) 3.2电路原理图与说明 (12) 3.2.1键盘电路 (13) 3.2.2 8254计数电路 (13) 3.2.3 液晶显示电路 (14) 3.3电路连接图 (14) 3.3.1 8254计数芯片 (14) 3.3.2 整体电路 (15) 4.软件方案 (15) 4.1软件主要模块流程图 (15) 4.1.1输入子程序模块流程图 (16) 4.1.2显示子程序模块流程图 (18) 4.1.2闰年子程序模块流程图 (18) 4.1.2蜂鸣器子程序模块流程图 (18) 4.1.2时间进位程序模块流程图 (19) 4.1.2主程序模块流程图 (20) 4.2源程序清单与注释 (21) 5.分析与测试 (38) 6.运行结果 (38) 6.1试验线路图 (39) 6.2实验结果 (39) 6.2.1欢迎界面 (39)

数字电子课设:万年历的设计

编号 北京工商大学 数字电子技术基础 《万年历的设计》 姓名 学院 班级 学号 设计时间

一、设计目的 1、熟悉集成电路的引脚安排 2、掌握芯片的逻辑功能及使用方法 3、了解数字电子钟及万年历的组成及工作原理 4、熟悉数字电子钟及万年历的设计与制作 5、熟悉multisim电子电路设计及仿真软件的应用 二、设计思路 1、设计60进制秒计数器芯片 2、设计24进制时计数器芯片 3、设计31进制天计数器芯片 4、设计12机制月计数器芯片 5、设计7进制周计数器芯片 6、设计闰年平年不同月份不同进制逻辑 三、设计过程 1、Tr_min and s 60进制计数器芯片: “秒”、“分”电路都六十进制,它由一级十进制计数器和一级六进制计数器组成,六十进制计数器的设计图如下,采用四个片74ls161N串联而成,低位芯片的抚慰信号作为下级输入信号,串接起来构成“秒”、“分”计数器芯片。

2、Tr_hour24进制计数器芯片: 24进制计数器芯片的设计图如下,时计数电路由两片74ls161串联组成。当时个位计数为4,十位计数为2时,两片74ls160N复零,从而构成24进制计数。 3、Tr_day天计数器芯片: 采用两片74ls160N和一片74ls151N串联而成,天计数器的进制受到月计数器反馈M、N影响和年计数器反馈R4的影响,在M、N不收到反馈信息的时候,天计数器为28进制,电路设计图如下:

4、Tr_week周计数器芯片: 周计数器由一块74ls161N构成一个七进制计数器,原理与秒、分、时计数器相似,电路设计图如下 5、Tr_month月计数器芯片: 采用两片74160N和两片74HC151D_2V串联而成,月计数器的反馈信息M、N影响

多功能时钟(万年历)设计

多功能时钟(万年历) 设 计 报 告 专业电子信息科学与技术 班级13级电子专升本 姓名韩科峰 学号130522012 考勤成绩设计成绩 调试成绩报告成绩 总成绩

一、课题名称 多功能时钟(万年历)设计 二、内容摘要 美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 本设计是基于单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。 关键词: 三、设计指标(要求); 1、显示时间、日期由按键选择显示(日期时间可调整)。 2、可设置闹钟功能; 3、制作PC机设置界面软件,由PC机可完成对时钟的各项设置 四、系统框图;

STC12C5A08S2 单片机 DS1302时钟模块 五、各单元电路设计、参数计算和元器件选择 4位共阴极数码管 按键

六、工作原理 DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;DS1302的控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0,位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。 “CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”

基于单片机电子万年历的毕业设计说明

单片机课程设计报告 电子万年历设计 姓名:建强 学号: 专业班级: 08电气(2)班指导老师:吴永 所在学院:科技学院 2011年6月30日

摘要 随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。 具体实现功能: (1)显示年月日时分秒及星期信息 (2)具有可调整日期和时间功能 (3)与即时时间同步

目录 1方案论证 (3) 1.1单片机芯片的选择方案和论证 (3) 1.2显示模块选择方案和论证 (3) 1.3时钟芯片的选择方案和论证 (4) 1.4电路设计最终方案决定 (4) 2系统的硬件设计与实现 (5) 2.1电路设计框图 (5) 2.2系统硬件概述 (5) 2.3主要单元电路的设计 (5) 2.3.1单片机主控制模块的设计 (5) 2.3.2时钟电路模块的设计 (6) 2.3.3电路原理及说明 (7) 2.3.4显示模块的设计 (8) 3系统的软件设计 (9) 3.1程序流程框图 (9) 4测试与结果分析 (11) 4.1硬件测试 (10) 4.2软件测试 (10) 4.3测试结果分析与结论 (10) 4.3.1 测试结果分析 (10) 4.3.2 测试结论 (10) 5prodeus软件仿真........................................ ..........错误!未定义书签。 5.1Proteus ISIS简介 (12) 5.2Proteus运行流程 (13) 5.3Proteus功能仿真 (13) 6课程设计总结与体会.......................................... .....错误!未定义书签。 参考文献...........................................................错误!未定义书签。 附录一:系统电路图.................................................错误!未定义书签。 附录二:系统程序...................................................错误!未定义书签。

单片机课程设计-万年历、数字时钟

单片机课程设计-万年历、数字时钟 采用MAX7221可以极大的节省I/O口线,同时DS1302时钟芯片可以提供精确的时间信息 汇编语言程序编写 DSRST BIT P1.0 DSCLK BIT P1.1 DSIO BIT P2.2 DIN BIT P2.5 CS BIT P2.6 CLK BIT P2.7 D158 EQU 30H D70 EQU 31H ADDRESS EQU 32h CONTENT EQU 33h COMMAND EQU 34h SECOND equ 35h MINITE equ 36h HOUR equ 37h ORG 0000H LJMP MAIN ORG 0030H MAIN: LCALL INTI7221 LCALL INTI1302

LOOP: LCALL READ1302 LCALL CONVERT LCALL DELAY LCALL DISPLAY LCALL DELAY SJMP LOOP ;DS1302初始化 INTI1302:MOV ADDRESS, #8EH MOV CONTENT, #00H LCALL SENT_BYTE MOV ADDRESS, #90H MOV CONTENT, #0A7H ;慢充电寄存器LCALL SENT_BYTE READ1302: MOV ADDRESS, #81h LCALL REV_BYTE MOV SECOND, A MOV ADDRESS, #83h LCALL REV_BYTE MOV MINITE, A MOV ADDRESS, #85h LCALL REV_BYTE MOV HOUR, A RET SENT_BYTE: CLR DSRST CLR C NOP CLR DSCLK NOP SETB DSRST MOV A, ADDRESS MOV R3, #2 MOV R2, #8 LOOP0: RRC A MOV DSIO, C SETB DSCLK NOP CLR DSCLK DJNZ R2, LOOP0 MOV A, CONTENT MOV R2, #8 DJNZ R3, LOOP0 CLR DSRST RET

电子万年历设计

课程论文论文题目基于单片机的电子万年历设计 课程名称单片机原理及接口技术 专业年级 2014级自动化3班 学生姓名孙宏远贾腾飞 学号 2016年12 月3 日

摘要: 本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的数字显示,可以在LED上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。。 关键词:AT89C51单片机,DS1602时钟芯片,LCD1602显示屏。串口通信。 一:引言 本设计的基于单片机控制的电子万年历,具有年、月、日、星期、时、分、秒的显示等功能,实现过程就是由主控制发送信息给DS1302时钟芯片再由时钟芯片反馈给单片机,再由主控制器传送给LCD1602显示屏显示信息。并且可以在键盘设置模块输入修改时间,当键盘设置时间、日期时,单片机主控制根据输入信息,通过串口通信传送给DS1302时钟芯片,DS1302芯片读取当前新信息产生反馈传送给单片机,然后单片机根据控制最后输送显示信息到LCD1602液晶显示屏模块上显示。 二:硬件设计: 2.0.硬件的设计总框图 2.1 DS1032时钟电路 DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。芯片如图。 DS1302的内部主要由移位寄存器、指令和控制逻辑、振荡分频电路、实时时钟以及RAM组成。每次操作时,必须首先把CE置为高电平。再把提供地址和命令信息的8位装入移位寄存器。数据在SCLK的上升沿串行输入。无论是读周期还是写周期发生,也无论传送方式是单字节还是多字节,开始8位将指定内部何处被进行访问。在开始 8个时钟周期把含有地址信息的命令字装入移位寄存器之后。紧随其后的时钟在读操作时输出数据。 2.2 LCD1602与AT89C52的引脚接线 LCD1602采用总线式与单片机相连,AT89c52的P1口直接与液晶模块的数据总线D0~D7相连;P2 口的0,1,2脚分别与液晶模块的RS、RW、E脚相连。滑动变阻器用于调整液晶显示的亮度。电路如图

数字万年历毕业设计

数字万年历毕业设计 目录 第一章数字万年历需求分析 (1) §1-1万年历的概念 (1) §1-2需求分析 (1) 第二章系统的硬件设计与实现 (2) §2-1系统电路示意图 (2) §2-2驱动电路 (2) §2-3时钟控制电路 (3) §2-4所需主要器件 (4) §2-5系统硬件概述 (4) 第三章系统的软件设计 (17) §3-1程序流程框图 (17) §3-2程序设计 (19) 第四章安装与调试 (25) §4-1安装 (25) §4-2调试 (25) §4-3软、硬件测试 (26) 4-3-1硬件测试 (26) 4-3-2软件测试 (26) §4-4测试结果分析与结论 (27) 4-4-1测试结果分析 (27) 4-4-2测试结论 (27) 第五章总结 (27) 致谢 (28) 参考文献 (29)

第一章数字万年历需求分析 §1-1万年历的概念 万年历我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年功绩,便将这部历法命名为“万年历”。而现在所使用的万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。万年历只是一种象征,表示时间跨度大。 §1-2需求分析 在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能——计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,没有更大程度上的满足人们的需求。因此在这里,我想能不能把一些辅助功能加入钟表中去。在此设计中所设计的钟表不但具有普通钟表的功能,它还能实现额外的功能:世界时间、农历显示。 改革开放30年来,中国电子万年历市场从无到有,从小到大、从总量快速扩张到结构明显升级,逐步形成了有中国特色的多样化、多层次的消费市场。电子万年历市场规模比改革初期扩大了几倍乃至几十倍,其发展成就令世人瞩目。 同时随着数字技术网络技术飞速发展,今天数字万年历也得到了迅猛的发展。万年历早超越了单纯的钟表只显视时间的结构,它已经了发展成为一套完整的系统。它在日常生活发挥着巨大的作用人们对它需求也越来越高。 本系统采用了以广泛使用的单片机技术为核心,软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LED显示电路、键盘电路,使人机交互简便易行,此外结合音乐闹铃电路、看门狗和供电电路。本方案设计出的万年历可以显示日期时间、世界时、农历,设置闹铃功能。

万年历时钟电路设计报告word精品

阿坝师范学院 万年历设计报告姓名:李朝林 学号:20156045 班级:电子信息工程02班

阿坝师范学院物理与电子科学系 目录 1?设计任务与要求 (2) 2?主要器件讨论与选择 (2) 3.设计原理 (3) 4?单元电路设计 (3) 4.1显示电路 (3) 4.2时分秒设计............................................. .4 4.3星期天数设计 (5) 4.4闰年平年判断电路 (6) 4.5二月与大小月判断电路 (9) 4.6天数置数信号 (10) 4.7校正电路 (11) 4.8秒脉冲电路 (11) 5.完整的电路设计原理图 (12) 6.电路调试过程与方法 (13) 7.实验心得体会与总结 (13) 1. 设计任务与要求 用数字集成电路设计万年历电子钟逻辑电路 指标如下: 1)设计一个能直接显示“年”“月”“日”、“星期”、“时”、 “分”、“秒”的十进制万年历时钟显示器。 2)具有校时的功能,可分别对“年”、“月”、“日”、“星期”、 “时” “分” “秒”进行单独校时。 2. 主要器件讨论与选择 主要器件中显示模块选用74SEG_BCD数码管显示8421bcd码,计数模块统一选用74LS160作为计数芯片;74LS160具有同步置数异步清零功能,同时在有时钟脉冲的情况下进行加计数,无论采用同步置数还是异步清零都可以实现60s、60m、24h置数清零功能。因此

[在此处键入] 数字电子技术万年历设计报告 74LS160是一个不错的选择。本次仿真通过 74LS160作为时分秒年月 日星期置数,通过秒计数的置数信号作为分计时的脉冲 cp ,取反作 为分计时的使能端,依次向高位进位达到显示目的。 通过闰年、平年、大月、小月、二月的判断电路来控制天计数的 多少。 校时电路,校时选用74LS74触发器作为跳变信号;74LS244存储 信号。起作用的只有一个,当校时有效时计时电路无效。 3. 设计原理 原理图如下: 万年加时种星示器框采禺P 4. 单元电路设计 4.1显示电路 振荡器 呈期廿数 楼时电路? 译码显示电路疋* 千 百 十个

万年历C++课程设计报告

徐州师范大学科文学院本科生课程设计 课程名称:计算机程序设计实训 题目:万年历的设计 专业班级:电子信息工程08电信 学生姓名: 学生学号: 日期:2010/12/20 指导教师:姜芳艽 科文学院教务部印制

指导教师签字: 年月日

目录 摘要...................................................错误!未定义书签。 Abstract ...................错误!未定义书签。 1 绪论...................................................错误!未定义书签。 课题的设计......................................................................... 错误!未定义书签。 课题的背景……………………………………………………………………….错误!未定义书签。 课题的目的………………………………………………………………………..错误!未定义书签。 课题的意义………………………………………………………………………..错误!未定义书签。 2 设计方案简述 ..................................................... 错误!未定义书签。 设计总体规划..................................................................... 错误!未定义书签。 实现的功能………………………………………………………………………..错误!未定义书签。 结构模块分析……………………………………………………………………...错误!未定义书签。 3 详细设计 ............................................................. 错误!未定义书签。 设计思路............................................................................. 错误!未定义书签。 设计语言…………………………………………………………………………..错误!未定义书签。 设计程序流程图…………………………………………………………………..错误!未定义书签。 模块详细设计....................................................................... 错误!未定义书签。 大月和小月的定义………………………………………………………………..错误!未定义书签。 闰年与非闰年二月的定义………………………………………………………..错误!未定义书签。 日历表的输出……………………………………………………………………..错误!未定义书签。 4 设计结果及分析.................................................. 错误!未定义书签。 软件测试............................................................................... 错误!未定义书签。 设计成果............................................................................... 错误!未定义书签。 5 总结..................................................错误!未定义书签。 参考文献 ................................................................. 错误!未定义书签。

单片机电子万年历课程设计报告书

单片机课程设计 姓名:吕长明 学号:04040804021 专业班级:机电四班

一、单片机原理及应用简介 随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术 的最新发展之一是将CPU和外围芯片,如程序存储器、数据存储器、并行、串行I/O口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机(Single-Chip Microcomputer)。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA、浮点运算单元等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工 业控制系统、数据采集系统、自动测试系统、万年历电子表等。 二、系统硬件设计 8052 是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图图1: 图1 8052引脚 P0.0~P0.7 P0口8位双向口线(在引脚的39~32号端子)。 P1.0~P1.7 P1口8位双向口线(在引脚的1~8号端子)。 P2.0~P2.7 P2口8位双向口线(在引脚的21~28号端子)。 P3.0~P3.7 P2口8位双向口线(在引脚的10~17号端子)。 8052芯片管脚说明: VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用

于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如表1所示: 表1 特殊功能口 P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

用DS1302与LCD1602可调数字万年历课程设计

数字开发与实践 课 程 设 计 题目:用DS1302与LCD1602 设计可调式电子日历时钟 班级: 姓名: 学号: 学院: 二O一二年六月五日

用DS1302与LCD1602设计 的可调式电子日历时钟 一、总体设计 1.1、设计目的 为巩固所学的单片机知识,把所学理论运用到实践中,用LCD1602与DS1302 设计可调式电子日历时钟。 1.2、设计要求 (1)显示:年、月、日、时、分、秒和星期; (2)设置年、月、日、时、分、秒和星期的初始状态; (3)能够用4个按键调整日历时钟的年、月、日、时、分、秒和星期; 完成可调式电子日历时钟的硬件和软件的设计,包括单片机的相关内 容;日历时钟模块的设计,液晶显示模块的设计,按键模块的设计。 控制程序的编写等。 备注:本程序另外添加了每到上午8:10和下午2:10的闹钟提醒功能。 1.3、系统基本方案选择和论证 1.3.1、单片机芯片的选择方案 方案一: 采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容。 方案二: 采用STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全

兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。但造价较高。 1.3.2 、显示模块选择方案和论证: 方案一: 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用显示数字显得太浪费,且价格也相对较高。所以不用此种作为显示。 方案二: 采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字所需要的个数偏多,功耗较大,显示出来的只是拼音,而不是汉字。所以也不用此种作为显示。 方案三: 采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字符,且视觉效果较好,外形美观。LCD1602可实现显示2行十六个字符。 1.3.3、时钟芯片的选择方案和论证: 方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。 方案二: 采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、星期、月、年以及闰年补偿的年进行计数,而且精度高,31*8位的RAM做为数据暂存区,工作电压范围为2.5V~5.5V,2.5V时耗电小于300nA。 1.3.4、电路设计最终方案决定 综上各方案所述,对此次作品的方案选定:采用80C51作为主控制系统;DS1302提供时钟;LCD1602液晶带汉字库显示屏作为显示部分。

基于单片机的电子时钟万年历设计

一、项目介绍与设计目的 基于单片机的电子时钟万年历为实现电子万年历的功能,采用单片机STC89C51,辅助以必要的外围电路,用C语言编写程序,并进行模块化设计而成的电子万年历系统.它通过LCD能正确显示年、月、日、周日、时、分、秒等,具有功能稳定,精确度高和可调的特点。 二、设计方案 1.项目环境要求 1.1时钟芯片选择 方案一:不使用芯片,采用单片机的定时计数器 这种方法原理是利用单片机芯片的定时器来产生固定的时间,模拟时钟的时, 分,秒。如:利用AT80C52芯片,定时器用工作方式1,每50ms产生一个中断,循环20次,即1s周期。每一个周期加1,那么1min为60个周期,1h就是60*60=3600个周期,一天就是3600*24=86400个周期。 此方法优点是可以省去一些外围的芯片,但这种方法只能适用于一些要求不是十分精确,不做长期保留的场合。 方案二:并行接口时钟芯片 DS12887 特点:采用单片机应用系统并行总线(三总线)扩展的接口电路,采用这种接口电路具有操作速度快,编程方便的优点。 但是对于80C52单片机来说,低位地址线要通过锁存器输出,还要地址译码器,而且并行口芯片的体积相对较大。 方案三:串行接口时钟芯片DS1302 芯片主特性: (1)实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力,还有闰年调整的能力

(2)31 8 位暂存数据存储RAM (3)串行 I/O 口方式使得管脚数量最少 (4)宽范围工作电压2.0 5.5V (5)工作电流 2.0V 时,小于300nA (6)读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式 (7)8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配 (8)简单 3 线接口 (9)与 TTL 兼容Vcc=5V (10)可选工业级温度范围-40~+85 优点:串行接口的日历时钟芯片,使用简单,接口容易,与微型计算机连线较少等特点,在单片机系统尤其是手持式信息设备中己得到了广泛的应用。 所以,最终选择串行时钟芯片DS1302,DS1302的管脚图如图2所示。 图2 DS1302管脚图 1.2显示模块选择 方案一:LED数码管显示 数码管显示比较常用的是采用CD4511和74LS138实现数码转换,数码显示分动态显示和静态显示,静态显示具有锁存功能,可以使数据显示得很清楚,但浪费了一些资源。目前单片机数码管普通采用动态显示。编程简单,但只能显示

基于单片机的多功能电子万年历设计开题报告

毕业设计开题报告 1.结合毕业设计课题情况,根据所查阅的文献资料,撰写2000字左右的文献综述: 文献综述 一、本课题研究背景 单片机从20世纪70年代末出现后,以其卓越的性能,得到了广泛的应用,已经深入到各个领域。单片机芯片本身是按工业测控环境要求设计的,分为民用、工业品、军品,其中工业品和军品具有较强的适合恶劣环境的能力[1]。由于单片机本身就是一个计算机系统,因此,只要在单片机的外围适当加一些必要的扩展电路及通道接口,就可有构成各种应用系统,如控制系统、数据采集系统、自动控制系统、自动测试系统、检测监视系统、智能仪表、功能模块等[2]。单片机的应用领域十分广泛,自20世纪80年代以来,单片机的应用已经深入到工业、农业、国防、科研、机关、教育、商业以及家电、生活、娱乐、玩具等各个领域中。单片机应该在检测、控制领域中,具有以下特点:1)小巧灵活、成本化、易于产品化。2)可靠性好,适用范围广[3]。 近年来,电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。随着技术的发展,人们已不再满足于钟表原先简单的计时功能,希望出现一些新的功能,诸如日历的显示、闹钟的应用等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究实用电子时钟及其扩展应用,有着非常现实的意义,具有很大的实用价值[4]。 由于数字集成电路技术的发展和采用了先进的石英技术,现代电子钟具有走时准确、性能稳定、制作维修简单等优点,弥补了传统钟表的许多不足之处[5]。我们利用单片机技术设计制作的电子万年历, 可以很方便的由软件编程进行功能的调整和改进,使其在能够准确显示年、月、日、时间、星期的同时,还能具有很多其他的功能[6]。如设定闹钟、语音报时、阴阳历的转换、二十四节气的显示等,有一定的新颖性和实用性,同时体积小、携带方便,使用也更为方便,具有技术更新周期短、成本低、开放灵活等优点,具备一定的市场前景。这里要介绍的就是一款可满足使用者特殊要求,输出方式灵活、计时准确、性能稳定、维护方便的实用电子万年历[7]。

数字万年历设计

江西理工大学应用科学学院 微机控制系统课程设计报告 题目:数字万年历设计 姓名:曹振林 学号:08060111328 专业班级:电气113班 指导教师: 完成时间:2014年06月27日 设计报告综合测试平时总评 格式(10分) 内容 (10分) 图表 (5分) 功能测试 (35分) 答辩 (20分) 考勤 (20分)指导教师签名:

摘要 在电子技术迅速发展的今天,尤其是随大规模集成电路出现,给人类生活带来了根本性的改变。特别是单片机领域中的应用产品已经走进了大部分人的家庭。电子万年历的出现给人们的生活带来的诸多方便。本设计首先描述系统总体模块工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技术为核心。本系统以单片机的进行软件设计,增加了程序的可读性和可移植性,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。 单片机具有体积小,成本低,抗干扰能力强,面向控制,可以实现分机各分布式控制等优点。本文研究的万年历系统就是利用单片机上述的优点,采用目前市场性价比比较高的STC89C52单片机控制、以DS1302时钟芯片计时、以LCD1602液晶屏显示,系统主要有单片机控制电路,时钟电路,显示电路及校正电路四个模块组成。本文阐述了系统的硬件工作原理,所应用的各个接口模块的功能以及工作过程。系统程序采用C语言编写,用protel 2000画出电路图,经keil软件进行调试后在仿真软件中进行仿真测试,可以显示年、月、日、星期、时、分、秒,并具有校准功能和与即时时间同步的功能。 此万年历具有读取方便、显示直观、功能多样、电路设计新颖、功能强大、结构简单等优点,符合电子仪器仪表的发展趋势,具有广阔的市场应用前景。 关键词:电子万年历 51系列单片机时钟芯片FLASH存储器液晶显示

相关主题
文本预览
相关文档 最新文档