网上很多文章在使用ADC0809时都是采用查询的方法来设计的,这里采用中断的方法。

中断的方法,写出的代码量小,而且对单片机的负荷小,单片机在中断来临之前可以去处理别的事情,具有较高的实用价值。

电路连接图

#include<reg51.h>
#include<absacc.h>
#define adr XBYTE[0x7ff8]
#define uchar unsigned char
#define uint unsigned int
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管0~9
void delay(uchar k)//延时程序
{uchar l;while(k>0){for(l=0;l<100;l++);k--;}
}
void main()
{IT1 = 1;//电平跳跃触发EA = 1;EX1 = 1;//开中断adr = 0x00;//启动A/D转换while(1);//等待中断
}
extern1 () interrupt 2//外部中断1中断函数
{ uchar i;uint result;result = adr;//采样得到数据赋给resultresult = result*19.61;//5000/255=19.61,将数字量转化为模拟量电压for(i=0;i<4;i++){switch(i){case 0:P2 = 0x0e;P1 = table[result/1000]|0x80;break;//取第一位case 1:P2 = 0x0d;P1 = table[result%1000/100];break;//取第二位case 2:P2 = 0x0b;P1 = table[result%100/10];break;//取第三位case 3:P2 = 0x07;P1 = table[result%10];break;//取第四位}delay(10);P2 = 0xff;//熄灭数码管}adr = 0x00;
}

运行效果:

与实际电压表读数偏差不超过0.1。
注意的是,ADC0809芯片的时钟设置为500kHz左右才能正常工作。
在proteus中ADC0809芯片只有模型,无法使用,所以这里采用ADC0808。功能类似。只是输出口out1是最高位,out8是最低位,这和ADC0809不同。
​​第一次发blog,没啥经验。仅供参考,转载请标注作者姓名。

通过模数转换芯片ADC0809和51单片机实现简易电压表仿真相关推荐

  1. 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)

    摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...

  2. 基于51单片机的简易游戏机

    基于51单片机的简易游戏机 目录 基于51单片机的简易游戏机 一.绪论 二.设计方案 三.系统原理框图及模块的作用 四.硬件设计及说明 五.实际的程序流程图,写清楚程序模块的功能 六.系统使用说明 七 ...

  3. 【Proteus仿真】51单片机制作简易计算器+ LCD1602显示

    [Proteus仿真]51单片机制作简易计算器+ LCD1602显示 Proteus仿真效果演示 程序代码 #include<reg51.h> //头文件 #define uint uns ...

  4. 基于51单片机篮球计分器proteus仿真设计

    本设计是51单片机篮球计分器proteus仿真(源码+原理图+PCB+仿真+报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号C0004 资料文件下载 ...

  5. 【C51】基于51单片机的简易频率计(附代码、无需外设、小白简单易上手)

    基于51单片机的简易频率计(无需外设.小白简单易上手)   代码较为简单,大概思路是通过定时器单位时间内外部中断上升沿触发的次数来计算实际频率. /基于51单片机的简易频率计#include<r ...

  6. 51单片机 AT24C04+蜂鸣器+Proteus仿真

    51单片机 AT24C02+蜂鸣器+Proteus仿真 Proteus仿真截图 由于是音频效果,只能以截图展示基本电路 实例代码 #include <reg52.h> #include & ...

  7. 基于51单片机的简易mp3的制作

    基于51单片机的简易mp3制作原理 1.  项目要求 基于AT89C51系列单片机的音乐播放器,采用AT89C51作为主控芯片,采用12864LCD作为液晶显示屏,通过按键实现播放器对应按键功能. 2 ...

  8. 基于51单片机的八路电压表采集Proteus仿真(源码+仿真+原理图+全套资料)

    资料编号:110 程序语言:C语言 仿真软件:Proteus8.9版本 功能讲解如下: 利用单片机及其外围器件(A/D转换器等)实现一款简易电压表,实现以下功能: 1   电压表能够进行8路模拟电压测 ...

  9. 51单片机模拟电子琴+Proteus仿真

    51单片机模拟电子琴+Proteus仿真 Proteus仿真 示例程序 #include<reg51.h> #include<intrins.h>#define uchar u ...

最新文章

  1. 2022-2028中国曝光机市场现状及未来发展趋势
  2. Java与邮件系统交互之使用Socket验证邮箱是否存在
  3. Python 技术篇 - 使用unicode_escape对js的escape()方法编码后的字符串进行解码实例演示
  4. ssm学习的第一个demo---crm(2)
  5. struts,ognl,valuestack
  6. python全栈开发学习 01
  7. docker安装gamit_科学网—Ubuntu系统GAMIT/GLOBK程序安装 - 陈超的博文
  8. Silverlight学习笔记(一)——Silverlight够酷吗?
  9. [LeetCode]Linked List Cycle
  10. Android技术精髓-Bitmap详解
  11. 【Xamarin挖墙脚系列:卸载不彻底的解决】
  12. 支付宝-沙箱环境配置和使用
  13. PAT题目答案与经验总结1(持续更新,大家放心关注)
  14. 如何监控前端页面FPS
  15. 书论82 宋曹《书法约言》
  16. IT小盆友:注意20种习惯最耗元气
  17. 一、熟悉新闻推荐系统基本流程
  18. 52单片机led灯闪烁c语言程序,单片机LED灯闪烁程序
  19. CMOS图像传感器——概述
  20. 项目实战No2 登陆注册

热门文章

  1. 微信40029 code解决办法
  2. 获取ClassName MethodName
  3. file_get_contents 访问 ssl 错误的两种解决方法
  4. MySQL 同时删除和添加多个字段
  5. Kubernetes HPA 动态弹性扩缩容
  6. 硬盘挂载-硬盘挂载后为只读模式
  7. 一些基于新闻表示和用户表示的新闻推荐模型总结:NPA/ NAML/ LSTUR/ NRMS
  8. java项目-第61期基于ssm项目在线心理测评系统
  9. 【oracle】查看oracle客户端版本和位数
  10. Jupyter Notebook 删除不需要的 Kernels