找回密码
 立即注册

QQ登录

只需一步,快速开始

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

89C51, ADC0808为A/D转换芯片 微型电压表

[复制链接]
跳转到指定楼层
楼主
仿真图:

以89C51单片机为基础,ADC0808为A/D转换芯片,  量程为0.00-5.00V,适合测试蓄电池和干电池。

原代码:
#include<reg51.h>
  1. #define uchar unsigned char
  2. #define uint  unsigned int
  3. uchar code led[10]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  4. uint volt;

  5. sbit CLK=P3^3;
  6. sbit START=P3^0;
  7. sbit EOC=P3^1;
  8. sbit OE=P3^2;

  9. void delay(uint z)         
  10. { uchar x,y;            
  11.    for(x=z;x>0;x--)   
  12.       for(y=250;y>0;y--);
  13. }         
  14. void ADC()
  15. {
  16.         START=0;
  17.         START=1;
  18.         START=0;
  19.         while(EOC==0);
  20.         OE=1;
  21.         volt=P1;
  22.         OE=0;
  23.         volt=volt*196;       
  24. }
  25. void display()
  26. {
  27.         P0=0XFF;
  28.         P2=0x01;
  29.         P0=led[volt/10000]&0x7F;
  30.         delay(2);
  31.         P0=0XFF;
  32.         P2=0x02;
  33.         P0=led[(volt/1000)%10];
  34.         delay(2);
  35.         P0=0XFF;       
  36.         P2=0x04;
  37.         P0=led[(volt/100)%10];
  38.         delay(2);
  39.         P0=0XFF;               
  40.         P2=0x08;
  41.         P0=led[(volt/10)%10];
  42.         delay(2);
  43. }
  44. void main()
  45. {
  46.         EA=1;
  47.         TMOD=0x02;
  48.         TH0=0XF6;
  49.         TL0=0XF6;
  50.         ET0=1;
  51.         TR0=1;
  52.         while(1)
  53.         {
  54.                 ADC();
  55.                 display();
  56.         }
  57. }
  58. void timer() interrupt 1
  59. {
  60.         CLK=~CLK;
  61. }








复制代码
全部资料(压缩包)下载:
微型电压表.rar (16.5 KB, 下载次数: 41)




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

使用道具 举报

沙发
ID:123289 发表于 2016-6-7 18:18 | 只看该作者
这样做电压表很浪费,练习做单片机还可以。
回复

使用道具 举报

板凳
ID:86090 发表于 2016-6-7 19:46 | 只看该作者
多谢无私奉献的人!!!!!!!!!!!!!
回复

使用道具 举报

地板
ID:114158 发表于 2016-6-12 10:57 | 只看该作者
yzwzfyz 发表于 2016-6-7 18:18
这样做电压表很浪费,练习做单片机还可以。

如果要扩大量程到100 V  怎么修改
回复

使用道具 举报

5#
ID:123289 发表于 2016-6-12 19:10 | 只看该作者
由于IC的输入对电压有限制,所以:
1、可以加电阻分压.
2、要有办法通知到CPU,以区分是否输入被分压了,CPU在显示时,就可以决定:是否按比例扩大显示值。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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