找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用单片机+ADC0808做电压表,能测试0~5v的电压,一点点的误差 仿真代码

[复制链接]
跳转到指定楼层
楼主
附件里有做好源码和仿真

单片机程序:
//功能:晶振11.0592M,通过采集模拟信号,让数码管显示当前电压//作者: 康晓龙
//单位: 单片机协会
//版本号:1.0
#include<reg51.h>
sbit duancun= P2^1 ;         //控制锁存器段选
sbit weicun= P2^2;                 //控制锁存器位选
sbit OE  = P1^0;  //输出使能,OE=0高阻,OE=1 ADC转换结果输出到单片机
sbit ST  = P1^2;  //启动信号,上升沿复位清零ADC,下降沿启动转换,低电平保持转换
sbit ALE  = P1^1;         
sbit OEC  = P1^3;
sbit p07  = P0^7;
#define uint unsigned int
#define uchar unsigned char

void delay(uint x)
{
        while(x--);        
}
/**********************************
函数名:xianshi()
变量:i
功能:处理 i的数据 ,让i能够显示到数码管上
***********************************/
void xianshi(uint i)        
  {                  unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,
                              0x99,0x92,0x82,0xf8,0x80,0x90};
           unsigned char code led[]={0x00,0x01,0x02,0x04,
                           0x08,0x10,0x20,0x40,0x80};
           delay(50);
                   duancun=1;
                   P0=duan[i%10];         
                   duancun=0;
                   weicun=1;
                   P0=led[8];
                   weicun=0;
                    P0=0xff;

                   delay(50);
                   duancun=1;
                   P0=duan[i/10%10];
                   duancun=0;
                   weicun=1;
                   P0=led[7];
                   weicun=0;
                    P0=0xff;

                   delay(50);
                   duancun=1;
                   P0=duan[i/100%10]&0x7f;
                  
                   duancun=0;
                   weicun=1;
                   P0=led[6];
                   weicun=0;
                    P0=0xff;

  }
void main()                           
{        float qq=1.962;
        while(1)        
        {                    
                ALE =1;
            ST =1;
            delay(5);
                ALE = 0;
                ST = 0;
                delay(5);
                ALE = 1;
                ST = 1;/*启动A/D转换,上升沿复位清零ADC,下降沿启动转换,低电平保持转换*/
        delay(50);  
        OE = 0;         //输出使能,OE=1高阻,OE=0 ADC转换结果允许输出到单片机
        xianshi((P3*qq)); //因为P3的数据最大只有255,电压最大是5V,所以乘0.962就约等于500
        OE = 1;               //输出使能,OE=0高阻
                                         
     }
}

全部资料51hei下载地址(Proteus8.8版本打开):
AD转换2.0.zip (85.06 KB, 下载次数: 32)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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