找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1296|回复: 1
收起左侧

51单片机简易电压表程序

[复制链接]
ID:782021 发表于 2020-6-17 14:15 | 显示全部楼层 |阅读模式
#include <reg51.h>
#define uchar unsigned char
uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar count,getdata;
unsigned int voltage;
sbit ST_A=P3^0;
sbit EOC=P3^1;
sbit OE=P3^2;
sbit CLK=P3^3;

sbit ADD_A=P3^5;
sbit ADD_B=P3^6;
sbit ADD_C=P3^7;

void delayms(uchar ms)//鏁扮爜绠℃壂鎻忓欢鏃?
{
  uchar i,j;
  for (j=ms;j>0;j--)
  for (i=60;i>0;i--);
  }

  void display (void)
  {
    P2=0xff;
        P0=dispcode[voltage/100]+0x80;
        P2=0Xfb;
        delayms(10);

        P2=0xff;
        P0=dispcode[voltage%100/10];
        P2=0Xfd;
        delayms(10);

        P2=0xff;
        P0=dispcode[voltage%10];
        P2=0Xfe;
        delayms(10);
        }

        main()
        {
          IE=0x8a;
          TMOD=0x21;

          TH0=(65536-50000)/256;
          TL0=(65536-50000)%256;

          TH1=256-2;
          TL1=256-2;

          TR0=1;
          TR1=1;

          ST_A=0;
          OE=0;
          ADD_A=0;
          ADD_B=0;
          ADD_C=0;

          while(1)
          {voltage=getdata*100;
           voltage=voltage/51;
           display();
           }
         }

         void time0() interrupt 1
         {count++;
          TH0=(65536-50000)/256;
          TL0=(65536-50000)%256;
          if(count==20)
          { count=0;
            ST_A=1;
                ST_A=0;
                while(EOC==0);
                OE=1;
                getdata=P1;
                OE=0;
                }
                }
                void time1() interrupt 3
                {
                   CLK=~CLK;
                }

回复

使用道具 举报

ID:1087836 发表于 2023-9-27 09:46 | 显示全部楼层
请问这里具体用到的ADC芯片还有没有介绍啊?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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