打印

stc单片机与AD0832

[复制链接]
1861|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunsigeshuai|  楼主 | 2011-6-1 20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我STC12C5A60S2芯片的P1口接收ADC0832芯片反馈回来的数字信号,不知道为什么总是在LCD上显示不出来,同样的程序我用stc89C52芯片反而能显示出来。我知道本芯片的P1口本身有AD转换功能,但由于电路设计原因,我这里只需要其作为单片机普通的I/O就足够了,问题是,收不到数据,还是收到显示不出?是不是芯片内部周期太快了,AD没返回数据?还是什么问题呀???跪求请教?????大侠呀!!!!!!!以下是所写的程序#include<reg52.h>//用LCD1602显示AD转换#define uint unsigned int#define uchar unsigned char//sbit en=P2^4;//使能//sbit rs=P2^2;//数据命令//sbit rw=P2^3;//读写sbit en=P2^5;//使能sbit rs=P2^3;//数据命令sbit rw=P2^4;//读写//sbit cs=P1^4;//AD三个IO口//sbit clk=P1^5;//sbit DI=P1^6;//sbit DO=P1^6;sbit cs=P1^4;sbit clk=P1^5;sbit DI=P1^6;sbit DO=P1^6;sbit guanmin=P1^7;sbit deng1=P2^6;uchar code table1[]="shu zhi=:";uchar code table2[]="mo ni =:";uchar code table3[]=".";void delay(uint z)//时间延迟函数{        uint x,y;        for(x=z;x>0;x--)                for(y=110;y>0;y--);}void write_com(uchar com)//led1602写指令、命令初始化函数{        rs=0;        P0=com;        delay(5);        en=1;        delay(5);        en=0;}void write_datae(uchar datae)//led1602写数据初始化函数{        rs=1;        P0=datae;        delay(5);        en=1;        delay(5);        en=0;}void init_LCD()//初始化LCD{        en=0;        rw=0;        write_com(0x38);//显示模式控制        write_com(0x0c);//显示开关及光标控制        write_com(0x06);//数据指针设置        write_com(0x01);//清零        write_com(0x80);}uint init_AD()//初始化并读出AD的数{                uint a=0;        uint b=0;        uint i;        cs = 1;//关掉AD;        clk = 0;        DI = 0;        cs = 0;//开启芯片        DI = 1;//开始位        clk = 0;        clk = 1;        DI = 1;//并分/单通道        clk =0;        clk = 1;        DI= 0;//通道选择位        clk = 0;        clk = 1;        DI = 1;//空闲位        clk = 0;        clk = 1;                //读取数据        for(i=0;i<8;i++)//读第一次数据        {                clk=1;                clk=0;                if(DI)                        a|= 0x80 >> i;                        }        for(i=0;i<8;i++)//读第一次数据        {                if(DI)                        b|= 0x01 << i;                                clk=1;                clk=0;        }        cs=1;        if(a==b)//两次数据校验                return a;        else                return 0;}void write_AD(uchar add,uchar num){                write_com(0x80+add);        write_datae(0x30+num);        }void main(){                uint d6=0,d5=0,d4=0,d2=0,d1=0,d0=0,j=0,k=0,n=0,i=0;        uint m=0;        init_LCD();                while(1)        {                if(guanmin==1)                {                        write_com(0x80+14);                        write_datae(0x30+1);                }                else                {                        write_com(0x80+14);                        write_datae(0x30+0);                        }                m=init_AD();                d6=m/100;                d5=m/10%10;                d4=m%10;                n=m*1.0*5*100/255;                d2=n/100;                d1=n/10%10;                d0=n%10;                write_com(0x80+0x40);                for(i=0;i<9;i++)                        {                                write_datae(table1[i]);                        }                write_AD(9+0x40,d6);                write_AD(10+0x40,d5);                write_AD(11+0x40,d4);                write_com(0x80);                for(j=0;j<8;j++)                {                        write_datae(table2[j]);                }                write_com(0x80+0x09);                write_datae(table3[k]);                write_AD(8,d2);                write_AD(10,d1);                write_AD(11,d0);        }}

相关帖子

沙发
sunsigeshuai|  楼主 | 2011-6-1 20:03 | 只看该作者
我STC12C5A60S2芯片的P1口接收ADC0832芯片反馈回来的数字信号,不知道为什么总是在LCD上显示不出来,同样的程序我用stc89C52芯片反而能显示出来。我知道本芯片的P1口本身有AD转换功能,但由于电路设计原因,我这里只需要其作为单片机普通的I/O就足够了,问题是,收不到数据,还是收到显示不出?是不是芯片内部周期太快了,AD没返回数据?还是什么问题呀???跪求请教?????大侠呀!!!!!!!

使用特权

评论回复
板凳
sunsigeshuai|  楼主 | 2011-6-1 20:06 | 只看该作者
本想把程序也发上去
谁知道看完以后一乱!!!!!!!
我STC12C5A60S2芯片的P1口接收ADC0832芯片反馈回来的数字信号,不知道为什么总是在LCD上显示不出来,同样的程序我用stc89C52芯片反而能显示出来。我知道本芯片的P1口本身有AD转换功能,但由于电路设计原因,我这里只需要其作为单片机普通的I/O就足够了,问题是,收不到数据,还是收到显示不出?是不是芯片内部周期太快了,AD没返回数据?还是什么问题呀???跪求请教?????大侠呀!!!!!!!
跪求赐教!!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

14

帖子

1

粉丝