系列单片机设计核心部分_第1页
系列单片机设计核心部分_第2页
系列单片机设计核心部分_第3页
系列单片机设计核心部分_第4页
系列单片机设计核心部分_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

系列单片机设计核心部分第一页,共一百一十五页,2022年,8月28日1.1单片机的类型及应用第二页,共一百一十五页,2022年,8月28日

单片机分为通用型和专用型两大类,通常所说的单片机主要指的是通用型单片机。通用型单片机是把可开发资源(如ROM、RAM、I/O口等)全部提供给使用者,例如各种系列型单片机。专用型单片机也叫专用微控器,例如频率合成调谐器、录音机机芯控制器、打印机控制器等。第三页,共一百一十五页,2022年,8月28日51系列产品类型及特点一览表

单片机生产厂商芯片型号内部资源ROM/KBRAM/Byte16位定时器个数中断源个数最高晶振频率/MHZDIP封装引脚个数INTEL805141282512408052825636124080C514128251240第四页,共一百一十五页,2022年,8月28日ATMELAT89C514128252440AT89C528

256382440AT89C20512

128252420WINBONDW78E051C4KBFLASHROM128384040W78E052C8KBFLASHROM256384040第五页,共一百一十五页,2022年,8月28日1.251系列单片机的内部结构

第六页,共一百一十五页,2022年,8月28日8051的引脚图第七页,共一百一十五页,2022年,8月28日GND:接地引脚;VCC:电源引脚;ALE:系统总线地址锁存信号;PSEN:外部程序存储器的使能信号;EA/VPP:EA/Vpp程序存储器的内外部选通线;RST:复位按钮;P0口(引脚32—39):P0口是一个漏极开路的8位双向I/O口;P1口(引脚1—8):P1口是一个带内部上拉电阻的8位准双向I/O口;P2口(引脚21—28):P2口也是一个带内部上拉电阻的8位准双向I/O口,作为通用I/O口,功能同P1;作为地址口,在访问外部存储器时,输出高8位地址;P3口(引脚10—17):P3口的P3.0到P3.7有两个功能通常使用第二功能;251系列单片机各引脚的功能第八页,共一百一十五页,2022年,8月28日P3口线的第二功能口线第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2INT0外部中断0申请P3.3INT1外部中断1申请P3.4T0定时器/计数器0计数输入P3.5T1定时器/计数器1计数输入P3.6WR外部RAM写选通P3.7RD外部RAM读选通第九页,共一百一十五页,2022年,8月28日

单片机的时钟信号用来提供单片机片内各种微操作的时间基准。8051单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚18(XTAL2)、19(XTAL1)外接晶体振荡器就构成了内部振荡方式,单片机晶振的振荡周期为最小的时序单位,片内的各种微操作都以此周期为时序基准,其中一个机器周期包含12个振荡周期,单片机指令系统中,各条指令的执行周期都在1~4个机器周期之间;外部时钟方式就是将外部振荡信号源直接由XTAL1或XTAL2引脚接入。本系统中采用内部振荡方式。第十页,共一百一十五页,2022年,8月28日51系列单片机外部时钟电路第十一页,共一百一十五页,2022年,8月28日3核心板主要器件介绍

3.1引言随着单片机在各行各业的广泛应用,社会对单片机越来越重视,越来越多的人开始学习并使用单片机,进行实验性开发与应用,高校也纷纷开设单片机课程。学好单片机可以在电子行业内找到一个比较好的工作,也可以增加对电子产品的了解,扩展产品开发的思路,提高社会竞争力。第十二页,共一百一十五页,2022年,8月28日

3.2核心板的意义与作用单片机的使用并非易事,特别是起步很难。在实际应用中,单片机因管脚多而容易被损坏,而且常用的单片机系统的基本部分具有相似性。因此,设计一款单片机核心板,可以给单片机的后续学习带来很大的推动作用。不仅节约了成本和开发时间,而且能够给单片机系统的扩展与开发带来极大的方便。单片机相比其他如PC控制器等比较廉价、灵活,以单片机位核心,再加上外围的A/D装换、LED显示或LCD显示和串行口输入输出等外围设备构成一个小型微机,作为大学校园里实验用的开发板,节约成本的同时又能使初学者快速上手,且可以简单的用于工业生产中,使用范围很广。第十三页,共一百一十五页,2022年,8月28日核心板的结构组织图第十四页,共一百一十五页,2022年,8月28日说明:电源:+5V;GND:接地;JLCD:接显示器,其1号脚对应于显示器的1号引脚;JAIN:模拟量输入DC0-5V;JDIN:开关量输入DC5V(继电器型);JDOUT:开关量输出DC5V(继电器型);JKEY:键盘输入(若键盘接反时,显示的是错误信息,但不会对电路有影响)。第十五页,共一百一十五页,2022年,8月28日核心板的实物图键盘JDOUTJLCD串口JDIN6N136JSJAINDPOWERJKEY825574HC573AT89C52TLC2543继电器813232第十六页,共一百一十五页,2022年,8月28日89C52引脚图第十七页,共一百一十五页,2022年,8月28日89C52新增功能:8KB的程序存储器;266字节的RAM;3个定时器;P1.0,P1.1口增加了替代功能;8个中断源,6个中断矢量。AT89C52芯片DIP封装实物图如下:第十八页,共一百一十五页,2022年,8月28日MAX813引脚图MAX813是单片机复位芯片,它不仅能对电源电压实现监测,而且内部还具有看门狗定时电路,它具有四个功能:①看门狗计时器功能,如果看门狗输入在1.6s内无变化,就会产生看门狗输出;②电压监测功能,掉电或电源监测电压低于1.25V时,产生掉电输出;③上电复位功能,系统上电时自动产生脉宽200ms的复位脉冲;④人工复位功能,当人工复位端输入低电平时,产生复位信号输出。第十九页,共一百一十五页,2022年,8月28日A/D转换芯片

A/D转换是把模拟信号转化成与其大小成正比的数字量信号。根据A/D转换原理,目前常用的A/D转换电路的转换方式主要有逐次逼近式和双积分式。ADC是A/D转换器的简称,ADC的性能指标是正确选用ADC芯片的基本依据,其主要性能指标有转换速度和转换精度等。

第二十页,共一百一十五页,2022年,8月28日

本系统采用的是TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源。其引脚图如下:第二十一页,共一百一十五页,2022年,8月28日

8255

8255是INTEL公司提供的可编程并行接口芯片,其引脚图如下:第二十二页,共一百一十五页,2022年,8月28日

CS:片选信号;

RD、WR:读、写控制信号;

RESET:复位信号;

A1和A0:端口选择信号;

PA0—PA7:端口A8位引脚;

PB0—PB7:端口B8位引脚;

PC0—PC7:端口C8位引脚。

引脚定义:第二十三页,共一百一十五页,2022年,8月28日各端口有3种工作方式:方式0—基本输入/输出方式;方式1—选通输入/输出方式;方式2—双向传送方式。其中端口A可处于3种工作方式,端口B只能很处于方式0和1,端口C常常被分为高4位和低4位两部分,可分别用来传送数据可控制信息。第二十四页,共一百一十五页,2022年,8月28日光电耦合器

光耦是用来隔离输入输出的,主要是隔离输入的信号。在各种应用中,往往有一些远距离的开关量信号需要传送到控制器,如果直接将这些信号接到单片机的I/O上,有以下的问题:(1)信号不匹配,输入的信号可能是交流信号、高压信号、按键等干接点信号;

(2)比较长的连接线路容易引进干扰、雷击、感应电等,不经过隔离不可靠所以,需要光耦进行隔离,接入单片机系统。光耦除了隔离数字量外,还可以用来隔离模拟量。第二十五页,共一百一十五页,2022年,8月28日光耦常用于:(1)输入干接点隔离;(2)输入TTL电平隔离;(3)输入交流信号隔离;(4)输出RS232信号隔离;(5)输出RS422信号隔离。第二十六页,共一百一十五页,2022年,8月28日常见光耦有:(1)TLP521-1/TLP521-2/TLP521-4,分别是1个光耦、2个光耦和4个光耦,HP公司和日本的东芝公司生产。下载地:.tw/pdf_file/TLP521-1-2,4.PDF发光管的工作电流要在10mA时,具有较高的转换速率;在5V工作时,上拉电阻不小于5K,一般是10K;太小容易损坏光耦;(2)4N25/4N35,motorola公司生产,下载地址:.tw/pdf_file/4N25-8,35-7,H11A1-5.PDF

隔离电压高达5000V;第二十七页,共一百一十五页,2022年,8月28日(3)6N136,HP公司生产下载地址:.tw/pdf_file/6N135-6.PDF

要想打开6N136,需要比较大的电流,大概在15-20mA左右,才能发挥高速传输数据的作用。

第二十八页,共一百一十五页,2022年,8月28日6N136本系统采用的是6N136.6N136是日本东芝公司生产的具有优良特性的光电耦合器件,内封装一个高度红外发光管和光敏三极管,具有体积小,寿命长,抗干扰强,隔离电压高,高速度,与TTL逻辑电平兼容等优点,可用于隔离线路、开关电路、数模转换、长线传输、过流保护、电平匹配、线性放大等优点。第二十九页,共一百一十五页,2022年,8月28日内部引脚图:其引脚图:第三十页,共一百一十五页,2022年,8月28日

继电器继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制系统中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。因此在电路中起着自动调节、安全保护、转换电路等作用。在大多数情况下,继电器就是一个电磁铁,这个电磁铁的衔铁可以闭合或断开一个或数个接触点。当电磁铁的绕组中有电流通过时,衔铁被电磁铁吸元,因而就改变了触点的状态。继电器一般可以分为电磁式继电器、热敏干簧继电器、固态继电器等。第三十一页,共一百一十五页,2022年,8月28日继电器属于感性器件,所以不能用单片机的I/O口直接来控制,且要在三极管等控制器件上加上反相保护电路。一般实验中都是单片机通过一个PNP型三极管,把三极管作为电子开关来驱动继电器,继电器的开和关完全由三极管的基极电平进行控制。当三极管为高电平,PNP型三极管截止,这时继电器不工作;反之为低电平的话,PNP型三极管导通,继电器得电戏合。第三十二页,共一百一十五页,2022年,8月28日单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在MA级以下。而要把它用于一些大功率场合,比如控制电动机,显然是不行的。所以,就要有一个环节来衔接,这个环节就是所谓的"功率驱动"。继电器驱动就是一个典型的、简单的功率驱动环节.在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件;还有就是继电器去驱动其他负载,比如继电器可以驱动中间继电器,可以直接驱动接触器。所以,继电器驱动就是单片机与其他大功率负载接口。第三十三页,共一百一十五页,2022年,8月28日

RELAY-SPST:单刀单掷(一组,常开)继电器,其图如下:第三十四页,共一百一十五页,2022年,8月28日单片机串口通信电路在实际使用时,单片机系统使用的是TTL电平,单片机中的串口输出的信号也是如此。但是串行通信中一般使用的是RS-232C通信协议,二者的电平并不相同,因此需要外接接口电路来进行电平的匹配。通常PC有两个串行口COM1和COM2,其中COM1使用的是9针D形连接器,而COM2有的使用的是老式的DB25针连接器。以下仅介绍常用的DB9针连接器。第三十五页,共一百一十五页,2022年,8月28日DB9的各信号线(管脚)的定义如下表:管脚号管脚的定义1保护地2接收信号数据SIN3发送数据SOUT4数据终端准备DTR5信号地6数据装置准备DSR7请求发送RTS8清除发送CTS9响铃指示RI第三十六页,共一百一十五页,2022年,8月28日USB模块可以通过DB9接口与核心板相连,从而将其转化为USB接口。USB作为一种新的PC机互连协议,使外设到计算机的连接更加高效、便利。这种接口适合于多种设备,不仅具有快速、即插即用、支持热插拔的特点,还能同时连接多达127个设备。USB规范描述了总线特性、协议定义、编程接口以及其它设计和构建系统时所要求的特性。USB是一种主从总线,工作时USB主机处于主模式,设备处于从模式。第三十七页,共一百一十五页,2022年,8月28日USB系统所需要的唯一的系统资源是,USB系统软件所使用的内存空间、USB主控制器所使用的内存地址空间(I/O地址空间)和中断请求(IRQ)线。USB设备可以是功能性的,如显示器、鼠标或者集线器之类。它们可以作低速或者高速设备实现。低速设备最大速率限制在1.5Mb/s,每一个设备有一些专有寄存器,也就是端点(endpoint)。在进行数据交换时,可以通过设备驱动间接访问它。每一个端点支持几种特殊的传输类型,并且有一个唯一的地址和传输方向。不同的是端点0仅用作控制传输,并且其传输可以是双向的。第三十八页,共一百一十五页,2022年,8月28日系统上电后,USB主机负责检测设备的连接与拆除、初始化设备的列举过程,并根据设备描述表安装设备驱动后自动重新配置系统,收集每个设备的状态信息。设备描述表标识了设备的属性、特征并描述了设备的通信要求。USB主机根据这些信息配置设备、查找驱动,并且与设备通信。第三十九页,共一百一十五页,2022年,8月28日典型的USB数据传输是由设备驱动开始的,当它需要与设备通信时,设备驱动提供内存缓冲区,用来存放设备收到或者即将发送的数据。USB驱动提供USB设备驱动和USB主控制器之间的接口,并将传输请求转化为USB事务,转化时需要与带宽要求及协议结构保持一致。某些传输是由大块数据构成的,这时需要先将它划分为几个事物再进行传输。第四十页,共一百一十五页,2022年,8月28日3、本系统所使用的串口版的U盘文件读写模块的连接说明:(1)外观下面是串口版U盘文件读写模块的正反面外观,尺寸约长70mmX宽30mmX高15mm。第四十一页,共一百一十五页,2022年,8月28日(2)接口电路图图中的RXD和TXD连接到模块的单片机的串口。第四十二页,共一百一十五页,2022年,8月28日(3)接口定义串口版模块具有三个外部接口:P1是USB插座,可以直接插入U盘或者通过USB延长线连接U盘,当进行程序升级或者重新配置时应该通过USB对连线连接计算机的USB端口。P2是DB9插针(可以改为插孔,但是引脚号将发生变化),用于连接单片机系统。P3是电源输入选择跳线或者电源输入端口。第四十三页,共一百一十五页,2022年,8月28日(4)接口协议串口版模块使用标准版模块的三线制串口通讯协议。单片机系统与模块之间需要连接SIN和SOUT两根信号线及公共地线,单片机系统通过串口发送两个同步码字节(57H、ABH)作为执行命令包的启动信号,实现与模块的命令同步。在通过串口输入两个同步码字节时,模块会检查串口数据输入超时,如果连续两个数据字节之间的间隔大于串口输入超时时间,则模块将放弃该同步码及命令包。第四十四页,共一百一十五页,2022年,8月28日(5)接口时序测试条件:TA=25℃,VCC=5V

名称参数说明最小值典型值最大值单位TT0串口输入数据的间隔超时时间2540100mS第四十五页,共一百一十五页,2022年,8月28日MAX232是一种常用的电平转换芯片,能完成TTL和RS-232C电平的双向转换,其引脚图如下:对于RS-232C的信号而言,当传输电平绝对值大于3V时,电平可以被检测出来,介于-3V~+3V之间的电压信号无意义,低于-15V或高于+15V的电压也视为无意义。第四十六页,共一百一十五页,2022年,8月28日引脚定义:C1+/C1-:电容倍增充电泵电容正负端;C2+/C2-:反向电泵电容正负端:V+/V-:充电产生的+/-5V;R1IN/R2IN:RS-232发送器输入1/2;T1OUT/T2OUT:RS-232发送器输出1/2;T1IN/T2IN:TTL发送器输入1/2;R1OUT/R2OUT:TTL接收器输出1/2;VCC/GND:电源/地。PFI:当管脚上的电平效益1.25V时,PFO输出低电平;第四十七页,共一百一十五页,2022年,8月28日在液晶显示器(LiquidCrystalDisplay,LCD)方面,从选型角度,我们将常见液晶分为以下几类:段式,字符型,图形点阵式液晶。本核心板所用的是深圳市勤正达电子有限公司的FM12864F-12型号的液显示模块,FM12864F-12是128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。液晶显示器LCD和键盘

第四十八页,共一百一十五页,2022年,8月28日LCD实物图

第四十九页,共一百一十五页,2022年,8月28日其引脚图如下:第五十页,共一百一十五页,2022年,8月28日引脚定义:引脚名称方向说明引脚名称方向说明1VSS-GND(0V)11DB4I数据42VDD-SupplyVoltageForLogic(+5v)12DB5I数据53VO-SupplyVoltageForLCD(悬空)13DB6I数据64RS(CS)OH:DataL:InstructionCode14DB7I数据75R/W(SID)OH:ReadL:Write15PSBOH:ParallelModeL:SerialMode6E(SCLK)OEnableSignal16NC-空脚7DB0I数据017/RSTOResetSignal低电平有效8DB1I数据118NC-空脚9DB2I数据219LEDA-背光源正极(LED+5V)10DB3I数据320LEDK-背光源负极(LED-OV)第五十一页,共一百一十五页,2022年,8月28日(1)RS,R/W的配合选择决定控制界面的4种模式:RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)及地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据第五十二页,共一百一十五页,2022年,8月28日(2)E信号E状态执行动作结果高——>低I/O缓冲——>DR配合/W进行写数据或指令高DR——>I/O缓冲配合R进行读数据或指令低/低——>高无动作

第五十三页,共一百一十五页,2022年,8月28日单片机通过该模块特有的指令来完成各种相应的显示功能,其指令由10位二进制数组成。这些指令包括清除显示、位地址归位、显示状态开关、游标或显示移位控制、功能设定设定、CGRAM位址设定、DDRAM位址、读取忙碌状态(BF)和位址、写资料到RAM、读出RAM的值、扩充功能设定等。单片机通过设定不同的的指令来完成对LCD模块的数据传输和显示。第五十四页,共一百一十五页,2022年,8月28日(1)清除显示CODE: RWRSDB7DB6DB5DB4DB3DB2DB1DB0功能:清除显示屏幕,把DDRAM位址计数器调整为“00H”(2)位址归位CODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0功能:把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM(3)位址归位CODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0LLLLLLLLHXLLLLLLLLLHLLLLLLLLI/DS第五十五页,共一百一十五页,2022年,8月28日功能:把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。(4)显示状态开/关CODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0

功能:D=1;整体显示ONC=1;游标ONB=1;游标位置ON(5)游标或显示移位控制CODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0

功能:设定游标的移动与显示的移位控制位:这个指令并不改变DDRAM的内容

LLLLLLHDCBLLLLLHS/CR/LXX第五十六页,共一百一十五页,2022年,8月28日(6)功能设定CODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0

功能:DL=1(必须设为1)RE=1;扩充指令集动作RE=0:基本指令集动作(7)设定CGRAM位址CODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0功能:设定CGRAM位址到位址计数器(AC)(8)设定DDRAM位址CODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0

功能:设定DDRAM位址到位址计数器(AC)LLLLHDLX0REXXLLLHAC5AC4AC3AC2AC1AC0LHBFAC6AC5AC4AC3AC2AC1AC0第五十七页,共一百一十五页,2022年,8月28日(9)读取忙碌状态(BF)和位址CODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0

功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值(10)写资料到RAMCODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0

功能:写入资料到内部的RAM(DDRAM/CGRAM/TRAM/GDRAM)(11)读出RAM的值CODE:RWRSDB7DB6DB5DB4DB3DB2DB1DB0

功能:从内部RAM读取资料(DDRAM/CGRAM/TRAM/GDRAM)单片机就是通过设定不同的的指令来完成对LCD模块的数据传输和显示。LLBFAC6AC5AC4AC3AC2AC1AC0HLD7D6D5D4D3D2D1D0HHD7D6D5D4D3D2D1D0第五十八页,共一百一十五页,2022年,8月28日该LCD可与CPU直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。在本系统中,该LCD液晶模块采用的是并行的连接方式,其连接方式示意图如下所示:LCM与MPU的并行连接

第五十九页,共一百一十五页,2022年,8月28日由于键盘扫描和向LCD写数据均采用P0口,所以之后在LCD没置使能,即P1_6=0的情况下,才能进行键盘扫描。LCD控制程序参见LCDLEARN.C函数。键盘扫描相关函数为:externunsignedcharscankb(void),循环扫描,可以返回16个不同的值。在LCD上写汉字的时候,不能写“数字”两个汉字,会出现乱码;此外,不能写入字符中夹杂着半角和全角字符。第六十页,共一百一十五页,2022年,8月28日与单片机的电路图连接如下所示:第六十一页,共一百一十五页,2022年,8月28日键盘采用4×4键盘,能返回16个不同的值,各个按键代表不同的功能,按下不同的按键,在执行相应程序后,会在LCD上显示对应的结果,其引脚图如下所示,1—8引脚分别接在AT89C51的P0.0—P0.7上。键盘芯片的引脚图:第六十二页,共一百一十五页,2022年,8月28日为了减少键盘与单片机进行接口时占用过多的I/O口线的数目,在按键较多时,通常将键盘排成行列矩阵的形式。这种矩阵式键盘的每一行线与列线的交叉处互不连通,而是通过一个按键来连接的。单片机通过程序控制扫描方式,利用软件连续的对键盘进行扫描,通过一定的算法来判断是哪个键被按下,从而实现该键的功能。编程扫描方式是利用CPU完成其它工作的空余调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。第六十三页,共一百一十五页,2022年,8月28日程序扫描法的工作过程是:

1、判别有无键按下:单片机首先向行扫描口输出全为0扫描码F0H,然后从列检测口输入列检测信号,只要有一列信号不为1,即P0口不为F0H,则表示有键被按下。

2、键盘扫描取得闭合键的行、列值:单片机将得到的信号取反,中为1的位便是该键所在的列。接下来要确定按键所在的行,需要进行逐行扫描。单片机首先向P0口发送扫描码FEH,即使P0.0为0,为1。然后输入列检测信号,若各列全为1,则表示不在第一行。接着使P0.1为0,其余为1,再输入检测列信号。依次检测下去,直到找到按键所在行。

第六十四页,共一百一十五页,2022年,8月28日

3、用计算法或查表法得到键值;

4、判断闭合键是否释放,如没释放则继续等待;

5、将闭合键键号保存,同时转去执行该闭合键的功能。第六十五页,共一百一十五页,2022年,8月28日74HC573芯片介绍引脚图如下所示:第六十六页,共一百一十五页,2022年,8月28日引脚说明:2至9脚是数据的输入角,从D0到D7;12至19脚这几个脚是数据的输出脚;10是接地;20是电源;1引脚为573的输出使能,低电平有效,11引脚为573的锁存使能,高电平有效,即573只有在1引脚为低是才有可能输出,若为高,输出为高阻,11引脚在1引脚为低的前提下若为高,则不锁存,输出恒等于输入,若为低,则锁存,保持前一时刻状态。第六十七页,共一百一十五页,2022年,8月28日外围接口电路外围接口电路包括模拟信号输入、开关量输入输出、串口通信接口、电源供应接口和滤波电容网络。

对应图如下:第六十八页,共一百一十五页,2022年,8月28日数字量输入部分是采用光耦6N136判断外部输入是高电平还是低电平。单片机上用P20-P24判断外部数字量。程序中相关程序是:externunsignedchariojudge(unsignedchar)-函数参数为数字量输入通道号,返回通道状态1表示高电平、0表示低电平。数字量输出部分是通过继电器控制端口是否和VCC(+5V)连接上。继电器由P24-P27引脚控制状态变化。程序中相关程序为:voidrelay(unsignedchara)-参数为继电器所在通道号。执行此函数,继电器状态改变。第六十九页,共一百一十五页,2022年,8月28日电路设计的工作人员都是要通过分析电路原理图,了解电路的功能和工作原理,才能得心应手开展工作。以下就电路总体功能、划分的功能模块、信号流向和各原件的作用进行分析。4原理图分析第七十页,共一百一十五页,2022年,8月28日核心板整体Protel图第七十一页,共一百一十五页,2022年,8月28日4.1外部模拟信号采集接口和电源电路

8针脚接口JAINCON8是外部模拟信号输入接口,JDINCON8是外部数字量信号输入接口,JDOUTCON8是数字量输出接口。从JAINCON8来的模拟量输入信号进入TLC2543的11路模拟量输入端口,进行A/D转换;从JDINCON8来的数字量输入信号进入光电耦合器6N136的处理后引入8051的P2_0—P2_3引脚,8051就可以判断外部数字量输入是高还是低电平。8051单片机P2_7—P2_4信号通过输出处理电路后控制继电器的输出状态,DO1—DO4表征继电器的状态,通过JDOUTCON8来实现数字量的输出。外接+5V电源通过CON3接口接入电路板,然后经过CU1、CU2、CU74、CU82、CU4电容滤波处理后对整个单片机核心板供电。第七十二页,共一百一十五页,2022年,8月28日外部模拟信号采集接口和电源电路第七十三页,共一百一十五页,2022年,8月28日

采用TLC2543芯片的方法进行A/D转换用TLC2543芯片进行A/D转换十分简单,不需要复杂的外围辅助电路,可直接与单片机I/O连接,并直接通过单片机控制A/D转换的启动与结束。4.2A/D转换电路第七十四页,共一百一十五页,2022年,8月28日采用TLC2543芯片的方法进行A/D转换第七十五页,共一百一十五页,2022年,8月28日4.38051信号控制与处理电路此功能模块是单片机系统的核心部分,为了增加I/O口数目,采用了8255A可编程外围接口芯片,使用了一个8位锁存器74HC573来锁存8051单片机P0口输出的地址信息。8051通过软件编程进行输入信号的处理与控制,通过P0口将处理结果送往LCD显示,通过P2口进行数字量的输入和输出,同时单片机采用译码法将P0口送出的地址信息译码后确定了8255A的地址,可以扩展连接更多的外围设备。8051通过引脚RXD和引脚TXD和MAX232与串口或USB进行通信。MAX813是看门狗芯片,使单片机死机后复位运行。第七十六页,共一百一十五页,2022年,8月28日8051信号控制与处理电路第七十七页,共一百一十五页,2022年,8月28日4.4LCD显示部分本单片机系统采用的是勤正达12864F液晶显示模块,由图可知:此单片机控制数码管显示的过程采用的是并行方式,P0口的输出作为LCD的数据输入DB0—DB7,P1_4的输出作为了LCD的模组片选段,P1_5的输出作为LCD的读写控制信号,P1_6的输出作为LCD的使能信号,由RS、R/W、D7、D6、D5、D4、D3、D2、D1、D0的状态构成模块控制芯片的控制命令,最终完成字符的LCD显示。

第七十八页,共一百一十五页,2022年,8月28日LCD实物图第七十九页,共一百一十五页,2022年,8月28日LCD与单片机的连接图第八十页,共一百一十五页,2022年,8月28日要实现串行通信,则单片机、MAX232与串口的引脚必须严格对应。8051单片机的发送端TXD接到MAX232的T1IN端,接收端RXD接到MAX232的R1OUT端,RS232C串口DB9的接收端RXD通过CON3接口对应R1IN引脚,发送端TXD对应R1IN引脚,引脚对应正确后,串行通信电路图的硬件设置就完成了,可以顺利完成USB的读写。4.5串口通信和USB读写第八十一页,共一百一十五页,2022年,8月28日串口版U盘文件读写模块的正反面外观第八十二页,共一百一十五页,2022年,8月28日串口通信和USB读写电路连接图第八十三页,共一百一十五页,2022年,8月28日5源程序分析开始初始化采集TLC2543模拟信号定时中设定断LCD界面初始化是否有键按下循环是否结束读出按键值,并在LCD上显示相应结果结束YNYN第八十四页,共一百一十五页,2022年,8月28日5.2输入程序

#include<core.h>

externunsignedchariojudge(unsignedchar);

unsignedchariojudge(a)

{

switch(a)

{

case1:if(P2_3==1)return1;elsereturn0;break;

case2:if(P2_2==1)return1;elsereturn0;break;

case3:if(P2_1==1)return1;elsereturn0;break;

case4:if(P2_0==1)return1;elsereturn0;break;

}

}第八十五页,共一百一十五页,2022年,8月28日5.3输出程序

#include<core.h>

externvoidrelay(unsignedchar);

voidrelay(unsignedchara)

{

unsignedchari;

switch(a)

{

case1:P2_7=1;for(i=0;i<100;i++);P2_7=0;

//for(i=0;i<100;i++);P2_7=1;

case2:P2_6=1;for(i=0;i<100;i++);P2_6=0;

//for(i=0;i<100;i++);P2_6=1;

第八十六页,共一百一十五页,2022年,8月28日case3:P2_5=1;for(i=0;i<100;i++);P2_5=0;

//for(i=0;i<100;i++);P2_5=1;

case4:P2_4=1;for(i=0;i<100;i++);P2_4=0;

//for(i=0;i<100;i++);P2_4=1;

}

}第八十七页,共一百一十五页,2022年,8月28日5.4LCD显示程序

#include<core.h>

#include<at89x52.h>

#definebfP0_7//位定义

#definersP1_4

#definerwP1_5

#defineeP1_6

#definelcd_rstP1_7

#definepsbP1_4

externvoidrbf(void);

externvoidwcd(unsignedchar,unsignedchar);

externvoidinilcd();

externvoidbegin(unsignedchar*);第八十八页,共一百一十五页,2022年,8月28日externvoiddelay(unsignedint);

externvoidwi(unsignedchar);

externvoidwd(unsignedchar);

externvoidbeginkey(unsignedchar);

externvoidbeginnum(unsignedchar*);

externvoidjiemian(void);

externvoidrelaylcd(unsignedchar);

//延迟函数

voiddelay(unsignedinti)//当i为时约延时毫秒

{

unsignedcharj;//当i为时约延时秒

while(i)

{

i--;第八十九页,共一百一十五页,2022年,8月28日

for(j=0;j<100;j++)

{

;//空语句

}

}

}

//读忙标志函数

voidrbf(void)

{

do

{

rs=0;//设置读忙时的状态

rw=1;

第九十页,共一百一十五页,2022年,8月28日

//P0=0xff;

delay(1);//延迟一会儿

e=1;//开使能端

}while(bf);//不忙则跳出

e=0;//关使能

}

//写指令函数与写数据函数wcd(i,n)

//当i为的时候为写指令n,i为时候为写数据n

voidwcd(unsignedchari,unsignedcharn)

{

rbf();//读忙第九十一页,共一百一十五页,2022年,8月28日

switch(i)

{

case0:rs=0;rw=0;P0=n;break;

//设置写指令时的状态

case1:rs=1;rw=0;P0=n;break;

//设置写数据时的状态

}

e=1;

delay(10);//将要写入的值设置为P0的状态

e=0;//关使能

}

//初始化液晶界面函数,作用是清屏第九十二页,共一百一十五页,2022年,8月28日voidinilcd()

{

unsignedchari;

unsignedcharcodea[4]={0x30,0x01,0x02,0x0e};//DDRAM初始化的指令格式

psb=0;

delay(75);

psb=1;

lcd_rst=0;delay(2);lcd_rst=1;

for(i=0;i<4;i++)

{

wcd(0,a[i]);

}

}

//初始界面函数,作用是开机时显示的数据第九十三页,共一百一十五页,2022年,8月28日voidbegin(unsignedchar*pm)

{

wcd(0,0x80);//写入首地址

do{

wcd(1,*pm);//依次写入数据

delay(10);//字与字之间延迟一会儿

pm++;//数据地址自增一

}while(*pm!='\0');

}

voidbeginnum(unsignedchar*pm)

{

unsignedcharj;

wcd(0,0x90);//写入首地址第九十四页,共一百一十五页,2022年,8月28日

for(j=0;j<5;j++){

wcd(1,*pm);//依次写入数据

delay(10);//字与字之间延迟一会儿

pm++;//数据地址自增一

};

}

voidbeginkey(unsignedchara)

{

unsignedcharcodeb[4][20]={{"VoltageSample"},

{"CheckD_Channal"},{"ControlRealy"},{"InputtoUSB"}};

switch(a)

{

case1:begin(b[0]);break;第九十五页,共一百一十五页,2022年,8月28日case2:begin(b[1]);break;

case3:begin(b[2]);break;

}

}

voidbeginDprocess(unsignedchara,unsignedcharb)

{

unsignedcharcodec[4][15]={{"DChannal1L"},

{"DChannal2L"},

{"DChannal3L"},

{"DChannal4L"}};

unsignedcharcoded[4][15]={{"DChannal1H"},

{"DChannal2H"},{"DChannal3H"},{"DChannal4H"}};

if(a==1)第九十六页,共一百一十五页,2022年,8月28日

{switch(b)

{

case1:begin(c[0]);break;

case2:begin(c[1]);break;

case3:begin(c[2]);break;

case4:begin(c[3]);break;

}

}

elseswitch(b)

{

case1:begin(d[0]);break;

case2:begin(d[1]);break;

case3:begin(d[2]);break;

case4:begin(d[3]);break;

}第九十七页,共一百一十五页,2022年,8月28日

}

}

voidjiemian()

{

unsignedcharcodeb[4][20]={{"VoltageSample1"},

{"DigitalInput2"},{"DigitalOutput3"},{"WriteUSB4"}};

unsignedchar*pm;

pm=b[0];

wcd(0,0x80);//写入首地址

do{

wcd(1,*pm);//依次写入数据

delay(10);//字与字之间延迟一会儿

pm++;//数据地址自增一

}while(*pm!='\0');第九十八页,共一百一十五页,2022年,8月28日

pm=b[1];

wcd(0,0x90);//写入首地址

do{

wcd(1,*pm);//依次写入数据

delay(10);//字与字之间延迟一会儿

pm++;//数据地址自增一

}while(*pm!='\0');

pm=b[2];

wcd(0,0x88);//写入首地址

do{

wcd(1,*pm);//依次写入数据

delay(10);//字与字之间延迟一会儿

pm++;//数据地址自增一第九十九页,共一百一十五页,2022年,8月28日

}while(*pm!='\0');

pm=b[3];

wcd(0,0x98);//写入首地址

do{

wcd(1,*pm);//依次写入数据

delay(10);//字与字之间延迟一会儿

pm++;//数据地址自增一

}while(*pm!='\0');

}

voidrelaylcd(unsignedchara)

{

unsignedcharcodec[4][17]={{"1RelayOperate"},第一百页,共一百一十五页,2022年,8月28日{"2RelayOperate"},

{"3RelayOperate"},

{"4RelayOperate"}};

switch(a)

{

case1:begin(c[0]);break;

case2:begin(c[1]);break;

case3:begin(c[2]);break;

case4:begin(c[3]);break;

}

}第一百零一页,共一百一十五页,2022年,8月28日5.5按键程序

#include<core.h>

voiddelay(void)

{unsignedchari;

for(i=200;i>0;i--);

}

externunsignedcharscankb(void)

{

unsignedcharsccode,recode;

P0=0xf0;

if((P0&0xf0)!=0xf0)//有键按下

{delay();

if((P0&0xf0)!=0xf0)//仍然有键按下

{sccode=0xfe;第一百零二页,共一百一十五页,2022年,8月28日while((sccode&0x10)!=0)//移位没完

{P0=sccode;//行扫描开始

if((P0&0xf0)!=0xf0)//若在该行

{recode=(P0&0xf0)|0x0f;//中间结果

P0=0xff;//关P2

return((~sccode)+(~recode));//返回Keyword

}

elsesccode=(sccode<<1)|0x01;//不在该行则扫下一行

}

}

}

return(0);

}第一百零三页,共一百一十五页,2022年,8月28日5.6主程序

#include<core.h>

unsignedcharconverse(unsignedint);

#define _CS P1_3

#define D_OUT P1_2

#define D_IN P1_1

#define CLOCK P1_0

unsignedcharcom_fetch;

voidcomm_init()

{

TL1=0xfd;

TH1=0xfd;

PCON=0;

TMOD=0x20;//定时器方式

EA=1;第一百零四页,共一百一十五页,2022年,8月28日ET1=0;//禁止外部中断

ES=1;//开串行口中断

TR1=1;//开始计时

SCON=0x50;//串行口工作方式、容许接收

}

voidcomm_int()interrupt4

{

if(RI)

{

RI=0;

com_fetch=SBUF;//发送数据

}

else{TI=0;}

}第一百零五页,共一百一十五页,2022年,8月28日

}

}

voidt100()

{

unsignedchari;

for(i=0;i<50;i++)

{

}

}

//从读取采样值,形参port是采样的通道号

unsignedcharad_get(unsignedcharport)

{

unsignedcharad;

unsignedchari;

unsignedcharal=0,ah=0;第一百零六页,共一百一十五页,2022年,8月28日CLOCK=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论