找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机+AD0809测电压

[复制链接]
跳转到指定楼层
楼主
ID:356508 发表于 2018-6-21 23:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我们老师之前让我们做的基于单片机测电压的程序
一、实验目的和要求

在所提供的电路板上进行编程,实现对电压的检测和显示 
二、实验设备
51单片机  AD0809
三、程序

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

sbit OE=P3^6;/*输出允许控制端,用以打开三态数据输出锁存器*/

sbit ST=P3^3;/*START(A/D转换启动信号输入端)和ALE(地址锁存允许信号输入端)共用一个端口(用于启动A/D转换)*/

sbit EOC=P3^2;/*转换结束信号输出引脚,开始转换时为高电平,当转换结束时为高电平*/

sbit WEI1=P2^2;  /*第一个数码管*/

sbit WEI2=P2^3;  /*第二个数码管*/


uchar smg1[6]={0x40,0x79,0x24,0x30,0x19,0x12};   /*小数点(0.;1.;2.;3.;4.;5.)*/

uintsmg2[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};/*段选*/

uint shi,ge,a;

void delay(uint n);

void ADC_0809(uint shi,ge);


void main()

{

  while(1)/*动态测量*/

   {

/*主程序*/

   ST=0;/*初值*/

   OE=0;/*初值*/

   ST=1;/*上升沿,内部寄存器清零*/

   ST=0;/*下降沿,进行A/D转换*/

   

   while(EOC)/*结束转换*/

   {

     ;

   }

   

   OE=1;/*输出转换得到的数据*/      

   ADC_0809(shi,ge);

   }

}

/*delay 函数*/

void delay(uint n)

{

  uint i,j;

  for(i=n;i>0;i--)

    for(j=0;j<20;j++);

}

void ADC_0809(uint shi,ge)

{   

/*数据显示*/

      a=P0*0.19;/*输出数据 P0是寄存器,0.19=5/2^8-1*/  

      shi=a/10;/*十*/

    ge=a%10;/*个*/


    WEI2=1;WEI1=0;

    P1=smg1[shi];

    delay(22);


    WEI2=0;WEI1=1;

    P1=smg2[ge];

    delay(22);

}





温度-电压检测显示系统.pdf

47.24 KB, 下载次数: 18, 下载积分: 黑币 -5

ADC资料 + 数码管引脚图 + 热敏电阻参数.docx

414.51 KB, 下载次数: 22, 下载积分: 黑币 -5

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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