<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 實(shí)驗7 利用51單片機的定時(shí)器設計一個(gè)時(shí)鐘

實(shí)驗7 利用51單片機的定時(shí)器設計一個(gè)時(shí)鐘

作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò ) 收藏
1.利用實(shí)驗板和配件,設計一個(gè)時(shí)鐘,時(shí)間顯示在LCD1602上,并按秒更新,能夠在實(shí)驗板上設計3個(gè)按鍵調整時(shí),分,秒。其功能為:功能選擇鍵,數值增大和數值減小鍵。利用板上AT24C02設計實(shí)現斷電保護顯示數據的功能。
=============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用來(lái)記錄每50ms的計數,Count_T1用來(lái)記

//========全局變量區結束============================================
#endif

=============I2C.H=============
#ifndef __I2C_H__
#define __I2C_H__
#include
sbit sda=P2^0;
sbit scl=P2^1;
//========函數區============================================
voidnop();
voidinitI2C();
externvoidI2C_start();//開(kāi)始信號
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;//功能鍵--按下暫停,再按開(kāi)始
sbit Key_ADD=P3^3;//加1
sbit KEY_MINUS=P3^4;//減1
constbit PRESSED=0;//按下
bit SUSPEND=0;//0的時(shí)候運行,1的時(shí)候暫停

#endif

=============I2C.C=============
#include "head/I2C.h"
//=========全局變量區============================================

#define uchar unsigned char
#define uint unsigned int

bit I2C_write=0;//寫(xiě)24C02的標志;

unsignedcharsec,tcnt;

//=========全局變量區結束============================================
voidnop()
{;;}

/***********************************************************
I2C的初始化
***********************************************************/
voidinitI2C(){
sda=1;
nop();
scl=1;
nop();

}
voidI2C_start()//開(kāi)始信號
{
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.利用實(shí)驗板和配件,設計一個(gè)時(shí)鐘,時(shí)間顯示在LCD1602上,并按秒更新,能夠在實(shí)驗板上設計3個(gè)按鍵調整時(shí),分,秒。其功能為:功能選擇鍵,數值增大和數值減小鍵。利用板上AT24C02設計實(shí)現斷電保護顯示數據的功能。
*/

/*
步驟:
1、設計一個(gè)中斷,用來(lái)計時(shí)
2、設計一個(gè)字符生成函數,用來(lái)生成所需的時(shí)間
3、獨立按鍵監測功能,用來(lái)監測按下了什么鍵
4、一個(gè)外部中斷
5、一個(gè)斷點(diǎn)保護的功能,其實(shí)就是通過(guò)I2C寫(xiě)入,讀取數值
*/

//=========全局變量區============================================
#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;//讀寫(xiě)控制(0代表寫(xiě),1代表讀)
uchar num;
uchar FIRST_LINE=0x80;
uchar SECOND_LINE=0xc0;
uchar Current_Time[9];
uchar Hour,Minute,Second=0;//時(shí)、分、秒
sbit beer=P1^4;//蜂鳴器
// sbit led1=P1^3;

//=========全局變量區結束============================================


//=========函數區============================================

/***********************************************************
延時(shí)函數
參數說(shuō)明:
z代表要延時(shí)z ms
***********************************************************/
voiddelay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/***********************************************************
寫(xiě)命令或數據
參數說(shuō)明:
isRs=1代表寫(xiě)數據,isRs=0代表寫(xiě)命令
***********************************************************/
voidwrite(uchar mdata,uchar isRs)
{
lcdrs=isRs;
P0=mdata;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/***********************************************************
寫(xiě)命令
參數說(shuō)明:
data代表要寫(xiě)的命令
***********************************************************/
voidwrite_command(uchar com)
{
write(com,0);
}
/***********************************************************
寫(xiě)數據
參數說(shuō)明:
data代表要寫(xiě)的數據
***********************************************************/
voidwrite_data(uchar mdata)
{
write(mdata,1);
}

/***********************************************************
初始化時(shí)鐘
***********************************************************/
voidInitTime(){
//時(shí)間的轉換
Current_Time[0]=Hour/10+0;
Current_Time[1]=Hour%10+0;
Current_Time[2]=:;
Current_Time[3]=Minute/10+0;
Current_Time[4]=Minute%10+0;
Current_Time[5]=:;
Current_Time[6]=Second/10+0;
Current_Time[7]=Second%10+0;
Current_Time[8]=国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>