单片机时钟程序.docx

上传人:b****6 文档编号:4369833 上传时间:2022-12-01 格式:DOCX 页数:33 大小:24.01KB
下载 相关 举报
单片机时钟程序.docx_第1页
第1页 / 共33页
单片机时钟程序.docx_第2页
第2页 / 共33页
单片机时钟程序.docx_第3页
第3页 / 共33页
单片机时钟程序.docx_第4页
第4页 / 共33页
单片机时钟程序.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

单片机时钟程序.docx

《单片机时钟程序.docx》由会员分享,可在线阅读,更多相关《单片机时钟程序.docx(33页珍藏版)》请在冰豆网上搜索。

单片机时钟程序.docx

单片机时钟程序

实验目的:

通过设计电子时钟的综合实验掌握单片机编程的基本思想,学会对一些周边芯片的综合利用。

通过实验,真正理解所学知识。

实验要求:

数码管型时钟,可以显示时间、日期、星期、闰年,并有整点报时及闹铃,农历功能。

实验器材:

主要用到的芯片有:

PCF8563时钟芯片,ZLG7290键盘检测及LED显示模块,蜂鸣器及51单片机。

系统概述:

先对时钟芯片初始化,然后取出数据,进行处理,农历转换,并判断是否整点及到达定时时间,根据判断到的按键,进行相应的处理及显示。

硬件介绍:

1、ZLG7290ZLG7290是一I2C接口键盘及LED驱动管理器件,提供数据译码和循环、移位、段寻址等控制。

它可采样64个按键或传感器,单片即可完成LED显示、键盘接口的全部功能。

ZLG7290的从地址为70H,器件内部通过I2C总线访问的寄存器地址范围为00H~17H,任一寄存器都可按字节直接读写,并支持自动增址功能和地址翻转功能。

使用ZLG7290驱动数码管显示有两种方法,第一种方法是向命令缓冲区(07H-08H)写入复合指令,向07H写入命令并选通相应的数码管,向08H写入所要显示的数据,这种方法每次只能写入一个字节的数据,多字节数据的输出可在程序中用循环写入的方法实现;第二种方法是向显示缓存寄存器(10H~17H)写入所要显示的数据的段码,段码的编码规则为从高位到低位为abcdefgdp,这种方法每次可写入1~8个字节数据。

ZLG7290读普通键的入口地址和读功能键的入口地址不同,读普通按键的地址为01H,读功能键的地址为03H。

读普通键返回按键的编号,读功能键返回的不是按键编号,需要程序对返回值进行翻译,转换成功能键的编号。

2:

PCF8563时钟芯片PCF8563是PHILIPS公司生产的低功耗CMOS实时时钟/日历芯片,芯片最大总线速度为400kbits/s,每次读写数据后,其内嵌的字地址寄存器器会自动产生增量。

PCF8563可广泛应用于移动电话、便携仪器、传真机、电池电源等产品中。

PCF8563有16个8位寄存器,其中包括:

可自动增量的地址寄存器、内置32.768kHz的振荡器(带有一个内部集成电容)、分频器(用于给实时时钟RTC提供源时钟)、可编程时钟输出、定时器、报警器、掉电检测器和400kHz的I2C总线接口。

所有16个寄存器设计成可寻址的8位并行寄存器,但不是所有位都有用。

当一个RTC寄存器被读时,所有计数器的内容将被锁存,因此,在传送条件下,可以禁止对时钟/日历芯片的错读。

3:

I2C介绍

 1、只要求两条总线线路:

一条串行数据线SDA,一条串行时钟线SCL;

  2、每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器;

  3、它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;

4、串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s;

5、连接到相同总线的IC数量只受到总线的最大电容400pF限制。

实验原理:

选用的时钟芯片及显示模块均采用了I2C总线标准,使整个系统接线更简单,并且数据传输更简单。

程序主要由以下几部分组成:

I2C读写:

写数据ISendStr(ucharsla,ucharsuba,uchar*s,ucharno);

读数据IRcvStr(ucharsla,ucharsuba,uchar*s,ucharno);

ZLG7290数码管显示及键盘取键值:

发送数据ZLG7290_SendData(unsignedcharSubAdd,unsignedcharData);

显示数据ZLG7290_SendBuf(unsignedchar*disp_buf,unsignedcharnum);

发送命令ZLG7290_SendCmd(unsignedcharData1,unsignedcharData2);

取键值ZLG7290_GetKey();

农历转换部分,闹铃显示,整点报时等。

程序开始,首先初始化PCF8563时钟芯片,然后进入while循环,进行显示及键盘判断。

程序设置了几个全局变量,专门用于存储按键次数,达到一键多用的效果。

下面的程序根据按键的次数,选择处理不同的数据或进行不同的操作。

本程序共用了5个按键,其中1键专门用于切换显示,2键用于修改时间及星期,3

键用于调整日期,4键用于修改闹铃。

5键专门用于调整。

c程序:

#include"reg52.h"

#include"VIIC_C51.H"

#include"zlg7290.h"

#include"intrins.h"

#include"18b20.h"//温度:

ReadTemperature()

#definePCF85630xA2//定义器件地址

#defineWRADDR0x00//定义写单元的首地址

#defineRDADDR0x02//定义读单元的首地址

#defineucharunsignedchar

#defineuintunsignedint

unsignedcharTempH,TempL;

uinttemp;

sbitKEY_INT=P3^2;

sbitRST=P1^0;

sbitP1_3=P1^3;

ucharnum[9]={0x00,0x12};

unsignedchardisp_buf[8]={0,0,0,0,0,0,0,0};//显示缓存

unsignedcharrd[7];//定义缓冲接收区

unsignedcharnao[3]={0x00,0x00,0x00};

ucharyear_moon,month_moon,day_moon,week;//农历声明

unsignedcharKEY;//保存键值

intswich_date=0;

inti,j,k;

voidConversion(bitc,ucharyear,ucharmonth,ucharday);

//闹铃

unsignedcharcodeTABLE[]={0x82,0x01,0x81,0x94,0x84,0xB4,0xA4,0x04,

0x82,0x01,0x81,0x94,0x84,0xC4,0xB4,0x04,

0x82,0x01,0x81,0xF4,0xD4,0xB4,0xA4,0x94,

0xE2,0x01,0xE1,0xD4,0xB4,0xC4,0xB4,0x04,

0x82,0x01,0x81,0x94,0x84,0xB4,0xA4,0x04,

0x82,0x01,0x81,0x94,0x84,0xC4,0xB4,0x04,

0x82,0x01,0x81,0xF4,0xD4,0xB4,0xA4,0x94,

0xE2,0x01,0xE1,0xD4,0xB4,0xC4,0xB4,0x04,0};

unsignedintcodeTABLE1[]={64260,64400,64524,64580,64684,64777,64820,64898,

64968,65030,65058,65110,65157,65178,65217};

unsignedcharth0_temp,tl0_temp;

//农历

codeucharyear_code[597]={

0x04,0xAe,0x53,//19010

0x0A,0x57,0x48,//19023

0x55,0x26,0xBd,//19036

0x0d,0x26,0x50,//19049

0x0d,0x95,0x44,//190512

0x46,0xAA,0xB9,//190615

0x05,0x6A,0x4d,//190718

0x09,0xAd,0x42,//190821

0x24,0xAe,0xB6,//1909

0x04,0xAe,0x4A,//1910

0x6A,0x4d,0xBe,//1911

0x0A,0x4d,0x52,//1912

0x0d,0x25,0x46,//1913

0x5d,0x52,0xBA,//1914

0x0B,0x54,0x4e,//1915

0x0d,0x6A,0x43,//1916

0x29,0x6d,0x37,//1917

0x09,0x5B,0x4B,//1918

0x74,0x9B,0xC1,//1919

0x04,0x97,0x54,//1920

0x0A,0x4B,0x48,//1921

0x5B,0x25,0xBC,//1922

0x06,0xA5,0x50,//1923

0x06,0xd4,0x45,//1924

0x4A,0xdA,0xB8,//1925

0x02,0xB6,0x4d,//1926

0x09,0x57,0x42,//1927

0x24,0x97,0xB7,//1928

0x04,0x97,0x4A,//1929

0x66,0x4B,0x3e,//1930

0x0d,0x4A,0x51,//1931

0x0e,0xA5,0x46,//1932

0x56,0xd4,0xBA,//1933

0x05,0xAd,0x4e,//1934

0x02,0xB6,0x44,//1935

0x39,0x37,0x38,//1936

0x09,0x2e,0x4B,//1937

0x7C,0x96,0xBf,//1938

0x0C,0x95,0x53,//1939

0x0d,0x4A,0x48,//1940

0x6d,0xA5,0x3B,//1941

0x0B,0x55,0x4f,//1942

0x05,0x6A,0x45,//1943

0x4A,0xAd,0xB9,//1944

0x02,0x5d,0x4d,//1945

0x09,0x2d,0x42,//1946

0x2C,0x95,0xB6,//1947

0x0A,0x95,0x4A,//1948

0x7B,0x4A,0xBd,//1949

0x06,0xCA,0x51,//1950

0x0B,0x55,0x46,//1951

0x55,0x5A,0xBB,//1952

0x04,0xdA,0x4e,//1953

0x0A,0x5B,0x43,//1954

0x35,0x2B,0xB8,//1955

0x05,0x2B,0x4C,//1956

0x8A,0x95,0x3f,//1957

0x0e,0x95,0x52,//1958

0x06,0xAA,0x48,//1959

0x7A,0xd5,0x3C,//1960

0x0A,0xB5,0x4f,//1961

0x04,0xB6,0x45,//1962

0x4A,0x57,0x39,//1963

0x0A,0x57,0x4d,//1964

0x05,0x26,0x42,//1965

0x3e,0x93,0x35,//1966

0x0d,0x95,0x49,//1967

0x75,0xAA,0xBe,//1968

0x05,0x6A,0x51,//1969

0x09,0x6d,0x46,//1970

0x54,0xAe,0xBB,//1971

0x04,0xAd,0x4f,//1972

0x0A,0x4d,0x43,//1973

0x4d,0x26,0xB7,//1974

0x0d,0x25,0x4B,//1975

0x8d,0x52,0xBf,//1976

0x0B,0x54,0x52,//1977

0x0B,0x6A,0x47,//1978

0x69,0x6d,0x3C,//1979

0x09,0x5B,0x50,//1980

0x04,0x9B,0x45,//1981

0x4A,0x4B,0xB9,//1982

0x0A,0x4B,0x4d,//1983

0xAB,0x25,0xC2,//1984

0x06,0xA5,0x54,//1985

0x06,0xd4,0x49,//1986

0x6A,0xdA,0x3d,//1987

0x0A,0xB6,0x51,//1988

0x09,0x37,0x46,//1989

0x54,0x97,0xBB,//1990

0x04,0x97,0x4f,//1991

0x06,0x4B,0x44,//1992

0x36,0xA5,0x37,//1993

0x0e,0xA5,0x4A,//1994

0x86,0xB2,0xBf,//1995

0x05,0xAC,0x53,//1996

0x0A,0xB6,0x47,//1997

0x59,0x36,0xBC,//1998

0x09,0x2e,0x50,//1999294

0x0C,0x96,0x45,//2000297

0x4d,0x4A,0xB8,//2001

0x0d,0x4A,0x4C,//2002

0x0d,0xA5,0x41,//2003

0x25,0xAA,0xB6,//2004

0x05,0x6A,0x49,//2005

0x7A,0xAd,0xBd,//2006

0x02,0x5d,0x52,//2007

0x09,0x2d,0x47,//2008

0x5C,0x95,0xBA,//2009

0x0A,0x95,0x4e,//2010

0x0B,0x4A,0x43,//2011

0x4B,0x55,0x37,//2012

0x0A,0xd5,0x4A,//2013

0x95,0x5A,0xBf,//2014

0x04,0xBA,0x53,//2015

0x0A,0x5B,0x48,//2016

0x65,0x2B,0xBC,//2017

0x05,0x2B,0x50,//2018

0x0A,0x93,0x45,//2019

0x47,0x4A,0xB9,//2020

0x06,0xAA,0x4C,//2021

0x0A,0xd5,0x41,//2022

0x24,0xdA,0xB6,//2023

0x04,0xB6,0x4A,//2024

0x69,0x57,0x3d,//2025

0x0A,0x4e,0x51,//2026

0x0d,0x26,0x46,//2027

0x5e,0x93,0x3A,//2028

0x0d,0x53,0x4d,//2029

0x05,0xAA,0x43,//2030

0x36,0xB5,0x37,//2031

0x09,0x6d,0x4B,//2032

0xB4,0xAe,0xBf,//2033

0x04,0xAd,0x53,//2034

0x0A,0x4d,0x48,//2035

0x6d,0x25,0xBC,//2036

0x0d,0x25,0x4f,//2037

0x0d,0x52,0x44,//2038

0x5d,0xAA,0x38,//2039

0x0B,0x5A,0x4C,//2040

0x05,0x6d,0x41,//2041

0x24,0xAd,0xB6,//2042

0x04,0x9B,0x4A,//2043

0x7A,0x4B,0xBe,//2044

0x0A,0x4B,0x51,//2045

0x0A,0xA5,0x46,//2046

0x5B,0x52,0xBA,//2047

0x06,0xd2,0x4e,//2048

0x0A,0xdA,0x42,//2049

0x35,0x5B,0x37,//2050

0x09,0x37,0x4B,//2051

0x84,0x97,0xC1,//2052

0x04,0x97,0x53,//2053

0x06,0x4B,0x48,//2054

0x66,0xA5,0x3C,//2055

0x0e,0xA5,0x4f,//2056

0x06,0xB2,0x44,//2057

0x4A,0xB6,0x38,//2058

0x0A,0xAe,0x4C,//2059

0x09,0x2e,0x42,//2060

0x3C,0x97,0x35,//2061

0x0C,0x96,0x49,//2062

0x7d,0x4A,0xBd,//2063

0x0d,0x4A,0x51,//2064

0x0d,0xA5,0x45,//2065

0x55,0xAA,0xBA,//2066

0x05,0x6A,0x4e,//2067

0x0A,0x6d,0x43,//2068

0x45,0x2e,0xB7,//2069

0x05,0x2d,0x4B,//2070

0x8A,0x95,0xBf,//2071

0x0A,0x95,0x53,//2072

0x0B,0x4A,0x47,//2073

0x6B,0x55,0x3B,//2074

0x0A,0xd5,0x4f,//2075

0x05,0x5A,0x45,//2076

0x4A,0x5d,0x38,//2077

0x0A,0x5B,0x4C,//2078

0x05,0x2B,0x42,//2079

0x3A,0x93,0xB6,//2080

0x06,0x93,0x49,//2081

0x77,0x29,0xBd,//2082

0x06,0xAA,0x51,//2083

0x0A,0xd5,0x46,//2084

0x54,0xdA,0xBA,//2085

0x04,0xB6,0x4e,//2086

0x0A,0x57,0x43,//2087

0x45,0x27,0x38,//2088

0x0d,0x26,0x4A,//2089

0x8e,0x93,0x3e,//2090

0x0d,0x52,0x52,//2091

0x0d,0xAA,0x47,//2092

0x66,0xB5,0x3B,//2093

0x05,0x6d,0x4f,//2094

0x04,0xAe,0x45,//2095

0x4A,0x4e,0xB9,//2096

0x0A,0x4d,0x4C,//2097

0x0d,0x15,0x41,//2098

0x2d,0x92,0xB5,//2099

};

codeucharday_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3};

codeuintday_code2[3]={0x111,0x130,0x14e};

bitc_moon;

bitget_moon_day(ucharmonth_p,uinttable_addr)

{

uchartemp;

switch(month_p)

{

case1:

{

temp=year_code[table_addr]&0x08;

if(temp==0)

return(0);

else

return

(1);

}

case2:

{

temp=year_code[table_addr]&0x04;

if(temp==0)

return(0);

else

return

(1);

}

case3:

{

temp=year_code[table_addr]&0x02;

if(temp==0)

return(0);

else

return

(1);

}

case4:

{

temp=year_code[table_addr]&0x01;

if(temp==0)

return(0);

else

return

(1);

}

case5:

{

temp=year_code[table_addr+1]&0x80;

if(temp==0)

return(0);

else

return

(1);

}

case6:

{

temp=year_code[table_addr+1]&0x40;

if(temp==0)

return(0);

else

return

(1);

}

case7:

{

temp=year_code[table_addr+1]&0x20;

if(temp==0)

return(0);

else

return

(1);

}

case8:

{

temp=year_code[table_addr+1]&0x10;

if(temp==0)

return(0);

else

return

(1);

}

case9:

{

temp=year_code[table_addr+1]&0x08;

if(temp==0)

return(0);

else

return

(1);

}

case10:

{

temp=year_code[table_addr+1]&0x04;

if(temp==0)

return(0);

else

return

(1);

}

case11:

{

temp=year_code[table_addr+1]&0x02;

if(temp==0)

return(0);

else

return

(1);

}

case12:

{

temp=year_code[table_addr+1]&0x01;

if(temp==0)

return(0);

else

return

(1);

}

case13:

{

temp=year_code[table_addr+2]&0x80;

if(temp==0)

return(0);

else

return

(1);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1