找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1863|回复: 0
打印 上一主题 下一主题
收起左侧

求助电压表分量程程序

[复制链接]
跳转到指定楼层
楼主

#include<reg52.h>
unsigned char smg_du[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit oe=P1^0;               
sbit eoc=P1^1;               
sbit st=P1^2;                       
sbit clk=P1^3;
unsigned int c=4;
unsigned int ad_data;
unsigned int s,a;               
void mDelay(unsigned int Delay)
{
        unsigned int i;
        for(;Delay>0;Delay--)
        {        
                for(i=0;i<54;i++) {;}
        }
}
void cbs()
{       
        switch(c)
        {
        case 1:
            s=1;
                break;
        case 2:
                s=4;
                break;
        case 3:
                s=10;
                break;
        case 4:
                s=20;
                break;
        }       
}
void smg_display(unsigned char dat)
{
        unsigned char i;
        unsigned int b;
        b=dat*1.0/255*500*s;
        for(i=0;i<4;i++)
        {
                P0 = 0x00;
                switch(i)
                {
                        case 0:
                                P0 = smg_du[b/10%10];                          //显示十分位
                                P2 = 0xfb;
                                break;
                        case 1:
                                P0 = smg_du[b/100%10]+0x80;                //显示个位
                                P2 = 0xfd;
                                break;
                        case 2:
                                P0 = smg_du[b/1000];                          //显示十位
                                P2 = 0xfe;
                                break;
                        case 3:
                                P0 = smg_du[b%10];                          //显示千分位
                                P2 = 0xf7;
                                break;         
                }
                mDelay(1);
        }
}
void start()
{
        st = 0;
        st = 1;
        st = 0;
        while(!eoc );
        oe = 1;
        P1=0x0f;
        ad_data=P3;
        a=ad_data*1.0/255*5*20;           //P3口输出值化成电压
        oe = 0;       
}
void chuli()
{
        if(a<5)
        {        c=1;
                P1=0x3f;
        }
        if(5<=a<20)
        {        c=2;
                P1=0x2f;
        }
        if(20<=a<50)
        {        c=3;
                P1=0x1f;
        }
        if(a<=50<100)
        {        c=4;
                P1=0x0f;
        }
}
void main()
{
        TMOD =0x02;
        TH0 = 65355/256;                       
        TL0 = 65355/256;
        EA = 1;
        ET0 = 1;
        TR0 = 1;
        while(1)
        {
                start();
                chuli();
                cbs();
                smg_display(P3);
        }
}

void timer0() interrupt 1
{
        clk = ~clk;
}



这个程序出不来  请问哪里错了,谢谢了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表