当前位置:文档之家› 单片机数据采集、处理及显示程序设计

单片机数据采集、处理及显示程序设计

单片机数据采集、处理及显示程序设计
单片机数据采集、处理及显示程序设计

单片机数据采集、处理及显示程序设计

一.总体设计方案:

LED初始显示为0,采用查询的方式进行键盘扫描,以确定是否有输入,不停地扫描直到有输入为止:输入为1时,按键无效,继续扫描直到再次有输入,输入为0时,则开始进行数据的采集;采集一个周期,将采集后的数据进行滤波,再求出0、1/2Vmax、Vmax,送到LED显示,结束后进行键盘扫描,确定是否有按键1输入,有则停止,无则继续进行数据采集,如此循环。

二.硬件逻辑图:

1.下图为硬件逻辑图:

2.单片机及各外设参数选择:

A.单片机为8031/8051;

B.采用外部时钟,振荡频率为12MHz,则机器周期为1us;

C.由于本实验只需0、1两个按键就能实现控制(0实现启动,1实现关闭),所以采用简单的1×2非编码键盘;

D.由于已知输入信号为幅值5V的正弦信号,并要求A/D转换的误差小于0.02V,因此,选用ADC0809,其能处理的信号为0—5V,不需要进行信号放大;其分辨率为8位,转换的误差为0.0196V,能满足要求;其转换时间大约为100us;

E.为了保证转换精度,在信号源与ADC之间还需加一S/H,采用LF398,保持电容选择为1000PF;

F.由于要显示3个数据,且小数点后保留两位有效数据,所以需要3×4=12个LED,本实验选用7段LED;且从左到右,依次显示0、1/2Vmax、Vmax;

G.由于要求利用串行口扩展接口来显示数据,所以需连接一寄存器,本实验采用串行输入、并行输出的移位寄存器:74LS164。

三.软件编写:

1.流程图如下:

本实验采用查询的方式来实现键盘的控制;在采集的过程中由于可能会有随机干扰,信号本身会在某一数值范围附近上下波动,所以采用算术平均滤波的方式进行滤波;由于输入信号最大频率为0.2Hz,选择采样周期为2Hz,即采样周期为500ms。

2.采用汇编进行编程,具体的代码及其说明如下:

ORG 0000H

LJMP START

ORG 0300H

START:

ACALL DSP1 ;初始化显示0.00、0.00、0.00 SCAN:

ACALL KEXAM ;判断是否有按键

JNZ SCAN ;没按键就继续SCAN

ACALL D10ms ;去抖

ACALL KEXAM

JNZ SCAN

KEY:

SETB P1.1 ;检查键值

SETB P1.3

CLR P1.2

MOV A,P1

ANL A,#02H

CJNE A,#02H,SCAN ;按键为1则返回继续查询是否有按键

;按键为0,进入到数据采集、转换及显示

ADC:

MOV R1,#40H

MOV DPTR,#07FF8H

MOV R2,#10 ;一个周期采集10个点

L9:

MOV R0,#30H

MOV R3,#4

L10:

MOV A,#0

SETB P1.4 ;S/H保持

MOVX @DPTR,A ;启动ADC

JNB P3.3 $ ;转换结束

CLR P1.4 ;S/H采样

MOVX A,@DPTR

MOV @R0,A

INC R0

ACALL D5ms

DJNZ R3,L10

ACALL Filter ;滤波

INC R1

ACALL D500ms

DJNZ R2,L9

ACALL ORDER ;计算要显示的值:最小值、最大值及中间值ACALL DSP2 ;显示值

;查询按键

ACALL KEXAM

JNZ ADC

ACALL D10ms

ACALL KEXAM

JNZ ADC

SETB P1.1

SETB P1.3

CLR P1.2

MOV A,P1

ANL A,#02H

CJNE A,#02H,START ;按键为1则返回开始,并显示0

AJMP ADC

;下面为子程序:

;判断是否有按键

KEXAM:

SETB P1.1

CLR P1.2

CLR P1.3

MOV A,P1

ANL A,#02H ;0000 0010

RET

;初始化显示0.00、0.00、0.00

DSP1:

MOV R0,#30H

MOV R1,#40H

MOV R2,#3

L0:

MOV R1,#0

ACALL CHANGE0 ;将R1中的值转换为有物理意义的值,存入4个R0中ACALL CHANGE1 ;将4个R0中的值转化为能显示的数模

ACALL DPLED ;显示4个R0中的值

INC R1

DJNZ R2,L0

RET

;输出显示一个LED

DPLED:

MOV R0,#30H

MOV R4,#4

L1:

MOV R3,#8

MOV A,@R0

L2:

RLC A

MOV P3.0,C

CLR P3.1

SETB P3.1

DJNZ R3,L2

INC R0

DJNZ R4,L1

RET

;将R0中要显示的转换为字模,然后覆盖R0

CHANGE1:

MOV R0,#30H

MOV R4,#4

L3:

PUSH ACC

MOV DPTR,#TABLE

MOV A,@R0

MOV A,@A+DPTR

MOV @R0,A

INC R0

DJNZ R4,L3

RET

;标度变换:将R1中的值转换为有物理意义的值,并存入4个R0中(如将125转换为2.45V)

CHANGE0:

PUSH ACC

PUSH B

;除17

MOV A,@R1

MOV B,#11H ;除以17

DIV AB

MOV @R0,A

INC R0

MOV A,B

MOV B,#0AH

MUL AB

MOV A,B

MOV B,#11H ;除以17

DIV AB

MOV @R0,A

INC R0

MOV A,B

MOV B,#0AH

MUL AB

MOV A,B

MOV B,#11H ;除以17

DIV AB

MOV @R0,A

;除3

DEC R0

DEC R0

DEC R0

MOV A,@R0

MOV B,#03H ;除以3

DIV AB

MOV @R0,A

INC R0

MOV A,B

MOV B,#0AH

MUL AB

MOV A,B

ADD A,@R0

MOV B,#03H ;除以3

DIV AB

MOV @R0,A

INC R0

MOV A,B

MOV B,#0AH

MUL AB

MOV A,B

ADD A,@R0

MOV B,#03H ;除以3

DIV AB

;将小数点10加上

INC R0

MOV @R0,A

DEC R0

DEC R0

MOV A,@R0

INC R0

MOV @R0,A

DEC R0

MOV @R0,#10H

POP B

POP ACC

RET

;延时5ms

D5ms:

MOV R2,#0AH ;10

L4:MOV R3,#F8H ;248

L5:DJNZ R3,L5 ;248*2=496

DJNZ R2,L4 ;500*10=5000us=5ms RET

;延时10ms

D10ms:

MOV R2,#14H ;20

L4:MOV R3,#F8H ;248

L5:DJNZ R3,L5 ;248*2=496

DJNZ R2,L4 ;500*20=10000us=10ms

RET

;延时500ms

D500ms:

MOV R2,#100

L6:MOV R3,#4

L7:MOV R4,#249

L8:NOP

NOP

NOP

DJNZ R4,L8 ;125*5=1245

DJNZ R3,L7 ;1249*4=4996

DJNZ R2,L6 ;5000*100=500000us=500ms RET

;算术平均滤波,将得到的值存入R1中Filter:

PUSH PSW

PUSH A

PUSH B

MOV FLAG,#00H

MOV R4,#4

MOV R0,#30H

CLR A

L11:

ADD A,@R0

JNC NEXT

INC FLAG

NEXT:

INC R0

DJNZ R4,L11

MOV R5,#4

DIVIDE:

MOV B,A

MOV A,FLAG

CLR C

RRC A

MOV FLAG A

MOV A,B

RRC A

DJNZ R5,DIVIDE

MOV @R1,A

POP B

POP A

POP PSW

RET

;将采集到的R1中的10个值进行排序,采用冒泡法

ORDER:

MOV R3,#9

L12:

MOV A,R3

MOV R4,A

MOV R1,#40H

L13:

MOV A,@R1

INC R1

CLR C

SUBB A,@R1

JC DONE

MOV A,@R1

DEC R1

XCH A,@R1

INC R1

MOV @R1,A

DONE:

DJNZ R4,L13

DJNZ R3,L12

RET

;显示R1中的值

DSP2:

MOV R1,#40H

ACALL CHANGE0 ;将R1中的值转换为有物理意义的值,存入4个R0中ACALL CHANGE1 ;将4个R0中的值转化为能显示的数模

ACALL DPLED ;显示4个R0中的值

INC R1

MOV R3,#2

L14:

MOV R4,#4

INC R1

DJNZ R4,L14

ACALL CHANGE0 ;将R1中的值转换为有物理意义的值,存入4个R0中ACALL CHANGE1 ;将4个R0中的值转化为能显示的数模

ACALL DPLED ;显示4个R0中的值

DJNZ R3,L14

RET

;数模表

TABLE:

DB 3FH,06H,5BH;0,1,2

DB 4FH,66H,6DH;3,4,5

DB 7DH,07H,7FH;6,7,8

DB 6FH,77H,7CH;9,10,11

DB 39H,5EH,7BH;12,13,14 DB 71H,80H ;15,.

CAM编程的基本实现过程

CAM编程的基本实现过程 数控(简称NC)编程技术包含了数控加工与编程、金属加工工艺、CAD/CAM软件操作等多方面的知识与经验,其主要任务是计算加工走刀中的刀位点(简称CL点)。根据数控加工的类型,数控编程可分为数控铣加工编程、数控车加工编程、数控电加工编程等,而数控铣加工编程又可分为2.5轴铣加工编程、3轴铣加工编程和多轴(如4轴、5轴)铣加工编程等。3轴铣加工是最常用的一种加工类型,而3轴铣加工编程是目前应用最广泛的数控编程技术。 提示:本书中所提及的数控加工和编程,如无特别注明,均指2.5轴铣数控加工和编程或3轴铣数控加工和编程。 数控编程经历了手工编程、APT语言编程和交互式图形编程三个阶段。交互式图形编程就是通常所说的CAM软件编程。由于CAM软件自动编程具有速度快、精度高、直观性好、使用简便、便于检查和修改等优点,已成为目前国内外数控加工普遍采用的数控编程方法。因此,在无特别说明的情况下,数控编程一般是指交互式图形编程。交互式图形编程的实现是以CAD技术为前提的。数控编程的核心是刀位点计算,对于复杂的产品,其数控加工刀位点的人工计算十分困难,而CAD技术的发展为解决这一问题提供了有力的工具。利用CAD技术生成的产品三维造型包含了数控编程所需要的完整的产品表面几何信息,而计算机软件可针对这些几何信息进行数控加工刀位的自动计算。因此,绝大多数的数控编程软件同时具备CAD 的功能,因此称为CAD/CAM一体化软件。 由于现有的CAD/CAM软件功能已相当成熟,因此使得数控编程的工作大大简化,对编程人员的技术背景、创造力的要求也大大降低,为该项技术的普及创造了有利的条件。事实上,在许多企业从事数控编程的工程师往往仅有中专甚至高中的学历。 目前市场上流行的CAD/CAM软件均具备了较好的交互式图形编程功能,其操作过程大同小异,编程能力差别不大。不管采用哪一种CAD/CAM软件,NC编程的基本过程及内容可由图1-1表示。 .1 获得CAD模型 CAD模型是NC编程的前提和基础,任何CAM的程序编制必须有CAD模型为加工对象进行编程。获得CAD模型的方法通常有以下3种: (1)打开CAD文件。如果某一文件是已经使用MasterCAM进行造型完毕的,或是已经做过编程的文件,那么重新打开该文件,即可获得所需的CAD模型。 (2)直接造型。MasterCAM软件本身就是一个CAD/CAM软件,具有很强的造型功能,可以进行曲面和实体的造型。对于一些不是很复杂的工件,可以在编程前直接造型。 (3)数据转换。当模型文件是使用其他的CAD软件进行造型时,首先要将其转换成MasterCAM专用的文件格式(MC9文件)。通过MasterCAM的数据转换功能,MasterCAM可以读取其他CAD软件所做的造型。MasterCAM提供了常用CAD软件的数据接

单片机 查表程序设计实验

2.4 查表程序设计实验 2.4.1 实验目的 学习查表程序的设计方法,熟悉 51 的指令系统。 2.4.2 实验设备 PC 机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51 系统平台”、或 “TD-PITE 教学实验系统+TD-51 系统平台” 2.4.3实验内容 1. 通过查表的方法将 16 进制数转换为 ASCII码; 2 2. 通过查表的方法实现y=x ,其中x为 0~9 的十进制数,以BCD码表示,结果仍以BCD 码形式输出。 2.4.4 实验步骤 1. 采用查表的方法将 16 进制数转换为 ASCII 码 根据 ASCII码表可知,0~9 的 ASCII码为 30H~39H,A~F的 ASCII码为 41H~46H,算 法为(假定待转换的数存放在 R7 中): 当 R7≤9 时,相应的 ASCII码为:R7+30H; 当 R7>9 时,相应的 ASCII码为:R7+30H+07H。 实验程序清单:(Asm4-1.asm) ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV DPTR, #ASCTAB ;表格首地址送DPTR MOV A, R7 ;R7中为待转换的数 ANL A, #0FH ;取低4位 MOVC A, @A+DPTR ;查表 MOV R5, A ;低4位转换结果送R1 MOV A, R7 ANL A, #0F0H ;取待转换数的高4位 SWAP A ;高4位与低4位交换 MOVC A, @A+DPTR ;查表 MOV R6, A ;高4位转换结果送R2 SJMP MAIN ;设置断点观察结果 ;ASCII码表 ASCTAB: DB 30H, 31H, 32H, 33H, 34H DB 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H, 46H END 实验步骤: (1)编写实验程序,编译、链接无误后联机调试; (2)将待转换的数存放在 R7 中,如令 R7 中的值为 0x86;

基于ADC0809和51单片机的多路数据采集系统设计

基于ADC0809和51单片机的多路数据采集系统设计 “数据采集”是指将温度、压力、流量、位移等模拟物理量采集并转换成数字量后,再由计算机进行存储、处理、显示和打印的过程,相应的系统称为数据采集系统。本文的主要任务是对0~5V的直流电压进行测量并送到远端的PC机上进行显示。由于采集的是直流信号,对于缓慢变化的信号不必加采样保持电路,因此选用市面上比较常见的逐次逼近型ADC0809芯片,该芯片转换速度快,价格低廉,可以直接将直流电压转换为计算机可以处理的数字量。同时选用低功耗的LCD显示器件来满足其在终端显示采集结果的需求。终端键盘控制采用尽可能少的键来实现控制功能,为了防止键盘不用时的误操作,设计时还设置了锁键功能,在键盘的输入消抖方面,则采用软件消抖方法来降低硬件开销,提高系统的抗干扰能力。软件设计方面则采用功能模块化的设计思想;键盘模数转换等采用中断方式来实现,从而大大提高了单片机的效率以及实时处理能力。1 数据采集系统的硬件结构数据采集系统的硬件结构一般由信号调理电路、多路切换电路、采样保持电路、A/D转换器以及单片机等组成。本文主要完成功能的系统硬件框图。 2 ADC0809模数转换器简介2.1 ADC0809的结构功能本数据采集系统采用计算机作为处理器。电子计算机所处理和传输的都是不连续的数字信号,而实际中遇到的大都是连续变化的模拟量,模拟量经传感器转换成电信号后,需要模/数转换将其变成数字信号才可以输入到数字系统中进行处理和控制,因此,把模拟量转换成数字量输出的接口电路,即A/D转换器就是现实信号转换的桥梁。目前,世界上有多种类型的A/D转换器,如并行比较型、逐次逼近型、积分型等。本文采用逐次逼近型A/D转换器,该类A/D转换器转换精度高,速度快,价格适中,是目前种类最多,应用最广的A/D转换器。逐次逼近型A/D转换器一般由比较器、D/A转换器、寄存器、时钟发生器以及控制逻辑电路组成。 ADC0809就是一种CMOS单片逐次逼近式A/D转换器,其内部结构。该芯片由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近寄存器、三态输出锁存器等电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力。该器件既可与各种微处理器相连,也可单独工作。其输入输出与TTL兼容。 ADC0809是8路8位A/D转换器(即分辨率8位),具有转换起停控制端,转换时间为100μs采用单+5V电源供电,模拟输入电压范围为0~+5V,且不需零点和满刻度校准,工作温度范围为-40~+85℃功耗可抵达约15mW。 ADC0809芯片有28条引脚,采用双列直插式封装,图3所示是其引脚排列图。各引脚的功能如下: IN0~IN7:8路模拟量输入端; D0~D7:8位数字量输出端; ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路; ALE:地址锁存允许信号,输入,高电平有效; START:A/D转换启动信号,输入,高电平有效; EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平); OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平才能打开输出三态门,输出为数字量; CLK:时钟脉冲输入端。要求时钟频率不高640kHz; REF(+)、REF(-):基准电压; Vcc:电源,单一+5V; GND:地。 ADC0809工作时,首先输入3位地址,并使ALE为1,以将地址存入地址锁存器中。此地址经译码可选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位;下降沿则启动A/D转换,之后,EOC 输出信号变低,以指示转换正在进行,直到A/D转换完成,EOC变为高电平,指示A/D转换结束,并将结果数据存入锁存器,这个信号也可用作中断申请。当OE输入高电平时,ADC

单片机原理与应用及C51程序设计实验报告

《单片机原理与应用及C51程序设计》 实验报告

一.软件仿真 1.实验要求 基本要求:用串口输出“hello word”语句。增加的要求:延时或定时输出语句,采用查询/中断的方式控制启动/停止。 2.源程序: (1).采用延时函数,延迟输出语句,p0_0控制启动/停止。 #include #include sbit p0_0=P0^0; void Delay(unsigned int Delaytime); void main(void) { SCON = 0x50; //串口方式1,允许接收 TMOD = 0x20; //定时器1 定时方式2 TCON = 0x40; //设定时器1 开始计数 TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8; TI = 1; TR1 = 1; //启动定时器 while(1) { if(p0_0==0) {Delay(10000); printf ("Hello World!\n"); //显示Hello World } } } void Delay(unsigned int Delaytime) {unsigned int j=0; for(;Delaytime>0;Delaytime--) for(j=0;j<100;j++); } (2).采用定时器定时,延迟输出语句。P0_0控制启动/停止。 #include

#include sbit p0_0=P0^0; #define uchar unsigned char #define uint unsigned int uchar count; void main() { SCON = 0x50; //串口方式1,允许接收 TMOD = 0x21; TCON = 0x40; //设定时器1 开始计数 TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; TI = 1; TR1 = 1; //启动定时器 while(1) { if(p0_0==0) { TR0=1; if(count==200) { count=0; printf("hello world!\n"); } } } } void timer0()interrupt 1 { TH0=0X3C; TL0=0XB0; count++; } 3.实验心得: 第一次实验不需要硬件实现,只需要用软件仿真,串口输出“hello word”语句就ok,所以此次实验比较简单,不需要费太多时间就能把实验完成。 二.键控流水灯 1.实验要求: 8051单片机的P1口的P1.0—P1.7分别接有LED(D1—D8),当某一端口输出,为“0”

单片机和蓝牙模块无线传输的数据采集系统

单片机和蓝牙模块无线传输的数据采集系统

1.引言 蓝牙技术是近年来发展迅速的短距离无线通信技术,可以用来替代数字设备间短距离的有线电缆连接。利用蓝牙技术构建数据采集无线传输模块,与传统的电线或红外方式传输测控数据相比,在测控领域应用篮牙技术的优点主要有[1][2][3]: 1.采集测控现场数据遇到大量的电磁干扰,而蓝牙系统因采用了跳频扩频技术,故可以有效地提高数据传输的安全性和抗干扰能力。 2.无须铺设线缆,降低了环境改造成本,方便了数据采集人员的工作。 3.可以从各个角度进行测控数据的传输,可以实现多个测控仪器设备间的连网,便于进行集中监测与控制。 2.系统结构原理 本课题以单片机和蓝牙模块ROK 101 008为主,设计了基于蓝牙无线传输的数据采集系统,整个装置由前端数据采集、传送部分以及末端的数据接受部分组成(如PC机)。前端数据采集部分由位于现场的传感器、信号放 大电路、A/D转换器、单片机、存储器、串口通信等构成,传送部分主要利用自带微带天线的蓝牙模块进行数据的无线传输;末端通过蓝牙模块、串口通信传输将数据送到上位PC机进一步处理。整个系统结构框架图如图1所示。 AT89C51单片机作为下位机主机,传感器获得的信号经过放大后送入12位A/D转换器AD574A进行A/D 转换,然后将转换后的数据存储到RAM芯片6264中。下位机可以主动地或者在接收上位机通过蓝牙模块发送的传送数据指令后,将6264中存储的数据按照HCI-RS232传输协议进行数据定义, 通过MAX3232进行电平转换后送至蓝牙模块,由篮牙模块将数据传送到空间,同时上位机的蓝牙模块对此数据进行接收,再通过MAX3232电平转换后传送至PC 机,从而完成蓝牙无线数据的交换。

单片机-实验二-分支程序设计实验

实验二实验报告 ·

将00-99的十进制数据转换成二进制进行开关量的输入,L0灯亮 将100的十进制转换为01100010的二进制开关量进行输入,L1灯亮

将101-127的十进制转换为二进制进行开关量的输入,L2灯亮 完整的接线图

实验操作 1、正确连接实验板子和电脑,将点源接入,数据线连接到电脑的USB接口,在电脑端运行 软件,取消勾选模拟器,按照实验装置的名称正确的选择响应的系统。 2、在软件内部按照输入分支程序结构。 3、打开点源开关。 4、调整输入的各个断口的开关量,着重关注在二进制数01100010附近的变化. 5、整理实验器材。 思考题1 写出分支程序设计的要点 分支结构也成为选择结构。在程序中每个分支均为一个程序段。为分支需要,程序设计时不要忘记给程序段的起始地址赋予一个地址标号,以供选择分支使用。 这次实验使用的是一个多分支程序结构,可以通过一系列的JC\JNC\JB\JNB的判断,进行逐级分支。并且可以使用CJNE进行实现。 80C51中没有专门的多分支转移指令,可以使用的变址转移指令“JMP @A+DPTR”,但是这样的指令需要数据表格配合。 思考题2 8051单片机有几个并行口,写出各并行口的特点 8051单片机有4个并行I/O口,分别为P0\P1\P2\P3,以实现数据的并行输入与输出。 这4个并行口均是8为双向口线,各占8个引脚,在P3口线上有着引脚复用,均有第二功能信号,这些第二功能信号都是重要的控制信号,在实际使用中总是先按需要优先选用第二功能,剩下的不用的再当作口线使用。 并行可以有效的提高单片机的工作效率。 思考题3 实验中遇到的苦难 在这个实验中和实验一显著不同的是我们需要重新认识硬件与软件的配合,一些数据线的链接,点源的通断都是我们学习的要点,我们也第一次接触到了输入口和输出口相互之间的区别。 这个实验我们一定要将十进制的思维转换过来转换为二进制的思维,在机器语言中只有开关量的通断,而这个题目也是很好的应用了开关量的通断完成了这个实验。 学会了分支判断方式的编程

单片机数据采集系统

课程设计报告书 课程名称:单片机原理及应用 __________ 课题名称:单片机数据采集系统 ___________ 专业:___________________ 班级:_______________________ 学号:___________________ 姓名:_______________________ 成绩:___________________________________

2010年6月13 日 设计任务书 一、设计任务 1 一秒钟采集一次。 2把INO 口采集的电压值放入30H单元中 3做出原理图。 4画出流程图并写出所要运行的程序。 二、设计方案及工作原理 方案: 1.米用8051和ADC0809勾成个8通道数据米集系统。 2.能够顺序采集各个通道的信号。 3.米集信号的动态范围:0?5V。 4.每个通道的采样速率:100 SPS。 5.在面包板上完成电路,将采样数据送入单片机20h? 27h 存储单元。 6.编写相应的单片机采集程序,到达规定的性能。 工作原理: 通过一个A/D 转换器循环采样模拟电压,每隔一定时间去采样

一次,一次按顺序采样信号。A/D转换器芯片AD0809将采样到的模拟信号转换为数字信号,转换完成后,CPU读取数据转换结果,并将结果送入外设即CRT/LED显示,显示电压路数和数据值。

第一章系统设计要求和解决方案第一章硬件系统 第二章软件系统 第四章实现的功能 第五章缺点及可能的解决方法第六章心得体会 附录参考文献 附录二硬件原理图 附录三程序流程图

第一章系统设计要求和解决方案 根据系统基本要求,将本系统划分为如下几个部分: 信号调理电路 8路模拟信号的产生与A/D转换器 发送端的数据采集与传输控制器 人机通道的接口电路 数据传输接口电路 数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D, 单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。系统框图如 图1-1所示 被测电压为0?5V直流电压,可通过电位器调节产生' 1.1.1信号采集 多路数据采集系统多采用共享数据采集通道的结构形式数据采集方式选择程序控制数据采集。 程序控制数据采集,由硬件和软件两部分组成。,据不同的采集需要,在程序存储器中,存放若干种信号采集程序,选择相应的采集程序进行采集工作,还可通过编新的程序,以满足不同采样任务的要求。如图1-3所示。 程序控制数据采集的采样通道地 址可随意选择,控制多路传输门开启 的通道地址码由存储器中读出的指令 确定。即改变存储器中的指令内容便 可改变通道地址。 由于顺序控制数据采集方式缺乏 通用性和灵活性,所以本设计中选用程 序控制数据采集方 采集多路模拟信号时,一般用多 路模拟开关巡回检测的方式,即一种数据采集的方式。利用多路开关(MUX )让多个被测对象共用同一个采集通道,这就是多通道数据采集系统的实质。当采集高速信号时,

运动控制-M法T法测速单片机程序设计

M法、T法测速单片机程序设计 摘要 本设计为M法、T法测速的单片机程序设计。使用STC89C52单片机作为控制器,使用该单片机的外部中断和定时器对编码器的输出的脉冲进行采样来计算出电机的转速。可以使用按键输入来调整M法、T法测速法中Z、Tc和Tt等参数以及测速方法的选择,以此来增强本设计的适应性。参数选择结果和电机转速计算结果均显示在LCD1602上。 关键字:STC89C52,M法、T法测速,LCD1602,电机转速 Ⅰ

Abstract This design as m, t-law velocity measurement of single-chip computer programming. Using STC89C52 single-chip computer as the controller, using the microcontroller's external interrupts and timers for encoder output pulse is sampled to calculate the speed of the motor. Can be adjusted using touchtone m, t law Velocimetry parameters such as z, Tt and Tc, as well as in speed measurement method of choice, as a way to enhance the adaptability of this design. Parameter selection and calculation of motor speed results are available on LCD1602. Keywords:STC89C52,M、T method, the LCD1602, Motor speed Ⅱ

单片机程序的设计

单片机程序的设计 程序设计是单片机开发最重要的工作,程序设计就是利用单片机的指令系统,根据应用系统(即目标产品)的要求编写单片机的应用程序,其实我们前面已经开始这样做过了,这一课我们不是讲如何来设计具体的程序,而是教您设计单片机程序的基本方法。不过在讲解之前还是有必要先了解一下单片机的程序设计语言。一.程序设计语言这里的语言与我们通常理解的语言是有区别的,它指的是为开发单片机而设计的程序语言,如果您没有学过程序设计可能不太明白,我给大家简单解释一下,您知道微软的VB,VC吗?VB,VC就是为某些工程应用而设计的计算机程序语言,通俗地讲,它是一种设计工具,只不过这种工具是用来设计计算机程序的。要想设计单片机的程序当然也要有这样一种工具(说设计语言更确切些) 单片机的设计语言基本上有三类: 1.完全面向机器的机器语言机器语言就是能被单片机直接识别和执行的语言,计算机能识别什么?以前我们讲过--是数字"0"或"1",所以机器语言就是用一连串的"0"或"1"来表示的数字。比如:MOV A,40H;用机器语言来表示就是11100101 0100000,很显然,用机器语言来编写单片机的程序不太方便,也不好记忆,我们必须想办法用更好的语言来编写单片机的程序,于是就有了专门为单片机开发而设计的语言: 2.汇编语言汇编语言也叫符号化语言,它使用助记符来代替二进制的"0"和"1",比如:刚才的MOV A,40H就是汇编语言指令,显然用汇编语言写成的程序比机器语言好学也好记,所以单片机的指令普遍采用汇编指令来编写,用汇编语言写成的程序我们就叫它源程序或源代码。可是计算机不能识别和执行用汇编语言写成的程序啊?怎么办?当然有办法,我们可以通过"翻译"把源代码译成机器语言,这个过程就叫做汇编,汇编工作现在都是由计算机借助汇编程序自动完成的,不过在以前,都是靠手工来做的。 值得注意的是,汇编语言也是面向机器的,它仍是一种低级语言。每一类计算机都有它自己的汇编语言,比如:51系列有它的汇编语言,PIC系列也有

基于51单片机的高速数据采集系统

图6.1 程序流程图6.2 源程序 /*ADC0809.C*/ #include #include #define uchar unsigned char //定义数码管位码端口 sbit P2_0=P2^0; sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; //定义ADC0808端口

sbit OE=P3^0; sbit EOC=P3^1; sbit ST=P3^2; sbit P3_4=P3^4; sbit P3_5=P3^5; sbit P3_6=P3^6; //带小数点的0-5的段码 uchar leddata_dot[]={0x40,0x79,0x24,0x30,0x19,0x12}; uchar leddata[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳极0-9段码 //uchar leddata[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴极0-9 //延时子程序 void delay(uchar n) { uchar i,j; for(i=0;i

51单片机电子时钟课程设计实验报告

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号:2012197213 2012118029 班级:自动化1211 指导老师:阮海容

目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位(例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。 7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。 11)完成课程设计报告。 基本要求 1)实现最基本要求的1~10部分。 2)键盘输入可以控制电子时钟的走时/调试。 3)设计键盘输入电路和程序并调试。 4)掌握键盘和显示配合使用的方法和技巧。 提高发挥部分

利用单片机AT89C52采用程序设计方法产生锯齿波

1 引言 本系统利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产生10Hz—10kHz的波形。通过键盘来控制四种波形的类型选择、拨码开关控制频率的变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。 2设计方案 2.1系统硬件设计概述 经过考虑,我们确定方案如下:利用AT89C52单片机采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制四种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。 2.2、设计要求 1)、利用单片机采用软件设计方法产生四种波形 2)、四种波形可通过键盘选择 3)、波形频率可调

4)、需显示波形的种类及其频率 2.1.2方案设计与论证 1.2.1 信号发生电路方案论证 方案一:通过单片机控制D/A,输出四种波形。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。 方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。此方案,电路复杂,干扰因素多,不易实现。 方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的锯齿波、三角波、方波和正弦波四种周期性波形。但此方案成本高,程序复杂度高。 以上三种方案综合考虑,选择方案一。 1.2.2 单片机的选择论证 方案一:AT89C52单片机是一种高性能8位单片微型计算机。它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。 方案二:C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有

单片机程序设计方法总结.doc

单片机程序设计方法总结 程序设计是单片机开发最重要的工作程序设计就是利用单片机的指令系统根据应用系统即目标产品的要求编写单片机的应用程序其实我们前面已经开始这样做过了这一课我们不是讲如何来设计具体的程序而是教您设计单片机程序的基本方法不过在讲解之前还是有必要先了解一下单片机的程序设计语言这里的语言与我们通常理解的语言是有区别的它指的是为开发单片机而设计的程序语言如果 您没有学过程序设计可能不太明白我给大家简单解释一下您知道微软的VB VC 吗VB VC 就是为 某些工程应用而设计的计算机程序语言通俗地讲它是一种设计工具只不过这种工具是用来设计计 算机程序的要想设计单片机的程序当然也要有这样一种工具说设计语言更确切些单片机的设计 语言基本上有三类: 1 .完全面向机器的机器语言 机器语言就是能被单片机直接识别和执行的语言计算机能识别什么以前我们讲过--是数字0 或1 所以机器语言就是用一连串的0 或1 来表示的数字比如MOV A 40H 用机器语言来表示就是 11100101 0100000 很显然用机器语言来编写单片机的程序不太方便也不好记忆我们必须想办法 用更好的语言来编写单片机的程序于是就有了专门为单片机开发而设计的语言 2. 汇编语言 汇编语言也叫符号化语言它使用助记符来代替二进制的0 和1 比如刚才的MOV A40H 就是汇编语言 指令显然用汇编语言写成的程序比机器语言好学也好记所以单片机的指令普遍采用汇编指令来编写 用汇编语言写成的程序我们就叫它源程序或源代码可是计算机不能识别和执行用汇编语言写成的程 序啊怎么办当然有办法我们可以通过翻译把源代码译成机器语言这个过程就叫做汇编,汇编工作现在 都是由计算机借助汇编程序自动完成的不过在很早以前它是靠手工来做的. 值得注意的是:汇编语言也是面向机器的,它仍是一种低级语言每一类计算机都有它自己的汇 编语言比如51 系列有它的汇编语言;PIC 系列也有它的汇编语言微机也有它自己的汇编语言它 们的指令系统是各不相同的也就是说不同的单片机有不同的指令系统它们之间是不通用的,这就

编写程序的步骤 教学设计

编写程序的步骤教学设计 【研究的问题】 在中小学信息技术教学中,程序设计一直是师生倍感头疼的内容。程序设计难教难学,源于计算机语言本身高度的抽象性和严密的逻辑性。虽然,Visual Basic语言较之其它语言要易学好懂一点,但它仍需要必要的抽象思维能力和数学知识作为支撑。如何“蹲下身来让大部分学生能够得着“ ,让学生学得轻松、有效,是我们在本学期一直应关注的问题。 【设计依据】 教材简析: 《编写程序的步骤》位于省编教材的选修部分第一单元《走进程序设计》的第二节。在初中信息技术教学中,程序设计部分始终是教师觉得难教,学生觉得难学的部分,而这一节中的“算法与算法描述“更是这一单元的重中之重。学好这一节,能为整个VB的学习奠定一个良好的基础。 本课是程序设计的第一课时(第1节《程序设计与计算机软件》,我们让学生自学了解,没有占用课时。),起始课的好坏将直接影响整个单元的后继教学。例如一部优秀的电影一般都有一个精彩的开头,一开始就抓住观众的心,使他们有动机、有兴趣往下观赏。 学情分析: 初二的学生虽具备了一定的计算机使用经验,但大多数是与软件的使用和网络应用有关,程序设计对他们是崭新的、具有挑战性的知识。而且这个时期的学生正处于感性思维向理性思维过渡的时期,很多时候仍需要感性思维的支撑。因此在教学中应强调程序设计与生活的关系,注重启蒙和兴趣的培养,并以趣味性的练习、富有引导性的教学语言、明白流畅的教学思路调动学生的情感,在晦涩的程序设计和学生之间架起一座桥梁。 【教学目标】 知识与技能 1、了解利用计算机解决问题的基本过程,认识算法的地位和作用。 2、初步掌握使用自然语言或流程图对算法进行描述。 过程与方法 1、通过实例让学生体会程序设计的基本过程与方法,理解算法思想,会用自然语言或流程图表达一些具体问题的算法。 2、通过对现实问题的分析与解决,让学生认识到生活中到处是程序,而程序解决的往往就是

单片机-分支程序设计教案

一、复习上次课内容 1、什么是标识符? 答:标识符是程序员选择的名字,用来标识常量、变量、过程、段名等。 2、什么是伪指令? 答:注释性的,没有对应的机器码,不令计算机做任何操作,不产生目标程序,不影响程序的执行。。 二、讲授新课 4.3分支程序设计 在很多实际问题中,都需要根据不同的情况进行不同的处理。这种思想体现在程序设计中,就是根据不同条件而转到不同的程序段去执行, 所示。 这就构成了分支程序。分支程序的结构有两种,如图4.2 图4.2(a)结构使用条件转移指令来实现分支,当给出的条件成立时,执行程序段A,否则执行程序段B。 图4.2 (b) 结构使用散转指令JMP来实现多分支转移,它首先将分支程序按序号的值来实现分支转移。 分支程序的特点是改变程序的执行顺序,跳过一些指令,去执行另外一些指令。应注意:对每一个分支都要单独编写一段程序,每一分支的开始地址赋给一个标号。

在编写分支程序时,关键是如何判断分支的条件。在MCS-51系列单片机中可以直接用来判断分支条件的指令并不多,只有累加器为零(或不为零)、比较条件转移指令CJNE 等,MCS-51单片机还提供了位条件转移指令,如JC ,JB 等。把这些指令结合在一起使用,就可以完成各种各样的条件判断。 【例4-5】设补码X 放在内部RAM30H 单元中,函数Y 与X 有如下的关系 式: 试编写程序,根据X 的值求出Y ,并放回原单元。 解 取出X 后先做取值范围的判断,用累加器A 状态转移指令判断X 是否为0,用位状态转移指令判断X 是大于0还是小于0。程序流程图如图4.3所示。 程序如下: MOV A ,30H JZ ZER0 JNB ACC.7,PLUS

51单片机数据采集系统[1]

课程设计报告书 设计任务书 一、设计任务 1一秒钟采集一次。 2把INO口采集的电压值放入30H单元中。 3做出原理图。 4画出流程图并写出所要运行的程序。 二、设计方案及工作原理 方案: 1. 采用8051和ADC0809构成一个8通道数据采集系统。 2. 能够顺序采集各个通道的信号。

3. 采集信号的动态范围:0~5V。 4. 每个通道的采样速率:100 SPS。 5.在面包板上完成电路,将采样数据送入单片机20h~27h存储单元。 6.编写相应的单片机采集程序,到达规定的性能。 工作原理: 通过一个A/D转换器循环采样模拟电压,每隔一定时间去采样一次,一次按顺序采样信号。A/D转换器芯片AD0809将采样到的模拟信号转换为数字信号,转换完成后,CPU读取数据转换结果,并将结果送入外设即CRT/LED显示,显示电压路数和数据值。 目录 第一章系统设计要求和解决方案 第二章硬件系统 第三章软件系统 第四章实现的功能 第五章缺点及可能的解决方法 第六章心得体会

附录一参考文献 附录二硬件原理图 附录三程序流程图 第一章系统设计要求和解决方案 根据系统基本要求,将本系统划分为如下几个部分: 信号调理电路 8路模拟信号的产生与A/D转换器 发送端的数据采集与传输控制器 人机通道的接口电路 数据传输接口电路 数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。系统框图如图1-1所示

信号采集分析 被测电压为0~5V 直流电压,可通过电位器调节产生。 信号采集 多路数据采集系统多采用共享数据采集通道的结构形式。 数据采集方式选择程序控制数据采集。 程序控制数据采集,由硬件和软件两部分组成。,据不同的采集需要,在程序存储器中,存放若干种信号采集程序,选择相应的采集程序进行采集工作,还可通过编新的程序,以满足不同采样任务的要求。如图1-3所示。 程序控制数据采集的采样通道地址可随意选择,控制多路传输门开启的通道地址码由存储器中读出的指令确定。即改变存储器中的指令内容便可改变通道地址。 由于顺序控制数据采集方式 缺乏通用性和灵活性,所以本设计中选用程序控制数据采集方式。 采集多路模拟信号时,一般用多路模拟开关巡回检测的方式,即一种数据采集的方式。利用多路开关(MUX )让多个被测对象共用同一个采集通道,这就是 图1-3 程序控制数据采集原理 图1-1 一般系统框图

实验一_单片机数据区传送排序程序设计复习课程

实验一_单片机数据区传送排序程序设计

实验一单片机数据区传送/排序程序设计 一、单片机数据区传送/排序程序设计 一、实验目的 1.进一步掌握汇编语言程序设计和调试方法。 2.了解单片机RAM中的数据操作 二、实验说明 要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。 三、实验仪器 计算机 伟福软件( lab2000P ) 四、实验内容 在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。 查看RAM 区3000~30FFH和4000~40FFH内容,也可自己重新赋值。 运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。 记录下运行结果,检查3000~30FFH中内容是否和4000~40FFH内容完全一致。 五、思考题 1、改变源地址,例如00FFH; 2、改变目的地址,例如2000H; 3、改变传输的个数,小于256个和大于256个的情况。

4、把程序改为对某一数据存储区RAM赋都相同一个数值。 六、源程序及其修改原理 org 0000H Block equ 2000h mov dptr, #Block ; 起始地址 mov r0,#12h mov a,#20h ;修改2000h开始的地址所存放的内容为20h Loop: mov r1,#14h ;增加r1计数,用循环方式实现大于256的数据传输(思考题3) Loop1: movx @dptr,a inc dptr ; 指向下一个地址 djnz r1,Loop1 djnz r0, Loop ; 双循环实现r0,r1计数相乘 (以上程序实现对某一数据存储区2000h~2168hRAM赋都相同一个数值20h,思考题4) mov r0, #20h ;改变源地址为2000h(思考题1) mov r1, #00h mov r2, #50h;改变目的地址为5000h(思考题2) mov r3, #00h mov r7, #0 Loop: mov dph, r0 mov dpl, r1 movx a, @dptr mov dph, r2 mov dpl, r3 movx @dptr, a

基于51单片机秒表的程序设计[1]

基于51单片机秒表的程序设计 1.设计目的: (1)利用单片机定时器中断和定时器计数方式实现秒、分定时。 (2)通过LED显示程序的调整,熟悉8155与8051,8155与LED的接口技术,熟悉LED动态显示的控制过程。 (3)通过键盘程序的调整,熟悉8155与矩阵式键盘的接口技术,熟悉键盘扫描原理。 (4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。 2.设计步骤与要求 (1)要求:以8位LED右边2位显示秒,左边6位显示0,实现秒表计时显示。以4×4矩阵键盘的KE0、KE1、KE2等3键分别实现启动、停止、清零等功能。 (2)方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时器1方式3计数,实现60秒计数。用动态显示方式实现秒表计时显示,用键盘扫描方式取得KE0、KE1、KE2的键值,用键盘处理程序实现秒表的启动、停止、清零等功能。 (3)软件设计:软件整体设计思路是以键盘扫描和键盘处理作为主程序,LED动态显示作为子程序。二者间的联系是:主程序查询有无按键,无按键时,调用二次LED动态显示子程序(约延时8ms)后再回到按键查询状态,不断循环;有按键时,LED动态显示子程序作为按键防抖延时被连续调用二次(约延时16ms),待按键处理程序执行完后,再回到按键查询状态,同时兼顾了按键扫描取值的准确性和LED动态显示的稳定性。秒定时采用定时器T0中断方式进行,60秒计数由定时器1采用方式3完成,中断及计数的开启与关闭受控于按键处理程序。由上述设计思路可设计出软件流程图如图1.1所示。 (5)程序编制:编程时置KE0键为“启动”,置KE1键为“停止”,置KE2键为“清零”,因按键较少,在处理按键值时未采用散转指令“JMP”,而是采用条件转移指令“CJNE”,每条指令后紧跟着一条无条件跳转指令“AJMP”,转至相应的按键处理程序,如不是上述3个按键值则

程序设计的基本方法

程序设计的基本方法 一、题: 二、教学目标: ⑴理解算法的概念,了解描述算法的两种方法——自然语言和流程图,知道各自的优缺点。 ⑵初步掌握用流程图描述算法。 三、教学的重点和难点: ⑴算法的概念。 ⑵用流程图描述算法。 四、教学过程: 新导入 我们在日常生活中经常要处理一些事情,就拿邮寄一封信来说吧,大致可以将寄信的过程分为这样的几个步骤:写信、写信封、贴邮票、投入信箱等四个步骤。将信地投入到信箱后,我们就说寄信过程结束了。 那么在计算机中,它是如何来处理问题的呢?是否和我们日常处理事情的过程很类似呢? 回答是肯定的,例如要设计一个程序让计算机求1+1=?,那么我们就要先编写程序。在编写程序前需要先确定解决问题的思路和方法,并要正确地写出求解步骤,这就是算法。 新授

一、算法的概念 为了更好地理解算法,举几个例子说明: 例1 交换两个变量中的数据。 先请学生考虑解决这个问题的方法,然后请一个学生说一说自己想到的解决方法。如学生回答不出来,作适当提示:如果要将醋瓶中的醋和酒瓶中的酒互换应怎么做?学生会很容易地想到要借助于一只空瓶子。 分析题意:已知变量x和中分别存放了数据,现在要交换其中的数据。为了达到交换的目的,需要引进一个类似于空瓶子的中间变量。交换两变量中数据的具体算法如下: ①将x中的数据送给变量,即x→; ②将中的数据送给变量x,即→x; ③将中的数据送给变量,即→。 总结:在程序设计中,交换变量中的数据常用在排序算法中。例2 输入三个不相同的数,求出其中的最小数。 同样,先请学生思考,然后请学生说出他所想到的解决该问题的方法。 教师分析:先设置一个变量in,用于存放最小数。当输入a、b、三个不相同的数后,先将a与b进行比较,把小者送给变量in,再把与in进行比较,若<in,则将的数值送给

相关主题
文本预览
相关文档 最新文档