通過51單片機實現(xiàn)電子時鐘功能并通過LCD1602顯示
實驗截圖如下:
實驗中涉及的硬件:51單片機,LCD1602模塊,EEPROM AT24C02型號一個,按鍵3個,蜂鳴器一個
其中LCD1602模塊引腳定義如下:
EEPROM引腳連接情況如下:
軟件環(huán)境:uVision4(Keil_C51_V9.00(點擊下載)).rar,Win7Sp1X64
源代碼如下:
****************************************************************
author:lee yang
data:2011/11/12
e-mail;liyangdut@live.cn
硬件接口定義:
sda?P2^0; scl?P2^1;
s1=P3^0; //定義按鍵--功能鍵
sbit s2=P3^1; //定義按鍵--增加鍵
sbit s3=P3^2; //定義按鍵--減小鍵
sbit rs=P2^4; //定義1602液晶RS端
sbit lcden=P2^6;//定義1602液晶LCDEN端
sbit rw=P2^5; //定義1602液晶R/W端
sbit beep=P2^3; //定義蜂鳴器端
**********************************************************************
#include//包含52單片機頭文件
#define uchar unsigned char
#define uint unsigned int
bit write=0; //寫24C02的標志;
sbit sda=P2^0;
sbit scl=P2^1;
void delay0()
{ ;; }
void start() //開始信號
{
sda=1;
delay0();
scl=1;
delay0();
sda=0;
delay0();
}
void stop() //停止
{
sda=0;
delay0();
scl=1;
delay0();
sda=1;
delay0();
}
void respons() //應(yīng)答
{
uchar i;
scl=1;
delay0();
while((sda==1)&&(i<250))i++;
scl=0;
delay0();
}
void init_24c02()//IIC初始化函數(shù)
{
sda=1;
delay0();
scl=1;
delay0();
}
void write_byte(uchar date)//寫一個字節(jié)函數(shù)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
sda=CY;
delay0();
scl=1;
delay0();
}
scl=0;
delay0();
sda=1;
delay0();
}
uchar read_byte()//讀一個字節(jié)函數(shù)
{
uchar i,k;
scl=0;
delay0();
sda=1;
delay0();
for(i=0;i<8;i++)
{
scl=1;
delay0();
k=(k<<1)|sda;
scl=0;
delay0();
}
return k;
}
void write_add(uchar address,uchar date)//指定地址寫一個字節(jié)
{
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
關(guān)鍵詞:
51單片機電子時鐘LCD1602顯
評論