实验7 利用51单片机的定时器设计一个时钟
时间:11-19
来源:互联网
点击:
1.利用实验板和配件,设计一个时钟,时间显示在LCD1602上,并按秒更新,能够在实验板上设计3个按键调整时,分,秒。其功能为:功能选择键,数值增大和数值减小键。利用板上AT24C02设计实现断电保护显示数据的功能。
=============Clock.h=============
#ifndef __CLOCK_H__
#define __CLOCK_H__
//========全局变量区============================================
unsignedcharT_High_50ms=(65536-45872)/256;
unsignedintT_Low_50ms=(65536-45872)%256;
unsignedcharCount,Count_T1,Count_1s;//Count用来记录每50ms的计数,Count_T1用来记
//========全局变量区结束============================================
#endif
=============I2C.H=============
#ifndef __I2C_H__
#define __I2C_H__
#include
sbit sda=P2^0;
sbit scl=P2^1;
//========函数区============================================
voidnop();
voidinitI2C();
externvoidI2C_start();//开始信号
externvoidI2C_stop();//停止
externvoidI2C_respons();//应答
externvoidI2C_write_byte(unsignedchardate);
externunsignedcharI2C_read_byte();
externvoidI2C_write_address(unsignedcharaddress,unsignedchardate);
externunsignedcharI2C_read_address(unsignedcharaddress);
//========函数区结束============================================
#endif
=============OrphanKey.h=============
#ifndef __ORPHANKEY_H__
#define __ORPHANKEY_H__
sbit FUNCTION_KEY=P3^2;//功能键--按下暂停,再按开始
sbit Key_ADD=P3^3;//加1
sbit KEY_MINUS=P3^4;//减1
constbit PRESSED=0;//按下
bit SUSPEND=0;//0的时候运行,1的时候暂停
#endif
=============I2C.C=============
#include "head/I2C.h"
//=========全局变量区============================================
#define uchar unsigned char
#define uint unsigned int
bit I2C_write=0;//写24C02的标志;
unsignedcharsec,tcnt;
//=========全局变量区结束============================================
voidnop()
{;;}
/***********************************************************
I2C的初始化
***********************************************************/
voidinitI2C(){
sda=1;
nop();
scl=1;
nop();
}
voidI2C_start()//开始信号
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
}
voidI2C_stop()//停止
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}
voidI2C_respons()//应答
{
uchar i;
scl=1;
nop();
while((sda==1)&&(i<250))i++;
scl=0;
nop();
}
voidI2C_write_byte(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<1;
scl=0;
nop();
sda=CY;
nop();
scl=1;
nop();
}
scl=0;
nop();
sda=1;
nop();
}
uchar I2C_read_byte()
{
uchar i,k;
scl=0;
nop();
sda=1;
nop();
for(i=0;i<8;i++)
{
scl=1;
nop();
k=(k<1)sda;
scl=0;
nop();
}
returnk;
}
voidI2C_write_address(uchar address,uchar date)
{
I2C_start();
I2C_write_byte(0xa0);
I2C_respons();
I2C_write_byte(address);
I2C_respons();
I2C_write_byte(date);
I2C_respons();
I2C_stop();
}
uchar I2C_read_address(uchar address)
{
uchar date;
I2C_start();
I2C_write_byte(0xa0);
I2C_respons();
I2C_write_byte(address);
I2C_respons();
I2C_start();
I2C_write_byte(0xa1);
I2C_respons();
date=I2C_read_byte();
I2C_stop();
returndate;
}
=============lab8_1.c=================
#include
#include "head/Clock.h"
#include "head/OrphanKey.h"
#include "head/I2C.H"
/*
1.利用实验板和配件,设计一个时钟,时间显示在LCD1602上,并按秒更新,能够在实验板上设计3个按键调整时,分,秒。其功能为:功能选择键,数值增大和数值减小键。利用板上AT24C02设计实现断电保护显示数据的功能。
*/
/*
步骤:
1、设计一个中断,用来计时
2、设计一个字符生成函数,用来生成所需的时间
3、独立按键监测功能,用来监测按下了什么键
4、一个外部中断
5、一个断点保护的功能,其实就是通过I2C写入,读取数值
*/
//=========全局变量区============================================
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="12:23:12";
uchar code table1[]="I am a boy!";
sbit lcden=P2^7;//液晶使能端
sbit lcdrs=P2^6;//数据或命令控制(0代表命令,1代表数据)
sbit LCDWR=P2^5;//读写控制(0代表写,1代表读)
uchar num;
uchar FIRST_LINE=0x80;
uchar SECOND_LINE=0xc0;
uchar Current_Time[9];
uchar Hour,Minute,Second=0;//时、分、秒
sbit beer=P1^4;//蜂鸣器
// sbit
=============Clock.h=============
#ifndef __CLOCK_H__
#define __CLOCK_H__
//========全局变量区============================================
unsignedcharT_High_50ms=(65536-45872)/256;
unsignedintT_Low_50ms=(65536-45872)%256;
unsignedcharCount,Count_T1,Count_1s;//Count用来记录每50ms的计数,Count_T1用来记
//========全局变量区结束============================================
#endif
=============I2C.H=============
#ifndef __I2C_H__
#define __I2C_H__
#include
sbit sda=P2^0;
sbit scl=P2^1;
//========函数区============================================
voidnop();
voidinitI2C();
externvoidI2C_start();//开始信号
externvoidI2C_stop();//停止
externvoidI2C_respons();//应答
externvoidI2C_write_byte(unsignedchardate);
externunsignedcharI2C_read_byte();
externvoidI2C_write_address(unsignedcharaddress,unsignedchardate);
externunsignedcharI2C_read_address(unsignedcharaddress);
//========函数区结束============================================
#endif
=============OrphanKey.h=============
#ifndef __ORPHANKEY_H__
#define __ORPHANKEY_H__
sbit FUNCTION_KEY=P3^2;//功能键--按下暂停,再按开始
sbit Key_ADD=P3^3;//加1
sbit KEY_MINUS=P3^4;//减1
constbit PRESSED=0;//按下
bit SUSPEND=0;//0的时候运行,1的时候暂停
#endif
=============I2C.C=============
#include "head/I2C.h"
//=========全局变量区============================================
#define uchar unsigned char
#define uint unsigned int
bit I2C_write=0;//写24C02的标志;
unsignedcharsec,tcnt;
//=========全局变量区结束============================================
voidnop()
{;;}
/***********************************************************
I2C的初始化
***********************************************************/
voidinitI2C(){
sda=1;
nop();
scl=1;
nop();
}
voidI2C_start()//开始信号
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
}
voidI2C_stop()//停止
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}
voidI2C_respons()//应答
{
uchar i;
scl=1;
nop();
while((sda==1)&&(i<250))i++;
scl=0;
nop();
}
voidI2C_write_byte(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<1;
scl=0;
nop();
sda=CY;
nop();
scl=1;
nop();
}
scl=0;
nop();
sda=1;
nop();
}
uchar I2C_read_byte()
{
uchar i,k;
scl=0;
nop();
sda=1;
nop();
for(i=0;i<8;i++)
{
scl=1;
nop();
k=(k<1)sda;
scl=0;
nop();
}
returnk;
}
voidI2C_write_address(uchar address,uchar date)
{
I2C_start();
I2C_write_byte(0xa0);
I2C_respons();
I2C_write_byte(address);
I2C_respons();
I2C_write_byte(date);
I2C_respons();
I2C_stop();
}
uchar I2C_read_address(uchar address)
{
uchar date;
I2C_start();
I2C_write_byte(0xa0);
I2C_respons();
I2C_write_byte(address);
I2C_respons();
I2C_start();
I2C_write_byte(0xa1);
I2C_respons();
date=I2C_read_byte();
I2C_stop();
returndate;
}
=============lab8_1.c=================
#include
#include "head/Clock.h"
#include "head/OrphanKey.h"
#include "head/I2C.H"
/*
1.利用实验板和配件,设计一个时钟,时间显示在LCD1602上,并按秒更新,能够在实验板上设计3个按键调整时,分,秒。其功能为:功能选择键,数值增大和数值减小键。利用板上AT24C02设计实现断电保护显示数据的功能。
*/
/*
步骤:
1、设计一个中断,用来计时
2、设计一个字符生成函数,用来生成所需的时间
3、独立按键监测功能,用来监测按下了什么键
4、一个外部中断
5、一个断点保护的功能,其实就是通过I2C写入,读取数值
*/
//=========全局变量区============================================
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="12:23:12";
uchar code table1[]="I am a boy!";
sbit lcden=P2^7;//液晶使能端
sbit lcdrs=P2^6;//数据或命令控制(0代表命令,1代表数据)
sbit LCDWR=P2^5;//读写控制(0代表写,1代表读)
uchar num;
uchar FIRST_LINE=0x80;
uchar SECOND_LINE=0xc0;
uchar Current_Time[9];
uchar Hour,Minute,Second=0;//时、分、秒
sbit beer=P1^4;//蜂鸣器
// sbit
51单片机定时器时 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)