c52单片机开机上电后D1亮,然后灭D2、D3亮怎么写?

作者&投稿:鞠廖 (若有异议请与网页底部的电邮联系)
~ 单片机
科普中国 | 本词条由“科普中国”科学百科词条编写与应用工作项目审核
审阅专家 孙锐
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
中文名
单片机
外文名
Microcontrollers
类别
电路芯片
应用
工业生产、电子设备等
快速
导航
基本结构硬件特征51单片机的结构与功能应用单片机技术的开发单片机有效应用故障的排除
简介
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。[1]
从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期,无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用,让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。[2]
单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。 由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。[2]
基本结构
单片机的结构框图如下图所示:
单片机结构框图
运算器
运算器由运算部件——算术逻辑单元(Arithmetic & Logical Unit,简称ALU)、累加器和寄存器等几部分组成。ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器。
运算器有两个功能:
(1) 执行各种算术运算。
(2) 执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
运算器所执行全部操作都是由控制器发出的控制信号来指挥的,并且,一个算术操作产生一个运算结果,一个逻辑操作产生一个判决。
控制器
控制器由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成,是发布命令的“决策机构”,即协调和指挥整个微机系统的操作。其主要功能有:
(1) 从内存中取出一条指令,并指出下一条指令在内存中的位置。
(2) 对指令进行译码和测试,并产生相应的操作控制信号,以便于执行规定的动作。
(3) 指挥并控制CPU、内存和输入输出设备之间数据流动的方向。
微处理器内通过内部总线把ALU、计数器、寄存器和控制部分互联,并通过外部总线与外部的存储器、输入输出接口电路联接。外部总线又称为系统总线,分为数据总线DB、地址总线AB和控制总线CB。通过输入输出接口电路,实现与各种外围设备连接。
主要寄存器
(1)累加器A
累加器A是微处理器中使用最频繁的寄存器。在算术和逻辑运算时它有双功能:运算前,用于保存一个操作数;运算后,用于保存所得的和、差或逻辑运算结果。
(2)数据寄存器DR
数据寄存器通过数据总线向存储器和输入/输出设备送(写)或取(读)数据的暂存单元。它可以保存一条正在译码的指令,也可以保存正在送往存储器中存储的一个数据字节等等。
(3)指令寄存器IR和指令译码器ID
指令包括操作码和操作数。
指令寄存器是用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存中取到数据寄存器中,然后再传送到指令寄存器。当系统执行给定的指令时,必须对操作码进行译码,以确定所要求的操作,指令译码器就是负责这项工作的。其中,指令寄存器中操作码字段的输出就是指令译码器的输入。
(4)程序计数器PC
PC用于确定下一条指令的地址,以保证程序能够连续地执行下去,因此通常又被称为指令地址计数器。在程序开始执行前必须将程序的第一条指令的内存单元地址(即程序的首地址)送入PC,使它总是指向下一条要执行指令的地址。
(5)地址寄存器AR
地址寄存器用于保存当前CPU所要访问的内存单元或I/O设备的地址。由于内存与CPU之间存在着速度上的差异,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。
显然,当CPU向存储器存数据、CPU从内存取数据和CPU从内存读出指令时,都要用到地址寄存器和数据寄存器。同样,如果把外围设备的地址作为内存地址单元来看的话,那么当CPU和外围设备交换信息时,也需要用到地址寄存器和数据寄存器。
硬件特征
(1)单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。
(2)单片机有着较高的集成度,可靠性比较强,即使单片机处于长时间的工作也不会存在故障问题。
(3) 单片机在应用时低电压、低能耗,是人们在日常生活中的首要选择, 为生产与研发提供便利。
(4)单片机对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。[2]
51单片机的结构与功能
历史
单片机的发展先后经历了4位、8位、16位和32位等阶段。8位单片机由于功能强,被广泛用于工业控制、智能接口、仪器仪表等各个领域,8位单片机在中、小规模应用场合仍占主流地位,代表了单片机的发展方向,在单片机应用领域发挥着越来越大的作用。[3]80年代初,Intel公司推出了8位的MCS-51系列的单片机。
51单片机的部件
MCS-51单片机的逻辑部件,包括一个8位CPU及片内振荡器、 80514B掩膜ROM、87514KBEPROM、8031无ROM、特殊功能寄存 器SFR128BRAM、定时器/计数器T0及T1、并行I/O接口:P0、P1、P2、P3;串行接口:TXD、RXD;中断系统:INT0,INT1。[3]
基本功能
1.8位数据总线,16位地址总线的CPU;
2.具有布尔处理能力和位处理能力;
3.采用哈佛结构,程序存储器与数据存储器地址空间各自独立,便于程序设计;
4.相同地址的64KB程序存储器和64KB数据存储器;
5.0-8KB片内程序存储器(8031无,8051有4KB,8052有8KB,89C55有20KB);
6.128字节片内数据存储器(8051有256字节);
7.32根双向并可以按位寻址的I/O线;
8.两个16位定时/计数器(8052有3个);
9.一个全双工的串行I/O接口;
10.多个中断源的中断结构,具有两个中断优先级;
11.片内时钟振荡器。[1]
特点
单片机的特点可归纳为以下几个方 面:集成度高;存储容量大;外部扩展能力强;控制功能强。
1、从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。
2、同时在片内RAM区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便。
3、乘法和除法指令,这给编程也带来了便利。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。
应用
节能控制
由于智能电子设备可能会被经常携带外出,因此对这些设备的能耗要求是非常高的,所以经常会设计一些节能控制模块,从而提高智能电子设备的待机时长。单片机技术在节能控制中的应用主要分为以下几个方面:第一,智能电子设备在外出状态下,大部分是处于轻负载的模式,这时候就需要通过节能控制,确保其基础功能的前提下,进一步降低电量的消耗。单片机通过对智能电子设备中数据的收集,可以大致推断当前设备处于较低的负载,这时可以降低电压及电流的输出,达到节能的目的;第二,单片机可以控制能耗的节奏,例如:在小米手环中,收集人体的心率、睡眠和运动步数等数字,这些数字收集后会在本地进行存储,然后以分钟级的频率进行上报;信息未上报时,设备处于低能耗的状态,信息上报时,会出现一些网络传输方面的消耗,单片机可以控制能耗的节奏,将手环的大部分时间控制在低能耗的状态下,可以使得待机时间长达七十二小时以上。[4]
智能语音设备
为了更好地提高智能电子设备的智能性,可以允许人类通过简单的语言进行控制,实现语音人机交互的目的。目前,语音处理芯片已经开发完成,并开始运用到智能电子设备中。单片机在智能语音设备中的应用,主要分为以下两个部分:第一,软件设置方面,由于单片机可以通过编程的方式,处理一些业务逻辑,因此就能够对智能语音处理过程进行操作。例如:在导航智能电子设备中,可以将其中的一些道路名称、距离等进行提取,然后进行播报;同时,还可以选择不同的名人口吻进行播报,真正实现智能化的定制操作,更好地满足用户的需求;第二,硬件设计方面,由于智能语音设备对资源的消耗比较大,因此为了更好地延长产品的待机时间,会使用单片机技术动态控制产品的功率,进一步降低对电量的消耗。同时,还可以通过单片机技术,提高硬件的响应时间,进一步提高用户的体验。[4]
报警控制
对于部分电子设备来讲,会拥有自动报警的设置,报警控制也是单片机技术经常使用的领域,主要体现在以下几个方面:第一,对于一些自动报警装置来讲,例如:家里经常使用的火灾报警器,就是在外界环境达到一定条件下开启智能报警的设备,如果室内的烟雾浓度到达某种水平,或者是收集外界的数据达到某种状态时,就会自动触发报警设置,从而实现智能报警的功能;第二,对于一些智能电子设备来讲,如果外在环境超过设备的工作环境范围时,或者是设备存在一些异常情况时,就会触发自身的报警机制,让用户能够及时了解设备的运作详情,并且根据报警信息提供解决方案。例如:在一些工厂中,经常会安装一些设备,对工厂的生产环境进行监控,当出现某些异常数据时,就会发生报警,为确保设备的正常运作,设备维护人员需要及时进行处理,避免产生较大的故障。[4]
医疗设备
随着医疗设备技术的不断提升,单片机开始在医疗设备中进行广泛的应用,主要体现在:第一,对病人的身体特征数据进行智能监控,可以将一些医疗设备安装在病人身上,并对其身体的数据进行收集,然后与后台的控制系统进行交互,如果发现病人的身体特征异常时,会及时产生报警。例如:部分医疗设备可以针对病人的心跳、脉搏、血压等进行监控,如果发现异常会及时呼叫医生进行处理;第二,在手术过程中,也会使用一些智能电子设备,例如:部分手术需要进入病人的体内进行,在避免开刀的情况下,可以通过控制智能设备完成手术的过程,进一步降低病人的痛苦,提高病人身体恢复的速度;第三,智能体检数据分析设备,可以将用户的体检数据录入进去,然后输入到分析设备后,通过与正常数据的对比,及时对用户的身体疾病进行预测和诊断。随着我国医疗技术水平的不断提高,单片机技术的应用变得越来越广泛,提高了医疗技术水平,更好地维护病人的健康。[4]
应用特点
单片机拥有以下几种应用特点:(1)拥有良好的集成度; (2)单片机自身体积较小;(3)单片机拥有强大的控制功能,同时运行电压比较低;(4)单片机拥有简易携带等优势, 同时性价比较高。单片机主要应用于下面几种领域当中,分别是:自动化办公、机电一体化、尖端武器和国防军事领域、 航空航天领域、汽车电子设备、医用设备领域、商业营销设备、计算机通讯、家电领域、日常生活和实时控制领域等。[5]
单片机技术的开发
单片机在电子技术中的开发,主要包括CPU开发、程序开发、 存储器开发、计算机开发及C语言程序开发,同时得到开发能够保证单片机在十分复杂的计算机与控制环境中可以正常有序的进行,这就需要相关人员采取一定的措施,下文是笔者的一些简单介绍:
(1)CPU开发。开发单片机中的CPU总线宽度,能够有效完善单片机信息处理功能缓慢的问题,提高信息处理效率与速度,开发改进中央处理器的实际结构,能够做到同时运行2-3个CPU,从而大大提高单片机的整体性能。[6]
(2)程序开发。嵌入式系统的合理应用得到了大力推广,对程序进行开发时要求能够自动执行各种指令,这样可以快速准确地采集外部数据,提高单片机的应用效率。[6]
(3)存储器开发。单片机的发展应着眼于内存,加强对基于传统内存读写功能的新内存的探索,使其既能实现静态读写又能实现动态读写,从而显着提高存储性能。[6]
(4)计算机开发。进一步优化和开发单机片应激即分析,并应用计算机系统,通过连接通信数据,实现数据传递。[6]
(5)C语言程序开发。优化开发C语言能够保证单片机在十分复杂的计算机与控制环境中,可以正常有序的进行,促使其实现广泛全面的应用

输出信号对应3个输出点,分别输出信号给3个点就行了


51单片机通电后各I\/O为高电平 那如果我在P2口接上uln2003驱动5V的继电...
不知道你用的什么型号的单片机,单片机在上电初始化,尤其是复位阶段,复用的IO口一般默认是高阻输入状态,不受程序控制。你ULN2003上拉,必然直接瞬时输出有效了。解决办法:(1)下拉,初始电平为低。(2)控制ULN2003初级部分的电源,使得驱动部分与单片机控制部分分时上电。(3)想办法把复位初始化过程...

单片机没有烧程序,上电后会烧坏吗?
不会烧坏的,如果晶振工作了的话,上电后就会做复位,初始化内部寄存器,此时,如果CPU将从0000H开始工作,从来没有烧过程序的话,此时该处应该是FFH,整个存储区应该都是这个字节,该指令的意思是MOV R7,A,也就是说一直在执行这条指令。

51单片机上电后不运转,不执行程序。什么原因?
很可能是晶振的问题。起振的话,晶振两脚上有一只脚可以看到振荡波形的。你还可以查一下单片机的EA脚,这个是配置启动顺序的,外部还是内部,EA为高电平可能是有问题的,你该尝试下接地。单片机程序不执行,我遇到过上述两种情况,EA没接,还有就是晶振的电容和晶振碰到一块去了。

我用STC89C52单片机控制舵机,为什么它只在单片机上电一瞬间工作,然后就...
舵机控制要输入50hz的方波,用示波器检测一下波形,看占空比和频率对不对。

单片机无法上电
检查单片机的电源(40脚)引脚,看是否在5V左右 检查单片机复位脚(9脚)电压,应该在0V左右,然后按下复位开关,应该在5V左右如果不按复位开关时电压不在0V左右,则可能是22uF的复位电容装反。检查单片机18脚电压,看是否在2.5V左右如果不是则说明晶体没有启振,检查两个22pF电容是否装对了,是否有...

单片机上电复位的工作原理
该过程所持续的时间一般为1~100 ms(记作taddrise)。上电延时taddrise的定义是电源电压从10% VDD上升到90% VDD所需的时间.在单片机电源电压上升到适合内部振荡电路运行的范围并且稳定下来之后,时钟振荡器开始了启动过程(具体包括偏置、起振、锁定和稳定几个过程)。该过程所持续的时间一般为1~50 ...

单片机上电后,一般要首先执行哪些工作,然后才进入正常工作状态_百度...
上电后。。它很紧张的就进入工作状态。没你想象中的那么复杂。。基本就是振荡器起振。程序指针跳到0。开始执行你编的那些程序。一次走一步。所以。大多数时候都是在你本人的控制之下的。开始的细节就不用太在意了。程序该干的事情就是:读某些状态寄存器。比如掉电之类的。在某些要求稳定性的系统里...

单片机是不是一上电以后那个cpu就不停的工作
所以,在复位或者上电时,单片机的第一条指令是在复位向量所在地址,如果不做人为更改编译器连接脚本及启动代码,复位向量一般都是直接跳转到FLASH所在最低地址取指令即启动代码第一条指令,启动代码做一些堆栈初始化工作后,调用main函数。所以当你什么代码都没有烧录进单片机的时候,cpu是不工作的。

我用面包板搭了一个STC98C52RC单片机的最小系统,但始终烧不了程序,提...
下载程序时,板载LED点亮是随意的,不用管 只要程序下载了,按程序运行即可 自制的板子烧写程序是很麻烦的 1、有接口芯片?如MAX232,ch340吗?2、下载程序前给单片机断电,等提示后,再上电。

(高分)单片机上电后工作流程
在单片机每次初始加电时,首先投入工作的功能部件是复位电路。复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;起震后,正常工作,即执行你的程序。这是堆栈的...

疏勒县17530253010: 单片机ATc52,实现按下key1,led1亮,再按下key2,led2亮led1灭,求具体程序 -
蹉寇巯嘌: 具体看LED的接法,改变两个if的参数,改变状态效果:例如led一边接了高电平,连接单片机这边给led=0为亮,若led一边为地GND(就是低电平)另外一边就要led=1才亮. 以下程序为一边接高电平,单片机引脚给0亮给1灭 #include <reg52.h>sbit led=P1^0;sbit key1=P1^1; sbit key2=P1^2; void main() {led=1;//初始化输出,可初始化=0while(1){if(key1==0){led=0;//亮}if(key2==0){led=1;//灭} } }

疏勒县17530253010: 单片机上电后如何运行 -
蹉寇巯嘌: 单片机上电后,首先复位,再就是执行第一条指令,一般是一条跳转指令,到真正的程序入口,执行用户程序.

疏勒县17530253010: 单片机如何点亮第一个发光二极管? -
蹉寇巯嘌: 不是你的编程格式不对.int main(void) { while(1) { d1 = 0; } } 注意程序内部一定要加个大循环,否则RAM内存执行溢出就会产生错误,程序跑飞.

疏勒县17530253010: 单片机p1端口接8个LED灯,D0点亮后闪烁一次 ,D1点亮后闪烁两次,D2点亮后闪烁三次以此类推 -
蹉寇巯嘌: LED EQU 30H ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV LED,#0FEHMOV R2,#1 LOOP:MOV A,LEDMOV P1,ALCALL DELAYPUSH 02H SHAN:MOV P1,#0FFHLCALL DELAYMOV P1,ALCALL DELAYDJNZ R2,...

疏勒县17530253010: 根据单片机电路图写出D1、D2、D3、D9、D10、0D11灯亮,其余灯灭的汇编语言控制程序 -
蹉寇巯嘌: ORG 0000H;LJMP MAIN; MAIN: MOV P1,#0XF7;MOV P0,#0X1F;SJMP $;END /* 你的电路中,二极管前应当串联一个10K的电阻,否则电流过大,单片机也可能会毁坏,祝你好运 */

疏勒县17530253010: 单片机上电后,灯都是熄灭的,当第一次按下复位开关后,两个灯循环点亮,不断循环,当再次按下复位开关后 -
蹉寇巯嘌: 程序是 从 0~6,再7~1进行亮灯的.那3个灯的点亮,不管程序的事,可是LZ 偏偏用单次系统编程,于是单次系统结束后,程序就成了随机、不可预知的情况.

疏勒县17530253010: 单片机流水灯全亮,我亦有同样问题在看见最佳回答后仍不知如何解决,附网上搜索的最佳回答于问题补充中 -
蹉寇巯嘌: 单片机默认复位后或者上电后的所有引脚输出都为高电平,这是为了方便读取数据.所以,你的单片机在上电之后就是全亮,因为你的LED灯是正极接在了单片机的输出口上了,LED的负级接的地.这样芯片上电后,灯就全亮了.有可能你的芯...

疏勒县17530253010: 单片机上电后程序从哪开始执行 -
蹉寇巯嘌: 1、单片机上电后程序从0000H开始执行. 2、如果是用C51编程,不用指定语句的地址.编译后编译器会给你自动安排地址. 3、如果用汇编语言编程,应该指定第一条语句的地址是0000H,然后在0000H处写一条跳转指令,跳到你的主程序处. 4、至于startup.a51中的内容,不同的编译器应该不一样,但和你的程序制定的第一条语句的地址是0000H不会矛盾. 5、编译后产生的.HEX文件代码,在烧写时要从0000H地址开始烧写.

疏勒县17530253010: 单片机C语言写一条中断程序,一上电就是LED闪烁,按下开关走中断里面的,LED一直亮, -
蹉寇巯嘌: #include<reg51.h>#define uchar unsigned char sbit led=P1^0; sbit key=P3^2; void delay(uchar a) { uchar i; while(a--)for(i=0;i<120;i++); } void ext0() interrupt 0 { led=0; while(key==0); } main() { EX0=1; IT0=1; EA=1; whlile(1) { led=0; delay(200); led=1; delay(200); } }

疏勒县17530253010: 我的单片机,已经烧录程序了,但系刚通电的时候,一开始却是输出默认电位,闪一下,然后才按照程序运行. -
蹉寇巯嘌: 不是,如果没有复位电路,程序是无法运行的,有的单片机不需要复位电路,是有内部复位的,如STC12系列单片机.单片机复位后开始处于复位状态,程序运行后才按照程序指令变换各种状态.所以电路设计时要考虑单片机的复位状态,才能不至于因为复位或刚开始上电而造成控制机构的误动作.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网