找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2282|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

求助,PCF8591模塊程序那里寫(xiě)的不對(duì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
用PCF8591模塊,連接單片機(jī),1602液晶顯示,大師們幫忙看看那里寫(xiě)的不對(duì),液晶只顯示0000,初學(xué)者,謝謝!
#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();       
        }       
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:227639 發(fā)表于 2017-8-14 21:30 | 只看該作者
你參考這個(gè)例程

PCF8563芯片時(shí)序程序.doc

227.5 KB, 下載次數(shù): 10

回復(fù)

使用道具 舉報(bào)

板凳
ID:111634 發(fā)表于 2017-8-25 17:17 | 只看該作者
本帖最后由 zl2168 于 2017-8-25 17:18 編輯

實(shí)例85  PCF8591 I2C串行A-D(1602顯示)
實(shí)例85 PCF8591 I2C串行A-D.rar (57.96 KB, 下載次數(shù): 10)

Proteus仿真一下,確認(rèn)有效。
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書(shū)上看了。到圖書(shū)館借,或到新華書(shū)店翻閱,或到網(wǎng)上書(shū)店打折購(gòu)買(mǎi)。


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表