虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

if-else-end

  • 单片机几种软件滤波程序示例

    假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1、限幅滤波法(又称程序判断滤波法)     A、方法:         根据经验判断,确定两次采样允许的最大偏差值(设为A)         每次检测到新值时判断:         如果本次值与上次值之差<=A,则本次值有效         如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值     B、优点:         能有效克服因偶然因素引起的脉冲干扰     C、缺点         无法抑制那种周期性的干扰         平滑度差 /*  A值可根据实际情况调整     value为有效值,new_value为当前采样值      滤波程序返回有效的实际值  */ #define A 10 char value; char filter() {    char  new_value;    new_value = get_ad();    if ( ( new_value - value > A ) || ( value - new_value > A )       return value;    return new_value;          } 2、中位值滤波法     A、方法:         连续采样N次(N取奇数)         把N次采样值按大小排列         取中间值为本次有效值     B、优点:         能有效克服因偶然因素引起的波动干扰         对温度、液位的变化缓慢的被测参数有良好的滤波效果     C、缺点:         对流量、速度等快速变化的参数不宜 /*  N值可根据实际情况调整     排序采用冒泡法*/

    标签: 单片机 软件滤波 程序

    上传时间: 2014-12-26

    上传用户:nanshan

  • PIC单片机的RS232通讯程序

    Digitemp Jr. is a device that is designed to measure and report ambient temperature. When connected to an RS-232 port on any PC, it will periodically measure and report in ASCII form the ambient temperature in degrees Celsius. These temperature readings can be monitored with any terminal program. If the terminal program supports capture to disk, the temperature readings can be saved to disk for further analysis with a spreadsheet program or other data analysis tool. The simple ASCII output format of Digitemp Jr. makes it relatively easy to write custom software for receiving, recording, and analyzing ambient temperature data. Best of all, Digitemp Jr. requires no external power supplies or batteries. It is powered directly by the RS-232 port.  

    标签: PIC 232 RS 单片机

    上传时间: 2013-10-20

    上传用户:Maple

  • 基于C8051F020和Zigbee的汽车测试系统设计

    以C8051F020为核心处理器,设计无线传感器网络数据采集系统。系统采用SZ05-ADV型无线通讯模块组建Zigbee无线网络,结合嵌入式系统的软硬件技术,完成终端节点的8路传感器信号的数据采集。现场8路信号通过前端处理后,分别送入C8051F020的12位A/D转换器进行转换。经过精确处理、存储后的现场数据,通过Zigbee无线网络传送到上位机,系统可达到汽车试验中无线测试的目的。 Abstract:  This paper designs a wireless sensor network system for data acquisition with C8051F020 as core processors.The system used SZ05-ADV wireless communication module,set up a Zigbee wireless network, combined with hardware and software technologies of embedded systems,completed the end-node 8-locale sensor signal data acquisition.Eight locale signals were sent separately into the 12-bit ADC of C8051F020 for conversion through front treatment.After accurate processing and storage,the locale data was transmitted to the host computer through Zigbee wireless.The system achieves the purpose of wireless testing in vehicle trial.

    标签: C8051F020 Zigbee 汽车测试 系统设计

    上传时间: 2013-11-23

    上传用户:dsgkjgkjg

  • 基于AVR的新型防汽车追尾安全装置设计

    针对目前汽车追尾事件频发问题,提出一种防汽车车前和车后追尾的安全装置设计。该设计以高性能、低功耗的8位AVR微处理器ATmega8L为核心,结合霍尔式车速传感器、激光雷达测距装置和MMA7260QT加速度传感器,能够兼顾车前和车后,摒弃以往设计中只考虑车前或车后单一性缺点,尤其适用于高速、夜晚或新手行车。 Abstract:  Aiming at the high frequency of vehicle rear-end collision,a safe device design of anti-vehicle rear-end collision is presented.In the design,the high-performance,low-power8-bit AVR microprocessor ATmega8L is utilized as a core combined with Hall-type speed sensor,laser-radar ranging devices and the acceleration sensor MMA7260QT.The design considers both the front and back of a car,and overcomes the drawbacks of former designs in which only the front or the back of the car is considered,so it is especially suitable for high-speed,night or the beginner’s driving.

    标签: AVR 汽车追尾 装置

    上传时间: 2013-10-14

    上传用户:GavinNeko

  • 基于C8051F310的山路转弯预防警示系统

    针对盘山路存在的转弯盲区,即在转弯时司机无法得知弯路对面是否有车辆通过,设计一种基于C8051F310的山路转弯预防警示系统。该系统利用一阶滤波算法检测山路转弯时是否有车辆通过。运用该算法可增强系统检测的实时性,提高检测机动车辆的灵敏度,同时大大减少环境温度对检测的干扰。试验表明该系统能够正确指示出在山路转弯时是否有车辆通过,目前该系统已安装在盘山路上,可大大减少事故的发生率。 Abstract:  Aiming at passing hilly road,there is a turn blind spot.Motormen usually do not know if the passing of vehicles pass the road.So a system of defending accident on hilly road is designed,which is based on MCU C8051F310.The sys-tem uses the first-order filter algorithm to detect whether there are passing vehicles.This algorithm enhances the real-time detection and improves the sensitivity of detection vehicles.Meanwhile,it reduces the detection interference of environmen-tal temperature.The experimental results show that this system can exactly indicate if there are passing vehicles.At present,the system has been successfully applied to hilly road.The system can greatly decrease accident.

    标签: C8051F310 转弯

    上传时间: 2013-10-10

    上传用户:归海惜雪

  • LS7266R1在电子式万能材料试验机中的应用

    针对材料试验机等设备中要求测量或控制材料拉伸或压缩的位移,一般采用光电轴角编码器检测位置信号,输出正交编码脉冲信号。若采用其他方法检测位置信号,必然导致电路设计复杂,可靠性降低。因此,提出一种基于LS7266R1的电子式万能材料试验机设计方案。给出了试验机中的控制器工作原理,LS7266R1与单片机的接口硬件设计,以及主程序软件流程图。巧妙地把力量传感器,位移传感器等机械运动状态的压力或拉力以及位置坐标,变成了电压信号和电脉冲数字信号,供A/D测量和LS7266R1计数,从而实现了独立完成材料试验控制或通过PC机串口命令完成材料试验控制。 Abstract:  Aiming at the requirement that the displacement of the tension and compression always be tested and controlled in the equipement such as material testing machine. The position signal was tested by photoelectric axial angle coder. Therefore, the paper proposes the design of electronic universal testing machine design based on LS7266R1. If the position signal detected by other methods, will inevitably lead to the circuit design complexity, reliability decreased. The work theory of the controller, the hardware interface design between LS7266R1 and single chip, and the flow chart of main program, are presented in this paper. The signal of the compression or tension power and displacement at working, which tested by power sensor and displacement sensor especially, is changed into electric voltage and electric pulse numerical signals. And these signals can be tested by A/D and counted by LS7266R1. Finally the test of the material properties can be controlled by itself, or controlled by the COM command of PC.

    标签: 7266R 7266 LS R1

    上传时间: 2013-11-02

    上传用户:yl1140vista

  • SAM8系列S3C825A型单片机软件设计

    以S3C825A为例介绍三星公司SAM8系列单片机的内部结构及其软件开发环境,详细描述采用混合编程法来对SAM8系列单片机进行软件设计的一般方法,最后给出用混合编程法对S3C825A进行软件设计的具体应用实例。 Abstract:  With S3C825A,this paper firstly introduces the SAM8 series single-chip microcontrollers and their software development environment, then introduces mixed programming technology for SAM8 series single-chip microcontrollers. In the end, the application program is also given.

    标签: S3C825A SAM8 单片机 软件设计

    上传时间: 2013-12-09

    上传用户:ZZJ886

  • 单片机模糊控制在电加热炉温度控制系统中的应用

    在冶金、化工,机械等各类工业控制中,电加热炉都得到了广泛的应用。目前国内的电加热炉温度控制器大多还停留在国际60年代水平,仍在使用继电一接触器控制或常规PID控制,自动化程度低,动态控制精度差,满足不了日益发展的工艺技术要求。电加热炉的温度是生产工艺的一项重要指标,温度控制的好坏将直接影响产品的质量。电加热炉由电阻丝加热,温度控制具有非线性、大滞后、大惯性、时变性、升温尊向性等特点。而且,在实际应用和研究中,电加热炉温度控制遇到了很多困难:第一,很难建立精确的数学模型:第二,不能很好地解决非线性、大滞后等问题。以精确数学模型为基础地经典控制理论和现代控制论在解决这些问题时遇到了极大地困难,而以语言规则模型(IF—THEN)为基础的模糊控制理论却是解决上述问题的有效途径和方法。国内现有的一些模糊设计方法大多存在不同缺点,而且真正把理论研究应用到实际系统的也较少。所以,深入研究在电加热炉系统控制中具体模糊控制设计理论是十分必要的。本文针对电加热炉这一控制对象,以Ts.94—1型号的箱形电加热炉为参考对象,分别采用工业控制中普遍使用的PID控制、经常见到的模糊控制策略,如基本模糊控制,对其进行仿真实验,比较,并进行了理论分析。针对上述电加热炉控制中存在的问题,本文设计了双模糊控制器。双模糊控制器在参数自整定模糊控制理论的基础上,对比例因子进行调整,克服原算法复杂丽不实用的特点,根据电加热炉不同的工作状态采用不同的模糊控制器,提高了控制精度,改善了控制效果。本文把模糊控制与神经网络技术相结合,利用神经网络很强的学习能力和自适应能力,建立了自适应神经模糊推理系统。把不依赖精确数学模型的模糊控制系统与有价值的经验数据或参考模型相结合,弥补了模糊控制的不足,使模糊控制系统更能发挥其强大优势,控制效果理想。在实践应用方面,以电加热炉为控制对象,开发了89C51单片机模糊控制器,主要进行了硬件和软件的设计。

    标签: 单片机 中的应用 模糊控制 电加热炉

    上传时间: 2013-10-28

    上传用户:yuanwenjiao

  • CAT28LV64-64Kb CMOS并行EEPROM数据手

    The CAT28LV64 is a low voltage, low power, CMOS Parallel EEPROM organized as 8K x 8−bits. It requires a simple interface for in−system programming. On−chip address and data latches, self−timed write cycle with auto−clear and VCC power up/down write protection eliminate additional timing and protection hardware. DATA Polling and Toggle status bit signal the start and end of the self−timed write cycle. Additionally, the CAT28LV64 features hardware and software write protection.

    标签: EEPROM 64 CMOS CAT

    上传时间: 2013-11-16

    上传用户:浩子GG

  • 单片机入门基础知识大全免费下载

    单片机入门基础知识大全免费下载 单片机第八课(寻址方式与指令系统) 通过前面的学习,我们已经了解了单片机内部的结构,并且也已经知道,要控制单片机,让它为我们干学,要用指令,我们已学了几条指令,但很零散,从现在开始,我们将要系统地学习8051的指令部份。 一、概述 1、指令的格式 我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很“笨”,只能懂得数字,如前面我们写进机器的75H,90H,00H等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如MOV P1,#0FFH,这样就好记了。 这两种格式之间的关系呢,我们不难理解,本质上它们完全等价,只是形式不一样而已。 2、汇编 我们写指令使用汇编格式,而计算机只懂机器码格式,所以要将我们写的汇编格式的指令转换为机器码格式,这种转换有两种方法:手工汇编和机器汇编。手工汇编实际上就是查表,因为这两种格式纯粹是格式不同,所以是一一对应的,查一张表格就行了。不过手工查表总是嫌麻烦,所以就有了计算机软件,用计算机软件来替代手工查表,这就是机器汇编。 二、寻址 让我们先来复习一下我们学过的一些指令:MOV P1,#0FFH,MOV R7,#0FFH这些指令都是将一些数据送到相应的位置中去,为什么要送数据呢?第一个因为送入的数可以让灯全灭掉,第二个是为了要实现延时,从这里我们可以看出来,在用单片机的编程语言编程时,经常要用到数据的传递,事实上数据传递是单片机编程时的一项重要工作,一共有28条指令(单片机共111条指令)。下面我们就从数据传递类指令开始吧。 分析一下MOV P1,#0FFH这条指令,我们不难得出结论,第一个词MOV是命令动词,也就是决定做什么事情的,MOV是MOVE少写了一个E,所以就是“传递”,这就是指令,规定做什么事情,后面还有一些参数,分析一下,数据传递必须要有一个“源”也就是你要送什么数,必须要有一个“目的”,也就是你这个数要送到什么地方去,显然在上面那条指令中,要送的数(源)就是0FFH,而要送达的地方(目的地)就是P1这个寄存器。在数据传递类指令中,均将目的地写在指令的后面,而将源写在最后。 这条指令中,送给P1是这个数本身,换言之,做完这条指令后,我们可以明确地知道,P1中的值是0FFH,但是并不是任何时候都可以直接给出数本身的。例如,在我们前面给出的延时程序例是这样写的: MAIN: SETB P1.0     ;(1)    LCALL DELAY ;(2)     CLR P1.0      ;(3)    LCALL DELAY   ;(4)     AJMP MAIN    ;(5) ;以下子程序 DELAY: MOV R7,#250   ;(6) D1: MOV R6,#250   ;(7) D2: DJNZ R6,D2    ;(8)    DJNZ R7,D1   ;(9)    RET        ;(10)    END        ;(11)     表1  MAIN: SETB P1.0     ;(1)    MOV 30H,#255     LCALL DELAY ;     CLR P1.0      ;(3)     MOV 30H,#200     LCALL DELAY   ;(4)     AJMP MAIN    ;(5) ;以下子程序 DELAY: MOV R7,30H   ;(6) D1: MOV R6,#250   ;(7) D2: DJNZ R6,D2    ;(8)    DJNZ R7,D1   ;(9)    RET        ;(10)    END        ;(11) 表2    这样一来,我每次调用延时程序延时的时间都是相同的(大致都是0.13S),如果我提出这样的要求:灯亮后延时时间为0.13S灯灭,灯灭后延时0.1秒灯亮,如此循环,这样的程序还能满足要求吗?不能,怎么办?我们可以把延时程序改成这样(见表2):调用则见表2中的主程,也就是先把一个数送入30H,在子程序中R7中的值并不固定,而是根据30H单元中传过来的数确定。这样就可以满足要求。 从这里我们可以得出结论,在数据传递中要找到被传递的数,很多时候,这个数并不能直接给出,需要变化,这就引出了一个概念:如何寻找操作数,我们把寻找操作数所在单元的地址称之为寻址。在这里我们直接使用数所在单元的地址找到了操作数,所以称这种方法为直接寻址。除了这种方法之外,还有一种,如果我们把数放在工作寄存器中,从工作寄存器中寻找数据,则称之为寄存器寻址。例:MOV A,R0就是将R0工作寄存器中的数据送到累加器A中去。提一个问题:我们知道,工作寄存器就是内存单元的一部份,如果我们选择工作寄存器组0,则R0就是RAM的00H单元,那么这样一来,MOV A,00H,和MOV A,R0不就没什么区别了吗?为什么要加以区分呢?的确,这两条指令执行的结果是完全相同的,都是将00H单元中的内容送到A中去,但是执行的过程不同,执行第一条指令需要2个周期,而第二条则只需要1个周期,第一条指令变成最终的目标码要两个字节(E5H 00H),而第二条则只要一个字节(E8h)就可以了。 这么斤斤计较!不就差了一个周期吗,如果是12M的晶振的话,也就1个微秒时间了,一个字节又能有多少? 不对,如果这条指令只执行一次,也许无所谓,但一条指令如果执行上1000次,就是1毫秒,如果要执行1000000万次,就是1S的误差,这就很可观了,单片机做的是实时控制的事,所以必须如此“斤斤计较”。字节数同样如此。 再来提一个问题,现在我们已知,寻找操作数可以通过直接给的方式(立即寻址)和直接给出数所在单元地址的方式(直接寻址),这就够了吗? 看这个问题,要求从30H单元开始,取20个数,分别送入A累加器。 就我们目前掌握的办法而言,要从30H单元取数,就用MOV A,30H,那么下一个数呢?是31H单元的,怎么取呢?还是只能用MOV A,31H,那么20个数,不是得20条指令才能写完吗?这里只有20个数,如果要送200个或2000个数,那岂不要写上200条或2000条命令?这未免太笨了吧。为什么会出现这样的状况?是因为我们只会把地址写在指令中,所以就没办法了,如果我们不是把地址直接写在指令中,而是把地址放在另外一个寄存器单元中,根据这个寄存器单元中的数值决定该到哪个单元中取数据,比如,当前这个寄存器中的值是30H,那么就到30H单元中去取,如果是31H就到31H单元中去取,就可以解决这个问题了。怎么个解决法呢?既然是看的寄存器中的值,那么我们就可以通过一定的方法让这里面的值发生变化,比如取完一个数后,将这个寄存器单元中的值加1,还是执行同一条指令,可是取数的对象却不一样了,不是吗。通过例子来说明吧。    MOV R7,#20    MOV R0,#30H LOOP:MOV A,@R0    INC R0    DJNZ R7,LOOP 这个例子中大部份指令我们是能看懂的,第一句,是将立即数20送到R7中,执行完后R7中的值应当是20。第二句是将立即数30H送入R0工作寄存器中,所以执行完后,R0单元中的值是30H,第三句,这是看一下R0单元中是什么值,把这个值作为地址,取这个地址单元的内容送入A中,此时,执行这条指令的结果就相当于MOV A,30H。第四句,没学过,就是把R0中的值加1,因此执行完后,R0中的值就是31H,第五句,学过,将R7中的值减1,看是否等于0,不等于0,则转到标号LOOP处继续执行,因此,执行完这句后,将转去执行MOV A,@R0这句话,此时相当于执行了MOV A,31H(因为此时的R0中的值已是31H了),如此,直到R7中的值逐次相减等于0,也就是循环20次为止,就实现了我们的要求:从30H单元开始将20个数据送入A中。 这也是一种寻找数据的方法,由于数据是间接地被找到的,所以就称之为间址寻址。注意,在间址寻址中,只能用R0或R1存放等寻找的数据。 二、指令 数据传递类指令 1) 以累加器为目的操作数的指令 MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data 第一条指令中,Rn代表的是R0-R7。第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条指令是将立即数data送到A中。 下面我们通过一些例子加以说明: MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。 MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。 MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。 MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是34H。 2)以寄存器Rn为目的操作的指令 MOV Rn,A   MOV Rn,direct   MOV Rn,#data 这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。

    标签: 单片机 免费下载 基础知识

    上传时间: 2013-10-13

    上传用户:3294322651