单片机实现低成本20页word
单片机开发实战,DIY你的智能设备
单片机开发实战,DIY你的智能设备智能设备正逐渐渗透到我们生活的方方面面,我们可以通过自己动手开发的方式,DIY出属于自己独特的智能设备。
在这篇文章中,我将为大家介绍单片机开发实战,并分享一些开发智能设备的经验和技巧。
一、什么是单片机?单片机是一种集成了CPU、存储器和I/O设备等基本功能的微型电脑系统,它具有体积小、功耗低、成本低等特点,非常适合用于嵌入式系统开发。
单片机可以用来控制各种设备,如温度传感器、湿度传感器、红外遥控器等,并通过编程来实现各种功能。
二、单片机开发工具在进行单片机开发前,我们需要准备一些开发工具。
首先是单片机评估板,可以选择市场上常见的Arduino、Raspberry Pi等板子。
其次是开发软件,如Arduino IDE、Keil uVision等,用于编写和调试单片机程序。
还有一些基本的电子元件,如电阻、电容、LED等,用于连接和调试电路。
三、单片机开发基础知识在进行单片机开发前,我们需要了解一些基础知识。
首先是单片机的编程语言,主要有C语言和汇编语言两种。
C语言能够更加方便地进行单片机编程,所以我们通常选择使用C语言。
其次是单片机的输入输出接口,如GPIO口、SPI口、I2C口等,通过这些接口可以连接各种传感器和执行器。
还有一些单片机的基本指令和控制结构,如循环、判断语句等,用于编写单片机程序。
四、开发智能设备实战接下来,让我们开始实战,开发自己的智能设备。
首先是选择一个合适的项目,如温度监测器、智能家居控制器等。
然后,根据项目需求选择合适的传感器和执行器,并连接到单片机上。
接着,编写单片机程序,读取传感器的数据并进行处理,最后控制执行器实现相应的功能。
在编写程序过程中,我们需要考虑事件触发、数据处理和通信等方面的问题,并合理利用单片机的资源和功能。
五、开发智能设备的经验和技巧在开发智能设备的过程中,我们总结了一些经验和技巧,与大家分享。
首先是模块化开发,将复杂的功能划分为多个模块,便于开发和维护。
基于51单片机的低成本可编程接口的实现
维普资讯
第2 期
蔡 向东 : 基于 5 单片机的低成本 可编程接 口的实现 l
‘4 ‘ 7
使用起来灵活方便 。
缓冲 6 个键值信息( 4 该缓 冲区大小可根据实际需
要进行调整) 。 可编程接 口的应用程序循环进行显示扫描和 键盘扫描 , 并通过 串 口与 主 C U交 互信 息。主 P CU P 首先要将 c E置 0 。该下降沿通过 P . 32向可
期短等优点 , 因此 , 本方案特别适合规模化生产的
芯片的工作 , 不仅大大降低了产品成本 , 提高了产
品可靠性 , 而且可通过软件对接 口重新进行定义 ,
收稿 日期 :05一l —0 20 1 7 作者简介 : 向东(99一) 男, 蔡 16 , 黑龙江哈 尔滨人 , 师, 讲 现研究单片机 应用。
口 片( 85、29 79 芯 如 25 87 、20等) 丰富, 但市场价格 却远低于传统的可 编程接 口芯片。使用 5 单 片 l 机代替传统的可编程接 口芯片具有很大的成本优
l 硬件原理
8C 1 9 5 内部有 4 B F h K l 存储器用 于固化应 s a
用程序 , 固化应用程序后 的 8C 1 以下简称可编 9 5(
编程接 口发出外部 中断。在 中断服务程序 中 , 可
编程接 口将对主 C U命令进行解析 , P 并完成相应 操作。 所谓取指操作实 际上就是可 编程接 口与 主 C U进行通信 的过程。由于采取软件进行通信 , P t、 、 、 、 lt t t I 2 3 4 5的宽度有一定 的范围。 在接收到主 C U的操作指令后 , P 可编程 接 口
家 众 多 ( IT L A M L P IIS ST w . 如 N E 、 T E 、 HLP 、 S 、
51单片机C语言教程-郭天祥-PDF转word版第二章
本章详细介绍单片机程序常用编译软件Keil的用法,包括用Kei建立工程、工程配置、C51单片机程序软件仿真、单步、全速、断点设置、变量查看等。同时还介绍如何使用SST89E516RD单片机进行计算机与TX-IC单片机学习板之间的硬件仿真。用一个完整的C51程序来操作发光二极管的点亮与熄灭,然后调用C51库函数来方便地实现流水灯,最后为大家补充蜂鸣器与继电器的操作方法及集电极开路与漏极开路的概念。从这一章开始我们将手把手地讲解单片机C语言编程。认真学好本章,对于初学者来说将会是一个非常好的开头。
REG52.H
Header generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.
--------------------------------------------------------------------------*/
tx1c实验板上发光二极管处连接锁存器的目的是因为发光二极管通过锁存器连接到单片机的p1口而板上ad芯片的数据输出端也连接到单片机的p1口当我们在做ad实验时ad芯片的数据输出端的数据就会实时发生变化而若不加锁存器那么发光二极管的阴极电平也跟随ad的数据输出的变化而变化这样就会看见发光管无规则闪动为了在做ad实验时不影响发光二极管我们在发光二极管与单片机之间加入一个锁存器用以隔离当做ad实验时我们可通过单片机将此锁存器的锁存端关闭而此时无论单片机p1口数据怎么变化发光二极管也不会闪动
完后续的代码而引发出更多的错误。解决办法如下:我们须将错误信息窗口右侧的滚动条拖到最上面,双击第一条错误信息,可以看到Keil软件自动将错误定位,并且在代码行前面出现一个蓝色的箭头。需要说明的是,有些错误连Keil软件自身也不能准确显示错误信息,更不能准确定位,它只能定位到错误出现的大概位置,我们根据这个大概位置和错误提示信息自己再查找和修改错误。双击图2.2.3中第一条错误信息后,显示如图2.2.4所示。
用AVR单片机实现高性能、低成本温度AD转换
向端和反向端。电阻 =2 和 =7 对@A< 分压,作为比较器 基 准 电 压 <=,接 >?5;测 温 电 阻 =" 和 电 容 B 组 成 定 时 充电电路,接 >?2;>?C 作为 ="、B 的可控充电电源;>?7 作 为 电 容 B 的 放 电 端 。/34567828 的 各 端 口 可 设 置 为
保持高阻,>?8 输出高电平 <EF 通过 =8 对 B 充电,同 样 用 定 时 器 32 测 出 从 >?8 输 出 高 电 平 到 比 较 器 输 出 跳
变为低电平的时间 37,37DG=8B
2- <EFG<= <EFG<E;
。比较 37 与
32
表 达 式 ,得 到
="D
32=8 37
。=" 只 与
要的参量,但 必 须 通 过 / . 0(模 . 数 )转 换 才 能 送 到 单 片
机处理。实现温度 /.0 转换可用专用 /.0 转换芯片,
或用带 / . 0 转换的单片机,但价格较贵,1 位以上的 / .
0 转换芯片价格更是成倍增加。在竞争激烈的家电行业
中 ,为 了 节 省 成 本 、提 高 产 品 竞 争 力 ,希 望 / . 0 转 换 价
!# ! · "##$
电子控制技术 !""#$!%%%&’"!()&*+,&*-
用
单片机实现
!#$ !." 高性能、低成本温度 转换
陈国杰
电 饭 煲 、热 水 器 、空 调 、消 毒 柜 等 家 电 越 来 越 多 地
采 用 单 片 机 控 制 ,提 高 产 品 智 能 化 。 温 度 是 这 些 家 电 重
极低成本单片机在线仿真开发平台说明
极低成本单片机在线仿真开发平台一、 技术说明1.1 什么是在线仿真?简单地讲,在线仿真功能(In-Circuit Debugging )是在单片机在实际的电路中工作时,可实时查看及修改其内部的各个寄存器值、程序中定义的各个变量、数据结构等的值,并可以控制程序以单步、断点、全速、暂停等多种模式运行。
对于单片机的初学者来说,在线仿真功能可以有效降低单片机的学习难度;对于资深开发者来说,在线仿真功能可以极大提高开发调试的效率,但是现在的单片机开发平台普遍存在价格低廉的无在线仿真功能,有在线仿真功能的又成本过高的问题。
1.2 在线仿真功能的实现本发明利用飞思卡尔MC68HC908系列单片机实现在线仿真功能。
深入研究了MC68HC908系列芯片内Bootloader(引导程序)的原理,通过编写芯片内的Bootloader ,在系统复位时以合适的方式将芯片引导入到用户监控模式,调用芯片内MON08监控指令实现单片机的在线仿真功能。
这需要在芯片FLASH 的系统保护区域增加一段BootLoader 的代码,在系统复位时启动,然后根据引脚上的电平、信号条件将引导入芯片内MON08的监控指令。
这里的Bootloader 代码允许不使用施加在某上引脚上的任何特殊的编程电平(一般是9V)以及任何附加的仿真器等硬件就能使单片机进入MON08监控模式中去。
这样就可以开发出一个硬件成本极低的且只需一条串口线就能进行在线仿真的单片机开发系统,如图1-1所示系统硬件构成:图1-1 单片机在线仿真系统硬件构成1.3 Bootloader 核心代码流程图由于片内保护的系统ROM 空间的限制,跟其它单片机上的ROM 监控程序类似,在这个Bootloader 里也有一个伪向量机制,以便使中断向量跳转到非保护的用户ROM 空间中去。
在片内UARTvia Windows & Linux PC 单片机在线仿真平台ROM的FFBE地址,有一个保护字节,用以对系统ROM空间进行保护,当此值为FE时,此区域是不可擦写的,这样非授权用户将无法改写Bootloader的内容。
单片机简易教程
目录1课:单片机简叙......................................... 错误!未定义书签。
2课:单片机引脚介绍..................................... 错误!未定义书签。
3课:单片机存储器结构................................... 错误!未定义书签。
4课:第一个单片机小程序................................. 错误!未定义书签。
5课:单片机延时程序分析................................. 错误!未定义书签。
6课:单片机并行口结构................................... 错误!未定义书签。
7课:单片机的特殊功能寄存器............................. 错误!未定义书签。
8课:单片机寻址方式与指令系统........................... 错误!未定义书签。
9课:单片机数据传递类指令............................... 错误!未定义书签。
10课:单片机数据传送类指令.............................. 错误!未定义书签。
11课:单片机算术运算指令................................ 错误!未定义书签。
12课:单片机逻辑运算类指令.............................. 错误!未定义书签。
13课:单片机逻辑与或异或指令祥解........................ 错误!未定义书签。
14课:单片机条件转移指令................................ 错误!未定义书签。
15课:单片机位操作指令.................................. 错误!未定义书签。
单片机课程设计报告流水灯(WORD档)
XX工程学院单片机课程设计报告题目:流水灯学生姓名:学号:系部名称:职业技术学院班级:机电一体化Z11-1 指导教师:目录摘要 (3)一、课程设计题目 (4)二、设计任务及要求 (4)三、实验方案 (4)四、流程图 (4)五、硬件电路 (6)六、软件设计 (6)1 主体程序 (6)2 键扫描子程序 (6)3 闪烁控制程序 (6)4 延时子程序 (6)5 源程序设计 (7)七、功能调试 (12)八、设计总结 (12)九、参考文献 (13)【摘要】单片机课程设计主要是为了让我们增进对单片机芯片电路的感性认识,加深对理论方面的理解。
了解软硬件的有关知识,并掌握软件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。
另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。
一、课程设计题目:流水灯二、设计任务及要求:任务:完成对接在P1,P3口的发光二极管闪亮控制程序的设计1.用程序延时方法让P1的一个LED小灯每隔1S交替闪亮2.用程序延时方法让P1的8个LED小灯循环(每个亮50MS)闪亮3.用程序延时方法让P1的8个LED小灯追逐闪亮(50MS间隔变化)4.用程序延时方法让P1、P3的16个LED小灯循环(每个亮50MS)闪亮要求:1. 根据硬件电路原理,画出接线2. 设计出相应的软件程序三、实验方案:方案:单片机采用40脚的89C52标准双列直插系列,有4个标准输入/输出端口共32位控制端口。
本次设计采用并行口低电平(吸电流)直接驱动LED发光管发光形式,选择了P1和P3口的16个端口进行模拟LED小灯控制,如要多些小灯单元可再将P2口、P0口及其他空余端口用LED小灯驱动控制。
因系统功能要求能控制灯亮的方式,在P0.0—P0.3端口接了4个按键小开关,每个小开关可控制一种亮灯方式。
在端口较紧张的情况下,LED小灯驱动也可用串入/并出移位寄存器(如74HC595),单片机用并行移位方式进行驱动。
最新单片机实现低成本
单片机实现低成本单片机实现低成本A/D转换目前单片机在电子产品中已得到广泛应用,许多类型的单片机内部已带有A/D转换电路,但此类单片机会比无A/D转换功能的单片机在价格上高几元甚至很多,本文给大家提供一种实用的用普通单片机实现的A /D转换电路,它只需要使用普通单片机的2个I/O脚与1个运算放大器即可实现,而且它可以很容易地扩展成带有4通道A/D转换功能,由于它占用资源很少,成本很低,其A/D转换精度可达到8位或更高,因此很具有实用价值。
其电路如图一所示:图一其工作原理说明如下:1、硬件说明:图一中“RA0”和“RA1”为单片机的两个I/O脚,分别将其设置为输出与输入状态,在进行A/D转换时,在程序中通过软件产生PWM,由RA0脚送出预设占空比的PWM波形。
RA1脚用于检测比较器输出端的状态。
R1、C1构成滤波电路,对RA0脚送出的PWM波形进行平滑滤波。
RA0输出的PWM波形经过R1、C1滤波并延时后,在U1点产生稳定的电压值,其电压值U1=VDD*D1/(D1+D2),若单片机的工作电压为稳定的+5V,则U1=5V*D1/(D1+D2)。
图一中的LM324作为比较器使用,其输入负端的U1电压与输入正端的模拟量电压值进行比较,当U1大于模拟量输入电压时,比较器的输出端为低电平,反之为高电平。
2、A/D转换过程:如果使RA0输出PWM波形,其占空比由小到大逐渐变化,则U1的电压会由小到大逐渐变化,当U1电压超过被测电压时,比较器的输出端由高电平变为低电平,因此可以认为在该变化的瞬间被测的模拟量与U1的电压相等。
由于U1的电压值=VDD*D1/(D1+D2),当VDD固定时,其电压值取决于PWM波形的占空比,而PWM的占空比由单片机软件内部用于控制PWM输出的寄存器值决定,若软件中用1个8位寄存器A 来存放RA0输出的PWM的占空比值D1,因此在RA1检测到由“1”变为“0”的瞬间,A寄存器的值D1即为被测电压的A/D转换值,其A/D转换结果为8位。
MSP430单片机教学综合实训一例共4页word资料
MSP430单片机教学综合实训一例1 概述单片机应用广泛,成本低,种类多,功耗低,能够方便地组装成各种智能的控制设备,能够完成相对比较复杂的控制任务,环境适应性较强,可以很方便的实现多机和分布式控制,已成为微型计算机的一个重要分支,发展速度极快。
单片应用人才需求广泛,高职院校在计算机应用类职业人才培养中大多开设单片机应用类课程。
专业实训是高职人才培养中的重要一环,包括了从知识准备到实训器材选择、从程序设计到电路设计等环节,对提高学生实践能力起到了重要作用。
2 实训设计与要求本实训采用现技术已比较成熟且难度适中的“数字温度计”制作作为实训内容。
根据系统的设计要求,选择DS18B20作为温度传感器,可以省去采样/保持电路、运放、数/模转换电路以及串/并转换电路,可以有效简化电路,缩短系统的工作时间,降低了实训难度。
选择MSP430单片机为测控系统的核心来完成数据采集、处理、显示、报警等功能。
本实训采用MSP430单片机作为核心部件,MSP430系列单片机是一种16位的单片机,相对于8位的51单片机来说,它具有功能丰富、较大的内部RAM和程序存储空间,适合开发较复杂的系统。
采用C语言开发,程序更容易编写和较好的可读性,可以大大提高软件开发的工作效率。
温度传感器DS18B20把所测得的温度发送到MSP430单片机上,经过单片机处理,将温度在LED数码管以动态扫描法实现显示。
系统由主控制器、测温电路和显示电路3个模块组成。
对学生实训具体要求如下:(1)熟悉各元器件原理与使用方法,编写程序,实现以单片机为核心器件,使用温度传感器采集温度,通过LED数码管显示器显示温度值。
(2)编写程序,通过液晶显示模块实现汉字和温度值输出显示,实现温度报警功能。
(3)设计制作独立完整实验电路。
3 实训器材采用MSP430-DEMO16X开发试验板,单片机的所有引脚都已经引出,便于学生进行扩展试验,并对实验的原理、实验环境配置和源程序都进行了详细的说明。
单片机实现低成本A-D转换
单片机实现低成本A/D转换
在前面的文章中分别介绍了两种用普通单片机实现低成本A/D转换的方法,这两种方法中在单片机的外部都要使用到一个比较器,在本文中继续向大家介绍低成本的A/D转换的一种方法,只是这种方法成本会更低,而且外部无需使用比较器。
此种方法的A/D转换精度不高,只有6~7bit,并且被测电压范围较为有限,但在某些精度要求不高,且被测电压值变化不大的场合也很有实用价值,比如温度测量方面。
其电路如图一所示:
其工作原理说明如下:
1、硬件说明:
图一中的R1、R2和C1构成RC充电电路,被测量通过R1、R2对C1充电。
N1为单片机,本电路中采用MICROCHIP的PIC12C508A来举例说明。
C2为给电源供电用的滤波电路,VD1为保护用稳压二极管,以避免输入电压过高而损坏单片机。
2、A/D转换过程:。
(完整word版)NRF24L01详细教程
先来看接口电路,使用的IO 口不是唯一的哦,可随意定义接口,当然是在使用IO 口模拟SPI 且IRQ 中断引脚不使用的使用查询方法判断接收状态的情况下了。
作为初探我们就是用简单的IO 模拟SPI 的方法了,中断使用查询的方式。
那么该教程讲解的接口与单片机的连接如下:首先您需要了解NRF24L01,请参阅“NRF24L01 芯片中文资料”或者“NRF24L01 芯片英文资料”。
我们的教程是以一个简单的小项目为大家展示NRF24L01 的使用方法与乐趣。
我们所写教程均是以这种方式的呢,让您在学习的时候明白它能做什么,使您学起来不至于枯燥无味。
作为简易的教程,我们只需要知道它是怎么使用的就够了,我们本教程的目的是用NRF24L01 发送数据和接收数据,且接收方会对比发送的数据与接收的数据,若完全相同则控制LED 闪烁一次,并且把接收到的数据通过串口发送到PC 端,通过串口工具查看接收到的数据。
具体的要求如下:1、具备发送和接收的能力。
2、发送32 个字节的数据,接收方接收到正确数据之后给予提示,通过LED 闪烁灯形式。
3、把接收到的数据传送到PC 进行查看。
4、发送端每隔大约1.5 秒发送一次数据,永久循环。
以上是程序的要求,若您想自行设计出硬件接口,您也是可以添加一条呢:使用DIY 方式设计NRF24L01 的接口板,且包含含单片机平台,使用PCB 方式或者万用板方式均可。
如果您想让自己学的很扎实,那么推荐您自行做出接口板子呢。
当然若您的能力不足,那么我们不推荐自行做板呢,因为这样会增加您学习的难度,反而起到了反效果呢。
我们知道NRF24L01 的供电电压是1.9V~3.6V 不能超过这个范围,低了不工作,高了可能烧毁NRF24L01 芯片。
我们常用的STC89C52 的单片机的供电电压是5V,我们不能直接给24L01 这个模块供电,我们需要使用AMS1117-3.3V 稳压芯片把5V 转成3.3V 的电压为24L01 模块供电。
删繁就简-单片机入门到精通1-2
目录目录 (1)导 言 (4)第一章单片机基础 (5)1.1.什么是单片机 (5)1.2.单片机是如何工作的 (7)1.3.单片机与电脑的区别 (11)1.4.晶振 (13)1.5.系统时钟和周期 (14)1.6.单片机指令和汇编语言 (17)1.7.RAM/ROM的作用 (23)1.8.单片机接口 (25)1.9.接口驱动能力 (31)1.10.方便实用的中断 (31)1.11.函数和堆栈 (44)1.12.单片机PAGE/BANK概念 (47)1.13.CISC与RISC (49)1.14.为什么DSP跑得快 (51)1.15.单片机产品开发常见用语 (53)第二章单片机应用小技巧 (58)2.1.用IO模拟接口 (58)2.2.交流特性显神通 (63)2.3.电阻网络低成本高速AD (65)2.4.利用电容充放电测电阻 (66)2.5.晶振也能控制电源 (67)2.6.如何降低功耗 (68)2.7.开机请用NOP (68)2.8.查表与乘除法 (69)2.9.RAM动态装载程序 (69)2.10.程序也可被压缩 (76)2.11.累计误差 (79)2.12.让定时更准一些 (80)2.13.寄存器也可当RAM (82)2.14.清中断标志的位置 (84)2.15.键盘扫描 (84)2.16.视觉暂留 (87)2.17.让耳朵优先 (88)2.18.1000与1024 (89)2.19.PWM (90)第三章单片机高级特性 (92)3.1.Cache (93)3.2.总线 (102)3.3.DMA (111)3.4.存储器管理 (114)3.5.嵌入式与操作系统 (121)什么是嵌入式 (121)嵌入式误区之不死机 (127)嵌入式效率 (132)第四章单片机C语言 (134)4.1.单片机C语言 (134)4.2.for()和while()循环 (135)4.3.循环里的i++与i— (143)4.4.优化的方法与效果 (145)4.5.全局变量的风险 (148)4.6.变量类型与代码效率 (154)4.7.慎用int (157)4.8.危险的指针 (158)4.9.循环延时 (166)4.10.运算表达式 (170)4.11.溢出 (176)4.12.强制转换 (176)4.13.高效实用位运算 (179)4.14.宏和register (184)4.15.手机里的计算器 (193)4.16.函数设计 (200)4.17.某产品函数编写规则 (206)第五章问题分析与调试 (208)5.1.应该具备基本硬件能力 (208)5.2.将自己站在别人角度来思考问题 (211)5.3.先找自己原因再假定他人出错 (216)5.4.充分发掘IDE调试工具功能 (218)5.5.IDE调试工具也会导致错误发生 (227)5.6.没有IDE调试工具的测试 (227)5.7.C语言要多查看汇编代码 (229)5.8.养成查看寄存器内容的习惯 (232)5.9.中断的一些特殊情况 (233)5.10.别迷信文档与硬件 (237)5.11.程序暂停不代表所有模块暂停 (239)5.12.几种仪器好帮手 (239)5.13.多用电脑工具软件 (242)5.14.串口通讯不能使用隔离变压器分析实例 (246)5.15.Cache导致录音有杂音分析实例 (247)5.16.Cache导致RAM验证结果不对分析实例 (251)5.17.双口RAM读写竞争出错分析实例 (252)第六章实际产品开发 (256)6.1.如何开发一个产品 (256)6.2.学会看电气参数表 (258)6.3.接口的匹配 (265)6.4.电源和地的影响 (268)6.5.成本意识 (272)6.6.别烦流程图 (276)6.7.功能的全面与实用 (277)6.8.批量产品的替代方案 (280)6.9.多了解新器件 (281)6.10.尽可能让生产更方便 (284)6.11.误差分析 (287)6.12.电磁兼容 (290)6.13.上电与测试 (291)6.14.程序版本发放记录 (293)导 言本书的对象主要是希望从事单片机软件开发的人员,当然不是只限于这些人员才可以看,只要你有兴趣,哪怕你想成为一名炒菜的大师傅或者已经是大师傅,我一样欢迎你来阅读本书。
2019年单片机实现低成本.doc
单片机实现低成本A/D转换目前单片机在电子产品中已得到广泛应用,许多类型的单片机内部已带有A/D转换电路,但此类单片机会比无A/D转换功能的单片机在价格上高几元甚至很多,本文给大家提供一种实用的用普通单片机实现的A/ D转换电路,它只需要使用普通单片机的2个I/O脚与1个运算放大器即可实现,而且它可以很容易地扩展成带有4通道A/D转换功能,由于它占用资源很少,成本很低,其A/D转换精度可达到8位或更高,因此很具有实用价值。
其电路如图一所示:图一其工作原理说明如下:1、硬件说明:图一中“RA0”和“RA1”为单片机的两个I/O脚,分别将其设置为输出与输入状态,在进行A/D转换时,在程序中通过软件产生PWM,由RA0脚送出预设占空比的PWM波形。
RA1脚用于检测比较器输出端的状态。
R1、C1构成滤波电路,对RA0脚送出的PWM波形进行平滑滤波。
RA0输出的PWM波形经过R1、C1滤波并延时后,在U1点产生稳定的电压值,其电压值U1=VDD*D1/(D1+D2),若单片机的工作电压为稳定的+5V,则U1=5V*D1/(D1+D2)。
图一中的LM324作为比较器使用,其输入负端的U1电压与输入正端的模拟量电压值进行比较,当U1大于模拟量输入电压时,比较器的输出端为低电平,反之为高电平。
2、A/D转换过程:如果使RA0输出PWM波形,其占空比由小到大逐渐变化,则U1的电压会由小到大逐渐变化,当U1电压超过被测电压时,比较器的输出端由高电平变为低电平,因此可以认为在该变化的瞬间被测的模拟量与U1的电压相等。
由于U1的电压值=VDD*D1/(D1+D2),当VDD固定时,其电压值取决于PWM波形的占空比,而PWM的占空比由单片机软件内部用于控制PWM输出的寄存器值决定,若软件中用1个8位寄存器A来存放RA0输出的PWM的占空比值D1,因此在RA1检测到由“1”变为“0”的瞬间,A寄存器的值D1即为被测电压的A/D转换值,其A/D转换结果为8位。
单片机控制可控硅Word文档
1 调光控制器设计在日常生活中,我们常常需要对灯光的亮度进行调节。
本调光控制器通过单片机控制双向可控硅的导通来实现白炽灯(纯阻负载)亮度的调整。
双向可控硅的特点是导通后即使触发信号去掉,它仍将保持导通;当负载电流为零(交流电压过零点)时,它会自动关断。
所以需要在交流电的每个半波期间都要送出触发信号,触发信号的送出时间就决定了灯泡的亮度。
调光的实现方式就是在过零点后一段时间才触发双向可控硅开关导通,这段时间越长,可控硅导通的时间越短,灯的亮度就越低;反之,灯就越亮。
这就要求要提取出交流电压的过零点,并以此为基础,确定触发信号的送出时间,达到调光的目的。
1.1 硬件部分本调光控制器的框图如下:查看原图(大图)控制部分:为了便于灵活设计,选择可多次写入的可编程器件,这里选用的是ATMEL的AT89C51单片机。
驱动部分:由于要驱动的是交流,所以可以用继电器或光耦+可控硅(晶闸管SCR)来驱动。
继电器由于是机械动作,响应速度慢,不能满足其需要。
可控硅在电路中能够实现交流电的无触点控制,以小电流控制大电流,并且不象继电器那样控制时有火花产生,而且动作快、寿命长、可靠性高。
所以这里选用的是可控硅。
负载部分:本电路只能控制白炽灯(纯阻负载)的亮度。
1.2 软件部分要控制的对象是50Hz的正弦交流电,通过光耦取出其过零点的信号(同步信号),将这个信号送至单片机的外中断,单片机每接收到这个同步信号后启动一个延时程序,延时的具体时间由按键来改变。
当延时结束时,单片机产生触发信号,通过它让可控硅导通,电流经过可控硅流过白炽灯,使灯发光。
延时越长,亮的时间就越短,灯的亮度越暗(并不会有闪烁的感觉,因为重复的频率为100Hz,且人的视觉有暂留效应)。
由于延时的长短是由按键决定的,所以实际上就是按键控制了光的强弱。
理论上讲,延时时间应该可以是0~10ms内的任意值。
在程序中,将一个周期均分成N等份,每次按键只需要去改变其等份数,在这里,N越大越好,但由于受到单片机本身的限制和基于实际必要性的考虑,只需要分成大约100份左右即可,实际采用的值是95。
单片机源程序 WPS文字 文档
;数据采集系统第1小题;硬件连接:电位器接IN0; ADC0809的EOC口接P3.2; KEY/LED_CS接CS0; ADC0809_CS接CS1;操作手册:1、开机--默认显示学号H08210(在采集状态下,后两位显示当前通道号); 2、使用实验箱最下面一层6个按键操作; 3、按键功能从左至右依次为:设定、加一、减一、换位、确定、运行; 4、点击“设定”键,默认第一位闪烁,配合“加一”“减一”键可对本位进行设置; 5、点击“换位”键,可依次向右循环,对每一位进行设定,共四位可以设定; 6、点击“确定”保存当前设定值; 7、点击“运行”键,以当前设定值为最大值运行采集; 8、需要对其他通道参数进行设定请再次点击“确定”找到需要设定的通道,并重复上述操作步骤即可OUTBIT EQU 8002H ;位控制器OUTSEG EQU 8004H ;段控制器IN EQU 8001H ;键盘读入口CS0809 EQU 9000HSHUJU EQU 51H ;通道数据存储区ORG 0000HLJMP STARTORG 0020HSTART:MOV 25H,#00H;****************************; 参数设定;****************************MOV 30H,#12H;学号MOV 31H,#00HMOV 32H,#08HMOV 33H,#02HMOV 34H,#01HMOV 35H,#00HMOV 36H,#00H;参数1设定值MOV 40H,#01HMOV 41H,#00HMOV 42H,#00HMOV 43H,#00H;参数2设定值MOV 44H,#02HMOV 45H,#00HMOV 46H,#00HMOV 47H,#00H;参数3设定值MOV 48H,#03HMOV 49H,#00HMOV 4AH,#00HMOV 4BH,#00H;参数4设定值MOV 4CH,#04HMOV 4DH,#00HMOV 4EH,#00HMOV 4FH,#00HMOV 50H,#00HMOV SHUJU,#01H ;默认显示通道数;****************************; 主程序;****************************X1:MOV R0,#30H ;默认状态显示LCALL XIAN1LCALL TESTKEYJNB 20H.0,X1 ;如果没有键按下继续显示学号X2:MOV 25H,#00H ;有键按下则显示相应通道数据MOV A,SHUJUMOV B,#04HMUL ABADD A,#3CHMOV R0,ALCALL XIAN2LCALL TESTKEYJNB 20H.0,X2 ;没有键按下,继续显示通道1数据LCALL PAN ;有键按下,调用判断子程序CJNE R5,#05H,QD1 ;判断R5是否为5LJMP SDQD1:LJMP S44SD:SETB 20H.1MOV 36H,#00HMOV A,SHUJUMOV B,#04HMUL ABADD A,#3CH ;选择数据通道ADD A,36HMOV R0,AMOV 70H,@R0 ;将闪烁值保存至70H单元中H1:MOV A,SHUJUMOV B,#04HMUL ABADD A,#3CHADD A,36HMOV R0,A ;R0指向闪烁寄存字节处JB 20H.1,S1MOV @R0,#10HSETB 20H.1LJMP DS1S1:MOV @R0,70H ;将闪烁字节值显示出来CLR 20H.1DS1:MOV A,SHUJUMOV B,#04HMUL ABADD A,#3CHMOV R0,A ;R0指向显示首区LCALL XIAN2LCALL TESTKEYJNB 20H.0,H1LCALL PANCJNE R5,#02H,S11 ;如果不是“换位”键,则跳转到“加减”按键进行判断MOV A,SHUJUMOV B,#04HMUL ABADD A,#3CHADD A,36HMOV R0,AMOV @R0,70HINC 36HHW1:MOV A,SHUJU ;换位MOV B,#04HMUL ABADD A,#3CHADD A,36HMOV R0,AMOV 70H,@R0MOV A,36HCJNE A,#04H,H1MOV 36H,#00HLJMP HW1S11:CJNE R5,#04H,S22 ;加1 INC 70HMOV A,70HCJNE A,#0AH,H1MOV 70H,#00HLJMP H1S22:CJNE R5,#03H,S33 ;减1 DEC 70HMOV A,70HCJNE A,#0FFH,H2MOV 70H,#09HH2:LJMP H1S33:CJNE R5,#01H,H2 ;确定1 MOV A,SHUJUMOV B,#04HMUL ABADD A,#3CHADD A,36HMOV R0,AMOV @R0,70HLJMP X2S44:CJNE R5,#01H,W1 ;确定2 INC SHUJUMOV A,SHUJUCJNE A,#05H,L22MOV SHUJU,#01HLJMP X2W1:CJNE R5,#00H,L22YX:LCALL CJ1 ;采集LCALL TESTKEYJB 20H.0,L22LJMP YX ; 运行L22:LJMP X2TESTKEY:MOV DPTR,#8002H MOV A,#00HMOVX @DPTR,AMOV DPTR,#8001HMOVX A,@DPTRANL A,#01HCJNE A,#01,B1CLR 20H.0LJMP FH ;返回B1:SETB 20H.0FH:RETPAN:MOV R4,#0FEHMOV R5,#0FFHNEXT:MOV DPTR,#8002HMOV A,R4MOVX @DPTR,AMOV DPTR,#8001HMOVX A,@DPTRANL A,#01HCJNE A,#01H,QDZMOV A,R4RL AMOV R4,AINC R5LJMP NEXTQDZ:INC R5MOV 30H,R5LOOP:LCALL TESTKEYJB 20H.0,LOOPRETXIAN1:MOV R2,#20H ;显示1 MOV R3,#06HL1:MOV DPTR,#8002H ;位选MOV A,R2MOVX @DPTR,ARR AMOV R2,AMOV A,@R0MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#8004H ;段选MOVX @DPTR,ALCALL DELAY1INC R0DJNZ R3,L1RETXIAN2:MOV R2,#20H ;显示2 SETB 21H.0MOV R3,#06HL12:MOV DPTR,#8002H ;位选MOV A,R2MOVX @DPTR,ARR AMOV R2,ACLR 21H.0L44:MOV A,@R0MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#8004H ;段选MOVX @DPTR,ALCALL DELAY2JB 21H.0,H11MOV R0,#4FHSETB 21H.0H11:INC R0DJNZ R3,L12RETCJ1:LCALL PXS ;调系数MOV DPTR,#9000H ;采集MOV A,#00HMOVX @DPTR,AJNB P3.2,$MOVX A,@DPTRLCALL ZH1MOV R0,#60HLCALL XIAN2MOV P1,#80HRETPXS:MOV A,SHUJU ;判系数MOV B,#04HMUL ABADD A,#3CHMOV R0,AMOV R1,AMOV A,@R0SW AP AINC R0ADD A,@R0MOV 53H,AINC R0MOV A,@R0SW AP AINC R0ADD A,@R0MOV 54H,AMOV A,53HANL A,#0F0HMOV 25H,#01HINC R1MOV A,@R1SW AP AINC R1ADD A,@R1MOV 53H,AINC R1MOV A,@R1SW AP AADD A,#00MOV 54H,A DYYQ:MOV 57H,#02HMOV 58H,#55HMOV 55H,#00HMOV 56H,#00HMOV 22H,#00HMOV R0,#0FFH LOOP5:INC R0CLR CMOV A,56HADD A,58HDA AMOV 56H,AMOV A,55HADDC A,57HDA AMOV 55H,ACLR CMOV A,56HSUBB A,54HMOV 22H.0,CMOV A,55HSUBB A,53HMOV 22H.1,CMOV R2,22HCJNE R2,#00,NEXT5MOV A,56HCJNE A,54H,NEXT5INC R0NEXT5:MOV C,22H.1JC LOOP5MOV 22H,#00HCLR CMOV B,R0RETZH1: MUL ABMOV 66H,BMOV 67H,AMOV 68H,#03HMOV 69H,#0E8HMOV R0,#0FFHLOOP1:INC R0 ;判定千位MOV A,67HMOV 2BH,67HSUBB A,69HMOV 67H,AMOV A,66HMOV 2AH,66HSUBB A,68HMOV 66H,ANEXT1:JNC LOOP1MOV 60H,R0MOV 66H,2AHMOV 67H,2BHMOV 22H,#00H ;判定百位CLR CMOV 68H,#00HMOV 69H,#64HMOV R0,#0FFHLOOP2:INC R0MOV A,66HCJNE A,#00H,BW1MOV A,67HMOV 2BH,67HSUBB A,69HMOV 67H,ALJMP NEXT2BW1:MOV A,67HSUBB A,69HMOV 67H,AMOV A,66HSUBB A,68HMOV 66H,ALJMP LOOP2NEXT2:JNC LOOP2MOV 61H,R0MOV 67H,2BHMOV 22H,#00H ;判定十位CLR CMOV 69H,#0AHMOV R0,#0FFHLOOP3:INC R0MOV A,67HMOV 2BH,67HSUBB A,69HMOV 67H,ANEXT3:JNC LOOP3MOV 62H,R0MOV 63H,2BHMOV A,25HCJNE A,#01H,JS1MOV 63H,62HMOV 62H,61HMOV 61H,60HMOV 60H,#00HJS1:RETDELAY1:MOV R6,#06D1:MOV R7,#180DJNZ R7,$DJNZ R6,D1RETDELAY2:MOV R6,#06D2:MOV R7,#180DJNZ R7,$DJNZ R6,D2RETTAB:DB 3FH,06H,5BH,4FHDB 66H,6DH,7DH,07HDB 7FH,6FH,77H,7CHDB 39H,5EH,79H,71HDB 00H,73H,76H。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实现低成本A/D转换目前单片机在电子产品中已得到广泛应用,许多类型的单片机内部已带有A/D转换电路,但此类单片机会比无A/D转换功能的单片机在价格上高几元甚至很多,本文给大家提供一种实用的用普通单片机实现的A/D转换电路,它只需要使用普通单片机的2个I/O脚与1个运算放大器即可实现,而且它可以很容易地扩展成带有4通道A/D转换功能,由于它占用资源很少,成本很低,其A/D转换精度可达到8位或更高,因此很具有实用价值。
其电路如图一所示:图一其工作原理说明如下:1、硬件说明:图一中“RA0”和“RA1”为单片机的两个I/O脚,分别将其设置为输出与输入状态,在进行A/D转换时,在程序中通过软件产生PWM,由RA0脚送出预设占空比的PWM波形。
RA1脚用于检测比较器输出端的状态。
R1、C1构成滤波电路,对RA0脚送出的PWM波形进行平滑滤波。
RA0输出的PWM波形经过R1、C1滤波并延时后,在U1点产生稳定的电压值,其电压值U1=VDD*D1/(D1+D2),若单片机的工作电压为稳定的+5V,则U1=5V*D1/(D1+D2)。
图一中的LM324作为比较器使用,其输入负端的U1电压与输入正端的模拟量电压值进行比较,当U1大于模拟量输入电压时,比较器的输出端为低电平,反之为高电平。
2、A/D转换过程:如果使RA0输出PWM波形,其占空比由小到大逐渐变化,则U1的电压会由小到大逐渐变化,当U1电压超过被测电压时,比较器的输出端由高电平变为低电平,因此可以认为在该变化的瞬间被测的模拟量与U1的电压相等。
由于U1的电压值=VDD*D1/(D1+D2),当VDD固定时,其电压值取决于PWM波形的占空比,而PWM的占空比由单片机软件内部用于控制PWM输出的寄存器值决定,若软件中用1个8位寄存器A来存放R A0输出的PWM的占空比值D1,因此在RA1检测到由“1”变为“0”的瞬间,A寄存器的值D1即为被测电压的A/D转换值,其A/D转换结果为8位。
如果用16位寄存器来作输出PWM的占空比,则A/D转换值可达到16位。
3、A/D转换误差分析及解决办法:A/D转换的误差主要由以下几个方面决定,分别说明如下:(1)单片机的电源电压VDD:在该A/D转换中,VDD电压是造成A/D转换误差的主要原因,如果使VDD电压精度做到较高,则A/D转换误差可以做到很小,在VDD电压精度为0.5%情况下,实际的A/D转换误差小于1%。
(2)软件产生的PWM占空比:若用于产生PWM的软件设计不良,会使存放占空比的寄存器值与实际输出的PWM占空比不一致,这会导致测量误差。
(3)比较器输入端的失调电压:该电压对A/D转换精度有一定影响,但影响较小。
(4)RC滤波电路的纹波:在R1、C1取值不当的情况下,U1处的电压纹波较大,并且延时时间不够,会使A/D转换产生误差,因此R1、C1取值不能太小,但太大又会影响A/D转换速度,推荐使用图一中所示的R1、C 1参数,在纹波合理的情况下,其转换误差也可通过软件消除。
A/D转换误差的解决办法:(1)对VDD造成的误差,只能通过提高VDD电压精度来解决,它相当于A /D转换的基准电压。
(2)对于软件中PWM设计不良导致的误差,可修改软件进行解决,本文提供了用软件产生PWM的程序流程图,实际使用中可按此流程设计程序。
(3)对比较器及RC滤波电路的纹波导致的误差,在软件中可通过上、下检测法进行消除,即先将PWM的占空比由小到大变化,使U1电压由低往高逐渐变化,在比较器输出端变化时记录其A/D转换值,再将PWM的占空比由大到小变化,使U1电压由高到低变化,在比较器输出端变化时记录其A/D转换值,将两次的A/D转换值进行平均,可有效地消除这两种误差。
(4)对A/D转换值进行数字滤波,如多次转换求平均值等。
数字滤波消除误差的方法很多,在此不再赘述。
4、A/D转换速度及提高办法:由于该A/D转换是通过PWM滤波后再进行比较来完成的,其PWM的产生与滤波都需要一定的时间,因此其A/D转换速度较慢,适用于对A/D转换速度要求不高的产品中,其A/D转换速度取决于以下几个方面:(1)单片机的运行速度:单片机的运行速度越高则PWM的频率可以越高, RC值就可以取得越小,其延时时间也可以更短,转换速度就更快。
(2)被测电压值的大小:由于U1电压时是由小到大逐渐加大的,当被测电压值较小时,U1电压上升到相应值的时间就越短,完成A/D转换的速度就越快。
(3)初始占空比:初始占空比越高,U1电压较大,其上升到被测电压值的时间也就会越短,完成A/D转换的速度也就越快。
由上所述,A/D转换的速度可以通过提高单片机的工作频率,并在预知被测电压范围时尽可能地设置较高的初始占空比值来加快转换速度,如果所要求的 A/D转换精度要求不高,还可以在软件中缩短PWM 输出的延时时间来提高A/D转换速度。
若单片机带有外部电平变换中断和定时器中断,其A/D转换的精度和速度还可以得到提高。
5、输入电压的测量范围:A/D转换的输入电压测量范围为0V至单片机的电源电压(VDD),若需要提高被测电压范围,可将输入电压通过电阻分压后进行测量,但其A/D转换的误差会受分压电阻影响。
6、A/D转换通道的多路扩展:图中所用的运算放大器为LM324,该集成电路内部带有4个运放,其余3个运放的输入端可分别作为另外3个A/D转换通道,其输出端与单片机连接,在软件上略作修改,就可以在不增加成本的情况下实现4路A/D转换。
7、用同样的工作原理实现D/A转换:如图二所示,可使该电路很容易地只用单片机的一个I/ O脚实现D/A转换功能。
其输出的模拟量电压Vout="VDD"*D1/(D1+D2)。
该输出电压带有纹波,当RC值足够大时,该纹波值几乎为零,可忽略不计。
图二8、单片机的A/D转换软件程序流程图:在此前笔者曾介绍了普通单片机实现低成本A/D转换的一种方法,在实际使用中还有其它的不少方法可以实现低成本A/D转换,在本文中我们继续为电子设计者们提供又一种A/D转换方法,该方法同样占用较少的单片机资源,成本也很低,仍然有很强的实用性,该电路曾在锂离子电池充电器中作A/D转换使用,效果良好。
其电路如图一所示:图一其工作原理说明如下:1、硬件电路说明:图一中的R1和N1(TL431)产生一个2.495V的稳定电压,作为A/D转换比较基准。
R2、V1、VD1、VD2和R3构成一个恒流源电路给C1充电,C1上的电压与恒流源的电流大小及充电时间成正比。
MC74HC4051为8选1模拟开关,其输入通道由单片机控制来选择。
LM393作为比较器,当C1上的电压由低到高上升到超过模拟开关输出电压时,其输出端会从低电平转变为高电平。
“RA0”、“RA1”和“RA2”为单片机的3个 I/O脚,RA0设置为输入状态,用于检测比较器输出电平变化,RA1和RA2设置为输出状态,RA1输出高电平时,V2导通,用于将C1上的电荷放空, RA2用于选择模拟开关的输入通道。
2、A/D转换过程:首先RA2输出低电平,使模拟开关选择X0(基准电压)作为输入,RA1输出高电平,使V2导通将C1上的电量放完,然后使RA1输出低电平,使 V2截止,此时C1上的电容开始被充电,同时计数器开始计数,当C1上的电压不断上升,并达到比较器输入负端的电压(此时为基准电压Vref)时,比较器的输出端由低电平转为高电平,此时记录下计数器的计数值,为T1。
接着RA2输出高电平,使模拟开关选择X1(被测电压)作为输入,RA1输出高电平,使V2导通将C1上的电量放完,然后使RA1输出低电平,使V2截止,此时C1上的电容又开始被充电,同时计数器开始计数,当C1上的电压不断上升,并达到比较器输入负端的电压(此时为基准电压)时,比较器的输出端由低电平转为高电平,此时记录下计数器的计数值,为T2。
由于C1是被恒流充电,因此C1上的电压与充电时间成正比,即V="T"*k。
当C1的容值与充电的恒流值不变时,k是一个固定不变的常数。
由此可以得到:Vref/T1=V1/T2 ,即 V1=Vref*T2/T1由于Vref是基准电压(2.495V),因此只要利用单片机的定时器测出T1和T2,就可以计算出被测电压V1的值。
3、A/D转换误差分析及解决办法:A/D转换的误差主要由以下几个方面决定,分别说明如下:1、基准电压Vref:在该A/D转换中,Vref电压是造成A/D转换误差的主要原因,如果使Vref电压精度做到较高,则A/D转换误差可以做到很小,在Vref电压精度为0.5%情况下,实际的A/D转换误差小于1%。
2、定时器误差:若单片机对比较器输出端的电位变化反应慢,或定时器误差较大,则测量到的T1与T2值不准,也会导致测量误差。
3、比较器输入端的失调电压:该电压对A/D转换精度有一定影响,但影响较小。
4、运算误差:由于V1值要经过乘除法运算后得到,在进行运算过程中如果数据处理不当,如余数处理不当,也会产生误差。
5、干扰误差:当输入电压不稳时,恒流源的输出电流会有一定的影响,会产生干扰误差。
A/D转换误差的解决办法:1、对Vref造成的误差,只能通过提高Vref电压精度来解决,它相当于A /D转换的基准电压。
2、对于定时器误差,在单片机中可使RA0口采用带电平变化中断功能的I /O口,以提高反应速度,同时减少恒流源的电流大小,或加大C1电容容量,可以增加T1、T2的测量时间,使计数值加大,达到提高A/D转换精度的目的。
3、选用灵敏度高的比较器可解决比较器输入端导致的误差问题。
4、对运算误差,可以通过软件上的改进来解决。
5、对于干扰造成的误差,可对A/D转换值进行数字滤波,如多次转换求平均值等方法来解决。
数字滤波消除误差的方法很多,在此不再赘述。
4、A/D转换速度及提高办法:由于该A/D转换是通过恒流源对C1电容充电后再进行比较来完成的,C1电容的充电过程需要一定的时间,因此其A/D转换速度较慢,适用于对A/D转换速度要求不高的产品中,其A/D转换速度取决于以下几个方面:1、恒流源的电流大小:恒流源的充电电流越大,C1上的电压上升速度就越快,到达被比较电压的时间也就更短,转换速度就更快。
2、C1电容的大小:其道理与前一点一样,当电容小时,电压上升速度就越快,到达被比较电压的时间也会越短,转换速度就越快。
但由于计数值小,由定时器造成的测量误差也有可能加大。
3、单片机的工作频率:由于A/D转换值是经过乘除运算后完成的,因此单片机的运算速度也会对A/D转换速度有影响,尤其当计数器值为16位时。
由上所述,A/D转换的速度可以通过提高单片机的工作频率,增大恒流源的输出电流,减小C1电容容值来加快A/D转换速度,但要注意当T1、T2 计数值太小时有可能使定时器因素造成的误差增大,因此在实际使用中要综合考虑,在提高转换速度时,保证A/D转换精度,选择最适用于产品的参数值。