zxx.c

来自「C51简易数字电压表的设计」· C语言 代码 · 共 97 行

C
97
字号
#include "reg51.h"
#define data_point P0
sbit EOC=P2^0;
sbit ADDA=P2^1;
sbit ADDB=P2^2;
sbit ADDC=P2^3;
sbit OE=P2^5;
sbit START=P2^6;
sbit CLK=P2^7;
sbit ALE=P2^6;
unsigned char disp[3]={0,0,0};
char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char t0count=0;
void display()
{
    unsigned char i,j,k=0x01;
    for(i=0;i<3;i++)
    {
    P1=1;
    P3=disp[i];
    P1=k;
    k<<=1;
    for(j=200;j>0;j--);
    }
    P1=0;
}
unsigned char ADC0808()
{
    unsigned char d;
    ADDC=0;
    ADDB=0;
    ADDA=0;
    TR1=1;
    ALE=1;ALE=0;
    START=1;START=0;
    
    while(EOC==0);
    OE=1;
    d=data_point;
    OE=0;
    TR1=1;
    return d;
}
void covert(unsigned char x)
{disp[0]=dispcode[x/50];
disp[0]=disp[0]+0x80;
x=(x%50)*2;
disp[1]=dispcode[x/10];
disp[2]=dispcode[x%10];

    /*disp[0]=dispcode[0];
    disp[0]=disp[0]|0x80;
    x=(x%50)*2;
    disp[1]=dispcode[x/10];
    disp[2]=dispcode[x%10];*/

/*  disp[0]=dispcode[x/100];
//  disp[0]=disp[0];
    
    disp[1]=dispcode[x%100/10];
    disp[2]=dispcode[x%100%10];
    //dispcode[x/100];*/
}
void main()
{
    TMOD=0x21;
    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;
    TH1=256-2;
    ET0=1;
    ET1=1;
    EA=1;
    TR0=1;
    OE=0;
    START=0;
    EOC=1;
    while(1)
    {
        display();
    }
}
void time0() interrupt 1
{
    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;
    t0count++;
    if(t0count==100)
    {
        t0count=0;
        covert(ADC0808());
    }
}
void time1() interrupt 3
{
    CLK=~CLK;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?