Proteus8仿真:51单片机A/D转换(ADC0808)

2023-11-19

元器件

元器件 名称
排阻 RESPACK-8
51单片机 AT89C51
数码管 7SEG-MPX4-CA-BLUE
ADC芯片 ADC0808
滑动变阻器 POT-HG

原理图部分

在这里插入图片描述
ADC0808引脚作用

项目 Value
ADDA-C 选择IN通道
IN0-7 模拟量输入
VREF+ ADC参考电压
VREF- ADC参考地
CLOCK 时钟
VREF+ ADC参考电压
OUT1-8 数字信号输出
START 起始信号
OE 输出使能
EOC 结束信号

ADC0808初始化函数
在这里插入图片描述
根据时序图,首先是START信号,由低变高再变低,然后看EOC信号,由高到低,然后再到高时,OUTPUT ENABLE(OE)信号变高,然后读取输出信号,然后输出OUTPUT ENABLE(OE)变低关闭输出。

u8 ADC_Init(void)
{
	u8 ad_result=0;
	//首先是START信号,由低变高再变低
	START=0;
	START=1;
	START=0;
	//然后看EOC信号,由高到低
	while(EOC==0);
	//OUTPUT ENABLE(OE)信号变高,然后读取输出信号
	OE=1;
	ad_result=P1;
	OE=0;
	return ad_result;
}

代码

main.c

代码如下:

#include <reg51.h>//头文件

#define u8 unsigned char //宏定义
#define u16 unsigned int

sbit START=P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;

void SMG_output(void);
void delay_ms(u16 ms);
u8 ADC_Init(void);
u8 tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; //数码管码值

u8 SMG[8]={10,10,10,10,10,10,10,10};//存储数码管要显示的码

u8 ad=0;
void main(void)
{

	while(1)
	{
		ad=ADC_Init();
		
		SMG[0]=10; 
		SMG[1]=ad/100;
		SMG[2]=ad%100/10;
		SMG[3]=ad%10;

		
		SMG_output();//数码管显示
	}
}


u8 ADC_Init(void)
{
	u8 ad_result=0;
	START=0;
	START=1;
	START=0;
	while(EOC==0);
	OE=1;
	ad_result=P1;
	OE=0;
	return ad_result;
}


//数码管显示函数
void SMG_output(void)
{
	u8 i; //定义数码管控制位
	for(i=0;i<=4;i++) //八次循环
	{
		P2=1<<i; //第一次选第一根数码管,第二次第二根。。。。 1  0000 0001 0000 0010
		P0=tab[SMG[i]];//显示数码管数组对应的值 p0=tab[smg[0]]=tab[2]=2
		delay_ms(1); //延时1ms == 显示1ms
	}
	
	P2=0xff; //数码管消隐
	P0=0xff; //数码管消隐
}

//延时函数
void delay_ms(u16 ms)
{
	u16 i,j;
	for(i=0;i<ms;i++)
	for(j=71;j>0;j--);
}

工程文件

工程文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Proteus8仿真:51单片机A/D转换(ADC0808) 的相关文章

随机推荐

  • input type=file 获取选择文件名称、路径方法及input上传按钮美化

    获取文件名 document getElementById upload files 0 name 获取文件路径 document getElementById upload value 页面效果 原生代码
  • Git使用教程总结

    第一篇 SVN VS GIT 转载 https blog csdn net daybreak1209 article details 78216798 svn 集中式 中央版本控制 n个版本 联网 局域网 同步 git 分布式 没有中央的概
  • Spring的多线程事务

    使用编程式事务手动管理多线程事务的生命周期 通过原子类 CountDown去控制多线程事务的全局提交或回滚 public class ThreadTransactionUtil 事务管理 private DataSourceTransact
  • CSS深入理解之line-height

    慕课学习 gt 前端开发 gt HTML CSS gt CSS深入理解之line height line height 一 line height的定义 行高line height 两行文字基线之间的距离 1 什么是基线 字符 x 下边缘
  • STM32中断标志:先清理后清理的区别

    先上总结 再闲聊爬坑过程 进入中断函数后 先清理中断标志 再执行其它动作 爬坑过程 各种教程中 都只解释中断的机制 使用 但对于中断标志的清理顺序 没多少官方准确的资料 今天在F429的代码里 又遇到问题 进中断后卡死跳不出来 各种排查没发
  • Gavin Wood Web3峰会最新演讲:波卡不是智能合约平台,而是平台的平台(全文)...

    在波卡上 每个平台都在用高性能 高效率和最优的方式做着自己擅长的事 而不必让它们的用户用底层平台的货币进行支付 从而将可定制性和灵活性提高了一个台阶 本文谨代表作者个人观点 不代表火星财经立场 该内容旨在传递更多市场信息 不构成任何投资建议
  • WingIDE-配色方案(个人喜好)

    依次选择 Edit gt Preferences gt User Interface gt Color Palette 然后选择自己喜欢的主题 我目前比较喜欢的是 Monokai 当然如果自己觉得不好看 可以依据自己喜好配色
  • VScode扩展商店不显示插件问题

    VScode扩展商店不显示插件问题 情况一 代理服务器异常 参考文章 https blog csdn net wodebokecsdn article details 89239769 文件 首选项 设置 应用程序 代理服务器 情况二 设备
  • rslidar-sdk安装编译以及遇到的问题和解决

    rslidar sdk的安装编译 可以参考官方提供的方法 rslidar sdk 1 1 通过Git下载 git clone https github com RoboSense LiDAR rslidar sdk git cd rslid
  • 计算机中api-ms-win-crt-runtime-l1-1-0.dll丢失怎么解决

    我们在电脑上安装软件或者游戏时 可能会遇到api ms win crt runtime l1 1 0 dll丢失 错误甚至找不到等情况 从而直接导致程序或者游戏无法启动 遇到这种问题别慌 可能有些朋友会绝对是软件安装或游戏安装失败 其实并不
  • Python制作yys彻底解放双手(代码篇)

    我看到好多人想要具体的代码 但是我希望你抱着学习的心态来做这件事情 写该脚本的意义是为了更好的学习python语言而不是进行游戏 千万不要本末倒置 文章相关的问题 1 qt界面如下 在这里只要点击开始按键就可以自动进行三张图片的对比 开始
  • 如何保持缓存和数据库中的数据一致

    背景 缓存是软件开发中一个非常有用的概念 数据库缓存更是在项目中必然会遇到的场景 而缓存一致性的保证 更是在面试中被反复问到 这里进行一下总结 针对不同的要求 选择恰到好处的一致性方案 缓存是什么 存储的速度是有区别的 缓存就是把低速存储的
  • STM32_GPIO引脚控制(库函数开发)

    目录 在学习GPIO引脚前 先介绍一些函数 库函数 stm32f10x rcc 库函数 stm32f10x gpio 这些函数怎么用呢 那如何使用 完成初始化 初始化完成后便可以进行一些GPIO的一些操作了 如 点亮共阳极LED 如 进行L
  • JavaScript 之 Symbol 数据类型

    一 简介 symbol类型是ES6新引入的一种基本数据类型 该类型具有静态属性和静态方法 其中静态属性暴露了几个内建的成员对象 静态方法暴露了全局的symbol注册 symbol类型具有以下特点 唯一性 每个symbol值都是唯一的 不可变
  • 使用git restore --staged撤销你在暂存区的提交

    我们通过git add命令将文件提交到暂存区之后 发现文件提交错了 就可以通过git restore staged撤销在暂存区提交的文件 通过实例演示一下 当前目录下有三个文件进行了修改 并提交到了暂存区 通过git ls files命令可
  • 以太坊系列之十五: 以太坊数据库

    以太坊数据库中都存了什么 以太坊使用的数据库是一个NOSQL数据库 是谷歌提供的开源数据leveldb 这里尝试通过分析以太坊数据库存储了什么来分析以太坊可能为我们提供哪些关于区块链的API 存储内容 NOSQL是一个key value数据
  • MetaEditor 编译原理之MQ4文件语法解析

    语法解析 顾名思义就是将一个文件或者一段代码 按照语法结构拆分为一个一个的单词 比如 extern int TakeProfit 50 int start int i 0 while i lt TakeProfit i return i 正
  • (附源码)springboot电商系统前端界面设计与浏览器兼容性研究 毕业设计 231058

    基于springboot电商系统前端界面设计 摘 要 随着科学技术的飞速发展 各行各业都在努力与现代先进技术接轨 通过科技手段提高自身的优势 对于电商系统前端界面设计与浏览器兼容性研究当然也不能排除在外 随着网络技术的不断成熟 带动了电商系
  • 运行软件mfc140u.dll丢失怎么办?mfc140u.dll的三个修复方法

    最近我在使用一款软件时遇到了一个问题 提示缺少mfc140u dll文件 这个文件是我在使用某个应用程序时所需要的 但是由于某种原因 它变得无法正常使用了 经过一番搜索和了解 我了解到mfc140u dll是Microsoft Visual
  • Proteus8仿真:51单片机A/D转换(ADC0808)

    51单片机A D转换 元器件 原理图部分 代码 main c 工程文件 元器件 元器件 名称 排阻 RESPACK 8 51单片机 AT89C51 数码管 7SEG MPX4 CA BLUE ADC芯片 ADC0808 滑动变阻器 POT