单片机最小系统
单片机最小系统
摘要:近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
单片机最小系统是在以51单片机为基础上扩展,使其能更方便地运用于测试系统中。本设计主要在51单片机上扩展I/O口,扩展定时器定时范围,扩展键盘显示接口并写好底层程序。
关键词:最小系统,扩展,STC89C51, I/O接口
Abstract
With the infiltration in the social field of the computer in recent years, the application of the one-chip computer is moving towards deepening constantly, drive tradition is it measure crescent benefit to upgrade day to control at the same time. In measuring in real time and automatically controlled one-chip computer application system, the one-chip computer often uses as a key part, only one-chip computer respect knowledge is not enough, should also follow the structure of the concrete hardw are , and direct against and use the software of target’s characteristic to combine concretly, in order to do perfectly.
The smallest system one chip computer is in expands at the base of MCS-51 one chip computer. Make it used more convient in the test system. this design mainly expands I/O in the take 51 on chip computer, expands the timer fixed time scope, expands the keyboard to demonstrate the connection and writes the first floor procedure.
Keyword :minimum system, expand,STC89C52, I/O
目 录
1.绪论 .............................................................................................. 5
2.单片机概述 .................................................................................. 6
2.1 什么是单片机.................................................................................................. 6
2.2 单片机的发展简史.......................................................................................... 6
2.3 单片机的特点.................................................................................................. 7
2.4 单片机的应用领域.......................................................................................... 8
2.5 主流单片机简介............................................................................................ 10
3.单片机系统的结构 . ................................................................... 12
3.1 单片机的内部结构........................................................................................ 12
3.2 单片机的引脚功能........................................................................................ 12
4.单片机最小系统 ........................................................................ 14
4.1 单片机最小系统介绍.................................................................................... 14
4.1.1 电源供电模块...................................................................................... 14
4.1.2 复位电路.............................................................................................. 15
4.1.3 振荡电路.............................................................................................. 16
4.2 单片机最小系统扩展部分............................................................................ 17
4.2.1 LED电路 . ............................................................................................. 17
4.2.2 蜂鸣器电路.......................................................................................... 19
4.2.3 系统的数码管电路.............................................................................. 21
4.2.4 系统的键盘电路.................................................................................. 24
4.2.5 A/D电路 . .............................................................................................. 33
4.2.6 D/A电路 . .............................................................................................. 37
4.2.7 系统串行通信电路.............................................................................. 41
5.USB 转TTL 电路 ..................................................................... 44
5.1 USB转TTL 电路介绍 .................................................................................. 44
6.工具软件介绍 ............................................................................ 47
6.1 Keil C51软件介绍 ......................................................................................... 47
6.1.1 Keil C51概述 ....................................................................................... 47
6.1.2 Keil µVision2集成开发环境介绍 . ...................................................... 47
6.1.3 Keil µVision2集成开发环境的界面 . .................................................. 48
6.2 STC-ISP软件介绍 ......................................................................................... 49
1.绪论
由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多集成电路生产厂家相继推出了各种类型的单片机,在单片机家族的众多成员中MCS-51系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。目前,可用于MCS-51系列单片机开发的硬件越来越多,与其配套的各类开发系统、各种软件也日趋完善,因此,可以极方便地利用现有资源,开发出用于不同目的的各类应用系统。
单片机最小系统是在以MCS-51单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为在实时检测和自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大。本课题设计主要在MCS-51单片机上扩展I/O口,扩展定时器定时范围,扩展键盘显示接口。适合于我们学生用于单片机的学习掌握和一些各种科研立项等的需求。因此,研究单片机最小系统有很大的实用意义。
本文首先在绪论介绍了此系统的研究意义和使用的开发环境,以及使用MCS-51系列的单片机芯片。第2章论述单片机的发展简史、特点、应用领域以及一些主流单片机简介了;第3章对MCS-51系列单片机的系统结构做了简单的介绍;第4章着重描述了系统硬件电路设计、软件参考程序以及所使用的各种芯片功能与特性;在第5章中重点剖析了下载器的使用、原理以及主控芯片的功能和特性;第6章主要讲述了在开发过程中所用工具软件的开发流程和界面介绍。
2.单片机概述
2.1 什么是单片机 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit ),常用英文字母的缩写MCU 表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU 的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU 集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。用专业语言讲,单片机就是在一块硅片上集成了微处理器、存储器及各种输入/输出接口的芯片。
2.2 单片机的发展简史 早期的单片机都是8位或4位的。其中最成功的是INTEL 的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM 系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz ,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端[1]的型号也只有10美元。
从8位单片机来看,那么单片机的发展历史大致可分为以下几个阶段:
(1)第一阶段(1976-1978):单片机的控索阶段。以Intel 公司的MCS – 48为代表。MCS – 48的推出是在工控领域的控索,参与这一控索的公司还有Motorola 、Zilog 等,都取得了满意的效果。这就是SCM 的诞生年代,―单机片‖一词即由此而来。
(2)第二阶段(1978-1982)单片机的完善阶段。Intel 公司在MCS – 48 基础上推出了完善的、典型的单片机系列MCS –51。它在以下几个方面奠定了典型的通用总线型单片机体系结构。
①完善的外部总线。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。
②CPU 外围功能单元的集中管理模式。
③体现工控特性的位地址空间及位操作方式。
④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
(3)第三阶段(1982-1990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。Intel 公司推出的MCS – 96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。随着MCS – 51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。
(4)第四阶段(1990至今):微控制器的全面发展阶段。随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。
当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows 和Linux 操作系统。
2.3 单片机的特点
(1)高集成度,体积小,高可靠性
单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗
工业噪音性能优于一般通用的CPU 。单片机程序指令,常数及表格等固化在ROM 中不易破坏,许多信号通道均在一个芯片内,故可靠性高。
(2)控制功能强
为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,I/O口的逻辑操作及位处理能力,非常适用于专门的控制功能。
(3)低电压,低功耗,便于生产便携式产品
为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8V ~
3.6V ,而工作电流仅为数百微安。
(4)易扩展
片内具有计算机正常运行所必需的部件。芯片外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。
(5)优异的性能价格比
单片机的性能极高。为了提高速度和运行效率,单片机已开始使用RISC 流水线和DSP 等技术。单片机的寻址能力也已突破64KB 的限制,有的已可达到1MB 和16MB ,片内的ROM 容量可达62MB ,RAM 容量则可达2MB 。由于单片机的广泛使用,因而销量极大,各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。
2.4 单片机的应用领域
(1)单片机在智能仪器仪表中的应用
在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。
(2)单片机在机电一体化中的应用
机电一体化是机械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,例如微机控制的车床、钻床等。单片机作为产品中的控制器,能充分发挥它的体积小、可靠性高、功能强等优点,可大大提高机器的自动化、智能化程度。
(3)单片机在日常生活及家用电器领域的应用
自从单片机诞生以后,它就步入了人类生活,如洗衣机、电冰箱、空调器、电子玩具、电饭煲、视听音响设备等家用电器配上单片机后,提高了智能化程度,增加了功能,倍受人们喜爱。单片机将使人类生活更加方便、舒适、丰富多彩。
(4)在实时过程控制中的应用
用单片机实时进行数据处理和控制,使系统保持最佳工作状态,提高系统的工作效率和产品的质量。
(5)办公自动化设备
现代办公室使用的大量通信和办公设备多数嵌入了单片机。如打印机、复印机、传真机、绘图机、考勤机、电话以及通用计算机中的键盘译码、磁盘驱动等。
(6)商业营销设备
在商业营销系统中已广泛使用的电子称、收款机、条形码阅读器、IC 卡刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统、冷冻保险系统等都采用了单片机控制。
(7)在计算机网络和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
(8)单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
(9)汽车电子产品
现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器(黑匣子)等都离不开单片机。
(10)航空航天系统和国防军事、尖端武器等领域。
2.5 主流单片机简介 (1)8051单片机
最早由Intel 公司推出的8051/31类单片机也是世界上用量最大的几种单片机之一。由于Intel 公司在嵌入式应用应用方面将重点放在286、386、奔腾等与PC 类的高档芯片的开发上,8051单片机主要由Philips 、Dallas 、Siemens 、Atmel 、华邦、LG 等公司接手生产。这些公司都以MCS —51中的基础结构8051为基核推出了许多各具特色、具有优异性能的单片机。这样,把这些厂家以8051为基核推出的各种型号的兼容型单片机统称为51系列单片机。Intel 公司MCS —51系列单片机中的8051是其中最基础的单片机型号。
(2)ATMEL 单片机
ATMEL 公司的90系列单片机是增强型RISC 内载Flash 的单片机,通常为AVR 单片机。AVR 单片机是Atmel 公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业。AVR 单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。
(3)Microship 单片机
PIC 单片机系列是美国微芯公司(Microship )的产品,是当前市场份额增长最快的单片机之一。CPU 采用RISC 结构,分别有33、35、58条指令(视单片机的级别而定),属精简指令集。而51系列有111条指令,AVR 单片机有118条指令,都比前者复杂。采用Harvard 双总线结构,运行速度快(指令周期约160~200ns) ,它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(个别除外),这也是高效率运行的原因之一。此外,它还具有低工作电压、低功耗、驱动能力强等特点。
(4)Motorola 单片机
Motorola 是世界上最大的单片机厂商。从M6800开始,开发了广泛的品种,4位、8位、16位和32位的单片机都能生产, Motorola 单片机的特点之一是在同样单片机种类的速度下所用的时钟频率较Intel 类单片机低得多,因而使得高频噪声低,抗干扰能力强,更适合于工控领域及恶劣的环境。
(5)Micon 单片机
工业级OTP 单片机,Micon 公司生产,与PIC 单片机管脚完全一致,海尔集团的电冰箱控制器,TCL 通信产品,长安奥拓铃木小轿车功率分配器就采用这种单片机。
(6)Scenix 单片机
Scenix 公司推出的8位RISC 结构SX 系列单片机与Intel 的Pentium II等一起被评选为1998年世界十大处理器。在技术上有其独到之处:SX 系列双时钟设置,指令运行速度可达50/75/100MIPS(每秒执行百万条指令,XXX M Instruction Per Second);具有虚拟外设功能,柔性化I/O端口,所有的I/O端口都可单独编程设定,公司提供各种I/O的库函数,用于实现各种I/O模块的功能,如多路UART 、多路A/D、PWM 、SPI 、DTMF 、FS 、LCD 驱动等等。采用EEPROM/Flash程序存储器,可以实现在线系统编程。通过计算机RS232C 接口,采用专用串行电缆即可对目标系统进行在线实时仿真。
(7)华邦单片机
华邦公司的W77、W78系列8位单片机的脚位和指令集与8051兼容,但每个指令周期只需要4个时钟周期,速度提高了三倍,工作频率最高可达40MHz 。同时增加了WatchDog Timer、6组外部中断源、2组UART 、2组Data pointer以及Wait state control pin。W741系列的4位单片机带液晶驱动、在线烧录、保密性高、低操作电压(1.2V~1.8V)。
3.单片机系统的结构
3.1 单片机的内部结构 一个基本的MCS-51单片机通常包括:中央处理器、ROM 、RAM 、定时/计数器和I/O口等各功能部件,各个功能由内部的总线连接起来,从而实现数据通信。其内部框图如图3.1所示。
图3.1 MS51单片机结构图
3.2 单片机的引脚功能
常见的51单片机中一般采用双列直插(DIP )封装,共40个引脚。图3.2为引脚排列图。其中的40个引脚大致可以分为4类:电源、时钟、控制和I/O引脚。
图3.2 STC89C51引脚排列图
1)电源
(1)VCC :芯片电源端,一般为+5V;
(2)GND :接地端。
2)时钟
(1)XTAL1:晶体振荡电路的反相输入端
(2)XTAL2:晶体振荡电路的输出端。
3)控制线
MCS-51单片机的控制线有4根,其中3根是复用线,具有两种功能。
(1)ALE/PROG_____________:地址锁存允许/编程脉冲
(2)PSEN :外部ROM 读选通信号
(3)RST :复位引脚
(4)————EA /VPP:内外ROM 选择/EPROM编程电源
4)I/O引脚
MCS-51单片机共有4个8位并行I/O端口,共32个可编程I/O引脚。
((( (
4.单片机最小系统
4.1 单片机最小系统介绍
单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。最小系统原理图如图4.1所示。
图4.1最小系统电路图
4.1.1 电源供电模块
图4.1.1 电源模块电路图
对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源模块的稳定可靠是系统平稳运行的前提和基础。51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。
此最小系统中的电源供电模块的电源可以通过计算机的USB 口供给,也可使用外部稳定的5V 电源供电模块供给。电源电路中接入了电源指示LED ,图中R11为LED 的限流电阻。S1 为电源开关。
4.1.2 复位电路
图4.1.2 复位电路图
单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。
单片机复位电路原理是在单片机的复位引脚RST 上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC 电路计算出时间常数。
复位电路由按键复位和上电复位两部分组成。
(1)上电复位:STC89系列单片及为高电平复位,通常在复位引脚RST 上连接一个电容到VCC ,再连接一个电阻到GND ,由此形成一个RC 充放电回路保证单片机在上电时RST 脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K 和10uF 。
(2)按键复位:按键复位就是在复位电容上并联一个开关,当开关按下时
电容被放电、RST 也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
4.1.3 振荡电路
图4.1.3 振荡电路图
单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO )。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
STC89C51使用11.0592MHz 的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF 至50pF 之间。
4.2 单片机最小系统扩展部分
4.2.1 LED电路
图4.2.1 LED电路图
图4.2.1中主要元件有1K 的排阻、LED 、。1K 的排阻为每个LED 的限流电阻。此最小系统提供了8个独立LED ,由P1口控制,采用共阳级接法所以只有当P1口输出低电平时LED 才会点亮。
时间间隔为1000ms 的循环左移流水灯参考程序。
#include
#include
unsigned char a,b,k,j,x;
void delayms(uint x)
{
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
k=0xfe;
while(1)
{
P1=k;
delayms(1000);
j=_crol_(k,1);
k=j;
P1=j;
}
}
4.2.2 蜂鸣器电路
图4.2.2 蜂鸣器电路图
图4.2.2中蜂鸣器使用的是PNP 三极管进行驱动控制的,此蜂鸣器为电磁式有源蜂鸣器。三极管的集电极通过蜂鸣器接5V 电源,基极是控制端,发射极接地,当单片机的P2.3输出低电平时,三极管导通,蜂鸣器发声。蜂鸣器为感性原件,也可以在两端并接一个二极管来起到泄放作用。
控制蜂鸣器发出滴滴声的参考程序。
#include
unsigned char a,b;
sbit beep=P2^3;
void delayms(uint x)
{
for(a=x;a>0;a--)
for(b=110;b>0;b--); }
void main()
{
while(1)
{
delayms(100); beep=0;
delayms(100); beep=1;
}
}
4.2.3 系统的数码管电路
图4.2.3 数码管电路图
如图4.2.3所示,多位数码管的―位选‖是可以独立控制的,而―段选‖是连接在一起的,可以用作数码管的动态显示和静态显示。图4.2.3中所示的数码管全部为共阴极的数码管。74HC573
为所存器,利用单片机可以控制所存器的所存
端,进而控制锁存器的数据输出,利用分时控制的方法可以方便地控制任意数码管显示任意数字。
使用软件延时实现0~59秒的计数器。
#include
#define uchar unsigned char
uchar j,k,i,a,A1,A2,second;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uchar i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(uchar sh_c,uchar g_c)
{
dula=0;
P0=table[sh_c];
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[g_c];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
}
void main()
{
while(1)
{
second++;
if(second==60)
second=0;
A1=second/10;
A2=second%10;
for(a=50;a>0;a--)
{
display(A1,A2);};
}
}
4.2.4 系统的键盘电路
图4.2.4 独立和矩阵键盘电路图
图4.2.4中S2-S3为4个独立按键,与单片机的P3.4-P3.7分别相连。
独立键盘与单片机相连时,每个按键都需要单片机的一个I/O口,若按键较多时,占用的I/O口资源就会过多,为此就引入了矩阵键盘。图4.2.4中是将16个按键排成4行4列,这样一共有8根线,节省了8个I/O口。S6-S21即为16个矩阵键盘,8条线分别与单片机飞P3口相连。
单键识别参考程序
每按一次S2,P1口的LED 下移一位。
#include
sbit BY1=P3^4;
unsigned char count;
unsigned char temp;
unsigned char a,b;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
key()
{
if(BY1==0)
{
delay10ms();
if(BY1==0)
{
count++;
if(count==8)
{
count=0;
}
}
while(BY1==0);
}
}
move()
(1)
a=temp
b=temp>>(8-count);
P1=a|b;
}
main()
{
count=0;
temp=0xfe;
P1=0xff;
P1=temp;
while(1)
{
key();
move();
}
}
2)矩阵键盘识别
依次按下键盘上的S6~S21,同时在数码管上显示0~F。
#include
sbit beep=P2^3;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char i=100;
unsigned char j,k,temp,key;
void delay(unsigned char i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
(
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
display(unsigned char num)
{
P0=table[num];
dula=1;
dula=0;
P0=0xc0;
wela=1;
wela=0;
}
void main()
{
dula=0;
wela=0;
while(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0; break;
case 0xde: key=1; break;
case 0xbe: key=2; break;
case 0x7e: key=3; break; }
while(temp!=0xf0) {
temp=P3;
temp=temp&0xf0; beep=0; }
beep=1;
display(key); P1=0xfe; }
}
P3=0xfd;
temp=P3;
temp=temp&0xf0; if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0) {
temp=P3;
switch(temp) {
case 0xed: key=4; break;
case 0xdd: key=5; break;
case 0xbd: key=6; break;
case 0x7d: key=7; break; }
while(temp!=0xf0) {
temp=P3;
temp=temp&0xf0; beep=0; }
beep=1;
display(key);
P1=0xfc;
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0; if(temp!=0xf0) {
delay(10); if(temp!=0xf0) {
temp=P3; switch(temp) {
case 0xeb: key=8; break;
case 0xdb: key=9; break;
case 0xbb: key=10; break;
case 0x7b: key=11; break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
P1=0xf8;
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
key=12;
break;
case 0xd7:
key=13;
break;
case 0xb7:
key=14;
break;
case 0x77:
key=15;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
P1=0xf0;
}
}
}
}
4.2.5 A/D电路
图4.2.5 A/D电路图
集成A/D转换器品种繁多,一般选用逐次比较型A/D转换器,图4.2.6中的ADC0804就是这类单片集成A/D转换器。它采用CMOS 工艺20引脚的集成芯片,分辨率为8位,转换时间为100us ,输入电压范围为0-5V 。芯片内具有三态输出数据锁存器,可以直接连接数据总线上。图1.3.7为ADC0804双列直插式封装引脚分布图。
图4.2.6 ADC0804引脚分布图
(1)引脚名称及作用:
IN+,IN-:模拟信号输入端,用以接收单极性、双极性和差模输入信号。 DB0~DB7:具有三态特性数字信号输出口。
ANLG GND:模拟信号地。
DGTL GND:数字信号地。
CLK IN:时钟信号输入端。
CLK OUT :内部时钟信号发生器的外接电阻端,与CLK IN 配合可由芯片自身产生时钟脉冲,其频率为1/(1.1RC)。
CS :片选信号输入端,低电平有效,一旦CS 有效,表明A/D转换器被选中,可启动工作。
WR :写信号输入,低电平启动A/D转换。
RD :读信号输入,低电平输出端有效。
INTR :A/D转换结束信号,低电平表示本次转换已完成。
VREF/2:参考电平输入,决定量化单位。
Vcc :芯片电源输入。
ADC0804的片选端CS 与单片机的P0.7相连;DB0~DB7分别与单片机的P1口相连;IN+接电位器的中间滑动端,IN-接地,Re2是为了防止VI+输入端的电流过大而烧坏A/D芯片;CLK IN 、CLK OUT 、GND 之间的电阻和电容组成RC 振荡电路,用来给ADC0804提供工作所需的脉冲;VREF/2端用两个1K 的电阻分压得到Vcc/2电压,该电压作为A/D芯片工作是内部的参考电压;WR 、RD 分别接单片机的P3.6和P3.7引脚;AGND 和DGND 同时接地。 —————————————————————————
(2)输入0~5V电压,经ADC0804转换在数码管上以十进制数显示出来的参考程序。
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit adrd=P3^7;
sbit adwr=P3^6;
sbit diola=P2^5;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char j,k,adval;
void delay(unsigned char i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void display(uchar bai_c,uchar sh_c,uchar g_c)
{
P0=table[bai_c];
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
dula=0;
P0=table[sh_c];
dula=1;
dula=0;
wela=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
P0=table[g_c];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(5);
}
void main()
{
uchar a,A1,A2,A2t,A3;
while(1)
{
wela=1;
P0=0;
adwr=0;
_nop_();
adwr=1;
P0=0xff;
delay(10);
wela=0;
for(a=20;a>0;a--)
{
display(A1,A2,A3);
}
wela=1;
P1=0xff;
P0=0;
adrd=0;
adval=P1;
adrd=1;
P0=0xff;
adwr=0;
P1=adval;
A1=adval/100;
A2t=adval%100;
A2=A2t/10;
A3=A2t%10;
};
}
4.2.6 D/A电路
图 4.2.7 D/A电路图
DAC0832是使用非常普遍的8位D/A转换器,转换时间为1us ,工作电压为+5V~+15V,基准电压为正负10V 。它主要由两个8位寄存器和一个8位D/A转换器组成。其片内有输入数据缓冲器,可以直接与单片机接口。DAC0832一电流形式输出,需要转换为电压输出时,可外接运算放大器。DAC0832芯片为20脚双列直插式封装,其引脚分布图如图4.2.8所示。
图4.2.8 DAC0832引脚分布图
(1)引脚名称及作用:
CS :片选信号输入端,低电平有效。
WR1:输入寄存器的写选通输入端,负脉冲有效。当CS 为0,ILE 为1,WR1有效时DI0~DI7状态被锁存到输入寄存器。
DI0~DI7:数据输入端,TTl 电平,有效时间应大于90ns 。、
VREF :基准电压输入端,电压范围为-10V~+10V。
Rfb :反馈电阻端,芯片内部此端与IOUT1接有一个15K 的电阻。
IOUT1:电流输出端,当输入全为1 时,其电流最大。
IOUT2:电流输出端,其值与IOUT1端电流之和为一常数。
XFER :数据传输控制信号输入端,低电平有效。
WR2:DAC 寄存器的写选通输入端,负脉冲有效。当XEFR 为0且WR2有效时,输入寄存器的状态被转到DAC 寄存器中。
ILE :数据锁存允许信号输入端,高电平有效。
Vcc :电源电压端,电压范围+5V~+15V。
GND :模拟地和数字地。
当DAC0832芯片的片选信号、写信号及传送控制信号的引进全部接地,允许输入锁存信号ILE 引脚接+5V时,DAC0832芯片处于直通工作方式,数字量一旦输入,就直接进入D/A寄存器,进行D/A转换。此时若让芯片连续转换的话,只需连续改变数字输入端的数字信号即可。
_________________________________________________________
(2)控制DAC0832输出锯齿波,让发光二极管由暗到亮变化。
#include
sbit wela=P2^7;
sbit dula=P2^6;
sbit dawr=P3^6;
sbit csda=P3^2;
unsigned char a,j,k;
void delay(unsigned char i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
wela=0;
dula=0;
csda=0;
a=0;
dawr=0;
while(1)
{
P0=a;
delay(50);
a++;
}
}
4.2.7 系统串行通信电路
图4.2.9串行通信电路图
RS232串口电路使用MAX232作为电平转换芯片,可以通过串口电缆连接到计算机背后的COM 口,用于单片机与上位机通信以及和其他串口设备的数据交互。
MAX232芯片是MAXIM 公司生产的、包含两路接收器和驱动器的芯片,它的内部有一个电源电压变换器,可以把输入+5V的电压变换成RS-232输出电平所需的+10V电压。
MAX232芯片引脚结构如图4.2.10所示。
图4.2.10 MAX232芯片引脚结构图
(1)数据传输过程:MAX232的11脚T1IN 接单片机的TXD 端P3.1,TTLdiaper 从单片机的TXD 端发出,经过MAX232转换为RS232电平后从MAX232 的14脚T1OUT 发出,再经过交叉串口线连接到计算机RXD 端,计算机手段数据。PC 机发送数据时从PC 机串口的TXD 端发出数据,再逆向流向单片机的RXD 端P3.0接收数据。
(2)用串口调试助手向单片机发送16进制数01,单片机接收后将数据原样返回给计算机,并在串口调试助手的接收框内显示的参考程序。
#include
#define uchar unsigned char
uchar a,flag;
void main()
{
TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; SM0=0; SM1=1; REN=1;
EA=1;
ES=1;
PCON=0x80;
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
}
}
}
void serial() interrupt 4
{
P1=SBUF;
a=SBUF;
flag=1;
RI=0;
}
5.USB 转TTL 电路
5.1 USB转TTL 电路介绍
图5.1.1 USB转TTL 电路图
图5.1.1为USB 下载器的电路图,它能直接将程序代码转换成单片机所需的TTL 电平,并通过单片机的RXD 和TXD 对单片机进行通信、下载程序等。
在没有串口的情况下,可以使用图5.1.1中所示的USB 转TTL 电路对单片机进行程序下载,如图所示,此电路的转换芯片使用的是PL2303的芯片,只要在计算机中安装好对应的驱动程序,就可以直接通过USB 接口进行下载。图5.1.2为PL2303的引脚分布图。
图5.1.2 PL2303的引脚分布图
引脚名称及作用:
TXD :数据输出到串口;
DTR_N:数据终端准备好,低电平有效;
RST_N:输出发送请求,低电平有效;
VDD_232: 电源 RS-232 供电电源,RS-232 输出信号(PIN1 ~ PIN3)为5V 电平,可以在3V 和3.3V 电源下操作,VDD_232 必须与RS-232 接口使用同一电源(RS-232 输入电平应在3 ~ 5 之间);
RXD :串口数据输入;
RI_N:振铃指示,低电平有效;
GND :电源地;
VDD :电源正端;
DSR_N:数据设备准备好,低电平有效;
DCD_N:数据传送检测,低电平有效;
CTS_N:清除发送,低电平有效;
SHTD_N:关闭 RS-232 收发器;
EE_CLK:在复位期间这个引脚用于仿真,在正常操作期间,这个脚
是串行ROM 的时钟;
EE_DATA:串行 ROM 数据信号;
DP :USB DPLUS 信号;
DM :USB DMINUS 信号;
VDD_3V3:USB 收发器3.3V 电源;
GND_3V3:电源地;
RESET :系统复位;
VDD :电源正端;
GND :电源地;
TRI_STATE:端口状态,此引脚在复位后被采样,当为高电平时,RS-232 输出在休眠期间停止工作,当为低电平时,RS-232 输出tri-state 在休眠期间; LD_MD/SHTD:负载设置/掉电指示. 此引脚在复位期间为输入采样,用220K 上拉电阻用于指示重型USB 设备(500mA ),220K 电阻接地指示轻型负载,复位后,此引脚变成输出,输出负的SHTD_N 信号;
VDD_PLL:PLL 电源供应5V ;
GND_PLL:PLL 电源地;
PLL_TEST:PLL 测试模式设置;
OSC1:震荡器输入;
OSC2:震荡器输出。
6.工具软件介绍
6.1 Keil C51软件介绍
MCS-51单片机的开发除了需要硬件的支持以外,同样离不开软件。CPU 真正可以执行的是机器码,用汇编语言或C 语言等高级语言编写的源程序必须转换为机器代码才能运行,转换的方法有手工汇编和机器汇编两种,前者目前已经极少使用。机器汇编是指通过汇编软件将源程序变为机器码的编译方法。这种汇编软件称为编译器。
6.1.1 Keil C51概述
用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil 即可看出。
Keil C51是美国Keil Software公司出品的51系列兼容单片机C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C 来开发,体会更加深刻。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
6.1.2 Keil µVision2集成开发环境介绍
Keil µVision2是一个集成开发环境(Intergrated Development Environment ,IDE ),它包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部份组合在一起。它可以用于编写、调试和软件仿真所有的51内核控制器,也可以和IDE 连接进行芯片的在线调试。
使用Keil µVision2开发工具开发项目时,项目的开发流程: (1)建立一个工程项目,选择芯片,确定选项;
(2)建立汇编源文件或C 源文件;
(3)用项目管理器生成各种应用文件;
(4)检查并修改源文件中的错误;
(5)编译连接通过后进行软件模拟仿真或硬件在线仿真;
(6)编程操作;
(7
)应用。
6.1.3 Keil µVision2集成开发环境的界面
(1)启动Keil µVision2时的界面如图6.1.3。
图6.1.3 启动Keil µVision2时的界面
(2)Keil µVision2的工程管理窗口如图6.1.4所示。
图6.1.4 Keil µVision2工程管理窗口
6.2 STC-ISP软件介绍
在Keil C51中做完一个完整的工程后,还需要在Keil C51中进行进一步操作才能将已经编译好的程序下载到STC 单片机中供其运行,应为编写程序只是纯软件的开发过程。STC-ISP 软件就是这一过程中的桥接部分,它是将Keil C51生成后缀名为.HEX 的文件写入STC 单片机的下载软件。软件的操作界面如图
6.2.1所示。
图6.2.1STC-ISP 软件操作界面