單片機I2C通信及LCD1602顯示C程序
/*
*功能: 利用iic發送數據,在數碼管上顯示,并通過串口發生到上位機,
*且在lcd1602上顯示"Han Zhu Ying Xue"
*"1754410821@qq.com";
*作者: 徐冉
*日期: 2013-05-29-22:21 2013-5-2919:15 - 22:17
*備注: 程序已經順利通過調試,耗時3小時。
*/
/*********51hei開發板***********/
/********AT89C52-RC MCU***********/
#include
#define write_add 0xa0
#define read_add 0xa1
typedef unsigned int uint;
typedef unsigned char uchar;
sbit wela = P2^7;
sbit dula = P2^6;
//i2c
sbit SCL = P2^1;
sbit SDA = P2^0;
//LCD1602
sbit RS = P1^0;
sbit RW = P1^1;
sbit EN = P2^5;
sbit BUSY = P0^7;
uchar num,flag;
uchar code string_1[] = "Han Zhu Ying Xue";
uchar code string_2[] = "1754410821@qq.com";
uchar code table[] = {
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F //"9"
};
/********************************************************************/
/**********************LCD1602底層驅動程序***************************/
/********************************************************************/
//delay: 延時xms
void delay(uint xms)
{
uchar i, j;
for(i = 0; i < xms; i++)
for(j = 0; j < 110; j++);
}
//wait:判忙等待
void wait()
{
P0 = 0xff;
do
{
RS = 0;
RW = 1;
EN = 0;
EN = 1;
}while(BUSY == 1);
EN = 0;
}
//write:cmd寫入命令
void write_cmd(uchar cmd)
{
RS = 0;
RW = 0;
EN = 0;
P0 = cmd;
EN = 1;
EN = 0;
}
//write:data 寫入數據
void write_data(uchar datas)
{
RS = 1;
RW = 0;
EN = 0;
P0 = datas;
EN = 1;
EN = 0;
}
//send:string 發送一串字符
void send_string(uchar* str)
{
while(*str !=
主站蜘蛛池模板:
徐汇区|
东阿县|
丁青县|
定州市|
玉屏|
雅江县|
巴里|
中山市|
图木舒克市|
莆田市|
天柱县|
和政县|
大宁县|
桦甸市|
自治县|
江安县|
濮阳县|
利津县|
鄢陵县|
封开县|
潜山县|
中宁县|
白玉县|
临海市|
剑川县|
蛟河市|
马关县|
兰西县|
红河县|
翼城县|
常宁市|
通州区|
沈丘县|
甘洛县|
望都县|
平潭县|
吉水县|
漳平市|
商丘市|
泰安市|
封丘县|