51单片机 订阅
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。 展开全文
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。
信息
外文名
mcu
始    祖
Intel公司始创的8004单片机
定    义
兼容Intel 8031系统的单片机统称
用    途
工业测控系统
中文名
51单片机
缺    点
不具备自编程能力
51单片机主要产品
*Intel(英特尔)的:80C31、80C51、87C51,80C32、80C52、87C52等;*ATMEL(爱特梅尔)的:89C51、89C52、89C2051,89S51(RC),89S52(RC)等;*Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品;STC(国产宏晶)单片机:89c51、89c52、89c516、90c516等众多品牌。
收起全文
精华内容
下载资源
问答
  • 电子设计从这开始——51单片机25个小作品

    万次阅读 多人点赞 2016-09-23 13:09:09
    这是大二我做某实验室管理员,为了方便自己管理整理,都是一些51单片机的小作品,适合给刚学完51单片机的新手练手 一目录 1基于51单片机的火灾温度烟雾报警器 2基于51单片机的声光电子琴 3基于51单片机的音乐喷泉 4...

            这是我大二做某实验室管理员,为了方便自己管理整理,都是一些51单片机的小作品,适合给刚学完51单片机的新手练手!

                  时间好快,目前我已经研二了,没有想到底下会有这么多评论,谢谢各位学弟学妹捧场!我在这统一回复,这些是我总结的可以用来练手的关于51单片机的小项目,不过我自己没有做过,真的没有资料。          

    一目录

    1基于51单片机的火灾温度烟雾报警器

    2基于51单片机的声光电子琴

    3基于51单片机的音乐喷泉

    4基于51单片机的智能温控风扇

    5基于51单片机的超声波测距

    6基于51单片机的无线温湿度控制系统设计

    7基于51单片机脉搏心率计

    8.基于51单片机led音乐频谱

    9.基于51单片机的智能充电器

    10.基于51单片机的贪吃蛇游戏

    11.基于51单片机的电子秤

    12.基于51单片机的视力保护器

    13.基于51单片机防人水位检测报警系统

    14.基于51单片机的声光控制器设计

    15.基于51单片机的红外计数器

    16.基于51单片机的自行车码表设计

    17.基于51单片机的计算器的设计

    18.基于51单片机的酒精浓度测试仪设计

    19.基于51单片机的智能台灯设计

    20.基于51单片机的卫星定位

    21.基于51单片机防尘PM2.5灰尘设计

    22.基于51单片机的无线音乐门铃

    23基于51单片机的短信收发控制器

    24.基于51单片机的智能插座定时开关设计

    25.基于51单片机的4*4*4单片机的光立方设计

     

    二.作品参考图

     

    1基于51单片机的火灾温度烟雾报警器

     

     

     

     

     

    2基于51单片机的声光电子琴

     

     

     

     

    3基于51单片机的音乐喷泉

     

     

     

     

    4基于51单片机的智能温控风扇

     

     

     

     

    5基于51单片机的超声波测距

     

     

    6基于51单片机的无线温湿度控制系统设计

    7基于51单片机脉搏心率计

    8.基于51单片机led音乐频谱

    9.基于51单片机的智能充电器

    10.基于51单片机的贪吃蛇游戏

    11.基于51单片机的电子秤

    12.基于51单片机的视力保护器

    13.基于51单片机防人水位检测报警系统

    14.基于51单片机的声光控制器设计

    15.基于51单片机的红外计数器

    16.基于51单片机的自行车码表设计

    17.基于51单片机的计算器的设计

    18.基于51单片机的酒精浓度测试仪设计

    19.基于51单片机的智能台灯设计

    20.基于51单片机的卫星定位

    21.基于51单片机防尘PM2.5灰尘设计

    22.基于51单片机的无线音乐门铃

    23基于51单片机的短信收发控制器

     

    24.基于51单片机的智能插座定时开关设计

     

    25.基于51单片机的4*4*4单片机的光立方设计

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 51单片机 51单片机 51单片机 51单片机 C51程序代码和原理图
  • 51单片机通过WIFI模块ESP8266控制LED灯

    万次阅读 多人点赞 2018-06-16 18:47:40
    手机APP通过ESP8266 WIFI模块与51单片机通信控制LED灯的开关。下位机由单片机、ESP8266模块和LED灯组成,上位机由Android手机APP承担。我们在APP上发送LED灯的开关控制指令,ESP8266将收到的数据发送给单片机,从而...

    完整源码下载地址:https://download.csdn.net/download/tongxin082/21440621

    一、系统方案

    手机APP通过ESP8266 WIFI模块与51单片机通信控制LED灯的开关。下位机由单片机、ESP8266模块和LED灯组成,上位机由Android手机APP承担。我们在APP上发送LED灯的开关控制指令,ESP8266将收到的数据发送给单片机,从而实现对LED灯进行开关控制。

    设计好的实物是这个样子:

    二、硬件设计

    ESP8266模块作为一个透传模块使用,RXD、TXD分别连接51单片机的TXD和RXD,VCC和CH_PD管脚接3.3V电压,GND接地,只需要连接这些管脚,ESP8266模块就可以正常工作了。在单片机P2口上连接了三个5mm的LED灯,分别是红黄蓝三种颜色,我们的目的是通过手机APP上的开关控制着三个LED灯的亮灭。

    ESP8266实物管脚图

    三、单片机软件设计

    硬件的连接不复杂,接下来主要是单片机和手机APP代码的编写。

    单片机代码主要是串口初始化、串口中断和ESP8266的初始化。首先是串口初始化:

            TMOD=0x20;		//定时器1工作在方式2
    	TH1 = 0xfd;		//波特率9600
    	TL1 = 0xfd;
    	SM0=0;                  //串口工作在方式1
    	SM1=1;
    	EA = 1;			//开总中断
    	REN = 1;		//使能串口
    	TR1 = 1;		//定时器1开始计时

    然后是ESP8266初始化:

            delayms(1000);                        //延时
    	sendString("AT+CWMODE=2\r\n");        //设置ESP8266工作在AP模式下
    	delayms(1000);	
    	sendString("AT+CIPMUX=1\r\n");        //允许多连接
    	delayms(1000);	
    	sendString("AT+CIPSERVER=1\r\n");     //建立服务器
    	delayms(1000);	
    	ES = 1;				      //esp8266初始化之后开串口中断

    贴上51单片机负责串口发送的两个函数:

    //发送一个字节
    void sendChar(uchar a)
    {
    	SBUF = a;
    	while(TI==0);
    	TI=0;
    	
    }
    
    //发送字符串
    void sendString(uchar *s)
    {
    	while(*s!='\0')
    	{
    		sendChar(*s);
    		s++;
    	}
    		
    }

    在串口中断中处理接收到的数据:

    1:打开红色灯    2:关闭红色灯

    3:打开黄色灯    4:关闭黄色灯

    5:打开蓝色灯    6:关闭蓝色灯

    esp8266在收到数据并转发给单片机时的数据格式:+IPD,<client号>,<收到的字符长度>:收到的字符,比如+IPD,0,5:hello,其中+PID是固定的;0代表的是TCP客户端编号,esp8266最多支持5个客户端同时连接,也就是说客户端编号是0到4,在本设计中由于只有一个客户端与esp8266相连,所以客户端编号是0;5代表收到的字符长度;hello是收到的字符。在本例中esp8266发送给单片机的数据是+IPD,0,1:1,我们把接收到的字符串缓存到字符数组中,所以在处理收到的数据逻辑中,首先判断是否是以'+'开始的,否则视作无效数据,然后判断数组中的第十个数据,因为第十个数据才是上位机发送过来的数据。

    void uart() interrupt 4
    {
        if(RI == 1)   
        {
            RI = 0;     //清除串口接收标志位
    	receiveTable[i]=SBUF;
    	if(receiveTable[0]=='+')
    	{
    		i++;
    	}
    	else
    	{
    		i=0;
    	}
    	if(i==10)
    	{
    		i=0;
    		switch(receiveTable[9])
    		{
    			case '1':
    				RedLED=0;
    				break;
    			case '2':
    				RedLED=1;
    				break;
    			case '3':
    				YellowLED=0;
    				break;
    			case '4':
    				YellowLED=1;
    				break;
    			case '5':
    				BlueLED=0;
    				break;
    			case '6':
    				BlueLED=1;
    				break;
    		}
    	}
        
      }
    }

    四、Android APP软件设计

    Android APP是借助Android Studio来开发的,界面比较简单,通过编辑框输入esp8266的IP地址和端口号,esp8266默认的IP地址是192.168.4.1,端口号是333,这些都可以通过AT指令进行修改。布局页面的xml代码我们就不贴了,熟悉Android开发的读者很快就能根据截图编写出来,放上一个APP界面的截图:

    我们主要看一下逻辑代码部分:

    首先是控件的初始化和按钮点击事件回调的绑定

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mBtnConnect = (Button) findViewById(R.id.btn_connect);
            mEtIP = (EditText) findViewById(R.id.et_ip);
            mEtPort = (EditText) findViewById(R.id.et_port);
            mBtnRedOn = (Button) findViewById(R.id.btn_red_on);
            mBtnRedOff = (Button) findViewById(R.id.btn_red_off);
            mBtnYellowOn = (Button) findViewById(R.id.btn_yellow_on);
            mBtnYellowOff = (Button) findViewById(R.id.btn_yellow_off);
            mBtnBlueOn = (Button) findViewById(R.id.btn_blue_on);
            mBtnBlueOff = (Button) findViewById(R.id.btn_blue_off);
            mBtnConnect.setOnClickListener(this);
            mBtnRedOn.setOnClickListener(this);
            mBtnRedOff.setOnClickListener(this);
            mBtnYellowOn.setOnClickListener(this);
            mBtnYellowOff.setOnClickListener(this);
            mBtnBlueOn.setOnClickListener(this);
            mBtnBlueOff.setOnClickListener(this);
    
        }

    按钮的点击回调方法:

        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_connect:
                    //连接
                    if (mSocket == null || !mSocket.isConnected()) {
                        String ip = mEtIP.getText().toString();
                        int port = Integer.valueOf(mEtPort.getText().toString());
                        mConnectThread = new ConnectThread(ip, port);
                        mConnectThread.start();
                    }
                    if (mSocket != null && mSocket.isConnected()) {
                        try {
                            mSocket.close();
                            mBtnConnect.setText("连接");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
    
                    break;
                case R.id.btn_red_on:         //开红灯
                    if (out != null) {
                        out.print("1");
                        out.flush();
                    }
                    break;
                case R.id.btn_red_off:        //关红灯
                    if (out != null) {
                        out.print("2");
                        out.flush();
                    }
                    break;
                case R.id.btn_yellow_on:
                    if (out != null) {
                        out.print("3");
                        out.flush();
                    }
                    break;
                case R.id.btn_yellow_off:
                    if (out != null) {
                        out.print("4");
                        out.flush();
                    }
                    break;
                case R.id.btn_blue_on:
                    if (out != null) {
                        out.print("5");
                        out.flush();
                    }
                    break;
                case R.id.btn_blue_off:
                    if (out != null) {
                        out.print("6");
                        out.flush();
                    }
                    break;
            }
        }
     

    负责连接esp8266的线程:

    private class ConnectThread extends Thread {
            private String ip;
            private int port;
    
            public ConnectThread(String ip, int port) {
                this.ip = ip;
                this.port = port;
            }
    
            @Override
            public void run() {
                try {
                    mSocket = new Socket(ip, port);
                    out = new PrintStream(mSocket.getOutputStream());
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mBtnConnect.setText("断开");
                        }
                    });
                    new HeartBeatThread().start();
                } catch (IOException e) {
                    e.printStackTrace();
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(MainActivity.this, "连接失败", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            }
        }

    完整源码下载地址:https://download.csdn.net/download/tongxin082/21440621

    本文完!

    展开全文
  • 单片机C编程语言,51单片机下位机开发,单片机学习文档及代码
  • 基于VC++的51单片机控制源码:51单片机演奏音乐
  • 51单片机——51单片机入门基础知识

    万次阅读 多人点赞 2018-07-20 19:38:07
    MSC-51单片机指以8051为核心的单片机,由美国的Intel公司在1980年推出,80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。 单片机:在一片集成电路芯片上集成...

    第一部分。单片机简介

    MSC-51单片机指以8051为核心的单片机,由美国的Intel公司在1980年推出,80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。

    单片机:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(single chip Microcomputer)也叫微控制器(MCU)。

    CPU( Central Processing Unit ):由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;

    RAM( Random-Access Memory ):用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;

    ROM (Read-Only Memory):用以存放程序、一些原始数据和表格;

    I/O(input/output)口:四个8位并行I/O口,既可用作输入,也可用作输出;

    T/C (timer/counter):两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;

     数字电路中只有两种电平:高和低

    单片机为TTL电平: +5V       0V

    RS232电平:计算机的串口    -12V     +12V

    所以计算机与单片机之间通讯时需要加电平转换芯片max232等其他芯片

    数字电路的点评特性据定了他只能用二级制:

    二进制逻辑运算,与或非和异或

    数据类型:

    因为51单片机是8位的,所以他的数据类型一般用unsigned char 

    第二部分。引脚简介

    1.  电源引脚:Vcc (40脚):电源端,接+5V电源。

    Vss(Gnd) (20脚):接地端,接+5V电源地端

    2. 外接晶体引脚:XTAL1和XTAL2

    89C51内部有一个振荡器和时钟产生电路。

    XTAL1(19脚):   片内振荡电路反相放大器输入

    XTAL2(18脚):片内振荡电路反相放大器输出 当采用内部时钟时,片外连接石 英晶体和微调电容,产生原始 的振荡脉冲信号。

    采用外部时钟时, XTAL1输入 外部时钟脉冲信号, XTAL2悬空.

    3. 控制信号引脚:RST、ALE、PSEN、EA

    RST (9脚) : 复位信号输入端,高电平有效。

              保持两个机器周期高电平时,完成复位操作。

    ALE/PROG (30脚) :

    地址锁存允许输出端/编程脉冲输入端

    正常时,连续输出振荡器频率的1/6正脉冲信号。

    访问片外存储器时:

    作为锁存P0口低8位地址的控制信号。

    对8751片内 ROM编程写入时:作为编程脉冲输入端。

    PSEN (29脚): 外部程序存储器读选通输出信号

    访问片外ROM时,输出负脉冲作为读ROM选通.

    常连接到片外ROM芯片的输出允许端(OE)作外部ROM的读选通信号。

    EA/Vpp (31脚):

    外部程序存储器地址使能输入/编程电压输入端.   平常,接“1”时,CPU访问片内4KB的ROM,当地址超4KB时,自动转向片外ROM中的程序。当接“0”时,CPU只访问片外ROM。 第2功能Vpp              对8051编程时,编程电压输入端。

    4. 输入/输出端口引脚 P0、P1、P2、P3

    4个8位的并行输入/输出端口,共32个引脚。作为通用输入/输出端口

    通用输入/输出端口

         准双向口:  作输入时要先对锁存器写“1”。默认启动初始化为高电平

    P0端口(P0.0—P0.7,第39—32脚):

          漏极开路的准双向口, 内部没有上拉电阻,为搞阻状态,不能正常输出高低电平,做I/O时需要接上拉电阻(10K)

    P1端口(P1.0—P1.7,第1—8脚):

          内部带上拉电阻的准双向口,在做输入时要先1

    P2端口(P2.0—P2.7,第21—28脚):

          内部带上拉电阻的准双向口,与P1相似

    P3端口(P3.0—P3.7,第10—17脚):

          内部带上拉电阻的准双向口,做I/O时与P1相似,另外有第二功能

    P3口的第二功能

     

    展开全文
  • 51单片机编程实例源码,学习单片机的好帮手
  • 本文主要简单介绍了MCS-51单片机、8051单片机、51单片机的区别
  • 51单片机初学1-51单片机介绍

    千次阅读 多人点赞 2021-03-05 13:21:21
    学习单片机往往都是从简单的51单片机开始,这篇文章以STC89C52为例来介绍51单片机,使用一款单片机先从了解它开始...

       目前,单片机型号种类繁多,以其优越的控制性能在自动化控制领域占有重要地位。如今单片机无处不在,像我们的电冰箱、空调、洗衣机都是单片机在内部控制,当然,他们所用的单片机是定制的,并不是我们学习时使用的单片机。除此不同品牌的单片机芯片采用的内核也会不同,比如INTEL公司的MCS-51内核(代表芯片:AT89系列、国产STC系列等),ARM公司的高性能”Cortex-M3”内核(代表芯片:STM32系列)等。因为内核的差异,使得他们在使用中也会有所不同。

    对于初学者来说,51单片机中的STC89C52是很不错的选择,因为它便宜(单片价格在8RMB左右),而且相对容易学习。接下来将以这款芯片为例介绍51单片机。

    首先简单介绍这款芯片:

    1.STC89C52是STC公司(中国深圳宏晶科技公司)生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器(8K对单片机来说不小了,当然不能跟我们的手机比),使用MCS-51内核,指令代码完全兼容传统8051。

    2.工作电压范围很广(这里只介绍5V版本),在3.3V~5.5V之间都能工作,但是电压越高,工作电流也会更大,通俗的说,如果用单片机点亮一颗LED灯,使用5.5V供电,灯的亮度要比3.3V供电时亮,耗电也会更多。

    3.通用I/O 口(4x8=32个),复位后为:P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为 I/O 口用时,需加上拉电阻。(除非某I/0口置零,否则它就输出高电平)

    4.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作 频率可达48MHz,其工作频率取决于晶振频率,我们常用的是12MHz、11.0592MHz。

    5.ISP(在系统可编程)/IAP(在应用可编程),可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序。在学习过程中,我们只要使用ISP即可,也就是制作好电路板之后,只要把RxD/P3.0,TxD/P3.1通过排针引出来,我们就可以通过USB-TTL把程序烧录到单片机,不需要再把单片机芯片从系统板上取出来。

    6.共3 个16 位定时器/计数器。即定时器T0、T1、T2

    其他参数就不详细介绍,其资料可自行在网上查阅。

    首先需要了解这款芯片的引脚图,才能根据引脚连接各种元件。(暂时只标注常用的的功能)

    接下来详细探讨各模块:

     1,I/O口

    I/O口即输入输出口,是单片机用来输出或者输入信号的端口。STC89C52共有四组(P0、P1、P2、P3),每组8个(每组I/O口能同时输出8位二进制数,所以该芯片为8位控制器),共32个I/O口。

    单片机所有I/O口默认状态都是高点平,除非在程序里将其置0,这样的设定可以让单片机运行更稳定。

    通常,I/O口都会连接上拉电阻,其目的一是使单片机运行稳定,二是提高单片机驱动能力,即让单片机能控制更大的负载。上拉电阻我们常用阻值为10K的9P排阻即可(其大小在1~10K都可,电阻小可提高驱动能力,电阻大可以降低功耗)。它有9个引脚,一个为公共端,另外八个引脚与I/O口相连。其结构及接线图如下图所示。注意,除了上拉电阻,还有下拉电阻,上拉电阻的公共端是接VCC,下拉电阻的公共端是接GND,这里暂不讨论下拉电阻。

     

    2.时钟电路

    这里的时钟并不是我们所说的钟表,而是指一种信号(理想的时钟信号就是矩形波,或者说脉冲波)。从数字电子技术中学习知道,在逻辑电路中,必须依靠时钟信号才能工作(例如触发器,每收到一个时钟信号,就动作一次),单片机其实就可以看成就是一个集成化的逻辑电路。所以我们需要外接时钟电路,来让单片机工作。

    时钟电路的核心是晶振,它是一种可以产生稳定震荡频率的电子元件。它的基本参数是震荡频率,单位为MHz,其参数决定了单片机的工作频率。其数值一般刻在晶振元件上面。常用的单片机晶振主要有12.000MHz和11.0592MHz,当程序中使用了定时器,使用11.0592MHz晶振可以定时更准确。

    时钟电路除了晶振还有两个瓷片电容(30pF),这两个电阻可以起到微调频率的作用。

    晶振电路有两个端口XT1和XT2,将这两个端口分别与单片机的18脚(XTAL2)、19脚(XTAL1)相连即可为单片机提供时钟信号(这两个端口没有顺序,可以随意连接)。

    3.复位电路
    复位电路说白了就是用来重启单片机,使单片机初始化,重新开始执行程序。当单片机因程序问题出现故障(比如程序中出现不可控的死循环),可通过复位电路向单片机第9脚RET发送一个复位信号,单片机就可自行复位。这个复位信号是一个连续2个机器周期(24个时钟周期)的高电平。也就是单片机的RES脚如果连续两个机器周期都是被置于高电平,单片机就会自动复位。

    所以最简单的复位电路就是上图所示。按下开关K,VCC接入单片机RST,两个机器周期后,单片机复位。(实际使用中,你按下按钮立刻松开,这段时间已经远超过两个机器周期,所以按下复位键不需要停顿再松开)如果一直按着复位键,单片机则不会进入工作状态,只有松开复位键单片机才开始工作。

    一般来说,单片机上电以后自动从程序开头执行,所有寄存器也是初始值。但是在一些复杂的电路中,单片机的外接电路很多,有时候会有电容电感之类的,他们上电之后并不能立即进入工作状态,他们有个“充电”过程,虽然时间短,但是单片机执行一条指令是微秒级的,很容易让单片机误判,出现意想不到的错误。如何避免这种现象?

    请设想:如果单片机上电之后,不立即进入工作状态,而是停顿“一会儿”,等其他元件充电完毕,再进入工作状态,那就可以躲开上电初期的不稳定因素,从而避免误判。

    那如何实现这个停顿呢?这就依赖于复位电路的上电自动复位了。

    上面是单片机常用的复位电路。

    其原理涉及到电路原理中的KCL定律和一阶电路的零状态响应,不感兴趣可略过。

    上电后,电解电容C1充电,其电压变化为Uc=5(1-e^{-t/\tau }) [式1],

    而RET处的电位即对地电压,可以看到,电阻R9的电压在数值上正好等于RET的电位,

    根据基尔霍夫电压定律,R9的电压=电源电压-电容C1电压,即Ur=5-5\left ( 1-e^{-t/\tau } \right )=5e^{-t/\tau }

    式中的τ为时间常数,其值为τ=RC=1000X22/1000000=22ms,其电压变化曲线如图(简略绘制,仅供参考):

    可以看到在很长一段时间里(其实不到20ms),Ur都保持在较高的电位,也就是RET为高电平(3.7V以上电压单片机都认为是高电平),在这段时间,足够单片机躲过上电初期的不稳定。当Ur的电压减小到不足以让单片机判定为高点平,复位失效,单片机工作。

    可以看到这种复位电路也能手动复位,按下开关S1,电容C1通过R10放电,松开S1,电容C1又开始充电,其情形与上电复位相同,RET接收到高电平,单片机复位。
    所以复位电路的作用一是开机自动复位,躲过上电时的不稳定;二是手动复位,在单片机运行出错时使用。

    4.其他引脚

    并行串口:第10、11脚是单片机的并行串口,作用就是烧录程序。注意这两脚是P3.0、P3.1复用了。烧录程序需要用到烧录工具USB-TTL。

    实际的USB-TTL有很多型号,有的型号有10个引脚,但烧录程序只需用到四个(VCC、GND、RXD、TXD)。所以我们需要四根杜邦线,首先,将转换工具上的VCC、GND与单片机系统板的VCC、GND连接,然后把烧录工具的RXD与单片机的TXD连接,烧录工具的TXD与单片机的RXD连接。因为两个引脚一个是发送数据,一个是接收数据,转换工具发送数据(TXD),单片机自然是接收数据(RXD),反之同理。另外,烧录程序还需用到软件STC-ISP,这是专门用于STC系列单片机的烧录软件。

    存储器选通:单片机的31脚是存储器选通EA,单片机内部存储空间很小,如果需要扩展空间,就需要用到这个功能。当EA置于高电平,单片机从内部存储器开始执行程序;当EA置于低电平,单片机则从外部存储器开始执行程序。对初学者来说,我们使用内部存储器就足够了,所以可以直接将EA接VCC。

    同样,第30脚ALE为地址锁存信号,也是在有外部存储器是使用,不用时将其悬空即可;29脚PSEN为外部存储器读选通信号,同样将其悬空。另外的40脚、20脚分别接电源正极、负极(地)不用多说了。

     

    以上纯属个人理解,如有错误,还请指出.

    展开全文
  • 51单片机基础51单片机基础51单片机基础51单片机基础51单片机基础51单片机基础51单片机基础51单片机基础51单片机基础51单片机基础51单片机基础51单片机基础51单片机基础
  • 51单片机最小系统原理图、PCB及组成原理详解

    万次阅读 多人点赞 2018-04-07 09:40:54
    单片机:单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示...
  • 基于51单片机的密码锁

    万次阅读 多人点赞 2021-01-17 10:50:44
    本次的项目是基于51单片机的密码锁,适合用来作为课程设计 主要实现了:密码锁功能,通过矩阵按键输入密码,输入范围为0-F,共有四位;同时,也可以使用更改按键更改密码,在更改时需要输入原密码来进入更改模式,四...
  • 51单片机学习教程51单片机学习教程51单片机学习教程51单片机学习教程51单片机学习教程51单片机学习教程51单片机学习教程51单片机学习教程51单片机学习教程51单片机学习教程51单片机学习教程51单片机学习教程51单片机...
  • 51单片机设计51单片机设计51单片机设计51单片机设计
  • 51单片机教材 51单片机教材 51单片机教材 51单片机教材
  • 51单片机教程 51单片机教程 51单片机教程51单片机教程
  • 51单片机开发资料51单片机开发资料51单片机开发资料51单片机开发资料51单片机开发资料
  • 51单片机入门教程(2)——实现流水灯

    万次阅读 多人点赞 2018-11-03 13:06:52
    51单片机入门教程(2)——实现流水灯一、搭建流水灯电路二、流水灯程序2.1 延时程序2.2 延时函数2.3 按字节寻址2.4 逻辑移位2.5 条件判断 一、搭建流水灯电路 在Proteus中搭建流水灯电路如图 二、流水灯程序 我们...
  • 基于51单片机四路循迹小车

    万次阅读 多人点赞 2018-11-14 13:54:59
    这学期开设的51单片机课程的课程设计即将验收,今天开始正式着手做循迹小车~
  •    从本文开始,在之后的一段时间里,我会通过本系列文章,详细介绍如何从零开始用51单片机去实现智能小车的控制,本文作为本系列的第一篇文章,主要介绍如何让小车动起来。 一、硬件的选择    1、底盘和电机  ...
  • 基于51单片机的电梯控制系统

    万次阅读 多人点赞 2020-04-27 18:43:04
    第一篇的项目,实现了51单片机控制电机,从而控制一台六层电梯。 具体说明:系统启动后自动定位到一楼。当外部按键按动时,电梯前往该楼层;内部按键共七个,其中六个对应六层,第七个为报警按键,按下后电梯停止...
  • 51单片机指令51单片机指令.pdf51单片机指令51单片机指令51单片机指令51单片机指令51单片机指令
  • 51单片机蓝牙小车

    万次阅读 多人点赞 2019-02-25 20:41:23
    51单片机蓝牙小车(是我大二做的一个课程设计,小菜鸟一个,欢迎大家指正和参考。) 摘要 本次设计选择基于蓝牙遥控的多功能智能小车为对象。选用STC98C52RC单片机作为主控芯片,电机驱动采用L293N ,...
  • 51单片机功能的扩展 51单片机功能的扩展 51单片机功能的扩展
  • 51单片机LCD时钟51单片机LCD时钟,51单片机LCD时钟,
  • 51单片机最小系统51单片机最小系统51单片机最小系统51单片机最小系统51单片机最小系统
  • 基于51单片机电子时钟

    万次阅读 多人点赞 2019-01-05 21:39:20
    1 基于51单片机用LCD1602实现时-分的显示 2. 按键控制时-分的调整 3. 能实现整时报时的功能(蜂鸣器响) 4. 闹钟模式 5.按键切换模式(模式一:时-分显示,模式二:60秒倒计时) 一、设计思路: 主体: 通过外部中断...
  • 51单片机自学教程51单片机自学教程51单片机自学教程
  • 51单片机基础代码

    2018-04-12 00:20:28
    51单片机基础代码 51单片机基础代码51单片机基础代码51单片机基础代码51单片机基础代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 100,880
精华内容 40,352
关键字:

51单片机