基于51单片机的AD转换设计
一、设计目的
- 掌握AD转换芯片的基本工作原理;
- 掌握一个完整的C语言程序结构;
- 熟悉AD转换与单片机的使用的编程。
二、设计环境
- Keil开发环境
- Proteus软件。
三、设计及调试
(1) 设计内容
- 将电阻的电压模拟信号通过AD转换芯片转换成数字量;
- 将转换后的数字量通过LED数码管显示。
(2) 设计硬件电路
AT89C51单片机,四位共阳数码管,滑动变阻器,ADC0809
(3) 设计过程及调试关键步骤
首先按要求连接电路,之后将各个引脚在keil中进行命名,在滑动变阻器旁边加个电压表进行对数码管数据的检验。因为使用的外部中断,在中断函数中进行AD转换操作。程序编写完成后运行仿真,发现数据改变过大且不准,经过检查是AD转换器的输出端高低位接反,改正后能正常显示,仿真完成。
四、实验结果与分析
(1)程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit OE=P3^0; //AD转换结果输出允许端
sbit START=P3^1;//AD启动信号输入端与接受C、B、A编码时的锁存控制信号
sbit EOC=P3^2;//转换结束输出信号,AD转换开始时为低电平,转换结束时为高电平
sbit A_data=P3^3;
sbit B_data=P3^4;
sbit C_data=P3^5;
uint information=0; //转换出的数据
uchar b[4]; //用于存放数码管的数据
uchar a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//共阳数码管1-9数字代码
uchar wei[]={0x01,0x02,0x04,0x08}; //共阳数码管位选代码
void delay1ms(uint digit){
uint i,j;
for(i=0;i<digit;i++)
for(j=0;j<120;j++);}
void show(){
P2=wei[0];
P0=b[3];
delay1ms(1);
P2=0x00;
P2=wei[1];
P0=b[2]+128;
delay1ms(1);
P2=0x00;
P2=wei[2];
P0=b[1];
delay1ms(1);
P2=0x00;
P2=wei[3];
P0=b[0];
delay1ms(1);
P2=0x00;}
void main(){
EA=1; //开总中断
IT0=1; //跳变沿方式感知外部中断(触发方式)
EX0=1; //开外部中断0
while(1){
START=0;
A_data=0;
B_data=0;
C_data=0;
START=1;
START=0;
delay1ms(5);}}
void InT0(void) interrupt 0{
uchar i;
OE=1;
information=P1;
information=information*1.96; //将数据转换为十进制(5V/256约等于1.96)
OE=0;
b[0]=a[information%10];
b[1]=a[information/10%10];
b[2]=a[information/100%10];
b[3]=a[information/1000];
for(i=0;i<100;i++){
show();} //显示到数码管上
}
(2)设计结果及现象
将电阻的电压模拟信号通过AD转换芯片转换成数字量,然后将转换后的数字量通过LED数码管显示
滑动变阻器拉到最上端时显示4.99
滑动变阻器拉到中端时显示2.48
滑动变阻器拉到低端时显示0.00
(3)设计结果的分析与总结,有无改进方案?
- 设计结果的分析和总结:进行新芯片使用时应该先仔细观察各个引脚的作用与高低位,之后进行编程仿真时能够少出很多错,减少调试的时间。
- 改进方案:在编程时有多出重复可以使用for循环或者do while语句进行程序的简洁化和可观化。
基于51单片机的AD转换设计相关推荐
- 基于51单片机的AD转换
A/D转换 选用芯片:AT89S52 函数功能:如下代码 /******************************************************************* 此函 ...
- 基于51单片机的智能电子秤设计
具体实现功能 系统由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+按键模块+10kg压力传感器构成. 具体功能: 1.数码管显示当前的重量,单位 ...
- A50 - 基于51单片机的太阳能充电路灯设计
任务 本文以太阳能路灯设计为例,针对太阳能路灯的优势以及发展背景,对太阳能路灯的基本原理和构成进行介绍.根据对太阳能电池板.蓄电池.控制器芯片等部件的方案论证.最终确定利用光伏发电由太阳能电池板以及蓄 ...
- 基于51单片机的电子时钟设计
基于51单片机的电子时钟设计 0 功能介绍 1.从DS1302中读取时间显示 2.一共4个按键,按键1按下进入修改时间模式,再按下切换修改的时间变量,这个时候第2和3个按键就是修改时间变量的按键,修改 ...
- 基于51单片机智能有毒气体检测仪设计(煤气、酒精、co)(转发分享)
本设计由STC89C52单片机电路+LCD1602液晶显示电路+MQ-2甲烷传感器模块电路+MQ-3酒精传感器模块电路+MQ-9 CO传感器电路+A/D采样PCF8591电路+蜂鸣器报警电路+LED指 ...
- c51单片机时钟c语言程序设计,基于51单片机的电子时钟设计..doc
-- I -- - - I -- 设计题目: 基于 51 单片机的电子时钟设计 摘要 单片机,是集 CPU ,RAM ,ROM ,定时器,计数器和多种接口于一体的微控制器.自 20 世纪 70 年代问 ...
- 基于51单片机的公交车安全智能检测系统、基于51单片机的金属探测仪控制设计、基于单片机的智能电子密码锁系统设计、基于51单片机酒精浓度检测仪设计【资料转发分享】
630基于51单片机的公交车安全智能检测系统-设计资料 本资料是基于单片机的公交车安全监测系统 具有如下功能: 1.监测环境的温度,超标报警.可以设置上下限 2.监测是否有火灾以及有毒气体,超标报警, ...
- 基于单片机的智能电子密码锁系统设计-基于51单片机酒精浓度检测仪设计-基于单片机的水缸加热温控控制系统设计-基于单片机蓝牙技术的温室监测系统设计-基于单片机智能PWM调光灯系统设计【毕设方案】
600基于单片机的智能电子密码锁系统设计-电路程序资料 本设计采用的是AT89C51单片机作为控制核心,控制外围电路工作的装置.在本次基于单片机的电子密码锁设计中,将采用AT89C51单片机作为控制核 ...
- 【毕业设计】基于51单片机的智能窗帘设计(原理图+原理图+仿真+论文)
按键1:加(手动开启窗帘 按键2:减(手动关闭窗帘) 按键3:进入定时模式开启时间和光控阈值数值大小的开启 按键4:进入当前时间的设置(年.月.日.时.分的设置) 按键5:切换模式(在手动模式.定时模 ...
最新文章
- Vivado提高综合和实现的速度
- 深入了解tcmalloc(一):windows环境下无缝拦截技术初探
- html考勤表格模板,Excel员工考勤表模板如何撤销工作表保护?
- AD怎么设置相同网络的线宽
- vue3+tsx封装组件
- 突破硬件瓶颈(一):Intel体系架构的发展与瓶颈挖掘
- prometheus监控之postgresql
- Single Image Haze Removal Using Dark Channel Prior 基于暗原色先验的单一图像去雾方法【翻译】
- 将jmeter响应结果中部分数据保存到本地文件
- ps4 html5不能试用,PS4主机卡碟,无法取出光盘的处理办法
- VisualSVN Server安装失败解决
- 计算机 无法进入pe,电脑无法进入pe系统_电脑无法进入pe界面
- java中字节数组转换为字符串
- 利用路由器实现内网穿透
- 2016计算机学科夏令营上机考试C:反反复复(字符串处理)
- Centos7安装trac手册
- 工业交换机和普通交换机的区别
- 上海电信的iptv穿越dd-wrt
- java小白训练营2109-day05-API:API+字符串工具类+身份证解析
- 5分钟教你如何利用华为云IoT进行物联网设备上云
热门文章
- httpclient-Connection pool shut down 问题排查
- 读取txt的中文字符出现乱码的解决方法
- 游戏编程中的人工智能技术--神经网络
- AC/DC、DC/DC转换器知识
- C/C++指向指针的指针、指向数组的指针以及存放指针的数组
- 验证码的生成及简单效果展示(Java篇)
- VMware Workstation Pro虚拟机命令行安装图形界面
- AST介绍和babel插件开发
- 【CVPR2022】Detecting Camouflaged Object in Frequency Domain
- 无线AP 的频段(2.4GHZ or 5GHz)