PCF8576C及PCF8566T的C51驱动程序新编_第1页
PCF8576C及PCF8566T的C51驱动程序新编_第2页
PCF8576C及PCF8566T的C51驱动程序新编_第3页
PCF8576C及PCF8566T的C51驱动程序新编_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PCF8576C/PCF8566T的C51驱动程序新编原文载本人空间,以下为应用程序:/********************************************************************STC单片机驱动PCF8566/PCF8576演示程序:wannenggong原创

2013/9/28控制器件:STC12C5A32S2

受控器件PCF8576或PCF8566应用此程序前请浏览受控器件的数据手册或先了解器件的应用方法注:单片机实验板的P0口外接有8*10K的上拉排电阻*********************************************************************/#include<STC12C5A60S2.H>#defineucharunsignedchar

#defineuintunsignedint#definePCF8566

0x7C//被控器总线地址//#definePCF8576

0x72#definePCF_MODE10xC8//1/3偏置4背极SA0=0显示方式命令字//#definePCF_MODE20xC9//SA0=1静态显示方式命令字#defineSAX0xE0//A0,A1,A2的编码

单芯片时为000

sbitSDA=P0^1;

//定义模拟I2C数据传送端口sbitSCL=P0^2;

//定义模拟I2C时钟控制端口ucharwei=6;//LCD数码位数设定/********************************************************************/ucharDigit[]={0xd7,0x06,0xe3,0xa7,0x36,0xb5,0xf5,0x17,0xf7,0xb7,0xd7};//{0,1,2,3,4,5,6,7,8,9,0}字形码;其定义方法参见硬件接线图。/********************************************************************///延时程序==总线专用==1T/12MHz延时5微秒=====voiddelay(){

uchara,b;

for(b=3;b>0;b--)

for(a=8;a>0;a--);}//延时程序==长延时==1T/12MHz延时time毫秒=====voiddelay_long(uinttime){uchara,b,c;for(c=time;c>0;c--){for(b=129;b>0;b--)

for(a=45;a>0;a--);}}/*********************************************************启动总线函数名称:START描述:启动I2C总线子程序--发送I2C起始条件*********************************************************/voidSTART(){SDA=1;delay();

SCL=1;delay();

SDA=0;delay();

SCL=0;

delay();}/*********************************************************停止总线函数名称:STOP描述:停止I2C总线子程序--发送I2C总线停止条件*********************************************************/voidSTOP(){SDA=0;

delay();SCL=1;delay();

SDA=1;delay();

SCL=0;

delay();}/********************************************************应答信号名称:ACK描述:响应器件的应答*********************************************************/voidACK(){SDA=1;

delay();

SCL=1;

delay();

SCL=0;

delay();

}

/*********************************************************发送一个字节函数名称:SendByte描述:字节数据传送子程序发送一个字节数据或地址给被控器移位发送数据完成后发送总线应答信号*********************************************************/voidSendByte(ucharData){uchari=8;for(i=8;i>0;i--)

{if((Data&0x80)==0x80)//提取数据最高位判断是1或是0SDA=1;//如果数据是1就模拟发送1elseSDA=0;//否则模拟发送0delay();SCL=1;//模拟时钟脉冲高电平delay();SCL=0;//形成时钟脉冲下跳沿完成一位数据发送delay();Data=Data<<1;delay();}//8次循环后完成1个完整数据字节8位的发送

ACK();//提供总线应答信号}/**********************************************************************发送显示数据函数名称:Display_Data描述:发送指令或数据dat注::1.所有总线应答信号均由字节发送函数SendByte(ucharData)提供2.被控器件地址是器件在总线上的固有命令字、由器件给定、受SA0位接线的影响3.除总线地址指令外其他指令可任意排列、需要注意的是排列在最后的指令使C=0、不是最后一条指令的要使C=14.装载数据指针指令如果不在最后一条指令的位置、因C=1为0x80、否则为0x005.不闪烁命令字在最后的指令位置时为0x70、否则应为0xf0若不需要闪烁设置、可以免除此指令6.单器件应用时可以不发送器件地址指令***********************************************************************/voidDisplay_Data(uchardat){uchari=0;START();

//启动总线/*发送m个指令*/SendByte(PCF8566);

//发送被控器总线地址SendByte(PCF_MODE1);//工作方式设定SendByte(SAX);//总线上多器件时的器件地址SendByte(0x80);

//发送装载数据指针SendByte(0x70);

//不闪烁命令字为最后一条指令/*发送n个显示数据*/for(i=0;i<wei;i++){SendByte(dat);delay();}STOP();}/********************************************主函数********************************************/voidmain(void)

{delay_long(50);//等待器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论