基于DS12C887时钟芯片的多功能万年历设计模板
DS12C887与单片机制作万年历带汇编程序
;**************************************;DS12C887:1脚MOT 接VCC(按MOTO时序); 4~11脚总线接89C2051(对应P1.0~P1.7脚); 13脚CS 接P3.2; 14脚AS 接P3.3; 15脚RW 接P3.5; 17脚DS 接P3.7; 18脚RESET 接VCC; 19~23脚悬空;74HC595:11脚SRCLK 时钟接P3.4; 12脚RCLK 副时钟与SRCLK 电平相反接P3.0; 13脚允许端高电平禁止,但数据可传入并锁存,可等所有位写入数据后允许输出,可改善显示; 14脚SER 数据接P3.1;74HC14P:六反相器,用于单片机P口输出缓冲,提高抗干扰能力;**************************************org 0000hacall delay1T_SEC EQU 40H ;存秒T_MIN EQU 41H ;存分T_HOUR EQU 42H ;存时T_WEEK EQU 43H ;存星期T_DAY EQU 44H ;存日T_MON EQU 45H ;存月T_YEAR EQU 46H ;存年CS EQU p3.2 ;片选低有效AS EQU p3.3 ;地址锁存,下降沿有效RW EQU p3.5 ;低电平写,高电平读DSRD EQU p3.7 ;低电平写,高电平读KEY EQU p3.4mov p1,#0ffhmov p3,#0ffhmov r0,#3Dh ;位值暂存(31~3Dh)mov r3,#8 ;字节传输(8段)mov r4,#13 ;LED 位数传输(13位)MIAO:star: ;初始化芯片MOV B,#0BH ;芯片内B控制器SET位为1,停止芯片MOV A,#82HACALL WADMOV B,#0AH ;芯片内A控制器MOV A,#0A0HACALL WADMOV B,#0CHMOV A,#00HACALL WADMOV B,#0DHACALL RDT;===============================MOV B,#00H ;秒MOV A,#30HACALL WADMOV B,#02H ;分MOV A,#51HACALL WADMOV B,#04H ;时MOV A,#20HACALL WADMOV B,#06H ;周MOV A,#02H ;置时间初值ACALL WADMOV B,#07H ;日MOV A,#11HACALL WADMOV B,#08H ;月MOV A,#11HACALL WADMOV B,#09H ;年MOV A,#08HACALL WAD;================================MOV B,#0AHMOV A,#020HACALL WADMOV B,#0BH ;启动芯片MOV A,#02HACALL WAD;=====================MOV B,#0AH ;A控制器ACALL RDT ;该段有效时芯片不能更新时间初值JB ACC.7,MIAO ;但可以手动复位单片机进行更新;=====================MOV B,#00H ;读秒寄存器ACALL RDTMOV 78H,ALCALL DELAY1 ;解决闪烁问题,但每秒出现闪烁MOV B,#00H ;读秒寄存器ACALL RDTCJNE A,78H,XAJMP MIAO;===================== X: MOV 60H,AANL 60H,#0FHSWAP AANL A,#0FHMOV 3DH,60HMOV 3CH,AFEN:MOV B,#02H ;读分寄存器ACALL RDTMOV 60H,AANL 60H,#0FHSWAP AANL A,#0FHMOV 3BH,60HMOV 3AH,ASHI:MOV B,#04H ;读时寄存器ACALL RDTMOV 60H,AANL 60H,#0FHSWAP AANL A,#0FHMOV 39H,60HMOV 38H,AZHOU:MOV B,#06H ;读周寄存器ACALL RDTMOV 60H,AANL 60H,#0FHMOV 37H,60HRII:MOV B,#07H ;读日寄存器ACALL RDTMOV 60H,AANL 60H,#0FHSWAP AANL A,#0FHMOV 36H,60HMOV 35H,AYUE:MOV B,#08H ;读月寄存器ACALL RDTMOV 60H,AANL 60H,#0FHSWAP AANL A,#0FHMOV 34H,60HMOV 33H,ANIAN:MOV B,#09H ;读年寄存器ACALL RDTMOV 60H,AANL 60H,#0FHSWAP AANL A,#0FHMOV 32H,60HMOV 31H,AACALL DISPACALL DELAY1AJMP MIAOWAD: ;时钟芯片写地址MOV P3,#0FFHMOV P1,B ;送地址CLR CS ;片选有效低电平CLR RW ;低电平为写前半期CLR DSRDACALL DELAYCLR AS ;下降沿锁存地址BSETB DSRDACALL DELAY ;延时大于5uSMOV P1,A ;送数据CLR DSRDNOPCLR CSRETRDT: ;从芯片读数据MOV P3,#0FFHMOV P1,B ;送地址CLR CS ;片选有效低电平CLR RW ;低电平为写前半期CLR DSRDACALL DELAYCLR AS ;下降沿锁存地址BMOV P1,#0FFHSETB RWSETB DSRDNOPMOV A,P1NOPCLR CSRETdisp: m ov a,@r0mov dptr,#tabmovc a,@a+dptrdisp1: clr crlc amov p3.1,c ;数据,高低电平值clr p3.0setb p3.4CLR P3.4 ;时钟,下降沿有效setb p3.0djnz r3,disp1dec r0mov r3,#8djnz r4,dispmov p3,#0ffhMOV R0,#3DHMOV R4,#13retdelay: mov r5,#1loop: mov r6,#3djnz r6,$djnz r5,loopretdelay1: mov r5,#200loop1: mov r6,#200LOOP2: MOV R7,#1DJNZ R7,$djnz r6,LOOP2djnz r5,loop1rettab: db 3h,9fh,25h,0dh,99h,49h,41h,1fh,1h,9h end。
基于DS12C887时钟芯片的多功能万年历设计概要
一、系统的结构和工作原理 1.系统结构此次课程设计的万年历,以AT89S52单片机为主控核心,由LCD 显示屏、DS12C887时钟芯片、温度传感器DS18B20、蜂鸣器、功能键盘、复位电路、晶振、电源模块等组成,系统结构框图如图1所示。
AT89S52单片机温度传感器DS18B20DS12C887时钟芯片LCD 显示屏(1602)蜂鸣器复位电路功能键盘电源模块图1 系统结构框图2.工作原理主控制器每隔一段时间(小于一秒钟)读一次时钟芯片的内部寄存器的值,将读出的时间、星期、温度等值实时显示在LCD 液晶屏上。
同时,主控制器不断的扫描按键电路和温度测量电路,当有按键按下时,识别出按键的值并调整相应的时间、星期值再写入时钟芯片内部。
温度数据由测量电路获得的环境温度值送人显示电路。
二、硬件设计1.主控核心—AT89S52单片机AT89S52是一个低功耗,高性能CMOS8位单片机,具有8K 在系统可编程Flash 存储器。
采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。
2.DS12C887时钟电路DS12C887与计算机常用的时钟芯片MC146818和DS12887管脚兼容,可直接替换。
采用DS12C887芯片设计的时钟电路无需任何外围电路和器件,并且有良好的微机接口。
DS12C887芯片内有微功耗,外围接口简单,精度高,工作稳定可靠等优点,广泛用于各种需要较高精度的实时时钟系统中。
DS12C887主要功能如下:(1)内含一个锂电池,断电后运行十年以上不丢失数据; (2)计秒、分、时、天、星期、日、月、年、并有闰年补偿功能;(3)二进制数码或BCD 码表示时间,日历和定闹;(4)12小时或24小时制,12小时时钟模式带有PM 和AM 指示,有夏令时功能; (5)Motorola 和Intel 总线时序选择;(6)有128个字节RAM 单元与软件接口,其中14个字节作为时钟和控制寄存器,114 字节为通用RAM ,所有RAM 单元数据都具有掉电保护功能; (7)可编程方波信号输出;(8)中断信号输出(IRQ )和总线兼容、定闹中断、周期性中断、时钟更新周期、结束 中断可分别由软件屏蔽,也可分别进行测试; DS12C887时钟芯片和单片机的硬件连接如下图2 :EA/VPP 31XTAL119XTAL218RESET 9P3.7/RD 17P3.6/WR 16P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN 29ALE/PROG 30P3.1/TXD 11P3.0/RXD 10VCC 40GND 20U1AT89S52VCC+C1210u FR910KS17Y112MHzC930p FC1030p FP00P01P02P03P04P05P06P07VCCP20P21P22P23P24P25P27P26P10P11P12P04P13P14P15P16P00P17P01P32P02P30P03P31P05P33P06P34P07P35P20P35WR P37P32P34242322212019181716151413121110987654321DS12C887CSASR/WNCDSRESETIRQNCNCNCSQWVCCGND AD7AD6AD5AD4AD3AD2AD1AD0NC MOT NC 123456789RP1RESPACKVCCU3P36P37图2 DS12C887与单片机的连接3.DS18B20温度传感器采用数字式温度传感器DS18B20,其仅需一条数据线进行数据传输,易于与单片机连接,可以去除A/D 模块,降低硬件成本,简化系统电路。
新型时钟日历芯片DS12C887的应用设计
收 稿 日期 :0 0 0 — 2 2 1- 7 0
W Wed.n 2 1.2 电 子 元 嚣 件 焘 硐 2 W . ac 0 01 c 1
第 1卷 2
第 l 期 2
电 手 元 器 件 主 用
Elcr ni mp ne t& De ie App iai n e to cCo o n vc lc to s
杨 伟 强 张振 东 ,张 朋 ’ , ,刘 炳翔
(. 海理 工 大学 汽车 工程研 究所 ,上 海 2 0 9 ; 1上 0 0 3
2 上 海 由 乐电子 有 限公 司 ,上海 2 10 ) . 0 19
摘 要 : 介 绍 了 时 钟 日 历 芯 片 D 1 C 8 S 2 8 7的 主 要 功 能 、特 点 和 内部 地 址 分 布 . 给 出 了
◇ 可 用 二 进 制 或 B D码 表 示 日历 和 闹 钟 信 C 息:
MO 引 脚接 地 ,以选 用MO O O A 线 时序 。本 T TR L总
设 计 把 D 1 C 8 的 R M作 为 C 0 1 0 0 t 存 储 S2 87 A 85 F 2 # 部 ,
器 进 行 读 写 , 因而 程 序 简单 ,指 令 执 行 时 间 短 。
◇ 可 编程 方波 输 出 :
◇ 总线 兼 容 中断 f Q ; I ) R
◇ 具有 三 种可 编程 中断 。 D 1 C 8 实 时 时 钟 日历 芯 片 的地 址 分 布 如 S 2 87
图 1 示 , 芯 片 内 部 的 所 有 地 址 都 包 括 1 3 节 的 所 1字
芯 片 ,该 芯 片功 能 多 、可 靠性 高 ,使 用 简单 。通 过D 1 C 8 的 寄存 器 读 写 ,可 以很 容 易 的 获 取 S287 时间 信息 。因此 ,此 芯 片 在各 种设 备 、家 电 、仪
基于12C887的万年历带跑秒功能
#include <reg52.h> //导入头文件#define uchar unsigned char //宏定义#define uint unsigned int //宏定义uchar code xingqi[]=" MONTUEWEDTHUFRISATSUN" ; //星期数sbit dsCS=P2^6; //定义DS12C887 CSsbit dsAS=P2^5; //定义DS12C887 ASsbit dsRW=P3^6; //定义DS12C887 RWsbit dsDS=P3^7; //定义DS12C887 DSsbit dsIRQ=P3^3; //定义DS12C887 IRQsbit LCDEN=P2^2; //定义LCD ENsbit LCDRW=P2^1; //定义LCD RWsbit LCDRS=P2^0; //定义LCD RSsbit s1=P2^3; //定义+调整sbit s2=P2^4; //定义功能键sbit s3=P3^1; //定义跑秒计时键sbit beep=P3^5; //定义蜂鸣器uchar num,num1,num2,num3,num4,alarm, shi,fen,miao,nian,yue,ri,week,shiji; //定义变量void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void di(){ //蜂鸣器beep=0;delay(100);beep=1;}void write_com(uchar com) //LCD写命令函数{LCDRS=0;P0=com;delay(5);LCDEN=1;delay(5);LCDEN=0;}void write_data(uchar date) //LCD写数据函数{LCDRS=1;P0=date;delay(5);LCDEN=1;delay(5);LCDEN=0;}void write_ds(uchar add ,uchar date) //DS写函数{dsCS=0;dsAS=1;dsDS=1;dsRW=1;P0=0xff;P0=add;dsAS=0;dsRW=0;P0=0xff;P0=date;dsRW=1;dsAS=1;dsCS=1;}uchar read_ds(uchar add) //DS读函数{uchar ds_date;dsAS=1;dsDS=1;dsRW=1;dsCS=0;P0=0xff;P0=add;dsAS=0;dsDS=0;P0=0xff;delay(5);ds_date=P0;dsDS=1;dsAS=1;dsCS=1;return ds_date;}void init() //初始化液晶显示方式{LCDEN=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_ds(0x0a,0x20); //打开DS振荡器,打开计时链write_ds(0x0b,0x26); // DS 24小时模式,数据二进制格式,开启闹铃中断}void keyscan() //按键扫描{write_com(0x0c);if(s2==0){delay(1000);if(s2==0){while(!s2) //调时提示{write_com(0x80+0x40+3);write_data('s');write_com(0x80+0x40+4);write_data('e');write_com(0x80+0x40+5);write_dat a('t');write_com(0x80+0x40+6); write_data('');write_com(0x80+0x40+7);write_data('t');write_com(0x80+0x40+8);write_data('i');write_com(0x80+0x40+9);write_data('m');write_com(0x80+0x40+10);write_data('e');}num++;if(num==10){num=0;}}}if(num>0){switch(num){case 1:write_com(0x80+0x40+6);write_com(0x0f);delay(200) ; //需调试if(s1==0){// delay(1);if(s1==0){// while(!s1)fen=read_ds(2);fen++;if(fen>59)fen=0;write_ds(2,fen);}}break;case 2:write_com(0x80+0x40+3);write_com(0x0f);delay(200) ; //需调试if(s1==0){// delay(1);if(s1==0){// while(!s1)shi=read_ds(4);shi++;if(shi>23)shi=0;write_ds(4,shi);}}break;case 3:write_com(0x80+12);write_com(0x0f);delay(200) ; //需调试if(s1==0){delay(1);if(s1==0){// while(!s1)week=read_ds(6);week++;if(week>7)week=1;write_ds(6,week);}}break;case 4:write_com(0x80+8);write_com(0x0f);delay(200) ; //需调试if(s1==0){delay(1);if(s1==0){// while(!s1)ri=read_ds(7);ri++;if(ri>31)ri=1;write_ds(7,ri);}}break;case 5:write_com(0x80+5);write_com(0x0f);delay(200) ; //需调试if(s1==0){delay(1);if(s1==0){// while(!s1)yue=read_ds(8);yue++;if(yue>12)yue=1;write_ds(8,yue);}}break;case 6:write_com(0x80+2);write_com(0x0f);delay(200) ; //需调试if(s1==0){delay(1);if(s1==0){// while(!s1)nian=read_ds(9);nian++;if(nian>99)nian=0;write_ds(9,nian);}}break;case 7:write_com(0x80);write_com(0x0f);delay(200) ; //需调试if(s1==0){delay(1);if(s1==0){// while(!s1)shiji=read_ds(32);shiji++;if(shiji>23)shiji=19;write_ds(32,shiji);}}break;case 8: //调整闹铃while(s2){write_com(0x80+0x40+6);write_com(0x0f);delay(200) ; //需调试write_com(0x80+0x40+7); //显示闹铃分钟write_data(0x30+read_ds(3)%10);write_com(0x80+0x40+6);write_data(0x30+read_ds(3)/10);write_com(0x80+0x40+4); //显示闹铃小时write_data(0x30+read_ds(5)%10);write_com(0x80+0x40+3);write_data(0x30+read_ds(5)/10);write_com(0x80+0x40+5);write_data(':');write_com(0x80+0x40+8);write_data(' ');write_com(0x80+0x40+9);write_data('A');write_com(0x80+0x40+10);write_data('L');write_ds(1,0);if(s1==0){// delay(1);if(s1==0){// while(!s1)fen=read_ds(3);fen++;if(fen>59)fen=0;write_ds(3,fen);}}}break;case 9: //调整闹铃while(s2){write_com(0x80+0x40+3);write_com(0x0f);delay(200) ; //需调试write_com(0x80+0x40+7); //显示闹铃分钟write_data(0x30+read_ds(3)%10);write_com(0x80+0x40+6);write_data(0x30+read_ds(3)/10);write_com(0x80+0x40+4); //显示闹铃小时write_data(0x30+read_ds(5)%10);write_com(0x80+0x40+3);write_data(0x30+read_ds(5)/10);write_com(0x80+0x40+5);write_data(':');write_com(0x80+0x40+8);write_data(' ');write_com(0x80+0x40+9);write_data('A');write_com(0x80+0x40+10);write_data('L');if(s1==0){// delay(1);if(s1==0){// while(!s1)shi=read_ds(5);shi++;if(shi>23)shi=0;write_ds(5,shi);}}}break;}}}void main(){TMOD=0X11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;EX1=1; // 开启闹钟触发外部中断IT1=1; //设置负跳变沿触发中断/* write_ds(0,0); // 写入初始时间秒write_ds(1,0); // 写入初始闹铃时间秒write_ds(2,58); // 写入初始时间分write_ds(3,0); // 写入初始闹铃时间分write_ds(4,0); // 写入初始时间时write_ds(5,0); // 写入初始闹铃时间时write_ds(6,1); // 写入初始时间星期write_ds(7,27); // 写入初始时间日write_ds(8,02); // 写入初始时间月write_ds(9,12); // 写入初始时间年write_ds(32,20); // 写入初始时间世纪*/ LCDRW=0;init();while(1){keyscan() ;if(alarm==1) //闹钟{alarm=0;delay(1200);miao=read_ds(0);while(miao){di();delay(100);di();delay(500);miao=read_ds(0);if((s1==0)||(s2==0)||(s3==0)){miao=0;}}}if(s3==0){delay(100);if(s3==0){while(s2){if(s3==0){delay(5);while(s3){}TR0=~TR0;}if(s1==0){num1=0;num2=0;num3=0;num4=0;TR0=0;}if(num3>59){num3=0;num4++;}if(num4>23){num4=0;}write_com(0x80+0x40+13); //显示计时模式跑秒write_data(0x30+num1%10);write_com(0x80+0x40+12);write_data(0x30+num1/10);write_com(0x80+0x40+10); //显示计时模式秒write_data(0x30+num2%10);write_com(0x80+0x40+9);write_data(0x30+num2/10);write_com(0x80+0x40+7); //显示计时模式fenwrite_data(0x30+num3%10);write_com(0x80+0x40+6);write_data(0x30+num3/10);write_com(0x80+0x40+4); //显示计时模式shiwrite_data(0x30+num4%10);write_com(0x80+0x40+3);write_data(0x30+num4/10);}}}write_com(0x80+0x40+5); //写时间分隔符write_data(':');delay(5);write_com(0x80+0x40+8);write_data(':');delay(5);write_com(0x80+4);//写日期分隔符write_data('-');delay(5);write_com(0x80+7);write_data('-');delay(5);write_com(0x80+0x40+10); //显示秒钟write_data(0x30+read_ds(0)%10);write_com(0x80+0x40+9);write_data(0x30+read_ds(0)/10);write_com(0x80+0x40+7); //显示分钟write_data(0x30+read_ds(2)%10);write_com(0x80+0x40+6);write_data(0x30+read_ds(2)/10);write_com(0x80+0x40+4); //显示小时write_data(0x30+read_ds(4)%10);write_com(0x80+0x40+3);write_data(0x30+read_ds(4)/10);write_com(0x80+9); //显示daywrite_data(0x30+read_ds(7)%10);write_com(0x80+8);write_data(0x30+read_ds(7)/10);write_com(0x80+6); //显示monthwrite_data(0x30+read_ds(8)%10);write_com(0x80+5);write_data(0x30+read_ds(8)/10);write_com(0x80+12); //显示weekwrite_data(xingqi[read_ds(6)*3-2]);write_data(xingqi[read_ds(6)*3-1]);write_data(xingqi[read_ds(6)*3]);write_com(0x80+3); //显示yearwrite_data(0x30+read_ds(9)%10);write_com(0x80+2);write_data(0x30+read_ds(9)/10);write_com(0x80+1); //显示centurywrite_data(0x30+read_ds(32)%10);write_com(0x80);write_data(0x30+read_ds(32)/10);}}void T0_time() interrupt 1{TH0=(65536-9970)/256;TL0=(65536-9970)%256;num1++;if(num1==100){num1=0;num2++;}if(num2==60){num2=0;num3++;}}void int1()interrupt 2 //闹铃中断{uchar c;alarm=1;c=read_ds(0x0c);}。
基于DS12C887的高精度语音闹钟万年历
1 设计方案与论证随着电子技术的发展,计算机在现代科学技术的发展中起着重要的作用。
多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。
本课程设计是基单片机原理与接口技术的简单应用。
运用所学的单片机原理和接口技术知识完成数字电子表的设计。
电子表已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使电子表具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的电子表集成电路芯片出售,价格便宜、使用也方便,但鉴于电子表电路的基本组成包含了数字电路的主要组成部分,因此进行电子表的设计是必要的,用汇编设计电子表显示程序,要求根据输入程序显示电子表画面。
研究电子表及扩大其应用,有着非常现实的意义。
方案一:主控芯片用MSP430,时钟芯片用DS1302,显示器用12864,语音芯片用ISD4001。
方案二:主控芯片用STC89C52,时钟芯片用DS12C887,显示器用1602,语音芯片用1420。
STC89C52单片机,这款单片机成本低廉,操作方便,而且足以满足控制要求。
实时时钟芯片有12C887和DS1302可供选择,DS1302是串口操作,用外部晶振,功能比较单一,而且精确程度有外部晶振影响。
12C887有内置晶振元和锂电池,并口操作,功能很多。
综上,我们选择12C887作为实时时钟芯片。
语音芯片种类很多,考虑到只用于那种功能,我们选择了1420语音芯片,录音简单,时长20秒,很符合系统要求。
显示模块有1602,1332,12864,数码管等可供选用,因为是万年历,而且只显示数字或英文字母,最终我们选用了1602作为显示器。
综上,我们选择方案二。
最后完全可以实现四个按钮可以设置时间和闹钟时间、有录放音功能、每次上电都能显示当时的时间、用液晶显示器显示实时时间以及闹钟时间这些功能。
基于单片机的电子万年历的设计与制作
郑州航空工业管理学院毕业论文(设计)题目基于单片机的电子万年历的设计与制作二О一三年五月二十三日摘要单片机应用技术飞速发展,从导弹的导航装置到飞机上各种仪表的控制,从计算机的网络通讯与数据传输到工业自动化过程的实时控制和数据处理,以及生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
单片机是集CPU、RAM、ROM 、定时、计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,系统由主控制器STC89C52为控制中心,DS12C887产生时钟,DS18B20产生温度,12864液晶显示对日期、时间等进行显示,按键可以设置时间、闹钟等。
能实现时钟、日历、时间和温度显示的功能。
今后万年历将会朝着精准度更高,外观更加美丽,价格更加实惠的方向发展,并且将会出现更多的辅助功能。
关键词:单片机,农历查询,万年历,温度显示ABSTRACTAs the rapid development of Single-chip Microcomputer Application technology, from the navigation device of missile to the various instruments on the aircraft control and from computer communication network and data transmission to industrial real-time automation process control and data processing, as well as the extensive use of the smart card and electronic pets in live, All of this is inseparable from the microcontroller. SCM is set to CPU, RAM, ROM, timing, counting and multiple interfaces in one microcontroller. It has the advantages of small volume, low cost, strong function, widely used in smart industries, and industrial automation.This paper designed a electronic clock which can achieve calendar function based on microcontroller, the system consists of main controller STC89C52, clock circuit, display circuit, DS12C887circuit, and a reset circuit components,the main control system as the control center, DS12C887 generates a clock, DS18B20 generates temperature, a 12864 LCD display the date and time, the key can set the time, alarm clock, achieved the clock calendar and time display function.In the future, the calendar will be more accurate, look more beautiful; more affordable prices of the direction of development, and will appear more auxiliary function.Keywords: Monolithic single-chip,lunar calendar demand, perpetual calendars display temperature目录摘要 (I)ABSTRACT (II)第1章绪论 (1)1.1 课题的背景 (1)1.2 电子万年历的发展 (1)1.3 电子万年历设计 (1)第2章设计要求与方案论证 (3)2.1 设计要求 (3)2.2 方案论证 (3)2.2.1 控制部分方案设计 .......................................... .32.2.2 显示部分的设计 ........................................... ..42.2.3 单片机芯片的选择方案和论证 (4)2.2.4 时钟芯片的选择方案和论证 (4)2.2.5 温度传感器的选择方案和论证 (5)2.2.6 电源的选择方案 (5)第3章硬件设计 (6)3.1 电路的设计框图 (6)3.2 主要单元电路的设计 (6)3.2.1 单片机主控电路设计 (6)3.2.2 时钟振荡电路设计 (8)3.2.3 复位电路设计 (9)3.2.4 温度传感器电路设计 (9)3.2.5 时钟电路设计 (12)3.2.6 显示电路设计 (13)3.2.7 按键电路设计 (16)3.2.8 报警电路设计 (16)第4章软件设计 (17)4.1 程序流程图 (17)4.1.1 主程序流程 (17)4.1.2 时间调整程序流程图 (18)4.1.3 时钟芯片读写程序流程 (20)4.1.4 温度测量元件控制程序流程 (20)4.1.4 公历转换成农历的基本原理 (21)4.2 操作与调试 (22)4.2.1 软件调试 (22)4.2.2 万年历实物 (23)总结与展望 (26)致谢 (27)参考文献 (28)附录一:系统硬件原理图 (29)附录二:元器件清单 (30)附录三:设计程序 (31)第1章绪论1.1 课题的背景随着社会的发展和科技水平的提高,人类获得和计算时间的方法,历经观天阳、摆钟到现在电子钟,经过不断发展和创新,计时的精度越来越准确。
基于DS12CR887的多功能电子时钟设计
基于DS12CR887的多功能电子时钟设计作者:刘坤来源:《数字化用户》2013年第07期【摘要】本设计主要对51系列单片机控制的多功能实时时钟进行了研究,时钟芯片采用美国DALLAS公司生产的DS12CR887芯片,单片机采用STC89C52RC芯片,液晶屏用YM1602C型LCD。
实现了声控背光,液晶显示,时间显示,时间设置,闹钟提醒,闹钟设置等功能。
【关键词】实时时钟DS12CR887 单片机STC89C52RC 液晶屏YM1602C在日常生活中和自动控制系统中,经常遇到对时间实时监控的需求,这就给具有多种功能的时钟提供了市场。
这里给出了时钟芯片DS12CR887及液晶显示屏YM1602C与单片机的连接电路,声控背光电路,软件流程等供大家参考。
一、设计思路本设计为模块化设计,总体上可分为三个模块:(一)电源模块:系统输入12V±3V直流电压,经三端集成稳压器7805整成标准5V直流电,去耦后可为单片机及其他芯片供电。
(二)声控背光:传感器采用电容式麦克风,经两级三极管放大电路对声音信号进行放大,再经缓冲器增加其驱动能力,最后和单片机的一个控制引脚与非后接到LCD背光正极。
(三)主体电路:由单片机,实时时钟芯片,液晶屏和键盘组成。
单片机,时钟,液晶屏都挂在数据总线上进行数据交换,时钟和液晶屏通过少数地址总线和控制总线和单片机相连,以便控制。
二、电路硬件设计电路硬件接线图如图1所示:单片机P0口作为数据口连接在数据总线上[1],数据总线上还挂有液晶屏和时钟芯片,P2口中的一部分做了控制引脚,P2.4接液晶屏的使能端,P2.2接液晶屏的读写选择端,P2.0接液晶屏的命令数据选择端,P2.1经非门接时钟芯片的使能端,单片机的读写分别接时钟芯片的读写引脚,P1口的低四位和外部中断1引脚做了独立键盘输入,外部中断0接了时钟芯片的中断输出引脚,电容式麦克风经两级三极管放大电路放大[2]和P1.4引脚共同控制液晶屏背光,时钟芯片的方波输出端接蜂鸣器作为闹钟动作装置。
毕业设计---基于单片机的多功能电子万年历的设计
基于单片机的多功能电子万年历的设计摘要随着科技的快速发展,自从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
本文主要介绍了基于单片机的智能电子万年历的研制,该万年历能够实时显示公历年、月、日、时、分、秒,以及对应的农历日期、24节气、天干地支、闹铃功能,同时还能够实时测取环境温度。
本系统的硬件部分主要由A VR单片机、时钟芯片、温度传感器等部件组成,文中给出了详细的硬件设计实现及相关电路图;软件部分主要包含公历转农历的算法设计模块、显示模块、时间的读取、温度的检测模块,按键的扫描输入模块等,文中给出了系统的软件程序流程图及各功能模块的软件程序清单,最后介绍了整体系统的设计实现、仿真及调试过程,给出了下一步的改进方案等。
关键词:单片机;液晶技术;万年历;时钟芯片Design of Multifunctional digital Perpetual Calendar Based on MCUAbstractWith the development of technology,Since the concept of the sun, Baizhong, andnow the electronic bell,human beings continue to study and constant innovation record。
This paper-based Microcontroller Development of Intelligent electronic calendar, The calendar can display real-time in the calendar year, month, day, hours, minutes and seconds,a nd the correspond ing date of the Lunar New Year, 24 Solar Terms,at the same time also to real-time measurement from the ambient temperature,In addition to the user through the keyboard input years of history,for the correspond ing period of the Lunar.The system hardware from some of the major A VR microcontroller, a number of digital control, decoder, the clock chip,temperature sensors and other components,the paper gives a detailed design and implementation of hardware and related circuit;Software contains some of the major Lunar calendar to the algorithm design module,dynamic digital display modules,time to read,temperature detection module,Press enter the scanning module.In this paper, the system software modules and flow chart of the list of software programs,Finally, the realization of the overall system design, simulation and debugging process, the next step is the improvement programmes.Keywords:MCU;crystal technology;Calendar;Clock chip目录引言 (1)第1章绪论 (2)1.1课题的背景与意义 (2)1.2 数字万年历的现状与发展 (2)1.3 论文的主要工作及章节安排 (3)1.4 本章小结 (3)第2章方案论证比较.............................................................................. (4)2.1 多功能数字万年历系统概述 (4)2.2计时方案 (4)2.3温度检测方案 (5)2.4显示方案 (5)2.5本章小结 (5)第3章系统硬件设计 (6)3.1 主控制器ATmega16 单片机介绍 (6)3.2 时钟电路DS1302 (6)3.3 温度检测DS18B20 (7)3.4 动态显示 (8)3.5 键盘接口 (8)3.6 语音闹铃模块 (8)3.7 电源设计 (9)3.8本章小结 (11)第4章系统软件设计 (12)4.1 公历计算显示程序设计 (13)4.1.1 DS1302 内部寄存器 (13)4.1.2 时间读取程序设计 (15)4.2 农历转换程序设计 (16)4.2.1 公历转农历算法研究 (16)4.2.2 干支纪年简介 (18)4.2.3 公历转农历程序 (18)4.3 温度测量程序设计 (20)4.3.1 DS18B20 的测温原理 (20)4.3.2 温度程序 (21)4.4 二十四节气算法研究 (23)4.5系统仿真 (24)4.6本章小结 (25)结论与展望 (26)致谢 (27)参考文献 (28)附录 A 电子万年历原理图 (29)附录 B 外文文献与译文 (30)英文原文: (30)中文译文: (33)附录 C 参考文献题录及摘要 (35)附录 D 电子万年历源程序 (37)插图清单图2-1 数字万年历系统框图 (4)图3-1 DS1302与ATmega16连接图 (7)图3-2 DS18B20与AtMEGA16连接图 (8)图3-3 报时电路 (9)图3-4 稳压电源原理图 (10)图3-5 电源电路 (10)图4-1 系统程序流程图 (13)图4-2 公历程序流程图 (14)图4-3 DS18B20测温原理 (21)表格清单表3-1 LCD12864显示内容 (8)表4-1 DS1302的寄存器及其控制字 (14)表4-2 RS位配置 (15)引言人类的日常生活离不开时间,任何具有周期性变化的自然现象都可以用来测量时间。
基于51单片机的DS12C887时钟芯片的时钟电路设计 - 副本
基于AT89C51单片的DS12C887芯片电子时钟的设计摘要:本设计开发了一款具有日期、时间、星期和气温同步显示功能的电子时钟.工作原理是主控MCU读取实时时钟芯片DS12C887,获取时间信息,由全数字单总线结构温度传感器DS18B20读取温度信息,经MCU处理,送LCD显示,关键字:DS12C887 DS18B20 电子时前言随着科学技术的不断发展, 人们对时间计量的要求越来越高。
在当今社会,电子时钟已经得到相当广泛的应用,产品多样,发展更是多元化。
本作品是以STC89C51单片机作为主控芯片,使用12MHZ的晶振,使用专用时钟日历芯片DS12C887产生时间信息,时间精确。
软件部分以C语言为主体,用1602LCD液晶屏显示输出信息,输出信息量多,更直观、人性化。
该时钟可实现人机交互,可通过提供的键盘对其进行调整。
系统具有以下功能:年、月、日、时、分、秒显示;12小时/24小时模式切换,在12小时模式中,用AM和PM区分上午和下午;秒表功能;整点闹铃和报时功能,且闹钟可设置多组。
本次设计的电子时钟系统由单片机最小系统,1602LCD液晶屏,时钟芯片,调整按键,蜂鸣器,电源五大部分组成。
1. 课题分析随着电子技术的发展,电子技术为人们的生活带来了越来越大的方便.本课题旨在借助实时时钟芯片DS12C887和温度传感器DS18B20 和51单片机设计一个多功能的电子时钟.由于DS12C887芯片内附加锂电池,在上电情况下可以通过电源充电,断电后可以利用内部锂电池供电继续工作,在掉电重新上电后,不影响时间数据,不需重新对时,方便可靠.2. 方案论证方案一、利用单片机内部定时器产生秒信号,通过软件处理得到时间信息,送LCD显示.方案二、利用通用串行实时时钟芯片DS1302产生时间信息,利用MCU读取时间信息,送LCD 显示.方案三、通过实时时钟芯片DS12887,获取时间信息,经MCU处理,送LCD显示.方案一电路结构简单,可控性强,但断电后时间数据完全消失,再次上电后需重新设定,且由于电路本身缺陷和附加干扰较多,时间误差较大.方案二电路结构简单,时间精度较高,由于使用串行数据传输,节省MCU资源,但DS1302无内置电池,掉电后,数据丢失,重新上电后需对时.方案三采用实时时钟芯片DS12C887,其内部具有内置锂电池,在掉电的情况下可以正常工作10年以上,且带有非易失性RAM,可以保证在掉电的情况下,用户的定时信息不会丢失;带有温度补偿,保证时间数据的准确.经过综合考虑,我们认为方案三满足设计需求.2.2温度部分由于只是测量气温,用数字温度传感器单总线结构DS18B20即可满足要求,该器件采用单总线结构,且数字传输,可以与CPU直接接口,电路结构简便,可靠性好.2.3主控部分选用单片微控制器AT89C52作为主控.系统方案方框图如图2.1所示.图2.1 系统方案3.方案实现3.1 器件简介(1)AT89C52AT89C52是ATMEL公司生产的通用低功耗8位CMOS微控器,具有8051内核和8KB的可编程Flash程序存储空间以及256字节RAM.有32个通用IO口线和全双工串口,两个数据指针、两个16位可编程计数器/定时器、8个2级优先级中断源,具有片内时钟电路,通过简单的外接器件即可实现时钟电路.(2)DS12C887引脚结构及其功能如图3.1.图3.1 DS12C887引脚结构AD0-AD7:地址/数据总线NC :空脚MOT :总线模式选择CS :片选信号AS :地址锁存信号R/W :写信号(intel总线模式下)DS :读信号(intel总线模式下)RESET :复位信号IRQ : 中断请求输岀VCC :+5V电源GND :电源地DS12C887是美国DALLAS半导体公司生产的实时时钟芯片.采用24 引脚双列直插式的封装形式.芯片的晶体振荡器、振荡电路、充电电路和可充电锂电池等一起封装在芯片内部,组成一个加厚的集成电路模块.电路通电时,其内部充电电路便自动对其内部电池充电.可保证时钟数据10 年内不会丢失.DS12C887内部设有方便的接口电路,接口设计简便,使其与各种微处理器的接口大大简化.使用时无需外围电路元件,通过对MOT引脚的电平控制,可以实现与不同的计算机总线连接.DS12C887 能够自动存取并更新当前的时间,CPU 可通过读取DS12C887 的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或BCD 码初始化芯片的10 个时标寄存器.其中114 字节的非易失性静态RAM 可供用户使用,可以在控制器掉电的情况下,保存一些重要的数据.DS12C887 的4 个状态寄存器用来控制和指出DS12C887 模块当前的工作状态,除数据更新周期外,程序可随时读写这4 个寄存器.其内部结构如下图3.2.图3.2 DS12C887内部结构(3)DS18B20DS18B20是美国DALLAS半导体公司生产的可组网数字式温度传感器,在其内部使用了在板(ON-B0ARD)专利技术.全部传感元件及转换电路仅集成在形如三极管的一个集成电路内.DS18B20采用单总线接口方式,与微处理器连接时仅需要一条总线即可实现微处理器与DS18B20的双向通讯;支持多点组网功能,多个DS18B20可以并联在一条总线上,即可实现多点测温;在使用中不需要任何外围元件.测温范围为-55℃~+125℃,结果以9位数字量方式串行传送.DS18B20测温原理如图3.3所示.图3.3 DS18B20内部结构图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1.高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入.计数器1和温度寄存器被预置在-55℃所对应的一个基数值.计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1 ,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶体振荡器产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度.其内部带有非线性修正,确保温度数据的准确性.DS18B20的测温分辨率为0.5℃以9位数据格式表示,其中最低有效位(LSB)由比较器进行0.25℃比较,当计数器1中的余值转化成温度后低于0.25℃时,清除温度寄存器的最低位(LSB),当计数器1中的余值转化成温度后高于0.25℃,置位温度寄存器的最低位(LSB),DS18B20温度数据格式如表3.1所示.表3.1 DS18B20温度数据格式DS18B20采用12位二进制数据表示温度,分成两个字节,低字节低四位为小数位,低字节高四位和高字节低四位组成温度信息的8位整数位,其中第一位为符号位,为0表示温度为正值,为1表示温度为负值.当温度为负值时,数据采用补码存放.高字节高四位无效,与符号位保持一致.温度与数据对应关系如表3.2所示.表3.2 部分温度对应数据3.2硬件电路设计本课题涉及电路原理图和PCB图均由Altium Designer Summer 09绘制.(1)电源部分图3.7 整机电源电路由于电路微控器供电电压为5V,osyno6188供电电压为3V或4.5V,osyno6188对电源电压精度要求不高,决定整机采用5V电源供电,在电源处串联一只1N4003二极管,为osyno6188供电,1N4003为硅管,正向导通压降在0.7V左右,经过二极管后,得到约4.3V 电压,为osyno6188供电.电源电路为普通稳压电源电路,由于不是本项目主要方面,不再赘述.(2)AT89C52最小系统电路图3.8 AT89C52单片机最小系统电路由震荡电路,复位电路和单片机构成最小系统.震荡电路为单片机提供工作时钟,由石英晶体和补偿电容构成.由于语音部分需要1200bps波特率,石英晶体选取11.0592MHz,保证波特率零误差,补偿电容选取30pF瓷片电容.复位电路在上电时为单片机提供复位信号,由10uF电容和10K电阻构成的RC充电电路构成,当系统复位上电瞬间,电源通过电阻R为电容充电,在电阻上得到下降的指数充电电压,由高电平经过一段时间到达低电平,提供单片机需要的高脉冲复位信号.电源部分电容为去耦电容.EA拉高,MCU 上电后,从内部程序存储器开始执行.(3)osyno6188及外围电路设计.图3.9 osyno6188及外围电路系统采用4.5V电源供电模式,电源VDD由电源电路中VCC串接二极管后获得.电源电路、复位电路以及时钟电路参考osyno6188用户手册.RXD、TXD为串行总线接口,分别连接主控MCU的TXD、RXD端.(4)DS12C887与AT89C52接口电路设计.图3.10 DS12C887接口电路DS12C887的AD0-AD7为地址\数据复用总线,与控制器地址\数据总线(P0口)直接连接,R2为上拉电阻;MOT为总线模式选择引脚,接地选择INTEL总线连接方式;R/W在INTEL 总线模式下位写使能,接控制器读信号WR(P3.6)端;DS在INTEL总线模式下为读使能信号,接控制器读信号RD(P3.6)端;AS为地址锁存,接控制器地址锁存信号ALE(30脚)端;RST接电源拉高,片选CS直接接地使能。
基于DS12C887时钟芯片的电子万年历设计
基于DS12C887时钟芯片的电子万年历设计作者:徐锦铜康晴茜来源:《丝路视野》2018年第31期【摘要】本文阐述了一种基于DS12C887时钟芯片的电子万年历软硬件设计方法,使用proteus软件设计和绘制了电子万年历的电路连接图,并通过1602液晶屏显示时钟信息,验证了电子万年历电路及其程序设计的正确性,并给出了部分C程序代码。
【关键词】DS12C887;时钟芯片;单片机在需要时间信息的电路设计中,设计人员通常采用时钟芯片获取时间信息。
目前,市场中的时钟芯片种类多样,比如DS12C887、PCF8485、SB2068、DS1302等。
其中DS12C887具有价格低、功耗小、易操作等优点,本文选用DS12C887作为设计电子万年历的时钟芯片。
一、电路连接电路原理图如图1所示,主要包括AT89C52单片机、DS12C887、1602液晶屏和3个独立按键等元器件,通过仿真,从图1中可以看到日历信息是2018年9月12日,星期三,17点16分3秒,说明本文设计的电子万年历软硬件设计正确,功能正常。
(一)DS12C887介绍及其与单片机的接口电路DS12C887是DALLAS公司推出的涓流充电时钟芯片,可计时到2100年前的年、月、日、时、分、秒、星期七种日历时间信息并自带闰年补偿功能;自带晶体振荡器并内置锂电池,在没有外部电源的情况下可工作长达10年之久;有12小时制和24小时制两种计时模式。
其中在12小时制模式中,用A.M.和RM.区分上午和下午;可选用夏令时模式;时间表示方法有两种:一种用二进制数表示,一种用BCD码表示;内部带有128字节RAM,其中11字节用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,113字节RAM供用户使用;数据/地址总线复用,具有MOTOROLA和INTEL两种总线时序,本文在设计时采用的是INTEL总线。
下面阐述DS12C887的电路连接问题:DS12C887一共有24个管脚,其中6个管脚为NC (悬空管脚,不连接),有效管脚为18个。
基于51单片机 和 DS12C887的日历时钟显示系统设计
基于DS12C887的日历时钟显示系统设计在银行或者其他的公共场合中,经常会看到显示实时信息的显示屏,其中包括年、月、日、星期、时间等,本例子的功能是在51单片机系统中设置、获取、记录实时的日历时钟信息并通过数码管显示,选用日历时钟芯片DS12C887作为实时时钟芯片,为系统提供详细的时间信息,次款芯片内部有锂电池,可以带掉电的情况下保存10年以上。
主要器件:1、AT89C52单片机芯片,用于对时钟芯片的控制和初始化,并控制数码管显示。
2、日历时钟芯片DS12C887。
试验流程图;试验电路图:试验程序代码://CalendarClk.h程序#ifndef _CALENDARCLK_H // 防止CalendarClk.h被重复引用#define _CALENDARCLK_H#include <reg52.h>#include <absacc.h>#define uchar unsigned char#define uint unsigned int/* DS12C887 内部专用寄存器宏定义 */#define MIN XBYTE[0x0102]#define HOUR XBYTE[0x0104]#define DAYOFWEEK XBYTE[0x0106]#define DAYOFMONTH XBYTE[0x0107]#define MONTH XBYTE[0x0108]#define YEAR XBYTE[0x0109]#define REG_A XBYTE[0x010a]#define REG_B XBYTE[0x010b]/* 由串口获得的日历时钟信息变量,用于对芯片时间的设置 */uchar year1,month1,dayofweek1,dayofmonth1,hour1,min1;/* 芯片DS12C887提供的日历时钟信息变量 */uchar year2,month2,dayofweek2,dayofmonth2,hour2,min2;#endif//CalendarClk.c程序#include "CalendarClk.h"/* 从串行口获取数据函数,数据包括:year1,month1,dayofweek1, dayofmonth1,hour1,min1。
011 基于DS12C887的万年历
制作名称:基于DS12C887的万年历1、制作编号:0012、难度等级:★★★★★(适合第5、7学期制作)3、设计要求1)用AT89C51作主控制器,时钟芯片DS12887,温度传感器DS18B20设计一个电子万年历。
2)用16个数码管分别表示十年、年、十月、月、十日、日、星期、十时、时、十分、分、十秒、秒、百度、十度和度。
3)显示采用串行口输出段码,用十六片74LS164来驱动十六个数码管。
4)系统采用集成稳压块7805供电。
4、电路原理图终万年历原理及PCB图(5月12日).Ddb 5、方案论证按照系统设计功能的要求,初步设计系统由主控模块,时钟模块,显示模块,温度传感模块,键盘接口模块等五个模块组成。
主控芯片使用51系列AT89C51单片机时钟芯片使用了美国DALLAS公司推出的与MC146818兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟DS12887,采用DS12887作为主要计时芯片,可作到计时准确。
显示模块采用普通的共阳LED数码管,键输入采用查询法实现调整功能。
6、硬件介绍6.1 系统硬件电路的设计系统由主控制器AT89C51,时钟芯片DS12887,温度传感器DS18B20,串口显示电路以及键扫描电路组成。
6.2 DS12C1887性能介绍1)器件特性DS12C887实时时钟芯片功能丰富,可以用来直接代替IBM PC上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887相兼容。
由于DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题; DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。
在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节 RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM使用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
课程设计_电子万年历DS12C887+温度18B20+LCD12864显示+闹钟
西南科技大学电子专业综合设计报告设计名称:基于单片机的多功能电子万年历系统设计姓名:学号:班级:指导教师:起止日期:西南科技大学信息工程学院制综合设计任务书学生班级:学生姓名:学号:设计名称:基于单片机的多功能电子万年历系统设计起止日期:指导教师:设计要求:基本要求:1.查阅有关资料,掌握单总线的基本通信协议及C语言的编程方法;2.用STC89C52微控制器控制DS12CR887和DS18B20的工作方式,完成多功能电子万年历系统的设计,显示部分采用LCD12864。
要求日期可显示农历,并能提示农历节日和阳历节日;要求电子万年历具有闹钟功能并能实时显示当前环境温度;3.对系统的工作的可靠性进和稳定性行分析,得出结论;4.撰写设计报告。
综合设计学生日志时间设计内容2013.11.23 熟悉题目,对研究题目做分析,具体划分为几个模块2013.11.24 LCD12864显示屏的显示模块的实现2013.11.25 DS18B20温度传感器模块的研究2013.11.26 对DS18B20和LCD12864联合设计温度显示系统2013.11.27 阅读DS12CR887的数据手册,了解芯片的功能实现2013.11.28 根据DS12CR887数据手册完成基本的驱动程序2013.11.30 在C52单片机最小系统的的基础上搭建电子万年历硬件系统,完成芯片焊接及连线2013.12.1 上网查阅阳历转换阴历的相关算法2013.12.2 完成阳历转换阴历相关算法在单片机的程序设计以及节日的显示程序2013.12.3 设计程序实现在LCD12864上显示时间,日期,农历,节日,温度等功能2013.12.4 完成闹钟程序设计2013.12.5 调试硬件系统和软件系统解决系统BUG2013.12.6 完成课程设计报告1基于单片机的多功能电子万年历系统设计摘要:电子万年历是一种通过STC52C89RC单片机编程来对不同电子芯片件进行控制、执行、数据读取、和读取的数据结果的显示的电子产品。
单片机DS12C887时钟设计
目录摘要 (2)1 系统总体设计 (2)1.1 系统设计的主要内容和具体要求 (2)1.1.1主要内容: (2)1.1.2 具体技术要求: (2)1.2 方案论证 (2)2 系统硬件电路设计 (3)2.1单片机控制系统包括STC89C52单片机以及它的外围电路(晶振电路和复位电路)。
(3)2.1.1晶振电路 (4)2.1.2 复位电路 (4)2.2 DS12C887时钟电路 (5)2.2.1 器件介绍 (5)2.2.2 DS12C887与单片机的连接 (6)2.3 1602液晶显示屏 (6)2.4 USB供电电路 (7)2.5 键盘电路 (8)2.6闹铃电路 (9)3 系统软件程序设计 (9)3.1 主程序运行说明及流程图 (9)3.2 DS12C887使用说明及流程图 (11)3.3 1602操作说明及流程图 (11)3.4 键盘控制说明及流程图 (12)4 系统调试 (13)5 结论 (14)6 谢辞 (14)7 参考文献 (15)8 附录A:实时日历电子钟设计电路原理图 (15)9 附录B:实时日历电子钟设计程序代码 (15)摘要在日新月异的21世纪里,家用电子产品得到了迅速发展。
许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。
单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。
本文设计的电子万年历属于小型智能家用电子产品。
利用单片机进行控制,实时时钟芯片DS12C887时钟芯片进行记时及掉电存储,外加键盘电路和显示电路,可实现时间的调整和显示。
电子万年历既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。
因而,此设计具有相当重要的现实意义和实用价值。
关键词:单片机;DS12C887;智能1 系统总体设计1.1 系统设计的主要内容和具体要求1.1.1主要内容:本次设计的题目是基于ds12c887的高精度时钟的设计,可以正常的显示年、月、日、星期、时、分、秒。
基于DS2C887的实时日历时钟的设计课程设计任务
基于DS2C887的实时日历时钟的设计课程设计任务中北大学信息商务学院课程设计任务书学生姓名:高升学号:10050644X20学院:信息与通信工程学院专业:电子信息工程题目:专业综合实践之单片机系统部分:基于DS12C887的实时日历时钟的设计王浩全指导教师:职称: 教授2014 年 1 月 10 日中北大学信息商务学院课程设计任务书2013/2014 学年第1 学期学院:信息与通信工程学院专业:电子信息工程学生姓名:高升学号:10050644X20学生姓名:穆志森学号:10050644X26学生姓名:康文忠学号:10050644X46课程设计题目:专业综合实践之单片机系统部分基于DS12C887的实时日历时钟的设计起迄日期:2013年12 月30 日~2014年1月10 日课程设计地点:5院楼201,510 实验室指导教师:王浩全下达任务书日期: 2013 年 12 月30日课程设计任务书1.设计目的:巩固掌握单片机工作原理及应用提高编程能力2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):掌握单片机89C51的工作原理掌握用汇编、C或其他语言实现编程掌握DS12C887时钟芯片3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:(1)提供核心器件的工作原理与应用介绍;(2)提供用Protel设计的电路原理图,印刷板电路图;(3)提供用Multisim、MaxPlus、Proteus、Medwin、KeilC等软件对电路的仿真、编程与分析;(4)提供符合规定要求的课程设计说明书;(5)提供参考文献不少于15篇,且必须是相关的参考文献;课程设计任务书4.主要参考文献:要求按国标GB 7714—87《文后参考文献著录规则》书写,例:1 傅承义,陈运泰,祁贵中.地球物理学基础.北京:科学出版社,19855.设计成果形式及要求:说明书一份6.工作计划及进度:1月7日~ 1月9日:查资料;1月10日~ 1月14日:在指导教师指导下设计方案;1月15日~ 1月17日:在指导教师辅导下完成实验;撰写课程设计说明书;1月18日:答辩系主任审查意见:签字:年月日目录一系统设计的主要内容和设计思路 (7)1.1主要内容 (7)1.2设计思路 (7)1.2.1 日历时钟芯片的选择 (7)1.2.2 LED简介 (8)二硬件电路设计 (10)2.1 结构框图 (10)2.2 主要器件 (11)2.2.1 单片机 (11)2.2.2 日历时钟芯片DS12C887 (15)2.2.3 1602液晶显示屏 (17)2.3 电路原理图及说明 (19)2.3.1 控制电路 (19)2.3.2 日历时钟电路 (20)三软件设计 (20)3.1 时钟部分软件设计 (21)3.1.1 DS12C887的内存空间 (21)3.1.2程序流程 (23)四设计结果 (24)4.1基于DS12C887的实时日历时钟显示系统的总程序 (24)4.2基于DS12C887的实时日历时钟显示系统总电路图 (31)五结果分析 (32)六心得体会 (32)七参考文献 (33)一系统设计的主要内容和设计思路1.1主要内容本次的设计题目是电子万年历设计,要求实现年、月、日、时、分、秒的正常显示,需要硬件和软件的结合来实现。
基于单片机的DS12C887的日历时钟显示系统设计论文
摘要在51单片机应用系统中,常常需要记录实时的时间信息并长期保存。
比如,在数据采集时,对某些重要的信息不仅需要记录其内容,还需要记录下该事件发生的准确时间;在银行营业大厅中使用的利率或汇率显示屏,上面除了需要显示利率或汇率等数据以外,还需要显示实时的时间信息,如年、月、日、星期、时间等。
本文用51单片机以及DS12C887日历时钟芯片实现日历时钟的设计。
论文研究了DS12C887日历时钟芯片的相关功能,两片MAX7219分别与单片机连接实现13位数码管显示以及整个实时日历时钟显示系统的硬件,软件设计。
设计结果表明本文设计的基于DS12C887的实时日历时钟显示系统完全能够满足设计要求。
关键词:DS12C887;51单片机;MAX7219;数码管显示Abstract51 SCM application systems, often need to record real-time information and long-term preservation. For example, when data collection for some important information not only need to record the content, but also record the exact time of the incident; the banking hall in the use of interest rate or exchange rate display, shown above in addition to the interest rate or exchange rate such data, it also needs to show real-time information, such as year, month, date, day and time. In this paper, 51 MCU and the calendar clock chip DS12C887 calendar clock design.Thesis of the calendar clock chip DS12C887-related functions, MAX7219 connected respectively to achieve 13-bit single chip digital display and the real time calendar clock display system hardware and software design.Design results show that the DS12C887-based design of real-time calendar clock display system can completely meet the design requirements.Key Words:DS12C887;51 Microcontroller;MAX7219;Digital display1 绪论本次设计的功能是在51单片机系统中设置、获取、记录实时的日历时钟信息并通过数码管显示,要求能够进行长时间的记录,并且存储的时间信息在掉电情况下至少保存10年以上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、系统的结构和工作原理 1.系统结构此次课程设计的万年历,以AT89S52单片机为主控核心,由LCD 显示屏、DS12C887时钟芯片、温度传感器DS18B20、蜂鸣器、功能键盘、复位电路、晶振、电源模块等组成,系统结构框图如图1所示。
AT89S52单片机温度传感器DS18B20DS12C887时钟芯片LCD 显示屏(1602)蜂鸣器复位电路功能键盘电源模块图1 系统结构框图2.工作原理主控制器每隔一段时间(小于一秒钟)读一次时钟芯片的内部寄存器的值,将读出的时间、星期、温度等值实时显示在LCD 液晶屏上。
同时,主控制器不断的扫描按键电路和温度测量电路,当有按键按下时,识别出按键的值并调整相应的时间、星期值再写入时钟芯片内部。
温度数据由测量电路获得的环境温度值送人显示电路。
二、硬件设计1.主控核心—AT89S52单片机AT89S52是一个低功耗,高性能CMOS8位单片机,具有8K 在系统可编程Flash 存储器。
采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。
2.DS12C887时钟电路DS12C887与计算机常用的时钟芯片MC146818和DS12887管脚兼容,可直接替换。
采用DS12C887芯片设计的时钟电路无需任何外围电路和器件,并且有良好的微机接口。
DS12C887芯片内有微功耗,外围接口简单,精度高,工作稳定可靠等优点,广泛用于各种需要较高精度的实时时钟系统中。
DS12C887主要功能如下:(1)内含一个锂电池,断电后运行十年以上不丢失数据; (2)计秒、分、时、天、星期、日、月、年、并有闰年补偿功能;(3)二进制数码或BCD 码表示时间,日历和定闹;(4)12小时或24小时制,12小时时钟模式带有PM 和AM 指示,有夏令时功能; (5)Motorola 和Intel 总线时序选择;(6)有128个字节RAM 单元与软件接口,其中14个字节作为时钟和控制寄存器,114 字节为通用RAM ,所有RAM 单元数据都具有掉电保护功能; (7)可编程方波信号输出;(8)中断信号输出(IRQ )和总线兼容、定闹中断、周期性中断、时钟更新周期、结束 中断可分别由软件屏蔽,也可分别进行测试; DS12C887时钟芯片和单片机的硬件连接如下图2 :EA/VPP 31XTAL119XTAL218RESET 9P3.7/RD 17P3.6/WR 16P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN 29ALE/PROG 30P3.1/TXD 11P3.0/RXD 10VCC 40GND 20U1AT89S52VCC+C1210u FR910KS17Y112MHzC930p FC1030p FP00P01P02P03P04P05P06P07VCCP20P21P22P23P24P25P27P26P10P11P12P04P13P14P15P16P00P17P01P32P02P30P03P31P05P33P06P34P07P35P20P35WR P37P32P34242322212019181716151413121110987654321DS12C887CSASR/WNCDSRESETIRQNCNCNCSQWVCCGND AD7AD6AD5AD4AD3AD2AD1AD0NC MOT NC 123456789RP1RESPACKVCCU3P36P37图2 DS12C887与单片机的连接3.DS18B20温度传感器采用数字式温度传感器DS18B20,其仅需一条数据线进行数据传输,易于与单片机连接,可以去除A/D 模块,降低硬件成本,简化系统电路。
另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
DS18B20特性如下:(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处 理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:+3.0~+5.5 V 。
(4)测温范围:-55 ~+125 ℃。
固有测温分辨率为0.5 ℃。
(5)通过编程可实现9~12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
DS18B20芯片的连接如下图3所示:图3 DS18B20连接电路 4.LCD1602显示屏本设计采用1602字符型LCD ,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCII 字符集字库,只有并行接口,无串行接口。
单片机的P2口与LCD 的数据端口连接,用于数字信号的读取,控制端RS 、R/W 分别与单片机的P3.3和P3.1相连。
电路连接如图4所示。
P 20P 21P 22P 23P 24P 25P 26P 2712345678910111213141516V S S V D DV 0R S R /WE D B 0D B 1D B 2D B 3D B 4D B 5D B 6D B 7B L A B L KR310KP 33P 31P 30U 4VCCL C D 1602VCC图4 1602LCD 硬件电路5.其它硬件电路蜂鸣器电路:为了实现闹钟功能,选择蜂鸣器作为闹铃。
采用PNP 型9015三极管,发射极e 脚连接+5V ,基极b 脚连接10K 电阻后接到单片机P1.6口上,c 脚连接蜂鸣器。
电路如图5所示。
VCC10K R2PNPU5BELLP1.6P14VCC5KR1DS18B20123U2图5 蜂鸣器电路功能键盘:本设计采用了4个键盘,分别实现万年历时间日期的调整键、闹钟设置键、增加键(也为闹钟开启键)、减小键组成,分别连接P1.0~P1.3口。
复位电路:89S52的复位输入引脚RST为其提供了初始化的手段,可以使程序从指定处开始执行,在MCS-52的时钟电路工作后,只要RST引脚上出现超过两个机器周期以上的高电平时,即可产生复位的操作.只要RST保持高电平,则MCS-52循环复位.只有当RST由高电平变低电平以后,MCS-52才从0000H地址开始执行程序.本系统采用按键复位方式的复位电路。
电源电路:电路采用5V电源进行供电,为了得到稳定的直流电源,通过电源处理电路进行调理,得到稳定电压。
三、软件设计本次系统设计软件部分采用模块化结构,由主程序﹑DS12C887子程序、DS18B20子程序、LCD1602子程序构成。
模块程序设计法的主要优点是:单个模块比起一个完整的程序易编写及调试;模块可以共存,一个模块可以被多个任务在不同条件下调用;模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
1.主程序说明及流程图主程序主要实现了从DS12C887各时间单元中读出数据和DS18B20传感器中读取数据,并送到LCD1602中显示的功能,同时检测有没有按键按下,如果有键被按下,则执行按键处理子程序。
首先进行DS12C887时钟芯片、DS18B20芯片和LCD1602的初始化函数,然后进行按键扫描,不断地检测按键是否按下,读取DS12C887时钟芯片、DS18B20检测环境温度的数据,并且送到液晶显示器显示;当数据发生变化时候,重新进行扫描写入。
主程序流程图如图6。
开始模块初始化读/写日期、时间、温度信息分离出日期、时间、温度值LCD模块显示对应内容定时闹钟设置子程序日期、时间修改子程序显示自动更新子程序闹铃响程序返回图6 主程序流程图2.DS12C887流程图及初始化程序进入主程序后,DS12C887首先进行初始化设置,若串行口有数据,最后则调用函数从日历时钟芯片获取日历时钟信息,调用显示函数显示日历时钟信息显示出来,重复进行。
这部分包括DS12C887某个单元写、读DS12C887某个单元的内容和DS12C887设定时间。
DS12C887的流程图如图7所示。
开始DS12C887初始调用函数获取时钟信息送数据显示图7 DS12C887的流程图DS12C887的子程序:#ifndef DS12C887_H#define DS12C887_H#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit fm=P1^4;sbit ds_as=P3^5;sbit ds_wr=P3^6;sbit ds_ds=P3^7;sbit ds_cs=P2^0;sbit ds_irq=P3^2;char second,minute,hour,asecond,aminute,ahour,day,week,month,year;void ds_write(uchar add,uchar date) //向DS12C887写数据的函数{ds_cs=0;ds_as=1;ds_ds=1;ds_wr=1;P0=add;ds_as=0;ds_wr=0;P0=date;ds_wr=1;ds_as=1;ds_cs=1;}uchar ds_read(uchar add) //从DS12C887读数据的函数{uchar ds_date;ds_as=1;ds_ds=1;ds_wr=1;ds_cs=0;P0=add;ds_as=0;ds_ds=0;P0=0xff;ds_date=P0;ds_ds=1;ds_as=1;ds_cs=1;return ds_date;}void settime() //设定时间初始值的函数第一次上电使用,之后可以屏蔽{ds_write(0x0b,0x26); //设置24小时模式,数据二进制格式ds_write(0x0a,0x20); //打开振荡器ds_write(0,55);ds_write(1,0);ds_write(2,59);ds_write(3,0);ds_write(4,23);ds_write(5,0);ds_write(6,5);ds_write(7,1);ds_write(8,1);ds_write(9,9);}void setalarm() //将设定的闹钟时间写进DS12C887的函数{ds_write(1,asecond);ds_write(3,aminute);ds_write(5,ahour);}void beep() //闹钟的声音函数{fm=0;delay(100);fm=1;delay(20);fm=0;delay(100);fm=1;}#endif3.DS18B20流程图及初始化程序进入主程序后,DS18B20首先进行初始化设置,然后通过对环境温度的检测,,调用显示函数显示温度信息,重复进行。