文档库 最新最全的文档下载
当前位置:文档库 › 用ser2pl.sys文件解决单片机STC_ISP程序下载慢的问题

用ser2pl.sys文件解决单片机STC_ISP程序下载慢的问题

用ser2pl.sys文件解决单片机STC_ISP程序下载慢的问题
用ser2pl.sys文件解决单片机STC_ISP程序下载慢的问题

方法一:安装xp系统支持版的------------------------------------常见

方法二:安装win7系统支持通用版的--------------------------------常见

-----如果上面两个安装后都达不到好的效果,

出现的问题:

1、比如我第一次按方法一安装后,下载速度特快的那种,后来出现了USb供电不足后就不行了,总出现握手失败。

2、每次下载必须调低的波特率如1200或2400等,下载速度很慢。

而且出现了内部时钟频率为8.。。。。。。多,

3、试了很多方法都不见效果。

那不防试试下面的操作

下载:https://www.wendangku.net/doc/d612128642.html,:888/dll/SER2PL.rar ser2pl.sys系统文件

1、我把原来安装的xp版本的和通用版的卸载

2、把USB转串口下载线拔下再插进去

3、出现安装提示

安装ser2pl.sys文件

安装后提示

选择-----仍然继续,再次出现了

选择后,则会很快安装成功

出现了内部时钟频率为11.014357

基于单片机的电机转速测量系统

兰州交通大学 毕业设计文献综述 题目:基于单片机的电机转速测量系统Title:Motor speed measuring system based on single chip microcomputer 姓名:韦宝芸 学号:201203563 班级:机设1202班

摘要 本文首先叙述了单片机测量转速的系统构成及转速测量的几种常用方法,分析了相应方法在测量上的特点、误差和计算。其次,针对特定的应用环境,设计出一种基于 80C51单片机的全数字式测速系统,详细阐述了系统的工作原理,指出产生误差的可能原因,并给出了具体解决的方法;根据系统要求编制了源程序,分析其工作流程。最后,对构建的系统利用仿真机进行调试,对测量指标进行了分析、比较并提出改进方案。 关键词:单片机、转速、测量精度 Abstract This paper first discussed some ways for rotary speed measure. It analyzed characters and errors of these ways. Second, it designed full digital measure system based on a Single-Chip Microprocessor(80C51) responding to special application, stated the working theory of the system and the methods to solve the errors, writed the working programmes by A51 assemble language. Finally, this system implementation was confirmed by using of Keil-51 simulator. The characters on the error margin and accuracy was summarized. Keywords : Single-Chip Microprocessor、rotary speed 、measureprecision Keil-51

基于51单片机系统设计

基于51单片机的多路温度采集控制系统设计 言: 随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。 本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。 我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。 关键词:温度多路温度采集驱动电路 正文: 1、温度控制器电路设计 本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED显示电路等组成。由热敏电阻温度传感器测量环境温度,将其电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。89C51的P2.0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地址为F0FFH。输出驱动控制信号由p1.0输出,4个LED为状态指示,其中,LED1为输出驱动指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。当温度高于上限温度值时,有p1.0输出驱动信号,驱动外设电路工作,同时LED1亮、LED2灭、LED3亮、LED4灭。外设电路工作后,温度下降,当温度降到正常温度后,LED1亮、LED2亮、LED3灭、LED4灭。温度继续下降,当温度降到下限温度值时,p1.0信号停止输出,外设电路停止工作,同时LED1灭、LED2灭、LED3灭、LED4亮。当外设电路停止工作后,温度开始上升,接着进行下一工作周期。 2、温度控制器程序设计 本软件系统有1个主程序,6个子程序组成。6个子程序为定时/计数器0中断服务程序、温度采集及模数转换子程序ADCON、温度计算子程序CALCU、驱动控制子程序DRVCON、十进制转换子程序METRICCON 及数码管显示子程序DISP。 (1)主程序 主程序进行系统初始化操作,主要是进行定时/计数器的初始化。 (2)定时/计数器0中断服务程序 应用定时计数器0中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户可以根据实际环境温度变化率进行采样时间调整。每当定时时间到,调用温度采集机模数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给89C51单片机,然后在调用温度计算子程序CALCU,驱动控制子程序DRVCON,十进制转换子程序MERTRICCON,温度数码显示子程序DISP。

免费的单片机C语言常用头文件

免费的函数原形的头文件读者可参考返回非整型值的函数 函数原形的头文件读者可参考返回非整型值的函数assert.h - assert(), 声明宏 ctype.h –字符类型函数 float.h –浮点数原形 limits.h –数据类型的大小和范围 math.h –浮点运算函数 stdarg.h –变量参数表. stddef.h –标准定义 stdio.h –标准输入输出IO 函数 stdlib.h –包含内存分配函数的标准库 string.h –字符串处理函数 3 字符类型库 下列函数按照输入的ACS II 字符集字符分类使用这些函数之前应当用"#include " 包含 int isalnum(int c) 如果c 是数字或字母返回非零数值否则返回零 int isalpha(int c) 如果c 是字母返回非零数值否则返回零 int iscntrl(int c) 如果c 是控制字符如FF, BELL, LF ..等返回非零数值否则返回零 int isdigit(int c) 如果c 是数字返回非零数值否则返回零

int isgraph(int c) 如果c 是一个可打印字符而非空格返回非零数值否则返回零 int islower(int c) 如果c 是小写字母返回非零数值否则返回零 int isprint(int c) 如果c 是一个可打印字符返回非零数值否则返回零 int ispunct(int c) 如果c 是一个可打印字符而不是空格数字或字母返回非零数值否则返回零 int isspace(int c) 如果c 是一个空格字符返回非零数值包括空格CR, FF, HT, NL, 和VT 否则返回零 int isupper(int c) 如果c 是大写字母返回非零数值否则返回零 int isxdigit(int c) 如果c 是十六进制数字返回非零数值否则返回零 int tolower(int c) 如果c 是大写字母则返回c 对应的小写字母其它类型仍然返回c int toupper(int c) 如果c 是小写字母则返回c 对应的大写字母其它类型仍然返回c 4 浮点运算库 下列函数支持浮点数运算使用这些函数之前必须用 #include 包含 float asin(float x) 以弧度形式返回x 的反正弦值 float acos(float x)

基于单片机AT89C51下蔬菜大棚温湿度测控系统毕业设计

蔬菜大棚温湿度测控系统设计 摘要 温室大棚是设施农业的重要组成部分,大棚测控系统是实现大棚自动化、科学化的基本保证。通过对监测数据的分析,结合作物生长规律,控制环境条件,使作物达到优质、高产、高效的栽培目的。计算机应用技术的发展,也使得用计算机控制的方面也涉及到各个领域,其中在大棚内用单片机控制温度、湿度是应用于实践的主要方面之一。 对于蔬菜大棚来说,最重要的一个管理因素是温度和湿度等控制。本设计是一个专门为温室大棚温湿度测量控制而设计的系统。通过对系统的硬件部分和软件部分设计来达到监控要求。硬件部分实现了对温湿度传感器模块、显示模块、控制模块的设计;软件部分主要根据系统的设计思想设计出了主程序和子程序流程图,并通过程序实现。在系统设计过程中充分考虑到性价比,选用价格低、性能稳定的元器件。通过实践证明,系统具有性能好、操作方便等优点,能实现对温湿度等的显示、调节和控制。系统在其它领域还具有一定的推广价值。 关键词:大棚,温度,湿度,传感器

The Design of Greenhouse Temperature and Humidity Control System ABSTRACT Greenhouse is an important component of protected agriculture. Measuring and controlling systen is the basis of the management automation in the greenhouse. With the growth rules analyzing measurement data and controlling circumstance condition. It makes greenhouse better, and more productive and high quality. With the development of computer application technology, the computer-controlled areas are also involved, the plastic temperature using SCM and humidity is one of the main aspects used in practice. For vegetable shed speaking, one of the most important management factor is the temperature and humidity control. The thesis is about an intelligent system designed for controlling the temperature and humidity of a greenhouse. It can meet the demand of monitoring through the design of hardware and that of software in details. The former is more important in this dissertation, including the introduction of sensor of measuring temperature and humidity, demonstrating mode of data, the mode of control and the connecting part of the changing column. And according to the design thoughts the latter shows the flow chart of the main program and the subprogram, realized by program. This thesis choose the decices as full consideration of the ration between prformance and cost as possible. The system adopts quite a new integrated circuit, which makes it function better and run more conveniently when put into practice. Furthermore, not only can it achieve the goals of manifesting and regulating the temperature, but also it can be controlled. And it has much of value to apply and popularize in other fields. KEY WORDS:Vegetable, Temperature, Humidity, Sensor

51单片机头文件reg51.h详解

我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM 系列的单片机头文件往往内容就非常多,尽管如此,对一些初次接触单片机的朋友来说,51的头文件还是搞不太清楚,今天具体来说明一下。 1)“文件包含”处理概念 所谓“文件包含”是指在一个文件内将另外一个文件的内容全部包含进来。因为被包含的文件中的一些定义和命令使用的频率很高,几乎每个程序中都可能要用到,为了提高编程效率,减少编程人员的重得劳动,将这些定义和命令单独组成一个文件,如reg51.h,然后用#include包含进来就可以了,这个就相当于工业上的标准零件,拿来直接用就可以了。 2)寄存器地址及位地址声明的原因 reg51.h里面主要是一些特殊功能寄存器的地址声明,对可以位寻址的,还包括一些位地址的声明,如果如sfr P1=0x80; sfr IE=0xA8;sbit EA=0xAF等。 sfr P1 = 0x90这句话表示:P1口所对应的特殊功能寄存器P1在内存中的地址为0x80,sbit EA=0xAF这句话表示EA这一位的地址为0xAF。 注意这里出现了一个使用很频繁的sfr和sbit。 sfr 表示特殊功能寄存器的意思,它并非标准C 语言的关键字,而是Keil 为能直接访问80C51中的SFR 而提供了一个新的关键词,其用法是:sfr 特殊功能寄存器名=地址值(注意对于头文件里“特殊功能寄存器名”,用户实际上也可以修改的,如P1=0x80,也可改为A1=0x80,但sfr 和地址值则不能更改,否者会编译出错。) sbit表示位的意思,它也是非标准C 语言的关键字,编写程序时如需操作寄存器的某一位(可位寻址的寄存器才能用)时,需定义一个位变量,此时就要要到sbit,如sbit deng=P1^0,sbit EA = 0xAF;需要注意的是,位定义时有些特殊,用法有三种: 第一种方法:sbit 位变量名=寄存器位地址值 第二种方法:sbit 位变量名=SFR 名称^寄存器位值(0-7) 第三种方法:sbit 位变量名=SFR 地址值^寄存器位值 如: sbit IT0=0x88 (1)说明:0x88是IT0 的位地址值 sbit deng=P1^2 (2)说明:其中P1 必须先用sfr 定义好 sbit EA=0xA8^7 (3)说明:0xA8 就是IE寄存器的地址值 以上三种定义方法需注意的是 IT0 deng EA可由用户随便定义,但必须满足C语言对变量名的定义规则。除些外其它的则必须按照上面的格式写,如“名称^变量位地址

基于51单片机的温湿度测控系统方案设计

龙源期刊网 https://www.wendangku.net/doc/d612128642.html, 基于51单片机的温湿度测控系统方案设计作者:吴迪卫泽辉江鹏 来源:《中国科技博览》2018年第14期 [摘要]温湿度检测在工业生产和生活中得到广泛应用。本文提出了基于AT89C51单片机和SHT11芯片为温湿度传感器的温湿度测试系统,以实时存储相关温湿度数据。系统硬件设计主要包括基础电路、按键电路、显示电路和温湿度控制电路,软件设计包括按键控制、温湿度读取、温湿度计算、数据存储等。系统具备结构简单,成本小、功耗低等优点。 [关键词]单片机;温度;湿度;测控 中图分类号:TP273 文献标识码:A 文章编号:1009-914X(2018)14-0061-01 引言 温度和湿度是物理学中的两个基本物理量,对这两个量的精确检测和控制,随着科学的发展越发重要。近年,温湿度检测系统发展迅猛,由最初的复杂系统结构,需要耗费大量的人力物力到现在的智能化、简单化、高集成化。由于数字化、智能化等仪器的出现,加速了智能化温湿度检测的发展,以数据采集为基础结构发展的温湿度传感器检测报警器在各类应用中也发挥着举足轻重的作用。本文提出了一套温湿度监测系统解决方案,该方案结构简单、功耗低、运行可靠,是一种低成本温湿度检测解决方案。 1 系统硬件设计 分析温湿度监测系统在实验室环境与现实应用中的区别,系统设计侧重于实验室环境下温湿度测试系统的设计。通过单片机与外部设备之间的命令发出与回收,以SHT11温湿度传感器采集温湿度信息,利用软件对温湿度信号进行分析处理,并解决相应问题。具体电路结构如图1所示,包括常用的晶振电路、复位电路、51单片机、温湿度传感器、按键电路、显示电路、工作状态指示系统等。 1.1 SHT11芯片与接口 SHT11的内部结构如图2所示,其中包括一个高分子电阻型湿敏元件和一个VTC测温元件、一个14位的A/D转换器,并与一个高性能8位单片机相连接并能够CRC传输校验。其具有品质好、超快响应、抗干扰能力强、性价比高、精确校准等优点。 1.2其它硬件说明

单片机按键的解决方法

单片机按键的解决解决方案 1、单片机上的按键控制一般采用两种控制方法:中断和查询。中断必须借助中断引脚,而 查询按键可用任何IO端口。按键较少时,一个按键占用一个端口,而按键较多时,多采用矩阵形式(如:经常用4个端口作为输出,4个端口作为输入的4X4矩阵来获得16个按键);还可以用单片机的AD转换功能一个引脚接多个按键,根据电阻分压原理判断是哪个按键按下。 2、中断形式 STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI_n(8位,但是STM32中只使用4位,高4位有效),每4个通道的8位中断优先级控制字构成一个32位的优先级寄存器。68个通道的优先级控制字至少构成17个32位的优先级寄存器. 4bit的中断优先级可以分成2组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,4bit一共可以分成5组 第0组:所有4bit用于指定响应优先级; 第1组:最高1位用于指定抢占式优先级,后面3位用于指定响应优先级; 第2组:最高2位用于指定抢占式优先级,后面2位用于指定响应优先级; 第3组:最高3位用于指定抢占式优先级,后面1位用于指定响应优先级; 第4组:所有4位用于指定抢占式优先级。 所谓抢占式优先级和响应优先级,他们之间的关系是:具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。每一个中断源都必须定义2个优先级。 有几点需要注意的是: 1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果; 2)抢占式优先级别相同的中断源之间没有嵌套关系; 3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。 GPIO外部中断: STM32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间智能使用一个,如:PA0,PB0,PC0,PD0,PE0,PF0这些为1组,如果我们使用PA0作为外部中断源,那么别的就不能使用了,在此情况下我们使用类似于PB1,PC2这种末端序号不同的外部中断源,每一组使用一个中断标志EXTI x.EXTI0~EXTI4这5个外部中断有着自己单独的中断响应函数。EXTI5~EXTI9共用一个中断响应函数,EXTI10~EXTI15共使用一个中断响应函数。 对于中断的控制,STM32有一个专用的管理机构NVIC.中断的使能,挂起,优先级,活动等等都是由NVIC在管理的。 编写IO口外部中断步骤及其注意事项:

单片机系统的设计

单片机系统的设计 The Standardization Office was revised on the afternoon of December 13, 2020

第4章 单片机系统的设计 引言 用V/F 变换器作A/D 转换时,通常由一些硬件电路如振荡器、二分频器、计数器和门电路组成,而由计数器计得的计数值即A/D 转换结果再通过接口电路送入微计算机进行处理,较为复杂和不便,或者采用F/BCD 变换电路将V/F 变换器输出的频率信号变为BCD 码再通过接口电路送入微计算机,也较为复杂,而且还要对BCD 码进行变换。这些方法成本都较高。 本设计介绍一种以单片机直接与V/F 变换器接口进行A/D 转换的方法,不须额外的硬件电路,完全利用单片机内部的硬件资源,简单方便,成本最低,大大地提高了V/F 变换器作为A/D 转换电路的可行性。 当前,单片机特别是Intel 公司的MCS-51系列单片机已在智能仪器仪表和过程控制等方面得到广泛应用,大有取代Z80之势,因此A/D 转换电路与单片机的接口方法也是人们所关注的。下面将主要介绍MCS-51系列的单片机8031为主控器件的硬件电路。 主控器Intel 8031简介 P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.2P3.3 P3.4P3.5P3.6P3.7XTAL 1 XTAL 2 V SS RST/VPD RXD TXD T0 T10INT P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7 P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0 1INT WR RD EA /V P P ALE V CC PSEN 4039383736353433323130292827262524232221 2019181716151413121110 987654321 8031P1.0 图4-1 8031引脚图 8031 cite-feet figure

51单片机C语言头文件及其使用

51单片机C语言头文件及其使用 2007-05-29 16:33 很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这样的问题,看过本文后,就会明白。其实这个是在头文件中用sfr定义的,现在定义好了的是这样的sfr P1 = 0x90;,也就是说,到底大写,还是小写,就是在这里面决定的。这就说明,如果你要用小写,就得在头文件中改为小写。其实它都是为了编程序方便才这样写的,在程序编译时,就会变成相应的地址(如P1就变成了0x90)。 还有一点就是,现在有很多改进型的单片机,它们有很多新增的特殊功能寄存器在标准的reg51.h或reg52.h中没有定义,这就需要自己加进头文件(相关厂家已经把它们定义好了),当然也可以直接在程序中定义。下面是一个标准的C51头文件:(此文件一般在C:\KEIL\C51\INC下,INC文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。) /* BYTE Registers */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr IE = 0xA8; sfr IP = 0xB8; sfr SCON = 0x98; sfr SBUF = 0x99; /* 8052 Extensions */ sfr T2CON = 0xC8; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; sfr TL2 = 0xCC;

基于单片机的电压测量系统的设计【开题报告】

毕业设计(论文)开题报告 题目:基于单片机的电压测量系统的设计 专业:电子信息工程 1选题的背景、意义 电子测量是泛指以电子技术为基础手段的一种测量技术。它是测量学和电子学相互结合的产物。电子测量除具体运用电子科学的原理、方法和设备对各种电量、电信号及电路元器件的特性和参数进行测量外,还可以通过各种敏感器件和传感装置对非电量进行测量,这种测量方法往往更加方便、快捷、准确,有时是用用其他测量方法不可替代的[1]。近几十年来计算机技术和微电子技术的迅猛发展为电子测量和测量仪器增添了巨大活力。电子计算机尤其是尤其是微型计算机与电子测量仪器相结合,构成了一代崭新的仪器和测试系统,即人们通常所说的“智能仪器”和“自动测试系统”,它们能够对若干电参数进行自动测量,自动量程选择,数据记录和处理,数据传输,误差修正,自检自校,故障诊断及在线测试等,不仅改变了若干传统测量的概念,更对整个电子技术和其他科学技术产生了巨大的推动作用。现在,电子测量技术(包括测量理论、测量方法、测量仪器装置等)已成为电子科学领域重要且发展迅速的分支学科[2]。 电压是属于电子测量中一个重要的组成部分。了解,测出各种电压的值,有助于让我们更加安全、方便的使用电压。因此研究电压的测量值具有重要价值[4]。 电压,也称作电势差或电位差,是衡量单位电荷在静电场中由于电势不同所产生的能量差的物理量。电压的基本概念电压是指电路中两点A、B之间的电位差(简称为电压),其大小等于单位正电荷因受电场力作用从A点移动到B点所作的功,电压的方向规定为从高电位指向低电位的方向。电压的国际单位制为伏特(V),常用的单位还有毫伏(mV)、微伏(μV)、千伏(kV)等,直流电压与交流电压如果电压的大小及方向都不随时间变化,则称之为稳恒电压或恒定电压,简称

单片机按键控制蜂鸣器发声程序

#include typedef unsigned char uint8; typedef unsigned int uint16; uint8 Count,i; sbit Speak =P1A2; //蜂鸣器器控制脚 sbit keyl =卩3人2;〃按键控制引脚 sbit key2 =P3A3; sbit key3 =P3A4; /* 以下数组是音符编码 */ uint8 code SONG[] ={ 0xff,0x39,0x30,0x33,0x30,0xff,0x30,0x30,0x00,}; void Time0_Init()// 定时器 T0 方式 1 ,定时 10ms { TMOD = 0x01; IE = 0x82; TH0 = 0xDC; TL0 = 0x00; void Time0_Int() interrupt 1 { TH0 = 0xDC; TL0 = 0x00; Count++; } void delay (uint8 k)// 按键防抖延时 { uint8 j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } void Delay_xMs(uint8 x)// 发声延时 { uint8 i,j; for(i=0; i

Count = 0; // 中断计数器清 0 Addr = i *3; while(1) { Temp1 = SONG[Addr++]; if (Temp1 == 0xFF) //休止符 { TR0 = 0; Delay_xMs(100); } else if (Temp1 == 0x00) //歌曲结束符 { return; } else { Temp2 = SONG[Addr++]; TR0 = 1; while(1) { Speak = ~Speak; Delay_xMs(Temp1); if(Temp2 == Count) { Count = 0; break; } } } } }void keyscan (void)// 按键切换声音函数{ if(key1==0) { delay(10); if(key1==0) {

用51单片机中断编写的4x4键盘程序

用51单片机中断编写的4x4键盘程序 应用查询扫描编写键盘程序,由于要给按键去抖动,程序变得比较复杂和冗长(详见2013年9月29日博文《MSP430和 AT89C51单片机4x4键盘C程序》),如果用中断编写,设置中断响应在下降沿时执行中断,则程序编写不用去抖动判断,所以相比较要简单很多!下面用汇编和C语言两种方式编写4X4键盘程序! 一、汇编程序 ORG 0000H LJMP MAIN ORG 0003h Ljmp ZD0

ORG 000Bh LJMP TZD0 ORG 0013h Ljmp ZD1 ORG 001Bh LJMP TZD1 ORG 0040H MAIN: Mov TMOD,#66h MOV TH0,#0ffh MOV TL0,#0ffh MOV TH1,#0ffh MOV TL1,#0ffh SETB EA SETB ET0 SETB TR0 SETB ET1 SETB TR1 SETB IT0 SETB IT1 SETB EX0 SETB EX1 xh: mov P1,#0feh

Lcall Delay mov P1,#0fdh Lcall Delay mov P1,#0fbh Lcall Delay mov P1,#0f7h Lcall Delay SJMP xh ZD0: JNB P1.0,dat1 JNB P1.1,dat2 JNB P1.2,dat3 JNB P1.3,dat4 dat1: mov P2,#06h ;1 sjmp ZD0R dat2: mov P2,#5bh ;2 sjmp ZD0R dat3: mov P2,#4fh ;3 sjmp ZD0R dat4: mov P2,#66h ;4 ZD0R: reti ZD1: JNB P1.0,dat5

单片机按键连接方法

单片机按键连接方法总结(五种按键扩展方案详细介绍) 单片机在各种领域运用相当广泛,而作为人机交流的按键设计也有很多种。不同的设计方法,有着不同的优缺点。而又由于单片机I/O资源有限,如何用最少的I/O口扩展更多的按键是我所研究的问题。接下来我给大家展示几种自己觉得比较好的按键扩展方案,大家可以在以后的单片机电路设计中灵活运用。 1)、第一种是最为常见的,也就是一个I/O口对应一个按钮开关。 这种方案是一对一的,一个I/O口对应一个按键。这里P00到P04,都外接了一个上拉电阻,在没有开关按下的时候,是高电平,一旦有按键按下,就被拉成低电平。这种方案优点是电路简单可靠,程序设计也很简单。缺点是占用I/O资源多。如果单片机资源够多,不紧缺,推荐使用这种方案。 2)、第二种方案也比较常见,但是比第一种的资源利用率要高,硬件电路也不复杂。 这是一种矩阵式键盘,用8个I/O控制了16个按钮开关,优点显而易见。当然这种电路的程序设计相对也还是很简单的。由P00到P03循环输出低电平,然后检测P04到P07的状态。比方说这里P00到P03口输出1000,然后检测P04到P07,如果P04为1则说明按下的键为s1,如果P05为1则说明按下的是s2等等。为了电路的可靠,也可以和第一种方案一样加上上拉电阻。 3)、第三种是我自己搞的一种方案,可以使用4个I/O控制8个按键,电路多了一些二极管,稍微复杂了一点。 这个电路的原理很简单,就是利用二极管的单向导电性。也是和上面的方案一样,程序需要采用轮训的方法。比方说,先置P00到P03都为低电平,然后把P00置为高电平,接着查询P02和P03的状态,如果P02为高则说明按下的是s5,若P03为高则说明按下的是s6,然后再让P00为低,P01为高,同样检测P02和P03的状态。接下来分别让P02和P03为高,其他为低,分别检测P00和P01的状态,然后再做判断。这种方案的程序其实也不难。 4)这是我在一本书上看到的,感觉设计的非常巧妙,同样它也用到了二极管,不过比我的上一种方案的I/O利用率更高,他用4个I/O口控制了12个按键。我相信你了解了之后也会惊奇的。 首先好好品味一下这个方案吧,想想怎么来识别按键呢!

单片机最小系统设计

单片机最小系统设计 ?单片机最小系统部分 ●AT89C52的结构特点及引脚特 ●硬件框图 ?键盘部分 ?电源部分 ●固定电源 ●可调电源(5—12V) ?软件编程 ?单片机最小系统部分 ●AT89C52的结构特点及引脚特性: 为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通

信等。 各引脚特性: 1.P0 口 P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的 2.P1 口 P1 是一个带内部上拉电阻的8 位双向I/O 口,P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑 3.P2 口 P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑 4.P3 口 P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻 5.RST 复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 6.ALE/PROG 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。 7.PSEN 程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 8.EA/VPP 外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),E A 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。

单片机头文件

Reg51.h是头文件,是对单片机的特殊寄存器的定义。另外,#include 与#include"reg51.h"是有区别的,使用< >包含头文件时,编译先进入到软件安装文件夹处开始搜索这个头文件,使用“”包含头文件时,编译先进入当前工程所在文件夹处开始搜索这个头文件。Reg51.h在文件安装文件夹处存在,所以一般用#include。 头文件具体对特殊寄存器的定义如下: /*-------------------------------------------------------------------------- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. --------------------------------------------------------------------------*/ #ifndef __REG51_H__ #define __REG51_H__ /* BYTE Register */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr IE = 0xA8; sfr IP = 0xB8; sfr SCON = 0x98; sfr SBUF = 0x99; /* BIT Register */ /* PSW */ sbit CY = 0xD7; sbit AC = 0xD6;

基于51单片机的水温测控系统实验报告

摘要 本次实验是软硬件相结合的实验,通过传感器得到的阻值与其它电阻,可以搭建一个电桥,将水温转化为电压,然后通过放大器将电压放大到所需要的值,将所得的电压送入单片机的AD转换电路,将模拟信号转换成数字信号,从而在单片机的液晶屏上显示当前的温度。此烧水壶是可控制的,即设定温度,使水加热到设定温度且保温,此控制算法采用PID控制算法来控制继电器的通断,来保证水温恒定在设定温度处。 一、设计要求 1.传感器:Pt100铂热电阻 2.测量放大器:自己设计与搭建 3.被控对象:400W电热杯,约0.5公斤自来水 4.执行机构:12V驱动,5A负载能力的继电器 5.控制系统:51单片机 6.控制算法:PID 7.温度范围:环境温度~100度 8.测量误差1度,控制误差2度 二、设计原理及方案 1.热电阻传感器 热电阻传感器是利用导体或半导体的电阻值随温度变化而变化的原进 行测温的。 热电阻的工作原理:温度升高,金属内部原子晶格的振动加剧,从而使金属内部的自由电子通过金属导体时的阻碍增大,宏观上表现出电阻率变大,电阻值增加,我们称其为正温度系数,即电阻值与温度的变化趋势相同。

2.实验原理框图 3.测量放大器电路图

说明:电位器R10用来调节偏置电压,而电位器R7则用来调节增益。实验时,用R10来调节零点,用R7来调节满度。该电路将0℃-100℃转换为0-5V 电压。 上述电路图采用仪表放大器,将铂热电阻两端的电压U2与电位器R10 两端的电压U1差放大,放大器输出电压U0与电压差的关系为: )-)(2(1127 248U U R R R R U o ?+= 由铂热电阻阻值与水温的关系可知,铂热电阻的范围是ΩΩ140~100。则 100 ) 10012(12 -140)140(1212)-(100)10012(12-100)10012(1212?+?+≤≤?+?+K K U U K K 整理得:V U U 04.0)-(012≤≤ 而仪表放大器的输出电压为0~5V ,所以放大倍数大约为:5/0.04=125。 当假设R8/R4=2时,R2/R7=30 由此,我们可以选择R8=20K ,R4=10K ,R2=10K ,R7=2K 的电位器,为了使放大器的性能更好,我们可以把R10选为200欧姆的电位器。调节R ,可以调节电平,调节R7是调节放大倍数。 4. A/D 转换原理 调节测量放大电路的电位器R2和R7,使差分放大器输出0-5V 电压,送入单片机。单片机的A/D 转换电路将0-5V 电压划分为1024个量化台阶,即0-5V 对应0-1023。用10位二进制数表示。采样读出DIO 口的连续10个电平值,当量化台阶为1000时,刚好1000对应的是100摄氏度,所以只需把采样读出的电平值左移一位,即可换算出对应的温度值。

单片机按键识别方法之一

单片机按键识别方法之一 1.实验任务 每按下一次开关SP1,计数值加1,通过AT89S51单片机的P1端口的P1.0到P1.3显示出其的二进制计数值。 2.电路原理图 图4.8.1 3.系统板上硬件连线 (1.把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上;

(2.把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求,P1.0连接到L1,P1.1连接到L2,P1.2连接到L3,P1.3连接到L4上。 4.程序设计方法 (1.其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说, 当我们按下一个按键 时,总希望某个命令只 执行一次,而在按键按 下的过程中,不要有干 扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。 因此在按键按下的时候,图4.8.2 要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况 下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及 硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可 以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候, 总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状 态。具体的一个按键从按下到释放的全过程的信号图如上图所示: 从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU 就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。 由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状态。

相关文档