单片机实现多媒体播放在液晶屏上显示图片动画文字和播放音乐辅程序2.docx
- 文档编号:26930492
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:11
- 大小:15.36KB
单片机实现多媒体播放在液晶屏上显示图片动画文字和播放音乐辅程序2.docx
《单片机实现多媒体播放在液晶屏上显示图片动画文字和播放音乐辅程序2.docx》由会员分享,可在线阅读,更多相关《单片机实现多媒体播放在液晶屏上显示图片动画文字和播放音乐辅程序2.docx(11页珍藏版)》请在冰豆网上搜索。
单片机实现多媒体播放在液晶屏上显示图片动画文字和播放音乐辅程序2
附录四
24C02.C
#include"REG51F.h"
#include"intrins.h"
#include"USEH1.h"
#include"24c02.h"
//读写控制命令
//constucharWR24C02=0xA0;//EEPROM地址+写命令
//constucharRD24C02=0xA1;//EEPROM地址+读命令
#defineWR24C020xA0
#defineRD24C020xA1
//用户变量声明
bitErrorBit;//读写错误标志1错误0正确
ucharErrorCode;//错误码
voidStart(void);
voidStop(void);
voidAck(void);
voidNoAck(void);
voidTestAck(void);
voidWriteI2c(uchardate);
ucharReadI2c(void);
//voidDelayMs(uchartime);
/***************************************
*函数名称:
voidStart(void)
*功能描述:
读写开始
*输入:
无
*输出:
无
*全局变量:
I2C_SCL,I2C_SDA
*调用模块:
无
****************************************/
voidStart(void)
{
I2C_SDA=1;//起始条件的数据信号
_nop_();
I2C_SCL=1;//起始条件时钟信号
_nop_();//信号建立时间>4.7us
_nop_();
_nop_();
_nop_();
_nop_();
I2C_SDA=0;//起始信号
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
I2C_SCL=0;//钳住I2C总线,准备发送或者接受数据
_nop_();
_nop_();
}
/***************************************
*函数名称:
voidStop(void)
*功能描述:
读写结束
*输入:
无
*输出:
无
*全局变量:
I2C_SCL,I2C_SDA
*调用模块:
无
****************************************/
voidStop(void)
{
I2C_SDA=0;//结束条件的数据信号
_nop_();
I2C_SCL=1;//结束条件的时钟信号
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
I2C_SDA=1;//结束信号
_nop_();
_nop_();
_nop_();
_nop_();
}
/***************************************
*函数名称:
voidAck(void)
*功能描述:
正确应答,读一个字节后必须应答
*输入:
无
*输出:
无
*全局变量:
I2C_SCL,I2C_SDA
*调用模块:
无
****************************************/
voidAck(void)
{
I2C_SDA=0;
_nop_();
_nop_();
I2C_SCL=1;
_nop_();
_nop_();
_nop_();
//_nop_();
//_nop_();
I2C_SCL=0;
_nop_();
_nop_();
I2C_SDA=1;
_nop_();
_nop_();
}
/***************************************
*函数名称:
voidNoAck(void)
*功能描述:
无应答
*输入:
无
*输出:
无
*全局变量:
I2C_SCL,I2C_SDA
*调用模块:
无
****************************************/
voidNoAck(void)
{
I2C_SDA=1;
_nop_();
_nop_();
I2C_SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
I2C_SCL=0;
_nop_();
_nop_();
}
/***************************************
*函数名称:
voidTestAck(void)
*功能描述:
读写错误测试,写一个字节应该测试应答信号
*输入:
无
*输出:
返回一个位
*全局变量:
I2C_SCL,I2C_SDA
*调用模块:
无
****************************************/
voidTestAck(void)
{
I2C_SDA=1;
_nop_();
_nop_();
I2C_SCL=1;
_nop_();
_nop_();
_nop_();
ErrorBit=I2C_SDA;
I2C_SCL=0;
_nop_();
_nop_();
}
/***************************************
*函数名称:
voidWriteI2c(uchardate)
*功能描述:
写I2C
*输入:
待送数据,高字节先送
*输出:
无
*全局变量:
I2C_SCL,I2C_SDA
*调用模块:
无
****************************************/
voidWriteI2c(uchardate)
{
uchari;
for(i=0;i<8;i++)
{
I2C_SDA=date&0x80;//送数据到数据线上
date<<=1;
_nop_();
I2C_SCL=1;//置时钟信号为高电平,使数据有效
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
I2C_SCL=0;
_nop_();
_nop_();
}
}
/***************************************
*函数名称:
ucharReadI2c(void)
*功能描述:
读I2C
*输入:
无
*输出:
返回一个字节的数据,高字节在前
*全局变量:
I2C_SCL,I2C_SDA
*调用模块:
无
****************************************/
ucharReadI2c(void)
{
uchari;
ucharbyte=0;
for(i=0;i<8;i++)
{
I2C_SCL=0;//置时钟为低电平,准备接受数据
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
I2C_SCL=1;//置时钟为高电平,使数据线数据有效
_nop_();
_nop_();
byte<<=1;
byte|=I2C_SDA;
_nop_();
_nop_();
I2C_SCL=0;
}
return(byte);
}
/***************************************
*函数名称:
voidDelayMs(uchartime)
*功能描述:
延时
*输入:
延时时间
*输出:
无
*全局变量:
无
*调用模块:
无
****************************************/
/*voidDelayMs(uchartime)
{
uchari;
do
{
for(i=0;i<125;i++);//*延时8usx125=1ms
}
while(time--);
}*/
/***************************************
*函数名称:
voidWriteDate(ucharStartAddress,uchar*date,ucharbytes)
*功能描述:
写数据
*输入:
数据开始地址,保存数据指针,数据字节数
*输出:
无
*全局变量:
无
*调用模块:
Start(),WriteI2c(),Stop(),TestAck()
*注意事项:
调用之前,需要定义一个数组,用来存待发送的数据
****************************************/
voidWriteDate(ucharStartAddress,uchar*date,ucharbytes)
{
uchari=0;
Start();
WriteI2c(WR24C02);
TestAck();
WriteI2c(StartAddress);
TestAck();
for(i=0;i { WriteI2c(*date); TestAck(); date++; } Stop(); //DelayMs(20); } /*************************************** *函数名称: voidReadDate(ucharStartAddress,uchar*date,ucharbytes) *功能描述: 读数据 *输入: 数据开始地址,读取数据指针,数据字节数 *输出: 无 *全局变量: 无 *调用模块: Start(),WriteI2c(),ReadI2c(),Ack(),NoAck(),Stop(),TestAck() *注意事项: 调用之前,需要定义一个数组,用来存读取的数据 ****************************************/ voidReadDate(ucharStartAddress,uchar*date,ucharbytes) { uchari; Start(); WriteI2c(WR24C02); TestAck(); WriteI2c(StartAddress); TestAck(); Start(); WriteI2c(RD24C02); TestAck(); for(i=0;i { *date=ReadI2c(); Ack(); date++; } NoAck(); Stop(); //DelayMs(10);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实现 多媒体 播放 液晶屏 显示 图片 动画 文字 音乐 程序