单片机电压采集装置课程设计(AD转换及编程实现)

合集下载

基于单片机的系统课程设计---AD转换

基于单片机的系统课程设计---AD转换

基于单片机的系统设计 题 目 AD 转换 学 院 电子信息工程学院 学科门类 单片机 班 级 指导教师 小组成员2011年 12月08日装订线一、实验目的(1)学习基于单片机的系统设计;(2)学习单片机电路设计和制版工艺;(3)学会数据采集电路设计;(4)学会VB编写上位机,实现和单片机通信;(5)学习单片机的软件设计;二、实验要求(1)要求每位同学设计单片机最小系统;(2)每位同学自己设计硬件电路设计和程序编写;(3)每位同学自己完成调试;(4)认真细心的安装焊接。

三、使用的主要器材(1)单片机,TLC549及其他元件一套;(2)工具一套;(3)PC机一台;四、TLC549简介4.1引脚排列⏹/CS:片选低有效⏹GND:地⏹VCC:电源⏹ANALOG IN:模拟信号输入⏹DATA OUT :数据串行输出⏹I/O CLOCK:外接输入输出时钟⏹REF+:正基准电压输入端,REF+ 大于等于2.5V 小于等于Vcc+0.1V⏹REF-:负基准电压输入端,REF+ 大于等于-0.1V 小于等于2.5V ,切要求REF+-REF-大于等于1V4.2内部结构4.3时序分析TLC549是SPI三总线器件,其时序见上图,当/CS为高电平时候,AD正在进行内部转换,转换时间大概为17us,当/CS有高电平变为低电平时候,这时候上次的采样转换结果的最高位A7首先出现在DATA OUT端,其余7位将会在7个I/O CLOCK的下降沿时候出现在DATA OUT端,并在第4个I/O CLOCK的下降沿启动采样保持电路,开始采样模拟输入量,在第8个I/O CLOCK的下降沿开始保持,这时候,/CS由低电平变为高电平,在其上升沿开始启动AD转换,这时候/CS需保持17us,保证本次的采样转换完成,然后按上次一样步骤,输出AD转换结果和输入模拟采样。

五、上位机5.1上位机简介上位机软件通过串口,实现单片机和PC机的通信,以简单可视化的窗口,实现对单片机的监控。

单片机课设AD转换

单片机课设AD转换
5.3.5 读写控制信号电路
读写控制电路由或非门实现的。74LS02是4输入或非门,其中A,B为输入,Y为输出。8051的P2.7(A15)和 经或非门后的信号YSA与ADC0809的ALE端和START端相连,平时START因译码器输入端P2.7上的高电平而封锁,当单片机执行如下程序后
MOV DPTR,#7FF8H
接着,我们进入了程序编写阶段。光是这个A/D转换的接口问题我们就研究了很久,到最后换了几个试验箱才完成了对A/D转换功能的验证。模块程序的编写并不是特别难,但是各个模块间的衔接需要仔细思考才能做好。
(九)参考文献
{
ACC=*p;
R_data[i]=ACC;
*q=ACC; //存入数据区
p++;//模拟路数加1
q++; //存储区指针加1
i++; //数据区指针加1
if(i==8) //判断是否转换完毕。转换完毕关总中断
{
EA=0;
EX0=0
}
}
(七)操作说明
(八)结束语:
刚开始,我们一点思路没有,但是大家很积极,很快找到了A/D转换这个切入点。由此入手,我们进入了硬件连接阶段,由于对实验箱不是很熟悉,我们连线时也不是很顺利。我们请教了实验室老师,顺利连好了电路。并且了解到,连电路前要关闭电源并且检查线是否是完好的。
首先,通过实验箱产生0---5V可调电压;然后,将0---5V可调电压输入A/D转换进行数模转换,将0---5V的模拟量转换成00H-----FFH的数字信号,出入到单
片机中,作为输入量进行倍率变换,并经软件编程实现动态扫描,最终在七段译码显示管上显示出温度变化。
该方案的前面部分本应用温度传感器,但试验设备不足,便用0---5V电压代替,之后的过程理论上皆可由实验箱和编程实现,所以具有较高的可行性。

stm32adc电压课程设计

stm32adc电压课程设计

stm32 adc电压课程设计一、课程目标知识目标:1. 学生理解STM32微控制器的基本结构,特别是ADC模块的工作原理;2. 学生掌握ADC转换的数学基础,包括分辨率、精度和转换公式;3. 学生了解如何使用STM32的库函数进行ADC编程。

技能目标:1. 学生能够正确配置STM32的ADC模块,并进行电压测量;2. 学生能够编写程序读取ADC值,并将其转换为实际的电压值;3. 学生能够运用调试工具对ADC程序进行调试,解决基本的故障和问题。

情感态度价值观目标:1. 培养学生对电子电路和微控制器操作的探究兴趣,增强实践操作的自信心;2. 通过团队协作解决问题,培养学生良好的沟通能力和团队合作精神;3. 学生能够认识到科技发展对社会的重要性,增强对技术进步的责任感和使命感。

课程性质:本课程为实践操作性强的专业课程,旨在通过实际操作,加深对STM32 ADC模块理论知识的理解和应用。

学生特点:学生为具有一定电子基础知识和编程能力的高年级中学生,对微控制器和电子测量具有一定的了解。

教学要求:课程需结合理论与实际,注重操作流程的规范性和程序代码的准确性,强调从实践中学习和总结经验。

通过课程学习,学生应能独立完成STM32ADC电压测量的相关任务,并具备初步的分析问题和解决问题的能力。

二、教学内容本节教学内容围绕STM32 ADC电压测量,依据课程目标进行如下组织和安排:1. 理论知识回顾:- 复习微控制器基本结构,强调STM32 ADC模块的作用和地位;- 介绍ADC转换原理,包括分辨率、精度和转换公式的推导。

2. 实践操作指导:- 指导学生如何配置STM32的ADC模块,包括时钟设置、通道选择、采样时间等;- 通过教材章节示例,教授学生编写ADC读取程序,实现电压值的转换和显示。

3. 教学大纲:- 第一部分:STM32 ADC模块介绍(对应教材第x章)- ADC模块结构和工作原理;- ADC关键寄存器的作用和配置方法。

单片机课程设计——基于TLC549的AD转换

单片机课程设计——基于TLC549的AD转换

哈尔滨理工大学荣成学院单片机课程设计题目:基于TLC549的A/D转换班级:姓名:学号:1 题目简介随着电子技术的发展,人们越来越频繁的用到电压表,普通的指针电压表已不能满足人们的需要。

数字电压表作为一种高精度的测量仪器,采用数字化测量技术,将连续模拟量转换成不连续,离散的数字形式。

传统指针式电压表功能单一,精度低,不能满足人们追求越来越方便,精准的要求。

而采用单片机的数字电压表,其精度高,抗干扰能力强,已被广泛的应用在日常生活和电子,工业等领域。

数字电压表因为是将连续的模拟量转换成数字形式表现出来,避免了读数的视觉误差和视觉疲劳。

数字电压表的核心部件是A/D转换器,转换器的精度很大程度上影响了测量的精度。

本次单片机课程设计采用 A/D 转换器 TLC549 对电压测量电路测出的输入模拟信号电压值进行转换 , 利用 AT89C52RC 再对转换的结果进行运算和处理 , 最后将数字电压信号显示在LED数码管上2 实现方案①STC89C52RCSTC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统的51单片机不具备的功能。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

特点:8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间;可直接使用串口下载;②AD转换器-----TlC549TLC549 是美国德州仪器公司生产的 8 位串行 A/D 转换器芯片,可与通用微处理器、控制器通过 CLK 、 CS 、 DATA OUT 三条口线进行串行接口。

具有 4MHz 片内系统时钟和软、硬件控制电路,转换时间最长17 μ s , TLC549 为 40 000 次 /s 。

电压采集,AD转换程序,数码管显示

电压采集,AD转换程序,数码管显示

电压采集,AD转换程序,数码管显示#include#includesbit ADC_CS=P3^5; //片选引脚,低电平有效sbit ADC_CLK=P3^4; //ADC0832芯片的时钟输入引脚sbit ADC_DO=P3^3; //数据信号输出引脚,用于将转换的数据输给单片机sbit ADC_DI=P3^3; //数据信号输入引脚,用于通道的选择控制#define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换sbit LATCH1=P2^2;//定义锁存使能端口段锁存sbit LATCH2=P2^3;// 位锁存void Delay(unsigned char x);unsigned char ReadADC(viod);unsigned char TempData[8]; //存储显示值的全局变量unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x 7f,0x6f};// 显示段码值0~9unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码void Display(unsigned char FirstBit,unsigned char Num);void main(){unsigned char a;a=ReadADC();while(1){TempData[0]=dofly_DuanMa[a/100];//分解显示信息,如要显示68,则68/10=6 68%10=8TempData[1]=dofly_DuanMa[(a%100)/10];TempData[2]=dofly_DuanMa[(a%100)%10];Display(2,3);}}// 延时函数void Delay(unsigned char x){unsigned char i;for(i=0;i<x;i--);}// 把模拟电压转换成八位二进制数,并返回unsigned char ReadADC(unsigned char b){unsigned char i,ch;ch=0;ADC_CS=0; //片选引脚,低电平有效,ADC_DO=0; //DO为高阻状态for(i=0;i<10;i++); //稍做延时ADC_CLK=0;Delay(2); //以上那个为准备工作ADC_DI=1;ADC_CLK=1;Delay(2); //第一个脉冲,起始位ADC_CLK=0;Delay(2);ADC_DI=1;ADC_CLK=1;Delay(2); //第2个脉冲,DI=1表示双通道单极性输入ADC_CLK=0;Delay(2);ADC_DI=1;ADC_CLK=1;Delay(2); //第3个脉冲,DI=1表示表示选择CH1,马上准备读取转换数据ADC_CLK=1;Delay(2);ADC_CLK=0;Delay(2);for(i=0;i<8;i++){ADC_CLK=1;Delay(2);ADC_CLK=0;Delay(2);ch=(ch<<1)|ADC_DO;}ADC_CS=1; //取消片选,一个转换周期结束return(ch);}void Display(unsigned char FirstBit,unsigned char Num) {unsigned char i;for(i=0;i<num;i++){DataPort=0; //清空数据,防止有交替重影LATCH1=1; //段锁存LATCH1=0;DataPort=dofly_WeiMa[i+FirstBit]; //取位码LATCH2=1; //位锁存LATCH2=0;DataPort=T empData[i]; //取显示数据,段码LATCH1=1; //段锁存LATCH1=0;Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影}}</num;i++)</x;i--);。

PIC24系列单片机原理与开发第6章AD转换器及编程

PIC24系列单片机原理与开发第6章AD转换器及编程

PIC24系列单片机原理与开发第6章AD转换器及编程AD转换器是一种用于将模拟信号转换为数字量的设备,它的主要用途是将模拟量转换为可用于数字控制系统的数字信号。

PIC24系列单片机内置了多路/低速模拟输入AD转换器,可以实现对模拟量的采集、处理和控制。

AD转换器的编程十分复杂,需要明确程序对模拟量的要求,包括采样率、量程、精度等,还需要根据PIC24系列单片机的资源情况,合理配置AD转换器的参数,以便实现模拟量的有效读取。

1)可以多路采样:多路采样可以提高采样精度,在故障时可以减少恢复时间,还可以提高采样率。

2)采样率:根据实际应用需要,调整单片机的时钟频率,来达到最佳的采样率。

3)精度范围:根据实际应用需要,调整AD转换器的精度范围,以保证采集到的数据和处理能力的均衡使用。

4)通道选择:根据实际应用,选择多路采样中的其中一路,来使用最佳的采样精度。

单片机课程设计AD转换

单片机课程设计AD转换

引言本课题旳任务是对A/D转换电路进行设计,理解A/D转换与单片机旳接口措施,掌握AD0809转换性能及编程措施。

把模拟量转换成数字量旳器件,称为模数转换器,简称为A/D(Anolog to Digit)。

一般旳A/D转换过程是通过采样、保持、量化和编码4个环节完毕旳,这些环节往往是合并进行旳。

当A/D转换结束,ADC输出一种转换结束信号数据。

CPU可有多种措施读取转换成果:①查询方式;②中断方式;③ DMA方式。

通道8位A/D转换器,ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容旳控制逻辑旳CMOS组件。

它是逐次迫近式A/D转换器,可以和单片机直接接口。

ADC0809由一种8路模拟开关、一种地址锁存与译码器、一种A/D转换器和一种三态输出锁存器构成。

多路开关可选通8个模拟通道,容许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D 转换完旳数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完旳数据。

一种实际旳系统中需用传感器把多种物理参数(如压力和温度等)测量出来,并转换为电信号,再通过A/D转换器,传送给微型计算机;微型计算机加工处理后,通过D/A转换器去控制多种参数量。

目录一系统设计原理 (3)二系统设计 (4)三整个系统实现功能 (7)四收获与心得体会 (9)五参照书目 (10)一系统设计原理1 引脚定义:IN0~IN7:8路模拟信号输入端,由地址锁存及译码控制单元旳3位地址A、B、C进行选通切换。

START:A/D转换启动控制信号输入端。

ALE:地址锁存信号输入端,START 和ALE 用于启动A/D转换。

V REF(+)和V REF(-):正、负基准电压输入端。

OE:输出容许控制信号输入端,A/D转换后旳数据进入三态输出数据锁存器,并在OE旳作用下(OE为高电平),通过D0~D7将锁存器旳数据送出。

EOC:A/D 转换结束标志信号。

ad采集单片机课程设计

ad采集单片机课程设计

ad采集单片机课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握AD采集的相关知识;2. 学会使用单片机进行AD转换,并能阅读相关程序代码;3. 了解AD采集在实际应用中的重要性,如传感器数据采集、模拟信号处理等。

技能目标:1. 培养学生动手实践能力,能够独立完成单片机AD采集电路的设计与搭建;2. 提高学生编程能力,学会编写和调试AD采集相关程序;3. 培养学生团队协作和问题解决能力,能够共同完成具有一定难度的AD采集项目。

情感态度价值观目标:1. 激发学生对电子技术和单片机应用的兴趣,培养其探索精神和创新意识;2. 培养学生严谨的科学态度,注重实验数据的准确性和可靠性;3. 增强学生的环保意识,了解电子产品在实际应用中应遵循的环保原则。

课程性质:本课程为实践性较强的课程,注重理论知识与实践操作相结合,旨在培养学生的动手能力、编程能力和实际应用能力。

学生特点:学生具有一定的单片机基础知识,对AD采集相关内容感兴趣,但实践经验不足。

教学要求:教师需采用启发式教学,引导学生主动探索,注重理论与实践相结合,提高学生的实践操作能力。

同时,关注学生的个体差异,给予个性化指导,确保课程目标的实现。

在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 单片机基础回顾:包括单片机的结构、工作原理、指令系统等,为学生后续学习AD采集打下基础。

相关教材章节:第一章 单片机基础2. AD转换原理及芯片选型:介绍AD转换的基本原理,各类AD转换芯片的特点和应用。

相关教材章节:第二章 AD转换技术3. 单片机与AD转换芯片的接口技术:讲解单片机与AD转换芯片的连接方法,电路设计和编程技巧。

相关教材章节:第三章 单片机接口技术4. AD采集程序设计与调试:学习AD采集程序的设计方法,掌握编程工具和调试技巧。

相关教材章节:第四章 单片机编程与调试5. 实践项目:设计并实现一个简单的AD采集系统,如温度传感器数据采集、光照强度检测等。

基于单片机的AD转换电路与程序设计

基于单片机的AD转换电路与程序设计

基于单片机的AD转换电路与程序设计单片机(MCU)是一种集成了处理器核心、内存、输入输出接口和各种外围设备控制器等功能的集成电路。

MCU通常用于嵌入式系统,广泛应用于各个领域,例如家电、工业控制、汽车电子等。

其中,AD转换是MCU中的一个重要模块,用于将模拟信号转换成数字信号。

在应用中,常常需要将外部的温度、湿度、压力或光照等模拟信号进行转换和处理。

AD转换电路一般由模拟输入端、引脚连接、采样保持电路、比较器、取样调节电路、数字输出端等部分组成。

模拟输入端负责接收外部的模拟量信号;引脚连接将模拟输入信号引到芯片的模拟输入端;采样保持电路负责将引脚输入的模拟信号进行采样和保持,保证AD转换的准确性;比较器用于将模拟信号与参考电压进行比较,判断信号的大小;取样调节电路用于调整模拟信号的边界;数字输出端将模拟信号转换成数字信号输出给MCU。

在程序设计方面,MCU通常使用C语言进行编程。

程序设计分为初始化和数据处理两个步骤。

初始化阶段主要包括设置IO口、初始化外设、设置模拟输入通道等工作。

数据处理阶段主要包括数据采样、数值转换、数据处理和输出等工作。

下面以一个简单的温度采集系统为例进行说明。

首先,在初始化阶段,需要设置IO口和外设,以及设置模拟输入通道。

具体步骤如下:1.设置IO口:根据具体需要配置MCU的引脚功能和工作模式。

2.初始化外设:根据需要初始化ADC模块,包括设置采样频率、参考电压等参数。

3.设置模拟输入通道:选择需要转换的模拟输入通道。

接下来,在数据处理阶段,需要进行数据采样、数值转换和数据处理。

具体步骤如下:1.数据采样:使用ADC模块进行模拟信号的采样,将采样结果保存到寄存器中。

2.数值转换:将采样结果转换成数字信号,可以使用如下公式进行转换:数字信号=(ADC采样结果/采样最大值)*参考电压3.数据处理:根据具体需求进行数据处理,例如计算平均值、最大值或最小值,也可以进行滤波或校正。

单片机AD转换实验_2

单片机AD转换实验_2

单片机实验报告实验名称:A/D转换实验姓名:学号:班级:实验时间:2010.12.13一、 实验目的1、理解A/D 转换的工作原理;2、理解掌握ADC0809的A/D 转换原理和并行A/D 转换器接口的编程方法;3、学习使用并行模/数转换芯片ADC0809进行电压信号的采集额数据处理。

二、 实验原理量化间隔和量化误差是A/D 转换器的主要指标之一。

量化间隔:Δ=单片机给ADC 提供一个启动信号后,ADC 转换开始;当A/D 转换结束时,ADC 输出一个转换结束标志信号,通知单片机读取转换结果。

单片机检查判断A/D 转换结束的方法一般有中断和查询两种方式。

整个A/D 转换都是在一定的时钟下作用完成的,其频率是决定芯片转换速度的基准。

实验参考流程:三、 实验内容程序流程:12 n 满量程输入电压程序中#define PIN0 XBYTE[0x7ff8] 表示启动A/转换#define PIN1 XBYTE[0x7ff9]PIN0=0; PIN1=0;result0_reg=PIN0; 表示读取A/D转换结果 result1_reg=PIN1;for(j=0;j<250;j++) 延时等待A/D转换完成for(k=0;k<250;k++);result0=(result0_reg*5)/255; 将转换结果转换为十进制result1=(result1_reg*5)/255;程序仿真,须将程序下载到试验箱中相应模块进行仿真。

在实验箱中,将D2区的1KΩ电位器的中间金属孔连接到A7区的P2_I02金属孔,D2区的10KΩ电位器的中间金属孔连接到A7区的P2_I01金属孔;将A7区的P2_I03-P2_I05分别连接到A2区的A2-A0;将A7区的P2_CS连接到A2区的A15;运行软件程序,每次跑到断点就会停止,此时观察转换的结果与数字万用表测量结果相比近似相同。

四、小结与体会对于具有模拟信号采集的单片机应用系统,A/D转换接口是前向通道中的一个重要环节。

单片机课程设计AD

单片机课程设计AD

单片机课程设计AD一、课程目标知识目标:1. 理解单片机的基本原理,掌握AD转换器的功能与工作流程;2. 学习并掌握单片机与AD转换器的接口技术,能正确运用编程实现数据采集;3. 了解AD转换器的分辨率、精度等性能参数,能分析其对系统性能的影响。

技能目标:1. 能够运用所学知识,设计并搭建单片机与AD转换器的硬件电路;2. 熟练掌握相关编程语言,实现单片机对AD转换器数据的读取与处理;3. 学会分析实验过程中遇到的问题,具备一定的故障排查与解决能力。

情感态度价值观目标:1. 培养学生对单片机及电子技术的兴趣,激发学习热情;2. 培养学生的团队合作精神,提高沟通与协作能力;3. 培养学生严谨的科学态度,注重实验数据的真实性,养成良好的学术道德。

本课程针对高年级学生,具有较强的理论性与实践性。

结合学生特点,注重培养学生的学习兴趣和动手能力,提高创新意识和解决问题的能力。

在教学过程中,要求教师以学生为主体,关注个体差异,引导学生主动探索,培养其自主学习能力。

通过课程学习,使学生能够将所学知识应用于实际项目中,为今后的学习和工作打下坚实基础。

二、教学内容本章节教学内容主要包括以下几部分:1. 单片机基本原理回顾:复习单片机的硬件结构、工作原理及编程基础,为学习AD转换器打下基础。

2. AD转换器原理与接口技术:介绍AD转换器的工作原理、类型及性能参数,重点讲解与单片机连接的接口技术。

3. 硬件电路设计:学习并设计单片机与AD转换器的硬件电路,包括元器件选型、电路搭建与调试。

4. 编程与数据处理:学习相关编程语言,编写程序实现单片机对AD转换器数据的读取与处理。

5. 实践操作与故障排查:进行实际操作,学会分析实验过程中遇到的问题,掌握故障排查与解决方法。

教材章节关联:1. 《单片机原理与应用》第3章:单片机硬件结构及工作原理;2. 《单片机原理与应用》第4章:单片机编程基础;3. 《模拟电子技术》第6章:AD转换器原理及接口技术;4. 《电子线路设计与实践》第2章:硬件电路设计与调试。

单片机直流电压采集与显示(课程设计)

单片机直流电压采集与显示(课程设计)

目录摘要引言一课程设计题目及任务要求1。

1课程设计主要任务1。

2课程设计的要求二电路设计方案及原理说明2.0课程设计的方案2.1 ADC0809模数转换芯片2.2 AT89C51单片机2.3 4个共阳7段数码管显示器2。

4 系统整体工作原理2。

4.1硬件原理2.4。

2软件原理分析三设计总体框图3.1硬件总体框图3.2主程序流程图3。

3待测信号源单元电路3.4 AT89C51单片机3。

5单片机控制单元3。

5.1外部时钟电路3.5。

2复位电路3.5.3数码管显示模块四实验仿真五总结及设计心得六致谢七参考文献摘要:本设计待测的输入电压为8路,电压范围为0~5V,使用目前广泛使用的AT89C51来做控制系统,用ADC0809来进行模拟电压的采集及模数转换,实现采集8路数据,并将结果在四位一体数码管上进行显示。

该系统主要包括几大模块:数据采集模块、A/D转换模块、控制模块、显示模块。

显示部分由LED数码显示器构成。

该数字电压表具有电路简单,成本低等优点,可以方便地进8路A/D转换量的测量。

关键词:电压采集、ADC0809、A/D转换、单片机89C51、数码管显示引言随着计算机技术的飞速发展和普及,数据采集系统在多个领域有着广泛的应用。

数据采集是工、农业控制系统中至关重要的一环,在医药、化工、食品、等领域的生产过程中,往往需要随时检测各生产环节的温度、湿度、流量及电压等参数。

同时,还要对某一检测点任意参数能够进行随机查寻,将其在某一时间段内检测得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,提高产品的合格率,产生良好的经济效益。

随着工、农业的发展,多路数据采集势必将得到越来越多的应用,为适应这一趋势,作这方面的研究就显得十分重要.在科学研究中,运用数据采集系统可获得大量的动态信息,也是获取科学数据和生成知识的重要手段之一。

总之,不论在哪个应用领域中,数据采集与处理将直接影响工作效率和所取得的经济效益。

电压采集课程设计

电压采集课程设计

摘要文介绍了以CC2530为控制核心开发的温室多路数据采集系统的设计与实现。

用电压传感器和A/D转换采集电压,从时钟芯片读取日期和时间,经过芯片分析处理后送至LCD显示器显示,并将电压值经串口送入PC机,与此同时判断电压有没有在设定的范围内,若不在设定范围内,点亮相应LED灯报警。

文章介绍该系统的硬件电路图,软件总流程图和各个模块的流程图。

整个系统采用模块化设计,结构简单、可靠,通过人机交互接口实现各功能设计,操作简单,易于掌握。

关键词: 电压采集,嵌入式,CC2530,串口通信。

一.前言 (3)二.基本原理 (4)2.1 CC2530 结构及实现原理 (4)2.2 电压传感器结构及实现原理 (6)2.3软件方面 (7)2.3.1、串行数据通信(DATA) (7)2.3.2、串行时钟输入(SCK) (7)2.3.3、测量时序(RH 和T) (8)2.3.4、通讯复位时序 (8)三.系统分析 (9)3.1程序流程图 (9)3.2软件子系统设计 (9)四.代码清单 (11)总结 (13)参考文献 (14)一.前言嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统。

随着生活水平的提高和科学技术发展的需求,人类对环境信息的感知上有了更高的要求,在某些特殊工业生产领域和室内存储场合对环境要求显得特别苛刻;随着嵌入式技术的发展,为环境检测提供了更进一步的保障。

基于嵌入式的环境信息采集系统包含感知层、传输层、应用层三个层面;传输层常见的有温电压、烟感、电压、压力等嵌入式传感器模块,传输层包括有线通信和无线通信两部分,应用层包括各种终端。

电压是推动电荷定向移动形成电流的原因。

电流之所以能够在导线中流动,也是因为在电流中有着高电势和低电势之间的差别。

这种差别叫电势差,也叫电压。

换句话说,在电路中,任意两点之间的电位差称为这两点的电压。

单片机实验——利用AD完成电压测量及显示

单片机实验——利用AD完成电压测量及显示

单片机实验——利用AD完成电压测量及显示1.实验目的(1)掌握A/D转换器的基本原理和使用方法。

(2)掌握二进制数和BCD码之间的数值转换方法。

2.预习要点(1)A/D转换器的基本原理和使用方法(2)二进制数和BCD码之间的数值转换方法3.实验设备计算机、单片机实验箱,万用表。

4.实验内容基本要求:利用电位器,在0~5V范围调节A/D转换器0809的输入端ADIN3的电压,在显示电路上显示00~50数值。

扩展要求:相同输入条件下,在显示电路上显示-25~+24的数值实验6ORG 0000HSJMP MAIN;****************************************************;主程序ORG 0030HMAIN:MOV SP,#70H;显示缓存区MOV 32H,#11 ;为了兼容之前的显示程序,所以就通过改变MOV 33H,#11 ;字型的方式让第3-8个数码管不亮,只显示前两位MOV 34H,#11MOV 35H,#11MOV 36H,#11MOV 37H,#11;初始化8155MOV DPTR,#0100HMOV A,#03HMOVX @DPTR,ALOOP:MOV DPTR,#6000H ;AD的地址,应接CS3MOV A,#00H ;选择通道0 IN0MOVX @DPTR,A ;启动AD,开始转换LCALL DELAY ;延时,等待转换完成,一般转换时间为100us左右LCALL ADCON ;读取数据并处理LCALL DISPLAY ;数码管显示SJMP LOOP;*****************************************;读取数据并处理子程序ADCON:MOVX A,@DPTR ;读取AD的输出XMOV B,#51 ;把00H-FFH之间的数据转换为0-50的数据DIV AB ;这个我会给大家讲讲,很简单的,这里就不注释了MOV 30H,AMOV A,BMOV B,#5DIV ABMOV 31H,ARET;*************************************;显示子程序DISPLAY:MOV R0,#30HMOV R3,#0FEHLD0:MOV DPTR,#0102H ;送字位MOV A,R3MOVX @DPTR,AMOV DPTR,#DTAB ;查表,送字形MOV A,@R0MOVC A,@A+DPTRMOV DPTR,#0101HMOVX @DPTR,ALCALL DELAYINC R0MOV A,R3JNB ACC.7,LD1RL AMOV R3,ALJMP LD0LD1:RET;***********************************************;字形表DTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;数字0-9DB 40H,00H ;40H为" - " 00H为不亮;**********************************************;延时1msDELAY:MOV R7,#02HDEL1:MOV R6,#0FFHDEL2:DJNZ R6,DEL2DJNZ R7,DEL1RET;**********************************************;显示子程序(另一种);这里给大家写本实验的另一种显示方法:;这种方法就是30H和31H分别写显示程序,显示完31H之后就;退出程序,很easy的啦,大家还可以多多试试自己编写别的程序;注:本子程序在主程序中并没有调用DISPLAY1:MOV DPTR,#0102HMOV A,#0BFHMOVX @DPTR,AMOV DPTR,#DTABMOV A,30HMOVC A,@A+DPTRMOV DPTR,#0101HMOVX @DPTR,ALCALL DELAYMOV DPTR,#0102HMOV A,#7FHMOVX @DPTR,AMOV DPTR,#DTABMOV A,31HMOVC A,@A+DPTRMOV DPTR,#0101HMOVX @DPTR,ALCALL DELAYRET;**********************************************;实验6扩展ORG 0000HSJMP MAIN;*********************************************;主程序ORG 0030HMAIN:MOV SP,#70H;显示缓存区MOV 32H,#11 ;为了兼容之前的显示程序,所以就通过改变MOV 33H,#11 ;字型的方式让第3-8个数码管不亮,只显示前两位MOV 34H,#11MOV 35H,#11MOV 36H,#11MOV 37H,#11;初始化8155MOV DPTR,#0100HMOV A,#03HMOVX @DPTR,ALOOP:MOV DPTR,#6000H ;;AD的地址,应接CS3MOV A,#00H ;选择通道0 IN0MOVX @DPTR,A ;启动AD,开始转换LCALL DELAY ;延时,等待转换完成,一般转换时间为100us左右LCALL ADCON ;读取数据并处理LCALL DISPLAY ;数码管显示SJMP LOOP;***************************************;AD数据读取并处理子程序ADCON:MOVX A,@DPTR ;读取AD的输出XCJNE A,#128,NEXT ;产生CyNEXT:JC NEXT1 ;判断要转化为0-25还是-25-0,然后决定要不要加负号CLR C ;因为后面用到减法,所以先要清零CySUBB A,#128MOV 30H,#11 ;为0-25之间,符号位什么都不显示SJMP NEXT2NEXT1:CLR C ;因为后面用到减法,所以先要清零CyMOV 62H,AMOV A,#128SUBB A,62HMOV 30H,#10 ;为-25-0之间,符号位显示负号NEXT2:MOV B,#51 ;下面是把0-128的数转换为0-25的数,十位存到31H 里,各位存到32H里DIV AB ;这个和实验6一样的MOV 31H,AMOV A,BMOV B,#5DIV ABMOV 32H,ARET;*************************************;显示子程序DISPLAY:MOV R0,#30HMOV R3,#0FEHLD0:MOV DPTR,#0102H ;送字位MOV A,R3MOVX @DPTR,AMOV DPTR,#DTAB ;查表,送字形MOV A,@R0MOVC A,@A+DPTRMOV DPTR,#0101HMOVX @DPTR,ALCALL DELAYINC R0MOV A,R3JNB ACC.7,LD1RL AMOV R3,ALJMP LD0LD1:RET;***********************************************;字形表DTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;数字0-9DB 40H,00H ;40H为“" 00H为不亮;**********************************************;延时1msDELAY:MOV R7,#02HDEL1:MOV R6,#0FFHDEL2:DJNZ R6,DEL2DJNZ R7,DEL1RET;**********************************************。

用单片机实现电压采集_单片机课程设计

用单片机实现电压采集_单片机课程设计

中国矿业大学单片机课程设计姓名:学号:专业:电子科学与技术题目:用单片机实现电压采集专题:单片机系统设计指导教师:设计地点:时间:2011-042011 年4月单片机课程设计任务书专业年级学号学生姓名任务下达日期:2011年 4月 18日设计日期:2010年4月18日至 2010年 4月29日设计题目:用单片机实现电压采集设计专题题目:单片机系统设计设计主要内容:1、制作可产生0至+5V电压模块2、制作单片机电压采集装置设计要求:一、基本要求(1)制作可产生0至+5V电压模块(2)制作单片机电压采集装置电压采集功能在ADC0809的0通道输入0~5V电压,实时显示被测电压值(显示精度0.001V,即显示1位整数,3位小数)。

二、扩展要求(1)指定通道采集默认采集通道为0,按2:通道+1,按3:通道-1,按1:进入下一模式。

(2)循环采集显示,默认每通道显示2秒钟。

按1:进入下一模式。

(3)报警设置报警上限默认为4.0V ,警下限默认为0.0V按2进行上限设置,按3进行下限设置,按1:进入制定通道选择。

指导教师签字:摘要随着电子科技的不断进步,电压测量成为广大电子领域中必须掌握的过程,并且对测量的精度和采集功能的要求越来越高,而电压的测量与显示系统甚为重要。

本文介绍的重点是电压数据采集与显示系统,数据采集与通信控制采用了模块化设计,数据采集与通信控制采用了单片机52来实现,硬件部分是以单片机为核心,还包括模-数转换模块,显示模块,和串行接口部分,还有一些简单的外围电路。

8路被测电压通过通用ADC0809模-数转换,实现对采集到的数据进行模拟量到数字量的转换,由单片机对数据进行处理,用数码管显示模块来显示所采集的结果,由相关控制器完成数据接收和显示。

本系统主要包括四大模块:数据采集、控制模块、显示模块、A/D转换模块。

绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。

在软件编程上,采用了C语言进行编程,开发环境使用相关集成开发环境。

单片机课程设计AD转换

单片机课程设计AD转换

目录一、课程设计目的------------------------------2二、课程设计内容与要求---------------------2三、芯片简介-----------------------------------3(一) A/D转换芯片0809引脚图与功能简介(二)8051单片机引脚图与引脚功能简介(三)8155引脚图及功能描述四、设计方案及程序流程图---------------------10五、子模块设计及硬件电路连接----------12(一)A/D转换模块(二)单片机模块(三)数码管动态扫描模块六、总程序-----------------------------19七、课程设计总结---------------------------231.收获与体会2.遇到的问题及解决八、参考书目--------------------------------- 24一、课程设计目的单片机课程设计的目的就是要锻炼学生的实际动手能力。

在理论学习的基础上,通过完成一个具有综合功能的小系统,使学生将课堂上学到的理论知识与实际应用结合起来,对电子电路、电子元器件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立设计单片机应用系统的开发设计工作打下一定的基础。

二、课程设计内容与要求要求每个学生(或小组)都要自己动手独立设计完成一个典型的单片机应用小系统。

设计题目由指导教师提供,也可以自己选择设计题目,但难度不应小于参考题目,需经指导教师审查后方可确定是否采纳。

一般4人为一小组。

课程设计的时间为1周。

设计的最终作品包括硬件和软件两个部分,要求能够演示并达到设计指标的要求。

每个学生(或小组)在作品完成后,要经指导教师检查通过后才算完成。

课程设计报告每个学生一份,独立完成。

设计目的:利用MCS-51芯片及相关芯片构成模拟温度检测。

单片机课程设计任务书(AD转换器)

单片机课程设计任务书(AD转换器)

单片机课程设计任务书
题目:A/D转换设计及实验
姓名专业班级
地点工程楼八楼实验室起止时间2015.6.1-2015.6.12
设计目的、内容与要求目的:
(1)掌握A/D转换与单片机接口的方法;
(2)了解A/D芯片0809转换性能及编程方法;
(3)通过实验了解单片机如何进行数据采集。

内容:利用已有的实验系统上的0809 A/D转换器,实验电位器提供模拟量输入,编制程序,将模拟量转换成数字,通过数码管显示出来。

要求:
(1)编制电路图;
(2)程序框图;
(3)写明实验步骤;
(4)分析实验结果。

设计参数(1)系统时钟:
(2)机器周期:
(3)AD转换时钟频率:(4)AD转换时间:(5)输入电压:
(6)显示器显示值。

进度要求要求写到每2天一个进度
(1)布置课题,落实任务,确定课题,收集相关资料。

(2)设计电路,用proteus仿真
(3)编写程序,调试程序
(4)整理实验材料,撰写实验报告
(5)制作ppt
参考资列出至少5个参考文献!
[1]《新概念51单片机C语言教程》郭天祥
[2]《单片机原理与接口技术》邓宏贵
料[3]《数字电子技术基础》阎石
[4]《模拟电子技术基础》童诗白
[5]《基于AT89C51的多功能智能实验测试仪器的设计与实现》王正兰其
89C516RD+实验开发板
它。

单片机电压采集装置课程设计(AD转换及编程实现)

单片机电压采集装置课程设计(AD转换及编程实现)

单片机电压采集装置课程设计(AD转换及编程实现)单片机课程设计姓名:学号:专业:电子科学与技术题目:单片机电压采集装置专题: AD转换及编程实现指导教师:设计地点:实验楼时间:2012 年12月单片机课程设计任务书专业年级电科学号学生姓名任务下达日期:2012年 12 月20 日设计日期: 2012年12月1日至 2012 年 12月20日设计题目:单片机电压采集装置设计专题题目:AD转换及编程实现设计主要内容和要求:制作单片机电压采集装置基本要求1、模拟通道0电压采集功能在ADC0809的输入0~5V电压,数码管实时显示被测电压值(显示精度0.001V,即显示1位整数,3位小数)。

2、指定通道电压采集功能通过模式选择按键切换到“指定通道电压采集功能”,利用+/-按键改变通道值,显示同上。

3、8通道自动循环电压采集功能制作单片机电压采集装置通过模式选择按键切换到“8通道自动循环电压采集功能”,默认通道切换时间为2秒。

扩展要求1、超限报警功能当Vi超出程序预设报警限值时,报警灯以1Hz速度闪烁显示,并显示提示符以区别上限或下限报警。

2、可修改上限和下限报警值的超限报警拨弄能可随意设置上、下限报警值(步长0.1V,默认下限为0V,上限为5V)。

设置时,当下限≥上限(或上限≤下限)时予以提示,并拒绝接受数据。

指导教师签字:摘要:此单片机电压采集装置使用AT89S52芯片和ADC0809芯片进行电压采集,实现AD转换的基本功能。

,键盘电路和8个LED数码显示电路。

扩展电路中包含了A/D转换电路,AD转换五种工作模式下对应要实现的功能:即模式0下完成通道0的模拟信号采集;模式1时完成指定模拟通道电压采集,按加、减(K2,K3)按键手动实现模拟通道的切换, 此外,通过内部定时器T1实现报警功能,即超过上限电压4.999V时报警,同时点亮P1.1即L2发光LED小灯,低于下限电压0.000V时也实现报警功能,只是报警的频率改变,同时点亮P1.0即L1发光LED小灯;而模式2完成8通道模拟信号自动循环采集功能,通过加入内部定时器T0中断,从而实现每隔1秒通道值自动加1的功能;进入模式3的时候,需要人为设置报警上限,此程序设定报警上限为4V,而报警上限默认值为3.999V,通过按加、减(K2/K3)按键实现上限加减0.1V;模式4的时候设置报警下限电压,默认报警下限电压为1.999V,本程序中设置的报警下限电压为2V,通过加减(K2/K3)按键实现电压加减0.1V的功能,最终实现电压采集和扩展功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计姓名:学号:专业:电子科学与技术题目:单片机电压采集装置专题: AD转换及编程实现指导教师:设计地点:实验楼时间:2012 年12月单片机课程设计任务书专业年级电科学号学生姓名任务下达日期:2012年 12 月20 日设计日期: 2012年12月1日至 2012 年 12月20日设计题目:单片机电压采集装置设计专题题目:AD转换及编程实现设计主要内容和要求:制作单片机电压采集装置基本要求1、模拟通道0电压采集功能在ADC0809的输入0~5V电压,数码管实时显示被测电压值(显示精度0.001V,即显示1位整数,3位小数)。

2、指定通道电压采集功能通过模式选择按键切换到“指定通道电压采集功能”,利用+/-按键改变通道值,显示同上。

3、8通道自动循环电压采集功能制作单片机电压采集装置通过模式选择按键切换到“8通道自动循环电压采集功能”,默认通道切换时间为2秒。

扩展要求1、超限报警功能当Vi超出程序预设报警限值时,报警灯以1Hz速度闪烁显示,并显示提示符以区别上限或下限报警。

2、可修改上限和下限报警值的超限报警拨弄能可随意设置上、下限报警值(步长0.1V,默认下限为0V,上限为5V)。

设置时,当下限≥上限(或上限≤下限)时予以提示,并拒绝接受数据。

指导教师签字:摘要:此单片机电压采集装置使用AT89S52芯片和ADC0809芯片进行电压采集,实现AD转换的基本功能。

,键盘电路和8个LED数码显示电路。

扩展电路中包含了A/D转换电路,AD转换五种工作模式下对应要实现的功能:即模式0下完成通道0的模拟信号采集;模式1时完成指定模拟通道电压采集,按加、减(K2,K3)按键手动实现模拟通道的切换, 此外,通过内部定时器T1实现报警功能,即超过上限电压4.999V时报警,同时点亮P1.1即L2发光LED小灯,低于下限电压0.000V时也实现报警功能,只是报警的频率改变,同时点亮P1.0即L1发光LED小灯;而模式2完成8通道模拟信号自动循环采集功能,通过加入内部定时器T0中断,从而实现每隔1秒通道值自动加1的功能;进入模式3的时候,需要人为设置报警上限,此程序设定报警上限为4V,而报警上限默认值为3.999V,通过按加、减(K2/K3)按键实现上限加减0.1V;模式4的时候设置报警下限电压,默认报警下限电压为1.999V,本程序中设置的报警下限电压为2V,通过加减(K2/K3)按键实现电压加减0.1V的功能,最终实现电压采集和扩展功能。

关键词:AT89S52芯片、ADC0809芯片目录1 绪论 (1)1.1 系统设计方案 (1)1.1.1 系统设计原理框图 (1)2 硬件电路设计 (3)2.1 单片机电路 (2)2.1.1 单片机最小系统 (2)2.1.2 显示译码电路 (2)2.2A/D转换 (5)2.2.1ADC0809转换原理 (5)2.2.2AD转换电路 (6)2.2.3 电路设计 (7)3 软件设计 (8)3.1 设计任务 (8)3.1.1 基本任务 (8)3.2 程序设计 (8)3.3.1主程序框图 (8)3.3.2 AD信号采集 (9)4 系统调试 (17)5 总结 (18)参考文献: (19)附录一电源印刷电路板布线图 (20)附录二单片机板电路原理图 (21)附录三单片机印刷电路板布线图 (22)附录四元件清单 (24)1 绪论1.1系统设计方案本次实验要求设计电压采集装置,课程设计分设计、制作和调试三个部分。

设计选题以单片机为核心,基本内容应包括单片机最小系统、键盘和LED 显示电路,以及设计系统涉及的其他电路。

系统硬件电路由标准电路和自制电路两部分组成。

标准电路包括单片机最小系统、8个LED数码管电路和键盘电路,可根据设计需要进行配置选用。

自制电路需自行设计焊接,包含标准电路不具备的其他电路。

设计中采用了模数转换器,利用ADC0809型8位MOS型A/D转换器。

可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,实现模拟信号到数字信号的转换。

控制部分采用单片机89C52来完成。

显示部分利用LED数码管显示模块,来显示采集到的电压分量。

1.2.1系统设计原理框图2 硬件电路设计系统硬件电路由标准电路和自制电路两部分组成。

标准电路包括单片机最小系统、6个LED数码管电路和键盘电路,可根据设计需要进行配置选用。

自制电路需自行设计焊接,包含标准电路不具备的其他电路。

2.1单片机电路2.1.1单片机最小系统CPU原理图该原理图包含单片机以及外部连接译码,锁存电路端口,其中的ALE,REST为高电平时用来启动ADC0809.P0、P2口控制数码输出显示,P3口的P3.3、P3.4、P3.5控制按键,P1.1~P1.3控制通道选择。

晶振采用12MHZ,该频率有利于提高串口的通信可靠性,同时又保证单片机有较高的运行速度。

2.1.2 显示译码电路LED显示电路可提供8位LED显示;可显示P1(P3)口状态;也可显示输入按键状态LED显示电路显示电路采用6位共阳极LED动态扫描显示,CD4511输出所需字形,74LS138选择字位。

在动态方式中,逐个地循环地点亮各位显示器。

数码管显示电路显示译码电路部分由P0口或P2口输出显示。

显示译码器采用CD4511芯片:输入:BCD 输出:七段码74LS138芯片是用来控制显示时候的字位的,由于单片机的管脚是有限的通过使用138芯片可以避免少使用些单片机的管脚,当输入001时,译码可得10111111:输入:0~7 输出:低电平2.2 A/D转换2.2.1 ADC0809转换原理当单片机端的P3.3接低电平时,可以使两个非门打开(1)当模拟量送至某一输入通道后,CPU将标识该通道编码的三位地址信号经数据线或地址线输入到ADDC、ADDB、ADDA引脚上。

(2)地址锁存允许ALE锁存地址信号,启动命令START启动A/D转换。

(3)转换开始,EOC变低电平,转换结束,EOC变为高电平。

EOC可作为中断请求信号。

(4)转换结束后,可通过执行IN指令,设法在输出允许OE脚上形成一个正脉冲,打开三态缓冲器把转换的结果输入到DB,一次A/D转换便完成。

2.2.2 AD转换电路数码管显示电路:用P2 口:bcd 码输出--P2.3~P2.0;字位选择--cba=P2.6~P2.4 ;小数点--P2.7键盘电路: P3口低四位1号按键P3.0---模式切换2号按键P3.1---通道、报警限加3号按键P3.2--通道、报警限减4号按键P3.3-- 查询法,接收ad转换状态(不作为按键使用)中断法,收ad结束中断信号ADC0809电压转换电路控制信号:/wr==p3.6 /rd==p3.7eoc== p3.3 Cs== p3.5转换通道选择地址线:CBA ==P1(6-4)3 软件设计3.1 设计任务3.1.1 基本任务1、进行电压采集并显示3.1.2 扩展任务1、指定通道采集2、循环采集显示,默认每通道显示1秒钟。

3、报警设置报警上限为4V报警下限为2V3.2 程序设计3.2.1 主程序框图主程序框图3.3.2AD信号采集程序#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define zxma P0 //字型码地址,通过P0口送字型码#define zwma P2 //字位码地址,通过P2口送字位码sbit l owflag=P1^0; //下限报警LEDsbit h ighflag=P1^1; //上限报警LEDsbit a d_adda=P1^4; //ad0809地址端A,低位sbit a d_addb=P1^5; //ad0809地址端B,中位sbit a d_addc=P1^6; //ad0809地址端C,高位sbit k ey1=P3^0; //按键1sbit k ey2=P3^1; //按键2sbit k ey3=P3^2; //按键3sbit a d_eos=P3^3; //ad0809转换结束标志,1转换完,0正在转换sbit speeker=P3^4; //蜂鸣器报警sbit a d_cs=P3^5; //ad0809片选,低电平有效sbit a d_wr=P3^6; //ad0809写入信号,锁存地址和启动adsbit a d_rd=P3^7; //ad0809读出信号,通过P0口读回ad转换结果uchar ad_data; //ad采集数据uchar pdata ad_start,ad_over; //两个片外地址,用于产生读写信号uchar ad_td; //ad采集通道uchar ad_mode; //ad采集模式uchar key;uint ad_high=4000; //ad报警上限,设置为4Vuint ad_low=2000; //ad报警下限,设置为2Vuchar tt0=100; //定时1s(10ms,需要100次)sbit ad_clk=P1^7; //本程序利用P1.7产生方波来给ad0808提供脉冲,/*共阴极数码管字形码,共阳极数码管取反即可*/uchar code zixing[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};/*共阳极数码管字位码,共阴极数码管取反即可*/uchar code ziwei[]={0x01, 0x02, 0x04, 0x08,0x10, 0x20, 0x40, 0x80};void timer2int();void delay(uint i);void disp(void);void ad_change(void);void keyscan(void);void keyanswer(void);void alarm();void timer0int(void);void timer0chengxu(void);void timer1int(void);void timer1chengxu(void);void main(void){timer0int();timer1int();while(1){keyscan();keyanswer();ad_change();alarm();disp();}}void keyscan(void){if(!key1){while(!key1)disp();key=1;F0=1;}if(!key2){while(!key2)disp();key=2;F0=1;}if(!key3){while(!key3)disp();key=3;F0=1;}}void keyanswer(void){if(key==1&F0==1){ad_mode++;if(ad_mode==5)ad_mode=0;}if(ad_mode==0){ad_td=0;}if(ad_mode==1){if(key==2&F0==1){ad_td++;if(ad_td==8)ad_td=0; }if(key==3&F0==1){ad_td--;if(ad_td==255)ad_td=7; }}if(ad_mode==2)TR0=1; else TR0=0;if(ad_mode==3){if(key==2&F0==1){ad_high=ad_high+100;}if(key==3&F0==1){ad_high=ad_high-100;}}if(ad_mode==4){if(key==2&F0==1){ad_low=ad_low+100;}if(key==3&F0==1){ad_low=ad_low-100;}}F0=0;}void timer0int(void){TMOD=0x11;TH0=(65536-10000/1)/256;TL0=(65536-10000/1)%256;ET0=1;EA=1;TR0=0;}void timer0chengxu(void) interrupt 1 {TH0=(65536-10000/1)/256;TL0=(65536-10000/1)%256;tt0--;if (tt0==0){tt0=100;ad_td++;if(ad_td==8)ad_td=0;}}void timer1int(){TMOD=0x11;TH1=(65536-500/1)/256;TL1=(65536-500/1)%256;ET1=1;EA=1;TR1=0;}void timer1chengxu() interrupt 3{uint ad_dianya;if (ad_dianya<ad_low){lowflag=0;TH1=(65536-100/1)/256;TL1=(65536-100/1)%256;speeker=~speeker;}else{lowflag=~lowflag;highflag=0;TH1=(65536-5000/1)/256;TL1=(65536-5000/1)%256;speeker=~speeker;}lowflag=1;highflag=1;}void alarm(){uint ad_dianya;// uint speaker;if (ad_dianya>ad_high|ad_dianya<ad_low) {TR1=1; //开放T1中断}else TR1=0; //关闭T1中断}void ad_change(void){ad_adda=0;ad_addb=0;ad_addc=0;P1=P1|(ad_td<<4);ad_cs=0;ad_start=0x00;while(ad_eos==1)disp();ad_data=ad_over;}void disp(void){ uint ad_dianya;uchar j,k,l,m;if(ad_mode==0|ad_mode==1|ad_mode==2){ad_dianya=ad_data*19.60784;}if(ad_mode==3){ad_dianya=ad_high;}if(ad_mode==4){ad_dianya=ad_low;}j=ad_dianya/1000;k=ad_dianya%1000/100;l=ad_dianya%100/10;m=ad_dianya%10;zwma=~ziwei[0]; zxma=~zixing[ad_mode]; delay(1); zxma=0xFF;zwma=~ziwei[2]; zxma=~zixing[ad_td]; delay(1); zxma=0xFF;zwma=~ziwei[4]; zxma=~zixing[j]&0x7f; delay(1); zxma=0xFF;zwma=~ziwei[5]; zxma=~zixing[k]; delay(1); zxma=0xFF;zwma=~ziwei[6]; zxma=~zixing[l]; delay(1); zxma=0xFF;zwma=~ziwei[7]; zxma=~zixing[m]; delay(1); zxma=0xFF;void delay(uint i){unsigned int j,k;for(j=0;j<i;j++)for(k=0;k<121;k++);}void timer2int(){C_T2=0;RCAP2H=(65536-100)/256;RCAP2L=(65536-100)%256;EA=1;ET2=1;TR2=1;}void timer2pro(void) interrupt 5 using 0 { TF2=0;ad_clk=~ad_clk;}4 系统调试硬件焊接分为单片机板和扩展版两部分。

相关文档
最新文档