基于8051单片机的数据采集系统设计

基于8051单片机的数据采集系统设计
基于8051单片机的数据采集系统设计

基于8051单片机的数据采集系统设计

一.设计任务

设计一个数据采集系统,要求:

1.有一组开关量和1路模拟量,采样开关量控制一组发光二极管,定时采样模拟量并显示出来。

2.定时采样ADC0809某通道模拟信号,每隔2秒在显示器或数码管上显示出来。

3.定时的实现。

二.设计思路

数据采集是指从传感器和其他待测设备中自动采集模拟或数字信号电量或非电量信号送入控制器中进行分析和数据处理。

本设计采用单路模拟信号的数据采集。设计思路为:通过传感器采集待测的信号,将其转换为相应的电压信号,经运算放大器放大后送入模数转换器ADC0809在单片机的控制下进行模数转换。每次转换结束后,单片机在控制电路的作用下将数据读走存入片内存储器。而单片机则需要将收到的数据送入PC机中进行相应处理。单片机与PC 间的数据通信方式为串口通信协议RS 232,通过芯片MAX232进行电气匹配。

目录

一.系统总统设计方案

二.系统的硬件设计

2.1信号调理电路

2.2数据采集电路

2.3 80C51芯片内部功能与引脚介绍

三.系统的软件设计

3.1主程序

3.2 A/D转换

3.3数据采集中断程序

四.设计总结

五.参考文献

六.附录—数据采集系统原理图一.系统总统设计方案

根据系统基本要求,将本设计系统划分为信号调理电路、8路模拟信号的产生与A/D 转换器、发送端的数据采集与传输控制器、人机通道的接口电路、数据传输接口电路几个部分。

数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。系统框图如下图1所示。

图1 一般系统框图

二.系统的硬件设计

2.1信号调理电路

信号调理能够将被测对象的输出信号变换成计算机要求的输入信号。如图2所示,为

避免小信号通过模拟开关造成较大的附加误差,在传感器输出信号过小时,每个通道应

设前置放大环节。

图2 信号调理过程

2.2 数据采集电路

把连续变化量变成离散量的过程称为量化,也可理解为信号的采样。

把以一定时间间隔T逐点采集连续的模拟信号,并保持一个时间t,使被采集的信号变成时间上离散、幅值等于采样时刻该信号瞬时值的一组方波序列信号,即采样信号。

2.2.1 ADC0809内部功能与引脚介绍

ADC0809是逐位逼近型8位单片A/D转换芯片。片内含8路模拟开关,可允许8路模拟量输入。片内带有三态输出缓冲器,可直接与系统总线相连。ADC0809没有内部时钟,必须由外部提供,其范围为10kHz~1.28MHz。其内部结构如图3所示。

图3 ADC0809内部结构

图4 为ADC0809外部引线图。各引脚的功能如下:

IN0~IN7:8路模拟电压输入端。可输入0~5V待转换的模拟电压。

D0~D7:输出数据线。三态输出,D7是最高位,D0是最低位。

ADDA、ADDB、ADDC:通道选择端。ADDA 为最低位,ADDC为最高位。

ALE:通道地址锁存信号,用来锁存ADDA ~ADDC端的地址输入,在上升沿有效。START:启动信号输入端,下降沿有效。在启动信号下降沿,启动变换。

EOC:转换结束状态信号。启动A/D转换时它自动变为低电平。

OE:读允许信号,高电平有效。在其有效期间,CPU将转换后的数字量读入。CLK:时钟输入端。

REF(-)、REF(+):参考电压输入端。ADC0809的参考电压为+5V。

VCC:+5V电源输入。

GND:地线。

2.2.2 ADC0809的性能

ADC0809的主要性能:

(1)COMS工艺制造

(2)单电源供电

(3)逐次比较型

(4)无需外部进行零点和满度调整

(5)并行输出

(6)可锁存三态输出,输出与TTL兼容

(7)易与各种微控制器接口

(8)具有锁存控制的8路模拟开关

(9)分辨率为8位

(10)转换精度为4.0

%

图4 ADC0809外部引线图

2.380C51芯片内部功能与引脚介绍

MCS—51单片机是在一块芯片上集成了CPU、RAM、ROM、定时器/计数器和多种功能的I/O口等一台计算机所需要的基本功能部件。单片机内包含一个8位CPU、一个片内振荡器及时钟电路、4KB ROM程序存储器、128B RAM数据存储器、两个16位定时器/计数器、可寻址64KB外部数据存储器和64KB外部程序存储器空间的控制电路、32条可编程的I/O线(4个8 位并行I/O端口)、一个可编程全双工串行接口、具有5个中断源两个优先级嵌套中断结构。图5和图6分别为80C51的内部结构框图和外部引线图。单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

●电源:

(1)VCC - 芯片电源,接+5V;

(2)VSS - 接地端;

●时钟:

XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

●控制线:

控制线共有4根,

(1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲

①ALE功能:用来锁存P0口送出的低8位地址

②PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程

脉冲。

(2)PSEN:外ROM读选通信号。

(3)RST/VPD:复位/备用电源。

①RST(Reset)功能:复位信号输入端。

②VPD功能:在Vcc掉电情况下,接备用电源。

(4)EA/Vpp:内外ROM选择/片内EPROM编程电源。

①EA功能:内外ROM选择端。

②Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

●I/O线

80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具

有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。其第二功能如下:

P3.2 : INT0(外部中断0)

P3.3 :INT1(外部中断1)

P3.4 :T0(定时器0外部输入)

P3.5 :T1(定时器1外部输入)

P3.6 : WR(外部数据存储器写脉冲)

P3.7 :RD(外部数据存储器读脉冲)

图6 80C51的外部引线图

图5 80C51的内部结构框图

三.系统的软件设计

整个系统软件设计分为两个部分,作为主控的PC 端的软件设计及作为数据采集器的单片机终端节点的软件设计。系统采用模块化编程,将各部分功能分别实现,主要的功能子程序有:数据采集、部分中断子程序。主程序流程图如图7所示。 3.1主程序

开始

系统初始化

调用数据采集子程序 调用标度变换子程序 取相应通道数据 调用数制转换子程序

调用数据显示子程序

调用数据发送子程序

图7主程序流程图

3.2 A/D 转换

中断方式使用EOC 信号作为向8051的中断申请。在主程序中,向ADC 发出首次启动转换信号后,并计数管理转换通道数。当检测到EOC 的请求后,转去执行中断服务程序,读取转换结果,并启动下一次转换,后继续执行。图8为A/D 转换程序流程图。

3.3数据采集中断程序

开始

取转换量 存入A/D 转换数据缓冲区 通道号+1 缓存单元地址+1

通道数-1

启动下次转换

返回

图9 数据采集中断程序流程图

开始

定义A/D 转换缓冲区首地址

开中断

置通道数

置DPTR

启动转换

中断处理

各通道采完?

关中断

返回

等待中断 N

图8 A/D 转换程序流程图

Y

四.设计总结

通过对单片机这门课的学习,使我对单片机系统有了更深入的了解,明白了单片机的重要性和强大的应用性。通过学习,我对单片机系统整体框架有了更清晰的认识。其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。

通过本次课程设计,我进一步巩固了课本的理论知识,增强了动手能力,同时也增强了我通过检索资料来获取相关专业信息以及利用检索到的信息来解决面临问题的能力。本次设计使我深刻认识到自己软件编程方面的知识薄弱,同时也使我体会到软件编程在实际硬件电路连接中的重要作用,软件编程的使用是硬件开销大大减少,同时也使设计更加的简洁易于控制。在今后的学习我要加强软件编程方面知识的积累和运用。次外,通过本次设计,我对单片机仿真软件Proteus也有了一定的认识。五.参考文献

[1]蔡美琴,张为民,何金儿,毛敏,陶正苏,毛义梅MCS-51系列单片机系统及其应用(第二版)高等教育出版社2004年

[2] 冯博琴,吴宁微型计算机原理与接口技术(第2版)清华大学出版社2007年六.附录—数据采集系统原理图

基于51单片机的流水灯

基于51单片机的流水灯 利用51单片机P0口实现8个LED(发光二极管)的流水灯控制。可以使用Proteus软件进行仿真调试。 1 硬件设计 利用单片机的PO口控制8个LED,其电路如下图所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“LSD.DSN”。在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示 都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 流水灯又称为跑马灯,在函数中可以将P0口的八种不同状态做成一维数组,循环执行即可,如下所示。当然也可以采用其它函授来实现,如左移一位<<1(或右移一位>>1),循环左移函授_crol_(或循环右移函授_cror_)等。 /****************************************************************** 流水灯

*******************************************************************/ #include "reg51.h" const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delayms(unsigned int x) //延时 { unsigned int j; unsigned char k; for(j=0;j

AT89C51单片机的基本结构和工作原理

AT89C51单片机的主要工作特性: ·内含4KB的FLASH存储器,擦写次数1000次; ·内含28字节的RAM; ·具有32根可编程I/O线; ·具有2个16位可编程定时器; ·具有6个中断源、5个中断矢量、2级优先权的中断结构; ·具有1个全双工的可编程串行通信接口; ·具有一个数据指针DPTR; ·两种低功耗工作模式,即空闲模式和掉电模式; ·具有可编程的3级程序锁定定位; AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz. AT89C51各部分的组成及功能: 1.单片机的中央处理器(CPU)是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。

(1)运算器 运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。 ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。 暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。 累加器是CPU使用最频繁的一个寄存器。ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。 B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。运算结果存于AB寄存器中。 (2)控制器 控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。AT89C51单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。复位时PC的内容是0000H. (3)存储器 单片机内部的存储器分为程序存储器和数据存储器。AT89C51单片机的程序存储器采用4KB的快速擦写存储器Flash Memory,编程和擦除完全是电器实现。 (4)外围接口电路 AT89C51单片机的外围接口电路主要包括:4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器以及中断系统等。 AT89C51的工作原理: 1.引脚排列及功能 AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。 (1)I/O口线 ·P0口 8位、漏极开路的双向I/O口。 当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。P0口也可做通用I/O口使用,但需加上拉电阻。作为普通输入时,应输出锁存器配置1。P0口可驱动8个TTL负载。 ·P1口 8位、准双向I/O口,具有内部上拉电阻。 P1口是为用户准备的I/O双向口。在编程和校验时,可用作输入低8位地址。用作输入时,应先将输出锁存器置1。P1口可驱动4个TTL负载。 ·P2 8位、准双向I/O口,具有内部上拉电阻。 当使用外存储器或外扩I/O口时,P2口输出高8位地址。在编程和校验时,P2口接收高字节地址和某些控制信号。 ·P3 8位、准双向I/O口,具有内部上拉电阻。 P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/校验时,P3口接收某些控制信号。它可驱动4个TTL负载。 (2)控制信号线

基于8051单片机的波形发生器设计

基于8051单片机的波形发生器设计 摘要:波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。本系统是基于A T89C51单片机的数字式低频信号发生器,采用AT89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键和8位数码管等。通过按键控制可产生方波、三角波、正弦波等,同时用数码管显示其对应的频率。介绍DAC 0832数模转换器的结构原理和使用方法,A T89C51的基础理论,以及与设计电路有关的各种芯片。文中着重介绍了如何利用单片机控制D/A转换器产生上述信号的硬件电路原理和软件编程原理,其设计简单、性能优好,可用于多种需要低频信号的场所,具有一定的实用性。 关键词:AT89C51,DAC0832,LM324 一引言 波形发生器也称函数发生器,作为实验信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件设计而成,且波形种类有限,多为锯齿波,正弦波,方波,三角波等波形,而且这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源,而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC很大。大电阻,大电容在制作上有困难,参数的精度也难以保证。体积大,漏电,损耗显著更是致命的弱点。 二功能分析和方案论证与比较 依据不同的设计要求选取不同的设计方案,波形发生器的具体指标要求也有所不同。通常,波形发生器需要实现的波形有正弦波、方波、三角波和锯齿波,有些场合可能还需要任意波形的产生。各种波形指标有:波形的频率、幅度要求,频率稳定度,准确度等。对于不同波形,具体的指标要求也会有所差异,例如,占空比是脉冲波形特有的指标。波形发生器的设计方案多种多样,大致可以分为三大类:纯硬件设计法、纯软件设计法和软硬件结合设计法。 1 方案一 在波形发生器设计纯硬件法的早期,波形发生器的设计主要是采用运算放大器加分立元件来实现。实现的波形比较单一,主要为正弦波、方波和三角波。工作原理相对简单:首先是产生正弦波,然后通过波形变换(正弦波通过比较器产生方波,方波经过积分器变为三角波)实现方波和三角波。在各种波形后加上一级放大电路,可以使输出波形的幅度达到要求,通过开关电路实现不同输出波形的切换,改变电路的具体参数可以实现频率、幅度和占空比的改变。通过对电路结构的优化及所用元器件的严格选取可以提高电路的频率稳定性和准确度。纯硬件法中,正弦波的设计是基础,实现方法也比较多,电路形式一般有LC、RC和石英晶体振荡器三类。LC振荡器适宜于产生几兆赫兹至几百兆赫兹的高频信号;石英晶体振荡器能产生几千赫兹至几百兆赫兹的高频信号且稳定度高;对于频率低于几兆赫兹,特别是在几百赫兹时,常采用RC振荡电路。RC振荡电路又分为文氏桥振荡电路、双T网络式和移相式振荡电路等类型。其中,以文氏桥振荡电路最为常用。目前,实现波形发生器最简单的方法是采用单片集成的函数信号发生器。它是将产生各种波形的功能电路集成到一个集成电路芯片里,外加少量的电阻、电容元件来实现。采用这种方法的突出优势是电路简单,实现方便,精度高,性能优越;缺

8051单片机的内部结构

8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器(CPU)是整个单片机的核心 部件,是8位数据宽度的处理器,能处理 8位二进制数据或代码,CPU负责控制、 指挥和调度整个单元系统协调的工作,完 成运算和控制输入输出功能等操作。 ·数据存储器(RAM): 8051内部有128个8位用户数据存储 单元和128个专用寄存器单元,它们是统 一编址的,专用寄存器只能用于存放控制 指令数据,用户只能访问,而不能用于存 放用户数据,所以,用户能使用的的RAM 只有128个,可存放读写的数据,运算的 中间结果或用户定义的字型表。 ·程序存储器(ROM): 8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 ·定时/计数器(ROM): 8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。 ·并行输入输出(I/O)口: 8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。 ·全双工串行口: 8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以 用作异步通信收发器,也可以当同步移位器使用。 ·中断系统: 8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可 满足不同的控制要求,并具有2级的优先级别选择。 ·时钟电路: 8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051 单片机需外置振荡电容。

关于习题二答案-单片机的指令系统

关于习题二答案-单片机的指令系统

1、执行下列3条指令后,30H单元的内容是( C )。 MOV R0,#30H MOV 40H,#0EH MOV @R0,40H A)40H B)30H C)0EH D)FFH 2、在堆栈中压入一个数据时(B)。 A)先压栈,再令SP+1 B)先令SP+1,再压栈 C)先压栈,再令SP-l D)先令SP-1,再压栈 3、在堆栈操作中,当进栈数据全部弹出后,这时的SP应指向 A 。 A)栈底单元 B)7FH

C)栈底单元地址加1 D)栈底单元地址减l 4、指令MOVC A,@A+PC源操作数的寻址方式是 D 。 A)寄存器寻址方式B)寄存器间接寻址方式 C)直接寻址方式D)变址寻址方式 5、ANL 20H,#30H指令中,源操作数的寻址方式是 A 。 A)立即寻址方式B)直接寻址方式 C)位寻址方式D)相对寻址方式 6、ANL C,/30H指令中,源操作数的寻址方式是 C 。

A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 7、Jz rel指令中,操作数rel的寻址方式是 D 。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 8、Jz rel指令中,是判断 A 中的内容是否为0。 A)A B) B C) C D)PC 9、MOVX A,@DPTR指令中源操作数的寻址方式是(B)

A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 10、下面条指令将MCS-51的工作寄存器置成3区(B) A)MOV PSW,#13H (B)MOV PSW,#18H 11、MOV C,00H指令中源操作数的寻址方式是(A) A)位寻址B)直接寻址 C)立即寻址 D)寄存器寻址 1、8051单片机共有7 种寻址方式。访问外部数据存储器应采用寄存器间接寻址方式。 2、访问外部数据存储器应采用寄存器间接寻址方式;查表应使用变址寻址方式。 3、在8051单片机中,堆栈操作的指令有PUSH 和 POP两个。 4、在8051单片机中,子程序调用的指令有ACALL 和 LCALL两个。 5、CJNE指令都是 3字节字节指令。

基于51单片机

目录 1 引言 (1) 1.1设计要求 (1) 1.2方案论证 (2) 2 单片机和D/A转换器 (3) 2.1AT89C51单片机 (3) 2.2D/AC0808 (5) 2.3LED数码 (7) 3 电路原理与硬件实现 (9) 3.1单片机最小系统及端口连接 (9) 3.2原理介绍 (10) 3.3硬件调试 (13) 4 软件程序设计 (14) 4.1开发工具介绍 (14) 4.2软件流程图 (17) 4.3软件调试 (17) 结束语 (18) 致谢 (18) 参考文献 (18) 附录 (18)

基于51单片机的程控直流电压源 XXX XXXX物理与电子信息工程系,XXX 摘要:本设计是以ATM89C51单片机为控制核心的开关电源,具有输出电压可调,电压数字显示的功能。具体阐述了开关电源的基本原理及工作过程,电源各硬件模块的设计及软件设计。该电源硬件模块包括输入整流和滤波模块、单片机供电电源模块、D/A转换模块及LED显示模块。 关键词:稳压电源;单片机89C51;D/A转换 1 引言 随着电力电子技术的迅速发展,直流电源应用非常广泛,其好坏直接影响着电气设备或控制系统的工作性能。直流稳压电源是电子技术常用的设备之一,广泛的应用于教学、科研等领域。传统的多功能直流稳压电源功能简单、难控制、可靠性低、干扰大、精度低且体积大、复杂度高。而基于单片机控制的直流稳压电源能较好地解决以上传统稳压电源的不足。其良好的性价比更能为人们所接受,因此,具有一定的设计价值。从上世纪九十年代末起,随着对系统更高效率和更低功耗的需求,电信与数据通讯设备的技术更新推动电源行业中直流|直流电源转换器向更高灵活性和智能化方向发展。设计的直流稳压电源主要有单片机系统、键盘、数码管显示器、D/A转换电路、直流稳压电路部分组成,数控电源采用按键盘输入数据,单片机通过D/A,控制驱动模块输出一个稳定电压。工作过程中,稳压电源的电压值由单片机输出,驱动LED显示,由键盘控制进行动态逻辑切换。以单片机为核心的智能化高精度简易直流电源的设计,电源采用数字调节、输出精度高,特别适用于各种有较高精度要求的场合。目前所使用的直流可调电源中,大多为旋钮开关调节电压,调节精度不高,而且经常跳变,使用麻烦。利用本数控电源,可以达到每步0.1V 的精度,输出电压范围0~9.9V ,电流可以达到500mA ,且数码显示直观。 电源采用数字控制,具有以下明显优点: (1)易于采用先进的控制方法和智能控制策略,使电源模块的智能化程度更高,性能更完美。 (2)控制灵活,系统升级方便,甚至可以在线修改控制算法,而不必改动硬件线路。 (3)控制系统的可靠性提高,易于标准化,可以针对不同的系统(或不同型号的产品),采用统一的控制板,而只是对控制软件一些调整即可。 1.1 设计要求 基本要求: (1)输出电压:范围0~9.9V步进0.1V纹波不大于10mv (2)输出电流:500mA (3)输出电压由数码显示

基于51单片机的源代码

基于51单片机的源代码 JIN1 EQU P1.0 JIN2 EQU P1.1 JIN3 EQU P1.2 JIN4 EQU P1.3 INH EQU P2.3 CP EQU P2.2 ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP,#70H MOV TMOD,#20H ;自动重装 MOV SCON,#50H MOV PCON,#80H ;双倍波特率SMOD=1 MOV TH1,#0FFH ;57600MHZ波特率初值 MOV TL1,#0FFH MOV P1,#00H MOV P2,#00H SETB TR1 SETB P2.1 LOOP: LCALL keep LCALL SHUCHU ACALL QINGLING AJMP LOOP QINGLING: CJNE R0,#17,QINGLING1 MOV R0,#00H QINGLING1: CJNE R1,#9,FANHUI MOV R1,#00H FANHUI: RET SHUCHU: ACALL SHUA ACALL SHUB ACALL SHUC ACALL SHUD SHUA: MOV R3,#4 SETB JIN1 LLS: MOV R2,#8 LJMP keep INC R1 SETB INH CLR JIN1 CLR INH LLS1: LJMP keep SETB CP

CLR CP DJNZ R2,LLS1 DJNZ R3,LLS RET SHUB: MOV R3,#4 SETB JIN2 QQS: MOV R2,#8 LJMP keep INC R1 SETB INH CLR JIN2 CLR INH QQS1: LJMP keep SETB CP INC R0 CLR CP DJNZ R2,QQS1 DJNZ R3,QQS RET SHUC: MOV R3,#4 SETB JIN3 JJS: MOV R2,#8 LJMP keep INC R1 SETB INH CLR JIN3 CLR INH JJS1: LJMP keep SETB CP INC R0 CLR CP DJNZ R2,JJS1 DJNZ R3,JJS RET SHUD: MOV R3,#4 SETB JIN4 KKS: MOV R2,#8 LJMP keep INC R1 SETB INH CLR JIN4 CLR INH KKS1: LJMP keep

8051单片机CPU的内部组成及功能介绍

8051单片机CPU的内部组成及功能介绍 一、运算器 运算器以完成二进制的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。累加器ACC是一个八位寄存器,它是CPU中工作最频繁的寄存器。在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。寄存器B主要用于乘法和除法操作。标志寄存器PSW也是一个八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。其每位的具体含意如下所示。PSW CY AC FO RS1 RS0 OV -P对用户来讲,最关心的是以下四位。 1?进位标志CY(PSW?7)。它表示了运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。 2?辅助进位标志AC。又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。 3?溢出标志位OV。MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。 4?奇偶标志P。反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。 PSW的其它位,将在以后再介绍。由于PSW存放程序执行中的状态,故又叫程序状态字?运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)。其功能在介绍位指令时再说明。 二、控制器 控制器是CPU的神经中枢,它包括定时控制逻辑电路、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP等。这里程序计数器PC是由16位寄存器构成的计数器。要单片机执行一个程序,就必须把该程序按顺序预先装入存储器ROM的某个区域。单片机动作时应按顺序一条条取出指令来加以执行。因此,必须有一个电路能找出指令所

基于51单片机的无线通信

湖北民族学院 信息工程学院 课程设计报告书 题目: 基于51单片机的无线通信 课程:数字通信系统课程设计 专业:电子 班级: 0314411 学号: 0 学生姓名:田紫龙 指导教师:黄双林 2017年 06月 18日

摘要 本文设计了一种以AT89S52单片机为控制核心的无线通信控制模块,详细说明了该系统的基本原理、主要电路、硬件框架以及软件框架。整个系统采用模块化设计,主要包括单片机与下位机之间的无线通信控制电路,以及无线通信模块与51单片机之间通信接口电路。该通信控制系统通过51单片机和nrf2401的spi通信,从而通过无线通信控制模块形成与下位机的联系,控制下位机运动控制器,并且将通信接收的数据保存到扩展的存储器内。 本模块的通信方法简便,除了可以进行远程实时控制外,还可广泛的应用于工业监控和数据采集系统。本系统具有性能可靠、抗干扰能力强、功耗低、性价比高等优点,在无线通信领域具有重要的应用价值和良好的发展前景。 关键字:无线通信控制;AT89S52;nRF2401;串行通信 目录 1 绪论.......................................................错误!未定义书签。

2 总体设计...................................................错误!未定义书签。 3 各个模块简介................................................错误!未定义书签。 1.单片机STC89C52和nRF2401的接口电路.....................错误!未定义书签。 无线模块简介.............................................错误!未定义书签。 1602简介................................................错误!未定义书签。 4 各个模块设计................................................错误!未定义书签。硬件电路板的设计..............................................错误!未定义书签。 软件程序设计..............................................错误!未定义书签。 主程序模块............................................错误!未定义书签。 结果与分析..............................................错误!未定义书签。总结 .........................................................错误!未定义书签。参考文献......................................................错误!未定义书签。

关于习题二答案-单片机的指令系统

1、执行下列3条指令后,30H单元的容是( C )。 MOV R0,#30H MOV 40H,#0EH MOV R0,40H A)40H B)30H C)0EH D)FFH 2、在堆栈中压入一个数据时(B)。 A)先压栈,再令SP+1 B)先令SP+1,再压栈 C)先压栈,再令SP-l D)先令SP-1,再压栈 3、在堆栈操作中,当进栈数据全部弹出后,这时的SP应指向 A 。 A)栈底单元B)7FH C)栈底单元地址加1 D)栈底单元地址减l 4、指令MOVC A,A+PC源操作数的寻址方式是 D 。 A)寄存器寻址方式B)寄存器间接寻址方式 C)直接寻址方式D)变址寻址方式 5、ANL 20H,#30H指令中,源操作数的寻址方式是 A 。 A)立即寻址方式B)直接寻址方式 C)位寻址方式D)相对寻址方式 6、ANL C,/30H指令中,源操作数的寻址方式是 C 。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 7、Jz rel指令中,操作数rel的寻址方式是 D 。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 8、Jz rel指令中,是判断 A 中的容是否为0。 A) A B) B C) C D)PC 9、MOVX A,DPTR指令中源操作数的寻址方式是(B) A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 10、下面条指令将MCS-51的工作寄存器置成3区(B) A)MOV PSW,#13H (B)MOV PSW,#18H 11、MOV C,00H指令中源操作数的寻址方式是(A) A)位寻址 B)直接寻址 C)立即寻址 D)寄存器寻址 1、8051单片机共有7 种寻址方式。访问外部数据存储器应采用寄存器间接寻址方式。 2、访问外部数据存储器应采用寄存器间接寻址方式;查表应使用变址寻址方式。 3、在8051单片机中,堆栈操作的指令有PUSH 和 POP两个。 4、在8051单片机中,子程序调用的指令有ACALL 和 LCALL两个。 5、CJNE指令都是 3字节字节指令。 6、指令SJMP $ 的功能是无条件转移到本指令的首地址执行程序,即将本指令的首地址送给PC。

基于8051单片机的数据采集系统设计

基于8051单片机的数据采集系统设计 一.设计任务 设计一个数据采集系统,要求: 1.有一组开关量和1路模拟量,采样开关量控制一组发光二极管,定时采样模拟量并显示出来。 2.定时采样ADC0809某通道模拟信号,每隔2秒在显示器或数码管上显示出来。 3.定时的实现。 二.设计思路 数据采集是指从传感器和其他待测设备中自动采集模拟或数字信号电量或非电量信号送入控制器中进行分析和数据处理。 本设计采用单路模拟信号的数据采集。设计思路为:通过传感器采集待测的信号,将其转换为相应的电压信号,经运算放大器放大后送入模数转换器ADC0809在单片机的控制下进行模数转换。每次转换结束后,单片机在控制电路的作用下将数据读走存入片内存储器。而单片机则需要将收到的数据送入PC机中进行相应处理。单片机与PC 间的数据通信方式为串口通信协议RS 232,通过芯片MAX232进行电气匹配。 目录

一.系统总统设计方案 二.系统的硬件设计 2.1信号调理电路 2.2数据采集电路 2.3 80C51芯片内部功能与引脚介绍 三.系统的软件设计 3.1主程序 3.2 A/D转换 3.3数据采集中断程序 四.设计总结 五.参考文献 六.附录—数据采集系统原理图一.系统总统设计方案

根据系统基本要求,将本设计系统划分为信号调理电路、8路模拟信号的产生与A/D 转换器、发送端的数据采集与传输控制器、人机通道的接口电路、数据传输接口电路几个部分。 数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。系统框图如下图1所示。 图1 一般系统框图 二.系统的硬件设计 2.1信号调理电路 信号调理能够将被测对象的输出信号变换成计算机要求的输入信号。如图2所示,为 避免小信号通过模拟开关造成较大的附加误差,在传感器输出信号过小时,每个通道应 设前置放大环节。 图2 信号调理过程 2.2 数据采集电路 把连续变化量变成离散量的过程称为量化,也可理解为信号的采样。 把以一定时间间隔T逐点采集连续的模拟信号,并保持一个时间t,使被采集的信号变成时间上离散、幅值等于采样时刻该信号瞬时值的一组方波序列信号,即采样信号。

单片机的指令系统练习题

单片机的指令系统习题 一、选择题 1、执行下列3条指令后,30H单元的内容是()。 MOV R0,#30H MOV 40H,#0EH MOV @R0,40H A)40H B)30H C)0EH D)FFH 2、在堆栈中压入一个数据时()。 A)先压栈,再令SP+1 B)先令SP+1,再压栈 C)先压栈,再令SP-l D)先令SP-1,再压栈 3、在堆栈操作中,当进栈数据全部弹出后,这时的SP应指向()。 A)栈底单元 B)7FH C)栈底单元地址加1 D)栈底单元地址减l 4、指令MOVC A,@A+PC源操作数的寻址方式是()。 A)寄存器寻址方式 B)寄存器间接寻址方式 C)直接寻址方式 D)变址寻址方式 5、ANL 20H,#30H指令中,源操作数的寻址方式是()。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 6、ANL C,/30H指令中,源操作数的寻址方式是()。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 7、Jz rel指令中,操作数rel的寻址方式是()。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 8、Jz rel指令中,是判断()中的内容是否为0。 A) B)B C)C D)PC 9、MOVX A,@DPTR指令中源操作数的寻址方式是() A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 10、下面条指令将MCS-51的工作寄存器置成3区() A)MOV PSW,#13H (B)MOV PSW,#18H 11、MOV C,00H指令中源操作数的寻址方式是() A)位寻址 B)直接寻址 C)立即寻址 D)寄存器寻址 二、填空题 1、8051单片机共有种寻址方式。访问外部数据存储器应采用寻址方式。 2、访问外部数据存储器应采用寻址方式;查表应使用寻址方式。 3、在8051单片机中,堆栈操作的指令有两个。 4、在8051单片机中,子程序调用的指令有两个。 5、CJNE指令都是字节指令。 6、指令SJMP $ 的功能是。

8051单片机引脚图与引脚功能简介

8051单片机引脚图与引脚功能简介 时间:2009-03-02 12:42 来源:未知作者:牛牛 首先我们来连接一下单片机的引脚图,如果,具体功能在下面都有介绍。 单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。 ⒈电源: ⑴ VCC - 芯片电源,接+5V; ⑵ VSS - 接地端; ⒉时钟: XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 ⒊控制线: 控制线共有4根, ⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ① ALE功能:用来锁存P0口送出的低8位地址 ② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 ⑵ PSEN:外ROM读选通信号。 ⑶ RST/VPD:复位/备用电源。 ① RST(Reset)功能:复位信号输入端。 ② VPD功能:在Vcc掉电情况下,接备用电源。 ⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。 ① EA功能:内外ROM选择端。 ② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

⒋ I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。 编辑本段复位电路简介 为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。 编辑本段单片机复位电路的类型

8051单片机指令系统的7种寻址方式解析

8051单片机指令系统的7种寻址方式解析 寻址方式:寻址就是寻找操作数的地址。绝大多数指令执行时都需要操作数,因此就存在如何确定操作数地址的问题。所谓寻址方式就是通过什么途径获取操作数的方式。根据指令操作的需要,计算机总是提供多种寻址方式。一般来说,寻址方式越多计算机的寻址能力就越强,但指令系统也就越复杂。 8051指令系统有7种寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,下面分别介绍。 寄存器寻址 寄存器寻址:寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。例如:MOV A R1 这条指令的功能是把工作寄存器R1的内容传送到累加器A中,由于操作数在R1中,因此指令中指定了R1,也就得到了操作数。 寄存器寻址方式的寻址范围包括:工作寄存器组R0~R7,部分特殊寄存器ACC,B,DPTR 等。 直接寻址 直接寻址:直接寻址就是在指令中直接给出操作数所在单元的真实地址。这里给出的操作数直接地址为8位二进制地址。程序中一般用十六进制数表示。例如:指令MOV A,30H 把内部RAM单元30H中的数据传送给累加器A,指令中30H就是操作数的直接地址。直接寻址方式的寻址范围包括:内部数据存储器低128单元,特殊功能寄存器。 特殊功能寄存器在指令的表示中除了可以以直接地址形式给出外,还可以以寄存器符号形式给出,如对累加器A,在指令中可使用其直接地址OEOH,也可使用其符号形式ACC。立即寻址 立即寻址:立即寻址方式就是实际操作数作为指令的一部分,在指令中直接给出,取指令时,可在程序存储器中直接取得操作数。 通常把出现在指令中的操作数称为立即数。采用立即寻址方式的指令,在立即数前面加上

8051单片机的指令系统有何特点

1.8051单片机的指令系统有何特点? 2.8051单片机指令系统按功能可分为几类?具有几种寻址方式?它们的寻址范围如何?3.访问特殊功能寄存器和外部数据存储器应采用哪种寻址方式? 4.“DA A”指令的作用是什么?怎样使用? 5.片内RAM 20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作? 6.8051单片机指令系统中有长跳转LJMP,长调用LCALL指令,为何还没有设置了绝对跳转AJMP,绝对调用ACALL指令?在实际使用是应怎样考虑? 7.SJMP,AJMP和LJMP指令在功能上有何不同? 8.MOVC A,@DPTR与MOVX A,@DPTR指令有何不同? 9.在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使用了DPTR和PC 作基址,请问这两个基址代表什么地址?使用中有何不同? 10.设片内RAM中的(40H)=50H,写出执行下列程序段后寄存器A和R0,以及片内RAM 中50H和51H单元的内容为何值? MOV A,40H MOV R0,A MOV A,#00 MOV @R0,A MOV A,#30H MOV 51H,A MOV 52H,#70H 11.设堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化? 12.在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。 分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。 MOV A,40H MOV R0,A MOV P1,#0F0H MOV @R0,20H MOV 50H,R0 MOV A,@R0 MOV P2,P1 13.完成以下的数据传送过程。 (1)R1的内容传送到R0。 (2)片外RAM 20H单元的内容送R0。 (3)片外RAM 20H单元的内容送片内RAM 20H (4)片外RAM 1000H单元的内容送片内RAM 20H (5)片外RAM 20H单元的内容送R0。 (6)片外RAM 2000H单元的内容送片内RAM 20H (7)片外RAM 20H单元的内容送片外RAM 20H 14.设有两个4位BCD码,分别存放在片内RAM的23H,22H单元和33H,32H单元中,求它们的和,并送入43H,42H单元中去。(以上均为低位字节,高位在高字节)。 15.编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。16.编程计算片内RAM区30H~37H的8个单元中数的算术平均值,结果存在3AH单元中。

80C51 单片机的硬件结构 思考题及答案复习过程

1 、如何理解51单片机存储空间在物理结构上可分为4个,而逻辑上又可划分为3个? 答: MCS-51在物理上有四个存储空间: 1、片内程序存储器 2、片外程序存储器、 3、片内数据存储器 4、片外数据存储器。从逻辑上划分有三个存储器地址空间: 1、片内外统一编址的64K字节程序存储器(0000H~0FFFFH) 2、内部256字节数据存储器地址空间(包括 128字节片内RAM和128字节的SFR) 3、外部64K字节数据存储器地址空间(0000H~0FFFFH) 2 、MCS-51片内RAM的容量?8051最大可配置的RAM/ROM容量?答: 1)MCS-51片内RAM的容量: 51子系列:128B 52子系列:256B 2)其ROM最大可扩展到64KB 注:片内数据存储区=片内RAM+SFR,51和52子系列的SFR容量都是128B 3 、8051的/PSEN、/RD、/WR的作用? 答: 1)/PSEN(外部程序存储器读选通信号): CPU访问片外ROM时,使/PSEN低电平有效,可实现片外ROM的读操作,其他情况下此引脚为高电平封锁状态。 2)/RD:外部RAM读信号 3)/WR:外部RAM写信号 4 、ALE线的作用?当8051不和RAM/ROM相连时,ALE线的输出频率是多少? 答: 1)ALE(地址锁存控制信号): 访问片外ROM,RAM时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存,实现低位地址和数据的分时传送。 不访问片外存储器时,可做为外部时钟使用。 2)当8051不和RAM/ROM相连时,ALE线的输出频率等于时钟周期的倒数

5 、MCS-51的工作寄存区包含几个通用工作寄存器组?每组的地址是什么?如何选用?开机复位后,CPU使用的是哪组工作寄存器?答: 1)MCS-51的工作寄存区包含4个通用工作寄存器组 2)第0组通用寄存器区地址:00H~07H 第1组通用寄存器区地址:08H~0FH 第2组通用寄存器区地址:10H~17H 第3组通用寄存器区地址:18H~1FH 3)选择哪个工作寄存器组是通过软件对程序状态字寄存器PSW的第 4、3位进行设置实现的 4 6、 MCS-51的内部RAM地址空间是如何安排的?共有多少个单元可以位寻址?位地址又是如何排列的? 答: 1)MCS-51的内部RAM地址的空间安排: 00H~1FH 寄存器区 20H~2FH 位寻址区 30H~7FH 数据缓冲区 80H~FFH 专用寄存器区 2)位寻址的单元个数:16B*8位/B=128位 3)位地址排列方式: 位地址为:00H~7FH 字节地址:20H~2FH 7 、MCS-51的程序计数器PC是几位寄存器?它是否为专用寄存器?PC的内容是什么信息? 答 1)MCS-51的程序计数器PC是16位寄存器

基于51单片机的倒计时实现

基于51单片机的倒计时实现,精确到毫秒。 #include #define uchar unsigned char #define uint unsigned int uchar t1,shu,shi,ge,miao1,miao2; sbit wei1=P2^0; sbit wei2=P2^1; sbit wei3=P2^2; sbit wei4=P2^3; void display(uchar shi,uchar ge,uchar miao1,uchar miao2); uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; void delay(uint z) //延时 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void init() {

shu=60; t1=100; TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; ET0=1; // 开始计时 EA=1; TR0=1; // 开所有中断 } void timer0() interrupt 1 //定时器0 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; t1--; miao1=t1/10; miao2=t1%10; if(t1==0) { t1=100; shu--; shi=shu/10; ge=shu%10; if(shu==0) { TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0=0; } } } void display(uchar shi,uchar ge,uchar miao1,uchar miao2) //显示{ P2=0xfe; P0=table[shi]; delay(5); P2=0xfd; P0=table[ge]; delay(5); P2=0xfb; P0=table[miao1]; delay(5);

相关文档
最新文档