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

从零开始学电子

  • Wang1jin带您从零学单片机--串口通信

    配套学习板:WJ-V4.0 AVR+51开发板 课程简介串口应用简介开发板串行口简介串口相关功能寄存器功能讲解串行口工作方式串行口波特率的计算串行口应用流程实例练习课后作业

    标签: Wang1jin 单片机 串口通信

    上传时间: 2013-10-25

    上传用户:ecooo

  • 几款单片机的原理介绍

    几款单片机的原理介绍 主要单片机的介绍1. ATMEL公司的AVR单片机,是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便.AVR单片机采用增强的RISC结构,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令,每MHz可实现1MIPS的处理能力.AVR单片机工作电压为2.7~6.0V,可以实现耗电最优化.AVR的单片机广泛应用于计算机外部设备,工业实时控制,仪器仪表,通讯设备,家用电器,宇航设备等各个领域. 2. Motorola单片机: Motorola是世界上最大的单片机厂商.从M6800开始,开发了广泛的品种,4位,8位,16位32位的单片机都能生产,其中典型的代表有:8位机M6805,M68HC05系列,8位增强型M68HC11,M68HC12 , 16位机M68HC16, 32位机M683XX. Motorola单片机的特点之一是在同样的速度下所用的时钟频率较Intel类单片机低得多,因而使得高频噪声低,抗干扰能力强,更适合于工控领域及恶劣的环境 . 3. MicroChip单片机: MicroChip单片机的主要产品是PIC 16C系列和17C系列8位单片机,CPU采用RISC结构,分别仅有33,35,58条指令,采用Harvard双总线结构,运行速度快,低工作电压,低功耗,较大的输入输出直接驱动能力,价格低,一次性编程,小体积. 适用于用量大,档次低,价格敏感的产品.在办公自动化设备,消费电子产品,电讯通信,智能仪器仪表,汽车电子,金融电子,工业控制不同领域都有广泛的应用,PIC系列单片机在世界单片机市场份额排名中逐年提高.发展非常迅速.实达高奇电子科技有限公司: www.goldenchip.com.cn 代理PIC系列单片机.

    标签: 单片机

    上传时间: 2014-12-27

    上传用户:凤临西北

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

    单片机入门基础知识大全免费下载 单片机第八课(寻址方式与指令系统) 通过前面的学习,我们已经了解了单片机内部的结构,并且也已经知道,要控制单片机,让它为我们干学,要用指令,我们已学了几条指令,但很零散,从现在开始,我们将要系统地学习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

  • 单片机的数学基础

    单片机的数学基础:本章基本要求:单片机是现代电子智能仪器仪表及嵌入式系统的主要组成部分,应用非常广泛,是现代工程技术人员必须掌握的知识之一。本章要求掌握数的进制及其相互转换、带符号数的表示方法、溢出的判别方法、ASCII 码和BCD 码等单片机的数学基础知识;掌握单片机的概念、特点、应用范围、发展历程等基础知识;了解常用单片机系列。为后续章节的学习打下基础。1.1 单片机的数学基础1.1.1 数的进位制及其相互转换(1) 数的几种常用进制数制是人们利用符号来计数的方法,数制有很多种,人们熟悉的是十进制。但由于数在机器中是以器件的物理状态来表示的,所以一个具有两种稳定状态且能相互转换的器件,就可以用来表示一位二进制数。二进制数的表示是最简单而且是最可靠的,另外二进制的运算规则也是最简单的。因此,迄今为止,所有计算机都是以二进制进行算术运算和逻辑运算的。但是在使用二进制编写程序时既繁锁又容易出错,所以人们在编写程序时又经常用到十进制、十六进制或八进制。下面分别予以介绍。任何一种数制都有两个要素,即基数和权。基数为数制中所使用的数码的个数。当基数为R 时,该数制可使用的数码为0~(R-1)。例如在二进制中基数为2,可使用0 和1 两个数码。在进行运算时按逢R 进一,借1当R的规则进行。权是数制中某一数位上单位数的大小,它是一个指数,底是基数R,幂是数码的位置号,数码的位置号从0 开始。将一个数中某一位的数码与该位的权相乘,即为该位数码的数值。

    标签: 单片机

    上传时间: 2013-11-16

    上传用户:mahone

  • PIC16F84单片机的内部硬件资源

    PIC16F84 单片机的内部硬件资源:学些PIC 单片机,在Microchip 尚未推出其他Flash 系列的情况下,很多菜鸟都是从PIC16F84 开始的,我们把它整理了一份中文资料供大家学习。首先介绍PIC16F84 单片机的内部结构,如图1 所示的框图。由图1 看出,其基本组成可分为四个主要部分,即运算器ALU 和工作寄存器W;程序存储器;数据存储器和输入/输出(I/O)口;堆栈存储器和定时器等。现分别介绍如下。

    标签: PIC 16F F84 16

    上传时间: 2013-12-26

    上传用户:zgu489

  • SOC与单片机应用技术的发展

    SOC与单片机应用技术的发展:本文讨论SOC和单片机应用技术的发展;介绍SOC的基本技术特点和应用概念;分析作为IP家庭重要成员的单片机在SOC应用设计中的特点。通过讨论指出以嵌入技术为基础,单片机再次成为现代电子应用技术的核心之一,为SOC应用技术提供了坚实的基础。 关键字:SOC;单片机;嵌入式系统 引言 现场电子技术应用中包含了硬件(HW)、硬件加软件(HW+SW)、固件(FW)3个层次。这3个层次也可以说是现代电子技术应用的3人发展阶段。自1997年以来,电子技术应用又增加了一个新的层次??片上系统(SOC)层次。SOC技术概念和应用技术层次的出现,标志着现代电子技术应用进入了SOC阶段。 从各个发展阶段看,自HW+SW阶段开始,电子技术应用就与单片机紧密地联系在一起。在FW阶段,作为固件系统的重要核心技术,单片机又以嵌入式技术为基础,再次成为现代电子应用技术的核心技术之一,并为SOC应用技术提供了紧实的基础。 SOC为各种应用提供了一个新的实现技术。这种新的电子系统实现技术促使工业界在近3年中发生了巨大的变化,为信息技术的应用提供坚实的基础,因此,完全可以称之为SOC革命。同时,SOC也为单片机技术提供了更广阔的应用领域,使单片机应用技术发生了革命性的变化。

    标签: SOC 单片机 应用技术 发展

    上传时间: 2013-10-31

    上传用户:qb1993225

  • CAM350 8.7.1使用说明

    CAM350 为PCB 设计和PCB 生产提供了相应的工具(CAM350 for PCB Designers 和CAM350 for CAM Engineers),很容易地把PCB设计和PCB生产融合起来。CAM350 v8.7的目标是在PCB设计和PCB制造之间架起一座桥梁随着如今电子产品的朝着小体积、高速度、低价格的趋势发展,导致了设计越来越复杂,这就要求精确地把设计数据转换到PCB生产加工中去。CAM350为您提供了从PCB设计到生产制程的完整流程,从PCB设计数据到成功的PCB生产的转化将变得高效和简化。基于PCB制造过程,CAM350为PCB设计和PCB生产提供了相应的工具(CAM350 for PCB Designers和CAM350 for CAM Engineers),很容易地把PCB设计和PCB生产融合起来。平滑流畅地转换完整的工程设计意图到PCB生产中提高PCB设计的可生产性,成就成功的电子产品为PCB设计和制造双方提供有价值的桥梁作用CAM350是一款独特、功能强大、健全的电子工业应用软件。DOWNSTREAM开发了最初的基于PCB设计平台的CAM350,到基于整个生产过程的CAM350并且持续下去。CAM350功能强大,应用广泛,一直以来它的信誉和性能都是无与伦比的。 CAM350PCB设计的可制造性分析和优化工具今天的PCB 设计和制造人员始终处于一种强大的压力之下,他们需要面对业界不断缩短将产品推向市场的时间、品质和成本开销的问题。在48 小时,甚至在24 小时内完成工作更是很平常的事,而产品的复杂程度却在日益增加,产品的生命周期也越来越短,因此,设计人员和制造人员之间协同有效工作的压力也随之越来越大!随着电子设备的越来越小、越来越复杂,使得致力于电子产品开发每一个人员都需要解决批量生产的问题。如果到了完成制造之后发现设计失败了,则你将错过推向市场的大好时间。所有的责任并不在于制造加工人员,而是这个项目的全体人员。多年的实践已经证明了,你需要清楚地了解到有关制造加工方面的需求是什么,有什么方面的限制,在PCB设计阶段或之后的处理过程是什么。为了在制造加工阶段能够协同工作,你需要在设计和制造之间建立一个有机的联系桥梁。你应该始终保持清醒的头脑,记住从一开始,你的设计就应该是容易制造并能够取得成功的。CAM350 在设计领域是一个物有所值的制造分析工具。CAM350 能够满足你在制造加工方面的需求,如果你是一个设计人员,你能够建立你的设计,将任务完成后提交给产品开发过程中的下一步工序。现在采用CAM350,你能够处理面向制造方面的一些问题,进行一些简单地处理,但是对于PCB设计来说是非常有效的,这就被成为"可制造性(Manufacturable)"。可制造性设计(Designing for Fabrication)使用DFF Audit,你能够确保你的设计中不会包含任何制造规则方面的冲突(Manufacturing Rule Violations)。DFF Audit 将执行超过80 种裸板分析检查,包括制造、丝印、电源和地、信号层、钻孔、阻焊等等。建立一种全新的具有艺术特征的Latium 结构,运行DFF Audit 仅仅需要几分钟的时间,并具有很高的精度。在提交PCB去加工制造之间,就能够定位、标识并立刻修改所有的冲突,而不是在PCB板制造加工之后。DFF Audit 将自动地检查酸角(acid traps)、阻焊条(soldermask slivers)、铜条(copper slivers)、残缺热焊盘(starved thermals)、焊锡搭桥(soldermask coverage)等等。它将能够确保阻焊数据的产生是根据一定安全间距,确保没有潜在的焊锡搭桥的条件、解决酸角(Acid Traps)的问题,避免在任何制造车间的CAM部门产生加工瓶颈。

    标签: CAM 350 使用说明

    上传时间: 2013-11-07

    上传用户:chongchongsunnan

  • 串行口是计算机一种常用的接口

    串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于4%的情况下,传输电缆长度应为50英尺。   Linux操作系统从一开始就对串行口提供了很好的支持,本文就Linux下的串行口通讯编程进行简单的介绍.

    标签: 串行口 计算机 接口

    上传时间: 2013-12-16

    上传用户:1079836864

  • 摘 要: 本文件是C8051单片机I2C总线读写测试程序;将跳线器JP6短接

    摘 要: 本文件是C8051单片机I2C总线读写测试程序;将跳线器JP6短接,使用外部22.1184MHz晶振. 功能:定义 0 ~ 9 键为数字键, A ~ F 为功能键。按 A 键后,可按0 ~ 9 数字键, 从零地址开始存储该键值,并送LED数码管上显示该键值。按 C 键停止后,按 B 键, 从零地址开始读取数据值,并送LED数码管上显示。读取速度每秒一次。在按 C 键停止后,可按 A 键重新输入。

    标签: C8051 I2C JP6 单片机

    上传时间: 2015-09-02

    上传用户:sevenbestfei

  • 本文件是I2C总线读写测试程序;将跳线器JP6短接

    本文件是I2C总线读写测试程序;将跳线器JP6短接,使用外部22.1184MHz晶振. 功能:定义 0 ~ 9 键为数字键, A ~ F 为功能键。按 A 键后,可按0 ~ 9 数字键, 从零地址开始存储该键值,并送LED数码管上显示该键值。按 B 键后,从零地 址开始读取数据值,并送LED数码管上显示。读取速度每秒一次。按 C 键后, 停止任何操作。

    标签: I2C JP6 总线 读写

    上传时间: 2013-12-21

    上传用户:guanliya