AT24C02 C语言驱动程序—LCD1602 显示
AT24C02 C语言驱动程序—LCD1602 显示
AT24C02 C语言驱动程序—LCD1602 显示 -|zl0801 发表于 2005-8-25 9:21:00
//AT24C02 EEPROM drive program
//for 51 mcu with lcd1602 as display
//designed by zhaoliang
//2005-6-14 21:02
#i nclude " reg51.h "
#i nclude " intrins.h "
/********************************************************************/
//lcd part
#define LINE1 0
#define LINE2 1
#define LINE1_HEAD 0x80
#define LINE2_HEAD 0xC0
#define LCD_DELAY_TIME 40
#define DATA_MODE 0x38
#define OPEN_SCREEN 0x0C
#define DISPLAY_ADDRESS 0x80
#define CLEARSCREEN LCD_en_command(0x01)
//common part
#define HIGH 1
#define LOW 0
#define TRUE 1
#define ZERO 0
//at24c02 part
#define WRITE24C02 0xA0
#define READ24C02 0xA1
//I2C part
#define ACK 0
#define NO_ACK 1
#define MSB 0x80
/********************************************************************/
//change this part at different board
#define LCDIO P2
sbit LCD1602_RS=P0^7; //data command select 1 data 0 command pin 4
sbit LCD1602_RW=P0^6; //read write select 1 read 0 write pin 5
sbit LCD1602_EN=P0^5; //LCD enable signal pin 6
sbit SDA=P2^3; //AT24C02 serial data pin 5
sbit SCLK=P2^2; //AT24C02 serial clock pin 6
/********************************************************************/
void LCD_delay(void);//lcd delay function
void LCD_en_command(unsigned char command);//write command function
void LCD_en_dat(unsigned char temp);//write data function
void LCD_set_xy( unsigned char x, unsigned char y );//set display address function
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat);//write lcd a character function
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);//write lcd string function
void LCD_init(void);//lcd initize function
/********************************************************************/
void I2C_delay(void);//I2C delay function
void I2C_start(void);//I2C start function
void I2C_stop(void);//I2C stop function
void I2C_send_ack(bit k);//I2C send responsion function
void I2C_write_byte(unsigned char dat);//I2C bus write byte function
unsigned char I2C_read_byte(void);//I2C bus read byte function
/********************************************************************/
void AT24C02_write(unsigned char address,unsigned char dat);//write 24c02 information function
unsigned char AT24C02_read(unsigned char address);//read 24c02 information function
/********************************************************************/
void Mcu_init(void);//system initize funcition
void delay_nms(unsigned int n);//delay functinon
unsigned char count[2];
/********************************************************************/
void main()
{
unsigned char temp;
Mcu_ini
t();
while(1)
{
AT24C02_write(0x00,count[1]);
temp=AT24C02_read(0x00);
LCD_write_string(0x00,LINE1,"AT24C02 TEST");
LCD_writ
AT24C02 C语言驱动程序—LCD1602 显示
e_char(0x0e,LINE1,(temp/10)|0x30);
LCD_write_char(0x0f,LINE1,(temp%10)|0x30);
LCD_write_string(0x00,LINE2,"TIMER0 JISHU");
LCD_write_char(0x0e,1,(count[1]/10)|0x30);
LCD_write_char(0x0f,1,(count[1]%10)|0x30);
AT24C02_write(0x00,count[1]);
}
}
/***********************************************************************/
void timer0(void) interrupt 1 using 1
{
TH0=-(12000/256);
TL0=-(12000%256);
count[0]=count[0]+1;
if(count[0]==100)
{
count[0]=0;
count[1]=count[1]+1;
if(count[1]==99)
count[1]=0;
}
}
/***********************************************************************/
void Mcu_init(void)
{
TMOD=0x11;
TH0=-(12000/256);
TL0=-(12000%256);
EA=HIGH;
ET0=HIGH;
TR0=HIGH;
LCD_init();
}
/***********************************************************************/
/******************************** I2C PART **************************/
void I2C_delay(void)
{
_nop_();_nop_();_nop_();_nop_();
}
/***********************************************************************/
void I2C_start(void)
{
SDA=HIGH;
_nop_();
SCLK=HIGH;
_nop_();
SDA=LOW;
_nop_();
SCLK=LOW;
_nop_();
}
/***********************************************************************/
void I2C_stop(void)
{
SDA=LOW;
_nop_();
SCLK=HIGH;
_nop_();
SDA=HIGH;
_nop_();
SCLK=LOW;
_nop_();
}
/***********************************************************************/
void I2C_send_ack(bit k)
{
SDA=k;
I2C_delay();
SCLK=HIGH;
I2C_delay();
SCLK=LOW;
}
/***********************************************************************/
void I2C_write_byte(unsigned char dat)
{
unsigned char i;
for (i=8;i>0;i--)
{
SCLK=LOW;
I2C_delay();
SDA=(bit)(dat&MSB);
dat<<=1;
I2C_delay();
SCLK=HIGH;
I2C_delay();
}
SCLK=LOW;
}
/***********************************************************************/
unsigned char I2C_read_byte(void)
{
unsigned char i,dat;
for (i=0;i<8;i++)
{
SCLK=LOW;
I2C_delay();
SDA=HIGH;
I2C_delay();
SCLK=HIGH;
dat<<=1;
I2C_delay();
if(SDA)
dat++;
}
SCLK=LOW;
return (dat);
}
/***********************************************************************
…… 此处隐藏:4499字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




