微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求大家帮忙看一下这个程序,给指点一下

求大家帮忙看一下这个程序,给指点一下

时间:10-02 整理:3721RD 点击:
下面这个程序我通过AD0809转换的在lcd1602上显示的,单片机是ATC89C52,AD0809 的输入端是一个滑动变阻器,我的目的就是在lcd上显示滑动变阻器上的电压,可每次显示的都是5v,ad转换的数字量就是的不到,大家给检查一下呗,是不是定时器的问题啊?先谢谢了!
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^0;//数据、命令选择引脚
sbit RW=P2^1;//读、写选择引脚
sbit E=P2^2;//使能信号
sbit OE=P1^0;
sbit EOC=P1^1;
sbit ST=P1^2;
sbit CLK=P1^3;
sbit C3=P1^4;
sbit C2=P1^5;
sbit C1=P1^6;
uchar i,temp,temp1,qian,bai,shi,ge;
float temp2;
uint temp3;
uchar code table1[]="I LIKE YOU!";
uchar code table[]="12345";
void DELAYMS(uint z)
{
        uint x,y;
                for(x=z;x>0;x--)
                        for(y=110;y>0;y--);
}
void wr_dictate(uchar dictate)//写指令
{
       
        RW=0;
        RS=0;
        P0=dictate;//把指令写入IR
        DELAYMS(2);
        E=1;
        DELAYMS(2);
        E=0;//但E由高变低时指令被写入寄存器
}
void wr_data(uchar date)//写数据
{
       
        RW=0;
        RS=1;
        P0=date;//把数据写入IR
        DELAYMS(2);
        E=1;
        DELAYMS(2);
        E=0;//但E由高变低时数据被写入寄存器
}
void inti_lcd()//初始化
{
        RS=0;
        wr_dictate(0x38);//设置数据总线为8位,字符字体为5*7,显示两行
        wr_dictate(0x0c);//开清屏,光标出现并闪烁
       
        wr_dictate(0x80);//第一行的首地址
                
}
void main()
{         
        inti_lcd();
       
        TMOD=0X01;//定时器0,工作方式1
        TH0=(65536-5000)/256;//装初值11.0592M晶振定时50ms
        TL0=(65536-5000)%256;
        ET0=1;//允许定时器0中断
        EA=1;//开总中断
        TR0=1;//启动定时器0
        while(1)
        {
               
                C3=1;C2=1;C1=0;
                ST=0;
                ST=1;
                ST=0;
                while(EOC==0);
                OE=1;
                DELAYMS(1);
                OE=0;
                temp1=0X7F;
                temp2=temp1*1.0/255*5000;
       
                wr_data(temp2/1000+'0');
                wr_dictate(0x81);
                wr_data(0x2e);
                temp3=temp2;
                wr_dictate(0x82);
                wr_data(bai=temp3%1000/100+'0');
                wr_dictate(0x83);
                wr_data(shi=temp3%1000%100/10+'0');
                wr_dictate(0x84);
                wr_data(ge=temp3%1000%100%10+'0');
                wr_dictate(0x85);
                wr_data(0x56);
                wr_dictate(0x80);
        }
               
}
void time0_int() interrupt 1
{
        TH0=(65536-5000)/256;//装初值11.0592M晶振定时50ms
        TL0=(65536-5000)%256;
       
        CLK=!CLK;
}

AD0809怎么启动不了啊,程序有错误吗

看看
学习了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top