分享
分享赚钱 收藏 举报 版权申诉 / 43

类型计算机控制小车走迷宫 实验报告.doc.doc

  • 上传人:精品资料
  • 文档编号:7953884
  • 上传时间:2019-05-31
  • 格式:DOC
  • 页数:43
  • 大小:9.71MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    计算机控制小车走迷宫 实验报告.doc.doc
    资源描述:

    1、本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐精品文档碱性玫瑰精 整理2011 年 10 月 2 号如需购买 碱性玫瑰精 ,请留下以下联系方式备用本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐电话:0317-7896222 0317-7896333 传真:0317-7727900河北省东光宏浩染料 网址:联系人:刘雨桐科技创新【3 】实验报告项目名称:计算机控制小车走迷宫完成者: M13 小组刘璐

    2、 F0803033 5080309913本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐龚路 F0803024 5080309760盛立昕 F0803024 5080309768汪浩森 F0703034完成时间:2009 年 06 月摘 要本项目实现功能为计算机控制小车走迷宫。利用摄像头将迷宫及小车图片实时传入计算机-;通过 DirectShow 及 OpenCV 对图像进行采样及处理 -;使用 DFS 找出迷宫最短路径-;然后根据摄像头读入的小车位置和方向信息-;生成指令-;并通过串口传递给AT

    3、89S52 单片机-;使之前进、后退或转弯-;从而以最优的路线走出迷宫。关键词:图像处理-;迷宫算法-;单片机- ;串口通信小 组 成 员 简 介姓名 性别 班级 学号 邮箱 备注刘璐 女 F0803033 5080309913 组长龚路 男 F0803024 5080309760 组员本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐盛立昕 男 F0803024 5080309768 组员汪浩森 男 F0703034 5070309861 组员龚路编写计算机部分程序框架-;编写小车定位-;

    4、控制小车行走-;单片机和小车通信的程序盛立昕本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐单片机硬软件以及小车的焊接汪浩森本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐编写从图像中识别迷宫以及从迷宫中寻找路径的程序-;并且制作检测网页刘璐联系组员-;装饰小车- ;写实验报告小组成员合影本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:

    5、0317-7723188 刘雨桐目 录整体介绍 10概述 10名词定义 10项目组成 12图像处理 12本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐整体介绍概述这是编者在 2009 年上学年参加电院科技创新【3 】课程- ;完成“计算机控制小车走迷宫” 项目后所写的实验报告-;供计算机及电子技术爱好者参考。名词定义单片机小系统:包括 CPU(进行运算、控制)、 RAM(数据存储)、ROM(程序存储)、输入/输出设备(串行口、并行输出口等)的一块集成电路。OpenCV: Intelsbit BI

    6、T0 = 0x81 0;上述两行将 BYTE0 映射到 0x80 这个地址-;将 BIT0 映射到 0x81 的第 0 位。unsigned char cc, cmd, param;unsigned char leftspeed, rightspeed;sbit left0 = P0 0;sbit left1 = P0 1;sbit left2 = P0 2;sbit right0 = P0 4;sbit right1 = P0 5;sbit right2 = P0 6;unsigned char pwm;本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买

    7、染料 及包装机械 请致电:0317-7723188 刘雨桐unsigned char light;上面定义了一些变量。注意到我们使用的都是 unsigned char 类型- ;而不是平时写程序常用的 int。这是因为 S52 是一个 8 位的处理器-;一条指令只能处理 8 位数据-;如果超过 8 位-;在进行运算的时候就会生成很多指令来处理进位-;既增加了程序体积- ;又影响执行速度。unsigned char 的表示范围是 0 到 255-;在编写单片机程序时-;只要把数据控制在这个范围内-;就可以很方便地使用 unsigned char 来存储数据。另外-;在 S52 上编程要尽量避免使

    8、用指针和递归-;它们都会生成你无法想象的繁多的汇编代码。中间用 sbit 定义了 6 个变量-;对应到 P0 寄存器的 6 个位。 P0 是一个特殊的寄存器- ;在 S52 上有 8 个引脚对应 P0 的 8 个位-;通过查看电路图可知 -;P0 的0、1 、2 、4、5、6 位对应的引脚连接着电机控制芯片。电机控制芯片相当于一个缓冲器-;可以驱动大电流的电机。因此我们在程序里改变 P0 的这些位- ;就可以调节电机的工作状态。void main(void)你看到了万恶的 void main。没错-;C89 和 C99 以及任何一个 C 标准里都规定 main 函数必须返回 int-;但是这里

    9、的 main 函数不需要返回值-;因为 main 函数返回以后单片机将没有任何程序可以执行-;或者说-;我们根本不该让 main 函数返回。还记得程序设计课上-;老师说- ;main 函数如果不需要返回值可以是 void 类型- ;真的很无语。不知道这种普遍的错误说法是来自单片机呢-;还是来自万恶的 java 呢本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐/ initialize motorP0 = 0x11;初始化 P0 寄存器 -;将第 0 位和第 4 位设置为高电平-;查看电路图以及查看

    10、 I298 的pdf 可知-;这两个脚是左右两个电机的总开关-;也就是说 -;只有设置了这两位-;P0的 1、2、5 、6 位才会对电机有影响。/ initialize variablesleftspeed = rightspeed = 0x0;light = 0xff;上面初始化了几个全局变量-;其中 leftspeed 和 rightspeed 分别记录左右电机速度-;light 记录发光二极管的发光时间。/ timer 0 in mode 2TMOD |= 0x2;/ set timer speedTH0 = TL0 = 0xF0;/ enable timer 0 interruptET

    11、0 = 1;本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐/ uart in mode 1 (8 bit), REN=1SCON = 0x50;/ Timer 1 in mode 2TMOD |= 0x20;/ 1200 Bds at 11.059MHzTH1 = TL1 = 0xE8;/ set serial port priorityPS = 1;/ Enable serial interruptES = 1;/ Enable global interruptEA = 1;/ Timer 0

    12、 runTR0 = 1;本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐/ Timer 1 runTR1 = 1;这一长串代码主要干了三件事:初始化定时器 0、初始化定时器 1 和初始化 UART(串口通信)-;同时还打开了一些中断。我们首先从定时器讲起-;定时器- ;又称计数器-;是 S52 单片机提供的一种用于定时/计数的装置(废话 - -)。如果一个定时器作为定时器使用-;并且在运行状态- ;那么每经过 12 个振荡周期-;定时器的数值就会加 1-;每次加到 0 (你是不是想问:怎么会加到

    13、0 呢?)的时候-;就会做相应的事情。例如- ;如果定时器的中断是开着的-;那么便会执行中断处理程序。定时器有四种模式-;分别是模式 0、模式 1、模式 2 和模式 3 (又是废话 - -)。一个定时器有两个 8 位的寄存器- ;比如 Timer0 有 TH0 和 TL0-;Timer1 有 TH1 和 TL1-;不同的模式只是对这两个寄存器的利用方式不同而已。比如我们这里用到的模式 2-;也是最为常用的模式-;叫做 8-bit Auto-Reload。每当 TLx 加到 0-;并做完该做的事情以后- ;芯片会自动将 THx 的值复制给 TLx(x=0,1,.)-;这样可以很方便地设定定时器的

    14、间隔。我们晶振的频率是 11.0592MHz-;现在设定 TH1=0xE8-;于是每 12*(0x100-0xe8)=12*24=288 个振荡周期 -;定时器会触发一次-;即定时器的触发频率为11.0592MHz/288=38.4kHz。定时器的模式通过 TMOD 寄存器设置。 TMOD 分为两部分 -;高 4 位设置定时器 1-;低4 位设置定时器 0。事实上 S52 有三个定时器- ;分别叫做定时器 0、定时器 1 和定时器2-;不过定时器 2 比较特殊-;我们一般只用前两个定时器。那么-;这一切和串口有什么关系呢?本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410

    15、007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐我们知道-;串口通信有一个固定的频率-;那么单片机是怎么样控制串口的呢?没错-;是通过定时器。事实上-;串口也有模式-;通过 SCON 寄存器指定。不过我没有具体研究不同的串口模式有哪些区别-;你需要知道的是-;当 SCON=0x50 时-;串口的波特率是 Timer1 频率的 1/32-;因此-;这里设定的串口波特率是 38400/32=1200bps。ET0、ES、EA 等 E 开头的东西表示 Enable Interrupt-;也就是打开中断。INT0、Timer0、Int1 、Timer1、UART 、Timer

    16、2 分别对应编号为 0、1 、2、3 、4、5 的中断-;并且优先级依次降低。高优先级的中断执行时-;低优先级的中断会被屏蔽。比如-;如果代码一直在 Timer0 的中断里-;那么 UART 的中断就不会被触发了。为了解决这个问题-;引入了 PX0、PT0、PX1、PT1、PS、PT2 六个提升中断优先级的寄存器。比如上面代码设置 PS=1-;就是提升了串行中断的优先级 -;这样-;即使代码在 Timer0 的中断处理程序里-;也不影响串行数据收发。顺便说一下-;S52 的 Timer2 也可以用于串口通信-;当定时器不够用时可以使用。另外-;S52 还有一个内置的时钟信号发生器-;专用于串口

    17、通信 -;产生的时钟信号比使用定时器更稳定-;这几种方式我们都测试成功过-;为了简洁-;我们仍使用 Timer1。关于定时器以及串口更详细的介绍-;可以参考 ATMEL 的官方文档:http:/ waitwhile (1) PCON |= 1; / IDLE本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐上面这个循环是为了让程序不退出-;从而一直等待中断。 PCON 的第 0 位控制着 IDLE模式-;进入之后- ;处理器会暂停- ;直到中断产生-;可以起到一定的省电作用。void trap01(

    18、void) interrupt 1 using 1left2 = (pwm leftspeed);right2 = (pwm rightspeed);if (+pwm = 0x7f) pwm = 0x0;if (light) T1 = 0;-light; else T1 = 1;上面的 trap01 函数负责处理中断 1-;也就是定时器 0 的中断。注意到 interrupt 1 using 1 的语法。这是 Keil C 引入的特殊语法-;interrupt n 表示这个函数处理编号为 n 的中断-;using m 表示使用第 m 组寄存器。S52 一共有 4 组寄存器-;编号为 0、1、2

    19、 、3- ;非本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐中断函数默认使用寄存器组 0-;在中断处理程序中使用单独的寄存器组可以避免寄存器压栈所带来的开销。这段程序干了两件事。一是每次将 pwm 加 1-;如果 pwm 小于 leftspeed-;就让左电机的第二脚为高电平-;否则为低-;同理右电机。这种通过调节方波占空比来调节电机转速的方法叫做 pwm。二是如果 light 不为 0-;就将 T1 设为 0-;同时令 light 减 1;否则将 T1 设为 1。查看电路图可知-;T1 控制着

    20、发光二极管-;T1=0 时亮-;T1=1 时灭。这样-;只要我们将 light 设置为 0xff-;发光二极管就可以闪亮一下。下面是第三个函数-;也是最后一个函数-;负责处理串口中断。有两种情况会触发串口中断-;分别是接收数据和发送数据-;表示数据接收或发送完毕。对于发送数据产生的中断-;我们只需要简单地将发送标志 TI 置 0 即可。而对于接收数据产生的中断- ;我们需要对接收到的数据进行处理。void trap04(void) interrupt 4 using 2/ if reception occurif (RI = 1) / shift the buffercc = cmd;cmd

    21、= param;本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐/ read receive dataparam = SBUF;上面三行将 cmd 赋值给 cc-;param 赋值给 cmd-;并从 SBUF 中读出当前接收到的字节赋值给 param-;类似于循环移动。/ send back receive dataSBUF = param;这一行是将 param 的值赋值给 SBUF-;从而把接收到的数据发送出去。从这里我们可以更加深刻地理解前面提到的单片机内存映射。对于特殊的内存地址-;它并不

    22、是对应一块内存-;而是映射到具体的“设备” 上。比如-;你向 SBUF 写入一个字节-;实际作用是把这个字节发送出去-;并不是将 SBUF 的这一字节内存修改成这个字节。写入后立即读取 SBUF-;读到的并不是你刚才写入的值-;而是接收缓冲区中的上一个值。/ clear reception flag for next receptionRI = 0;上面这一行是将接收标志 RI 置 0-;单片机是根据 RI 和 TI 的设置来产生串口中断的-;因此-;如果在退出中断处理程序之前没有将它们置 0-;那么会不停地产生串口中断。下面到了数据处理部分。为了能够让小车和电脑有效地通信-;我们必须制定一种

    23、通信协议。在这里-;我们将连续的三个字节设定为一个数据包。第一个字节恒为 0xcc-;表本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐示一个数据包的开始-;选用这个字节是因为其二进制编码为 11001100-;不容易由随机信号产生。第二个字节表示指令内容-;第三个字节表示指令参数。指令包括l、r 、h、t- ;分别设置左、右轮速度-;以最快的速度制动以及测试。当指令为 l 和 r 时-;param 为一个-128 至 127 范围的数字-;表示速度-;正值表示前进-;负值表示后退。另外-;我们的

    24、所有指令都是对状态的设置-;而不是具体的动作-;因此可以通过多次发送同一指令来降低丢包率。/ check if receive data is started by 0xccif (cc = 0xcc) switch (cmd) case l:if (param else left1 = 0;leftspeed = param 如果表达式 param case r:if (param else right1 = 0;rightspeed = param break;case h:left1 = left2 = right1 = right2 = 0;leftspeed = rightspeed

    25、 = 0;break;注意这种停止比断电速度更快。我们都知道将电机两脚短路时转动电机的阻力会增大-;而设置 left1=left2=0-;把电机两脚同时置为低电平 -;就相当于短路电机。pdf 上也明确表示可以这样使用。本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐case t:break;default:return;cc = 0; cmd = 0; param = 0; light = 0xff;执行到这里说明接收到了一个合法数据包-;我们将缓冲区清零 -;避免数据包粘连问题 (比如 par

    26、am=0xcc-;然后收到的随机数据被解释为合法命令)-;然后让 light=0xff-;发光二极管会闪烁一下-;表示收到数据。 else TI = 0;PC 机部分我们的程序在 vc2008 环境下开发-;使用 ATL 创建用户界面-;DirectShow 采集视频 (参考了 ARFrameGrabber 的代码)-;OpenCV 库辅助处理图像 -;Win32 SDK 收发串口数据。程序的总体架构为渲染器 过滤器架构。渲染器是全局唯一的 -;负责处理每一帧图像。而过滤器有多个-;不同的过滤器有不同的功能。渲染器初始化后 -;首先创建一个线程-;然后等待摄像头返回一帧视频-;接着分别调用三个

    27、链表上的过滤器。过滤器分本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐为三种-;第一种叫做 Buffer Filter-;允许对得到的图象进行修改(比如翻转、调节白平衡)-;一般用于预处理。第二种叫做 DC Filter-;不允许修改图像缓存- ;但是允许在 DC上绘图。第三种叫做 Idle Filter-;一般用于控制帧速率等后续工作。渲染器在调用完所有的 Buffer Filter 之后-;创建一个 Memory DC。DC-;即设备上下文-;是 Windows GDI 的一种设备无关的东西

    28、- ;即你可以用统一的函数在上面画图。渲染器把 Buffer 里的图像画到 Memory DC 上-;并把该 DC 传给各 DC Filter 画上更多的东西 (比如小车位置及方向标识、透视变换后的迷宫示意图等) 。调用完 DC Filter 之后-;渲染器会把 Memory DC 的内容画到窗口上。最后调用所有的 Idle Filter。这部分具体的代码可以参考 renderer.cpp (15.2KB)。值得一提的是-;在写这部分代码时-;我发现了一个 Win7 RC Build 7100 的 0day。(没错-;是 0day:) 事情的来由是这样的:代码的全部编写和调试工作都是在一台装有

    29、 Win7操作系统的电脑上进行的。在调试的过程中-;电脑会不时地 BSOD(蓝屏) 。我们知道-;Windows 操作系统在内核出错时会调用 KeBugCheck/Ex 函数产生蓝屏- ;为什么在执行我们的用户态代码时也会蓝屏呢?考虑到使用的 Win7 操作系统是测试版- ;很有可能存在 bug-;我们的程序又比较特殊-;负责绘制窗口的代码遍及多个线程-;我便把Core Dump (当时还没有出 7100fre 的 Symbol-;分析比较困难) 发给国内知名的安全专家 MJ0011 (360 安全卫士作者) 分析- ;仅过了一下午-;他便给出了结论:这确实是0day。更多信息可以参考:htt

    30、p:/ 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐首先要介绍的是上图所示的 CamShift 过滤器-;这个过滤器的算法来自 OpenCV 的CamShift 例程- ;根据颜色信息来跟踪运动物体。其大致思路是将 RGB 色彩空间转换为HSV-;其三个分量分别表示色调、饱和度和亮度-;只需要对它们进行合理的过滤即可-;定位时-;每次都从上一次位置的中心点出发-;向四周扩展-;这样既提高了速度- ;又降低了颜色相近的无关物体对定位的干扰-;付出的代价是假设小车不会瞬移 :)。在测试时-;我们使用虚拟摄像

    31、头播放跑跑卡丁车录像-;发现定位十分准确。本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐上面是迷宫识别过滤器-;首先根据用户输入的四个点 -;使用cvGetPerspectiveTransform 建立透视矩阵-;然后将迷宫的节点使用 cvMatMul 进行矩阵乘法-;得到原图中的坐标- ;并统计所有相邻节点连线为长轴 (水平或竖直) 之间的一个椭圆区域像素的红色分量 (因为迷宫是蓝色或黑色-;因此统计红色分量效果最好)-;如果低于设定的阈值-;则判断为有边-;实验后发现识别效果很好。本文档由

    32、碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐最后一个要介绍的过滤器负责指令生成。小车定位过滤器得到车头和车尾坐标后传递给迷宫识别过滤器-;生成路径以后再传递给该过滤器。该过滤器通过当前车头和车尾的坐标判断小车的方向-;结合目标点坐标判断当前动作 (转向、微调、前进 or 后退) 。如图所示-;右上角的粉红色点是设定的迷宫出口-;右边的蓝色点是迷宫识别过滤器生成的路径-;左边是对小车的定位以及当前动作。此外-;PC 端程序的源代码里还有很多精彩的地方-;比如 settings.cpp 是一个用来保存设置的

    33、类-;所有类都可以通过继承这个类来实现对设置的保存。exception.cpp 负责最终的异常处理。它会很专业地显示发生未处理异常时各寄存器的值。camera.cpp 实现了选择摄像头的用户界面-;从而使得程序支持多摄像头的环境。说个笑话 -;本来打算做即插即用模块-;也就是说-;当你插上小车的时候- ;程序会提示:“检测到小车”:)PC 端程序就介绍这么多了 -;有兴趣的同学可以自行查看这 100KB 的源代码。本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐硬件介绍小车结构小车分为三个部分-;

    34、主板部份、车体部份和控制芯片部份。主板部分负责接受 8V 直流电源 -;并向小车的电机提供 8V 电压-;向电路板上的芯片提供工作电压。车体部份主要为上层芯片和整体提供支撑-;它的电机为小车提供动力前进。控制芯片部份负责识别并处理收到的信号-;并输出控制信号 -;控制小车电机的运转。信号收发模块信号收发模块分为收发两部分-;即发送部分与串口连接 -;接受串行通讯标准的 TTL 高低电平-;将其调制后发送出去。接受部份将发出的信号转化成标准串行通讯信号发送给小车。接收模块的 Vcc 与 89S52上层版的 Vcc 连接-;GND 接电路板的任一接地端。信号输出端与 89S52 上层版的 RxD

    35、连接- ;由于主板三极管通常是坏的-;可将上层板RxD 与底板分开。 本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐USB 转 RS232 线此串口线将增加电脑一个 COM 口- ;根据电脑的不同-;初始被赋予的 COM 口地址也不同-;但一般为 COM4-;可以在设备管理器中对端口地址进行修改。对于电脑与小车进行串行通信来说该线是透明的。其 USB 端接电脑-;TxD 接无线发送模块的数据端-;Vcc 与发送模块 Vcc 相连- ;GND 与发送模块 GND 连接。 电脑及摄像头电脑有两个以上

    36、 USB 口-;摄像头使用普通 USB 摄像头。本次实验主要用到两块控制芯片-;一块是 AT89S52-;另一块芯片是 L298N-;用它来分别控制两个电机。AT89S52 是一种低功耗、高性能 CMOS8 位微控制器-;具有 8K 在系统可编程 Flash 存储器。AT89S52 使用 Atmel 公司高密度非易失性存储器技术制造-;与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程 -;亦适于常规编程器。在单芯片上-;AT89S52 拥有灵巧的 8 位 CPU 和在系统可编程 Flash-;使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有

    37、效的解决方案。AT89S52 具有以下标准功能: 8k 字节 Flash-;256 字节 RAM-;32 位 I/O 口线-;看门狗定时器-;2 个数据指针-;三个 16 位定时器/计数器-;一个 6 向量 2 级中断结构-;全双工串行口-;片内晶振及时钟电路。另外-;AT89S52 可降至 0Hz 静态逻辑操作-;支持 2 种软件可选择节电模式。本文档由 碱性玫瑰精 整理提供 代专利下载 1 元/ 篇 QQ 1410007848买 染料 及包装机械 请致电:0317-7723188 刘雨桐空闲模式下-;CPU 停止工作 -;允许 RAM、定时器/ 计数器、串口中断继续工作。掉电保护方式下-;RAM 内容被保存-;振荡器被冻结-;单片机一切工作停止- ;直到下一个中断或硬件复位为止。其 PDIP 图如下:

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:计算机控制小车走迷宫 实验报告.doc.doc
    链接地址:https://www.docduoduo.com/p-7953884.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开