单片机 订阅
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。 展开全文
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
信息
外文名
Microcontrollers
类    别
电路芯片
中文名
单片机
应    用
工业生产、电子设备等
单片机简介
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。 [1]  从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期,无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用,让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。 [2]  单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。 由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。 [2] 
收起全文
精华内容
下载资源
问答
  • 单片机

    千次阅读 多人点赞 2013-06-09 22:18:00
    单片机就是一个小的计算机,不过他没有计算机那么好,方便的输入输出设备,计算机的输入设备就是鼠标,键盘等,方便的很,输出设备就是显示器,将输出非常清晰的显示在屏幕上。但是单片机的输入输出都是他的引脚,...

          单片机就是一个小的计算机,不过他没有计算机那么好,方便的输入输出设备,计算机的输入设备就是鼠标,键盘等,方便的很,输出设备就是显示器,将输出非常清晰的显示在屏幕上。但是单片机的输入输出都是他的引脚,需要通过编程控制。

           单片机和PC机相同的地方就是都有CPU(我把单片机的微控制器核也叫CPU),内存(单片机的ROM,RAM,FLASH等),时钟系统,中断系统,定时器等等。

          一, 单片机最小系统就是单片机能够运行起来的必要条件:

       1.电源 2.晶振 3.复位电路  没有电源就没有能源,就不能工作;没有晶振,就没有时钟电路,就没有节拍,指令就不能按一定的步调运行;没有复位电路,单片机就很不可靠,会出现“死机”、“程序走飞(PC)”等现象。
       
       二,一些重要概念
        1. 我们对单片机编程不过就是设置单片机内部的寄存器和端口引脚以便输出高低电平控制其他(连接在单片机上)器件而已。
        2. 编程中最重要的是1:配置时钟,2:配置IO口,3:配置复位方式,看门狗设置等等
           次要的是:中断(外部,定时器,串口),串口,ADC,XRAM读写,内部FLASH等。   
        3. 1个机器周期 =12个时钟周期(晶振的振荡周期)   
        4. while(1);让单片机一直工作,等待中断!防止程序跑飞等。
        5. 51单片机共111条汇编指令,
    7种寻址方式:
    1.立即寻址 MOV A,#01H
    2.直接寻址 MOV A,20H
    3.寄存器寻址 MOV A,R3(A,B,Cy,DPTR)

    4.寄存器间接寻址 MOVA,@R0  R1
    5.变址寻址 MOVC  A, @A+DPTR
    6.相对寻址 SJMP   rel; (PC)←(PC) + 2(指令长度) +  rel
    7.位寻址 位寻址是直接寻址方式的一种,其特点是对8位二进制数中的某一位的地址进行操作。
    MOV 00h,C,MOV  20H.0, C  ,PSW.6
     
         6. XRAM(分内外)读写 
          1> XBYTE[address]=data   写数据
             data=XBYTE[address]   读数据;
       2>char xdata *mydat;
          ......
          mydat=(char xdata*)0x0030;
          *mydat=31;
       3>汇编方式
    	mov dptr,#1000h
    	mov a,#55h
    	movx @dptr,a
          7.  读端口信号是必须先向端口写“1”,然后再读,这就是单片机口信号的准双向的含义。切记!
          8.  模拟输入或数字I/O,推挽(强)或漏极开路输出(IO,inout)
    
     
    9. 一些寄存器默认设置即可,配置了可能会有警告。usb clock.clksel=1  10. Keil C 里面Lib库文件的生成与调用,可以自己做lib。
    11. ram高128位只能间接寻址。idata,一些人可能没有用到idata,发现data不够用。
    12 1s=1000ms=1000000us=1000000000ns.
    13.
    x M晶振定时 y ms: TH1 = (65536 - (x/12)*y*1000) / 256;     TL1 = (65536 - (x/12)*y*1000) % 256;16位的哦,亲!
    假设C8051F020单片机的晶振是22114800Hz,测每秒计22114800个数 经过12分频后,每秒计22114800÷12=1842900个数,如果设置计数器初值是 0xfe90(即十进制65165),则需要计的数的个数为65535-65165=360,那么定时器的 时间为(360÷1842900)(S)≈0.195ms,即0.2ms。
    #define uchar unsigned char
    #define uint  unsigned int
    #define ulong unsigned long #define bool  bit
     
    #include<C8051F330.h>
    #define uchar unsigned char
    #define uint unsigned int
    #define ulong unsigned long //引脚定义
    sbit In1= P0^3; sbit In2= P0^7; sbit In3= P1^3; sbit In4= P1^7; sbit Out1= P0^3; sbit Out2= P0^7; sbit Out3= P1^3; sbit Out4= P1^7;
    //----------------------------------------------------------------------------- //功能:延时 //入口参数:yc //出口参数:无 //-----------------------------------------------------------------------------
    void delay(uint time)
    {
      while(--time);
    }
    //----------------------------------------------------------------------------- //功能:单片机C8051F330初始化 //入口参数:无 //出口参数:无 //-----------------------------------------------------------------------------
    void Mcu_Init(void) { 
      PCA0MD&=~0x40;                 //禁止内部看门狗  
      OSCICN = 0x83;                 //内部振荡控制寄存器,使能H-F,八分频  
    OSCICL = 0x00;                 //期望输出频率也是24.5MHz
      CLKSEL = 0x00;                  //系统时钟取自内部高频振荡器  
    RSTSRC = 0x04;                 //检测到时钟丢失时允许系统复位
    }
     
     
    //----------------------------------------------------------------------------- //功能:MCU I/O口配置 //入口参数:无 //出口参数:无 //-----------------------------------------------------------------------------
     
    void PORT_Init (void) {    
    P0MDOUT  = 0x88;                         //P0.3,P0.7推挽输出   
    P1MDOUT  = 0x88;                  //P1.3,P1.7推挽输出   
    XBR0     = 0x00;  
      XBR1     = 0x40;                  //使能交叉开关和弱上拉 }
    //----------------------------------------------------------------------------- // 功能:所有设备初始化 //----------------------------------------------------------------------------- // 入口参数:无 // 出口参数:无 //-----------------------------------------------------------------------------
     
    void Init_Device (void) {   
    Mcu_Init();   
    PORT_Init();
    } void main() {
         Init_Device();     
    delay(10);          
         while(1){            }
     
    }
    展开全文
  • 电子设计从这开始——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单片机入门基础知识

    万次阅读 多人点赞 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单片机四路循迹小车

    万次阅读 多人点赞 2018-11-14 13:54:59
    这学期开设的51单片机课程的课程设计即将验收,今天开始正式着手做循迹小车~

    这学期开设的51单片机课程的课程设计即将验收,今天开始正式着手做循迹小车~

    一. 任务要求

    在这里插入图片描述
    在这里插入图片描述

    二. 系统原理

    本系统以设计题目的要求为目的,采用STC89C52单片机为控制核心,利用红外传感器检测轨道,控制电动小汽车的自动循迹,快慢速行驶。

    这里的轨道是指汽车沿着白色地板上的黑线行驶。由于黑线与白地板的反射系数不同,可以根据接收到的反射光的强度来判断“道路”。常用的方法是红外检测。

    红外检测方法,即在汽车行驶过程中,利用红外光在具有不同颜色的物体表面的不同反射特性,不断向地面发射红外光。当红外光与白纸地板相遇时,会发生漫反射,反射光被安装在车内的接收器接收,如果遇到黑线,就会变成红色。外部光被吸收,车内的接收器不能接收红外线。单片机根据是否接收到反射的红外光来确定黑线的位置和汽车的行驶路线。

    三. 整体方案

    1. 控制模块

    小车的核心控制部件采用STC公司生产的8位单片机STC89C52。它是一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。STC89C52有3个16 位定时器/计数器,2个外部中断,1个串口中断。

    最小系统

    51单片机的具体引脚功能不细说,不了解的可自行百度。直接上最小系统电路图(自己画的,凑合着看)。顺便说一句,在我看来一个没有指示灯的电路是最烦的电路<(`^´)> 我的复位一定要有灯才行!

    在这里插入图片描述
    三部分:
    ①电源电路:给单片机提供5V的电源
    ②时钟电路:外接11.0592M石英晶振。
    ③复位电路:确保单片机是从一个确定的初始状态开始。

    焊接时注意P0口要接上拉电阻,否则不能用,一般都用排阻做上拉电阻(当然如果能自己画板子就更好了)。

    去除AD网格线

    记一下怎么去除AD网格线,如图步骤,最后去掉Visible前面的对勾即可,别忘记最后点OK:
    在这里插入图片描述

    2. 电机驱动模块

    我使用的是最经典的LM298N电机驱动:

    我太喜欢用298了。不仅可以接至12v(即拥有更强的驱动能力),而且有过电流保护功能,当出现电机卡死时,可以保护电路和电机等。且自带7805降压模块可直接给单片机供电~~
    实物图:
    在这里插入图片描述
    驱动与各部分的连接简介:
    输出A、B:分别接到左右马达上,通过使能A、使能B来控制电机正常工作(接高电平为正常工作);
    单片机IO控制输入(即IN1-IN4):用来控制马达正反转。接单片机引脚,通过在程序中给引脚高低电平实现正转或反转(详见下边输入输出关系表);
    12V输入:接电池盒正极;
    5V输入:接单片机VCC,给单片机供电;
    电源地(即GND):把电池盒负极和单片机的GND一起接入。
    在这里插入图片描述
    电路图:
    在这里插入图片描述
    输入输出关系(使能ENA、ENB均为1的状态下):

    In1 In2 运转状态
    1 0 正转
    0 1 反转
    1 1 刹停
    0 0 停止

    3. 电源模块

    我自己使用的是两节18500锂电池供电。如果觉得两节电池不够,三节12V又太大,也可以在中间加一个7809稳压管把电压降到9V再接入驱动:
    在这里插入图片描述

    4. 循迹模块

    光电循迹是由四对红外收发管组成,通过检测接收到的反射光强,判断黑白线。

    当模块探测灯检测到黑线时指示灯熄灭,同时 OUT端口持续输出高电平信号,反之未检测到黑线的探测灯应常亮,OUT端口输出低电平。该模块检测距离 2~60cm,检测角度 35 ° ,检测距离可以通过电位器进行调节,顺时针调电位器,灵敏度增加;逆时针调电位器,灵敏度减少。
    在这里插入图片描述
    原理图由红外对管和电压比较器两部分组成,红外对管输出的模拟电压通过电压比较器转换成数字电平输出到单片机。

    主控板的电路图:
    在这里插入图片描述
    小板电路图:
    在这里插入图片描述
    注意连接的时候:VCC-VCC、GND-GND、IN-OUT。

    比较器LM339
    在这里插入图片描述

    5. 超声波测距模块

    实物图:
    在这里插入图片描述
    电路图:
    在这里插入图片描述
    工作原理
      (1)采用IO口TRIG触发测距,给至少10us的高电平信号;
      (2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
      (3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
      测试距离=(高电平时间*声速(340M/S))/2;

    四. 车体实物图

    在这里插入图片描述

    五. 软件实现

    #include<reg52.h>
    typedef unsigned int u16;
    typedef unsigned char u8;
    
    sbit ENA = P2^0;   //右点机使能
    sbit IN1 = P2^1;   //为0右轮反转
    sbit IN2 = P2^2;   //为0右轮正转
    sbit IN3 = P2^3;   //为0左轮正转
    sbit IN4 = P2^4;   //为0左轮反转
    sbit ENB = P2^5;   //左电机使能
    
    sbit left1 = P1^3;
    sbit left2 = P1^2;
    sbit right1 = P1^1;
    sbit right2 = P1^0;
    
    u8 PWMCnt1 = 0;
    u8 PWMCnt2 = 0;
    u8 cntPWM1 = 0;
    u8 cntPWM2 = 0;
    
    void Timer0Init();
    void XunJi();
    
    void main()
    {
    	Timer0Init();
    	while(1)
    	{
    		XunJi();
    
    	}	
    }
    // i = 1时, 大概延时10us
    //void delay(u16 i)
    //{
    //    while (i--);
    //}
    
    void Timer0Init()
    {
    	TH0 = 0xFF;
    	TL0 = 0xA3;
    	TMOD &= 0xF0;
    	TMOD |= 0x01;
    	EA = 1;
    	ET0 = 1;
    	TR0 = 1;
    }
    
    void TurnRight1()		   //右转
    {
    	IN1 = 0;	//右轮反转
    	IN2 = 1;
    
    	IN3 = 0;	//左轮正转
    	IN4 = 1;
    	cntPWM1 = 70;
    	cntPWM2	= 55;
    }
    
    void TurnRight2()		   //右转
    {
    	IN1 = 0;	//右轮反转
    	IN2 = 1;
    
    	IN3 = 0;	//左轮正转
    	IN4 = 1;
    	cntPWM1 = 50;
    	cntPWM2	= 40;
    }
    
    void TurnLeft1()				//左转
    {
    	IN1 = 1;
    	IN2 = 0;   	//右轮正转
    
    	IN3 = 1;
    	IN4 = 0;   	//左轮反转
    	cntPWM1 = 55;
    	cntPWM2	= 70;
    }			  	
    
    void TurnLeft2()				//左转
    {
    	IN1 = 1;
    	IN2 = 0;   	//右轮正转
    
    	IN3 = 1;
    	IN4 = 0;   	//左轮反转
    	cntPWM1 = 40;
    	cntPWM2	= 50;
    }	
    	
    void Forward()				 //前进
    {
    	IN1 = 1;
    	IN2 = 0;   	//右轮正转
    
    	IN3 = 0;   	//左轮正转
    	IN4 = 1;
    
    	cntPWM1 = 40;
    	cntPWM2	= 40;
    }
    
    //void Backward()					 //后退
    //{
    //	IN1 = 0;	//右轮反转
    //	IN2 = 1;
    //
    //	IN3 = 1;
    //	IN4 = 0;	//左轮反转
    //	cntPWM1 = 30;
    //	cntPWM2	= 30;
    //}
    
    void Stop()					  //停止
    {
    	IN1 = 0;
    	IN2 = 0;
    
    	IN3 = 0;
    	IN4 = 0;
    }
    void XunJi()
    
    {
    	unsigned char flag = 0;
    
    	if((left1 == 0)&&(left2 == 0)&&(right1 == 0)&&(right2 == 0))   //0 0 0 0
    		flag = 0;
    
    	if((left1 == 0)&&(left2 == 0)&&(right1 == 0)&&(right2 == 1))   //0 0 0 1
    		flag = 1;
    
    	if((left1 == 0)&&(left2 == 0)&&(right1 == 1)&&(right2 == 0))   //0 0 1 0
    		flag = 0;
    
    	if((left1 == 0)&&(left2 == 0)&&(right1 == 1)&&(right2 == 1))   //0 0 1 1
    		flag = 1;
    
    	if((left1 == 0)&&(left2 == 1)&&(right1 == 0)&&(right2 == 0))   //0 1 0 0
    		flag = 0;
    
    	if((left1 == 0)&&(left2 == 1)&&(right1 == 0)&&(right2 == 1))   //0 1 0 1
    		flag = 4;
    
    	if((left1 == 0)&&(left2 == 1)&&(right1 == 1)&&(right2 == 0))   //0 1 1 0
    		flag = 0;
    	
    	if((left1 == 0)&&(left2 == 1)&&(right1 == 1)&&(right2 == 1))    //0 1 1 1
    		flag = 1;
    	
    	if((left1 == 1)&&(left2 == 0)&&(right1 == 0)&&(right2 == 0))   //1 0 0 0
    		flag = 3;
    	
    	if((left1 == 1)&&(left2 == 0)&&(right1 == 0)&&(right2 == 1))   //1 0 0 1
    		flag = 0;
    	
    	if((left1 == 1)&&(left2 == 0)&&(right1 == 1)&&(right2 == 0))   //1 0 1 0
    		flag = 2;
    	// ?
    	if((left1 == 1)&&(left2 == 0)&&(right1 == 1)&&(right2 == 1))   //1 0 1 1
    		flag = 0;
    	
    	if((left1 == 1)&&(left2 == 1)&&(right1 == 0)&&(right2 == 0))   //1 1 0 0
    		flag = 3;
    	 //?
    	if((left1 == 1)&&(left2 == 1)&&(right1 == 0)&&(right2 == 1))   //1 1 0 1
    		flag = 0;
    
    	if((left1 == 1)&&(left2 == 1)&&(right1 == 1)&&(right2 == 0))   //1 1 1 0
    		flag = 3;
    	
    	if((left1 == 1)&&(left2 == 1)&&(right1 == 1)&&(right2 == 1))   //1 1 1 1
    		flag = 5;
    	
    	switch(flag)
    	
    {
    		case 0:Forward();break;
    		
    		
    		case 1:TurnRight1();break;
    		
    		
    		case 2:TurnRight2();break;
    		
    		
    		case 3:TurnLeft1();break;
    		
    		
    		case 4:TurnLeft2();break;
    
    
    		default:Stop();break;
    	}
    }
    
    void InterruptTime0() interrupt 1
    {
    	PWMCnt1++;
    	PWMCnt2++;
    	
    	if(PWMCnt1  >= 200)
    	{
    		PWMCnt1 = 0;
    	}
    	if(PWMCnt1 <= cntPWM1)
    	{
    		ENA = 1;
    	}
    	else
    	{
    		ENA = 0;
    	}
    
    	if(PWMCnt2 >= 200)
    	{
    		PWMCnt2 = 0;
    	}
    	if(PWMCnt2 <= cntPWM2)
    	{
    		ENB = 1;
    	}
    	else
    	{
    		ENB = 0;
    	}
    
    	TH0 = (65536 - 50)/256;
    	TL0 = (65536 - 50)%256;
    }
    
    展开全文
  • 51单片机通过WIFI模块ESP8266控制LED灯

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

    万次阅读 多人点赞 2019-06-09 09:04:03
    单片机内部结构 单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、...
  • 轻松学习单片机

    千人学习 2020-10-14 19:44:22
    本课程的目标是帮助零基础的学员轻松地实现单片机入门。课程不采用传统的学校教学方式,而是从实用的角度讲解单片机,特别是利用代码自动生成工具,产生驱动基本外围功能的程序代码。为了学员的理解,课程中加入了...
  • 单片机入门

    万次阅读 多人点赞 2017-12-24 21:50:19
    单片机入门
  • 设计单片机的Proteus仿真电路,实现如下功能:控制P0口数码管循环显示0-9; 按下上面开关,控制P2口数码管依次显示0-9;按下下面开关,控制P1口数码管依次显示0-9。
  • 单片机串口通讯RXD与TXD如何对接详解(独家!)

    万次阅读 多人点赞 2011-07-25 16:39:06
    相信很多人都对单片机与计算机或者芯片通信时,RXD与TXD如何连接比较困惑。因为在一些电路图中,有的是直连接法,有的是交叉接法,让人有点摸不着头脑。 首先需要明白两个概念,就是DTE和DCE。DTE是指数据终端设备,...
  • 51单片机通过ESP8266模块与手机进行通讯(单片机

    万次阅读 多人点赞 2018-02-08 18:29:43
    本文章内容已经弃用,最新内容请参考ESP8266系列ESP-01S模块的配置使用(51单片机) Step1:配置ESP8266 通过USB转TTL模块把ESP8266模块和电脑连接起来,如图 把ESP8266模块的VCC,GND,CH_PD,UTXD,URXD口分别接USB转...
  • 51单片机入门教程(2)——实现流水灯

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

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

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

    万次阅读 多人点赞 2018-07-19 11:42:24
    单片机入门 什么是单片机 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器...
  • 基于51单片机的交通灯控制系统设计

    万次阅读 多人点赞 2018-11-24 13:38:11
    本设计为基于51单片机交通灯系统的设计,采用模块化、层次化设计。运用单片机AT89C51进行数据的分析和处理,为显示提供信号,显示部分采用8位数码管显示倒计时值。系统电路简单、集成度高、工作稳定、调试方便、检测...
  • STM32单片机和51单片机区别

    万次阅读 多人点赞 2017-05-26 09:44:10
    单片机简介单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、...
  • 设计单片机的Proteus仿真电路,实现如下功能:P1口控制8个发光二极管,P0连接数码管;利用定时器/计数器T0产生定时,采用中断方式,让8个发光二极管每隔1s依次点亮,全亮后全灭,再次开始循环;数码管从1开始,每...
  • 使用st-link+keil下载和调试华大单片机的教程 首先说明一下,手里只有M0和M4内核的芯片,也就只测试了这两种,但是理论上讲这个方法是通用的 一、下载支持包 从华大官网找到你芯片资料页,下载DDL库压缩包和IDE支持...
  • 基于STC89C51单片机的温湿度检测系统

    万次阅读 多人点赞 2019-02-21 21:04:30
    基于STC89C51单片机的温湿度检测系统 摘 要:设计一种计算机教室温度、湿度检测系统,用于控制机房的温、湿度。整个系统采用STC89C51微处理器作为主控系统,硬件电路主要包括51单片机、DHT11温湿度传感器、显示器...
  • 巫妖王51单片机开发板配套视频课程

    万人学习 2017-12-19 16:42:57
    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。
  • 基于51单片机电子时钟

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

    千次阅读 多人点赞 2018-05-09 09:08:55
    有些学生觉得单片机很难学其实掌握入门方法也不难 开发环境搭建,不用多说,看网上教程 拿到51单片机该如何做? 首先打开看51单片机的管脚分布,51单片机是8个引脚一组,为什么是8个一组呢? 因为它是8位...
  • 单片机20个实例超详细图文教程

    千次下载 热门讨论 2011-11-09 12:53:48
    非常有用,值得收藏 单片机20个实例超详细图文教程
  • 单片机寄存器

    千次阅读 2019-05-30 14:10:30
    单片机寄存器其实就相当于一个变量,只不过这个变量在固定的地址,有一个特殊的名称(当然也不强制)。 初学者对寄存器的操作比较困难的原因不是汇编语言或C语言使用的不熟,而是对寄存器的陌生。 单片机中存储器的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,587
精华内容 71,034
关键字:

单片机