标题: 求助,PCF8591模块程序那里写的不对 [打印本页]
作者: tonysony8 时间: 2017-8-14 20:36
标题: 求助,PCF8591模块程序那里写的不对
用PCF8591模块,连接单片机,1602液晶显示,大师们帮忙看看那里写的不对,液晶只显示0000,初学者,谢谢!
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit scl=P2^6;
sbit sda=P2^7;
sbit rs=P2^0;
sbit rw=P2^1;
sbit lcden=P2^2;
uchar date;
uchar code table[]="0123456789";
void i2cinit();
void i2cstart();
void i2crespons();
void i2cstop();
void i2cwritebyte(uchar date);
uchar i2creadbyte();
void readi2c();
void write_com(uchar com);
void write_date(uchar date);
void lcdinit();
void lcdplay();
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
{
for(y=110;y>0;y--);
}
}
void i2cinit()
{
scl=1;
delay(5);
sda=1;
delay(5);
}
void i2cstart()
{
sda=1;
delay(5);
scl=1;
delay(5);
sda=0;
delay(5);
}
void i2crespons()
{
uchar i=0;
scl=1;
delay(5);
while(sda==1&&i<255)
{
i++;
}
scl=0;
delay(5);
}
void i2cstop()
{
sda=0;
delay(5);
scl=1;
delay(5);
sda=1;
delay(5);
}
void i2cwritebyte(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay(5);
sda=CY;
delay(5);
scl=1;
delay(5);
}
scl=0;
delay(5);
sda=1;
delay(5);
}
uchar i2creadbyte()
{
uchar i,k;
scl=0;
delay(5);
sda=1;
for(i=0;i<8;i++)
{
scl=1;
delay(5);
k=(k<<1|sda);
scl=0;
delay(5);
}
return k;
}
void readi2c()
{
uchar date;
i2cinit();
i2cstart();
i2cwritebyte(0x90);
i2crespons();
i2cwritebyte(0x01);
i2crespons();
i2cwritebyte(0x91);
i2crespons();
date=i2creadbyte();
i2cstop();
}
void write_com(uchar com)
{
rs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)
{
rs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void lcdinit()
{
rw=0;
write_com(0x38);
write_com(0x0c);
}
void lcdplay()
{
uchar qian,bai,shi,ge;
lcdinit();
qian=date/1000;
bai=date%1000/100;
shi=date%100/10;
ge=date%10;
write_com(0x80+0x00);
write_date(table[qian]);
write_com(0x80+0x01);
write_date(table[bai]);
write_com(0x80+0x02);
write_date(table[shi]);
write_com(0x80+0x03);
write_date(table[ge]);
}
void main()
{
readi2c();
while(1)
{
lcdplay();
}
}
作者: xu0801hua 时间: 2017-8-14 21:30
你参考这个例程
-
-
PCF8563芯片时序程序.doc
227.5 KB, 下载次数: 10
作者: zl2168 时间: 2017-8-25 17:17
本帖最后由 zl2168 于 2017-8-25 17:18 编辑
实例85 PCF8591 I2C串行A-D(1602显示)
实例85 PCF8591 I2C串行A-D.rar
(57.96 KB, 下载次数: 10)
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |