版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、- 47 -出租车计价器设计摘要: 在交通发展迅速的今天,出租车是我们交通中不可缺少的工具。同时出租车中的计价器是必不可少的一种设备。单片机技术也得到了飞速发展,基于单片机的出租车计费器不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,特别是对小批量、多品种的产品需求,单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,。出租车计价器系统设计的主要内容是通过c51单片机上的数码显示器来模拟出租车计价器的路程显示表,通过单片机上的键盘上的某些键来表示开始、暂停、复位等功能。步骤如下:首先,程序开始做一些必要的初始化工作,等待键盘输入。然后
2、,启动键按下(0)后led数码管开始记录路程并显示。最后,当需要停止是可按相应的键(f)对路程计数器进行暂停。而且还可以复位(e)。本设计主要了解应用单片机的定时器/计数器,以及中断。这是一个比较小的系统,故采用汇编语言来编辑。汇编语言是一种编译型程序设计语言,它具有编译速度快,占用系统空间小,具有一定的助记可读性等特点。关键词: c51单片机;8255;计价器; led数码管1设计内容及要求1.1设计内容及要求(1)出租车里程测量:采用信号源产生脉冲模拟出租车计价传感器产生脉冲,设每产生100个脉冲出租车行驶1公里信号源脉冲频率=1khz;(2)里程显示为:*.*公里;(3)采用8255芯片
3、管理键盘显示。1.2框图根据设计内容及要求,设计框图如图1所示。本次设计的出租车计价器系统是由三部分组成,包括由光电传感器为主的计程脉冲信号变换模块、单片机80c51系统和led显示模块。设计中使用的结构框图如图1.1所示传感器变换电路显示器单片机按键图1.1设计框图、1.1系统的组成1. 计程脉冲信号变换模块计程脉冲信号变换模块是以光电传感器为主要功能部件,在出租车行驶过程中产生电脉冲信号,将对路程的计量转换为对电脉冲信号的计量。本次的设计中,采用了光敏二极管。车轮上安装的光敏二极管间歇地接收到光信号,输出电脉冲,再经过放大整形电路,输出标准ttl信号。1.2工作原理出租车计价是根据车所行驶
4、的路程以及乘客乘车的时间段综合决定的。出租车行驶总路程可以通过车轮的周长乘车轮旋转圈数得到。即可计算得到车轮旋转几周出租车能行驶一公里的路程。因此,使用光电传感器的目的就是方便地计量车轮旋转的圈数。可在车轮转轴涂上白色条纹,其余部分涂成黑色,发光管照射转轴。当转轴转动时,反光与不反光交替出现,所以光电元件间断地接收光的反射信号,输出电脉冲。再经过放大整形电路,输出标准ttl信号。输出的脉冲信号被接入到80c51单片机系统中,通过计算接收到的脉冲个数,计算出当前所行驶的路程。同时,根据不同的收费标准,选择相应的起步价、单价等收费标准进行计算。1、电感式接近开关电感式接近开关属于一种有开关量输出的
5、位置传感器,它由lc高频振荡器和放大处理电路组成,利用金属物体在接近这个能产生电磁场的振荡感应头时,使物体内部产生涡流。这个涡流反作用于接近开关,使接近开关振荡能力衰减,内部电路的参数发生变化,由此识别出有无金属物体接近,进而控制开关的通或断。这种接近开关所能检测的物体必须是金属物体。电感式接近开关的工作图如下:图2.1 接近开关工作流程图2.、 光电开关光电开关主要采用了光电传感器的基本特性设计而成。(如图2.2)当有光照射时,二极管pn结附近受光子轰击,使被束缚在价带中的电子获得能量,迁跃到导带成为自由电子,同时价带中产生自由空穴,这些电子空穴对,对多数载流子影响不大,而对少数载流子来说,
6、其数目大大增加,在反向电压的作用下,反向饱和漏电流增大,这时相当于光敏二极管导通,并且光照度愈大,光电流也愈大;当无光照射时,电路中仅有很小的反向饱和漏电流,二极管截止。图2.2反射式光电开关optoiso1为光电传感器使用vcc=5v电源(如图2.3),可以安装在出租车车轮处。当出租车在行进过程中,则车轮就会不断对它遮挡,从而产生一系列脉冲。由于这些脉冲可能会被干扰,或者电平不稳定,因此就需要增加一个三级管(q1)对信号进行放大。而74ls14是作为反相器的功能来使用,可以使out口输出的脉冲符合ttl电平,直接可输入到80c51的t0口。设计中以光电开关作为传感器元件,并且在实现阶段用函数
7、信号发生器模拟光电传感器实现计程脉冲的形成。图2.3 光电脉冲的转换电路3.霍尔传感器1里程计算、计价单元的设计里程计算是通过安装在车轮上的霍尔传感器a44e检测到的信号,送到单片机,经处理计算,送给显示单元的。其原理如图21所示。由于a44e 属于开关型的霍尔器件,其工作电压范围比较宽(4.518v),其输出的信号符合ttl 电平标准,可以直接接到单片机的io 端口上,而且其最高检测频率可达到1mhz。a44e 集成霍耳开关由稳压器a、霍耳电势发生器(即硅霍耳片)b、差分放大器c、施密特触发器d 和oc 门输出e 五个基本部分组成。在输入端输入电压cc v ,经稳压器稳压后加在霍耳电势发生器
8、的两端,根据霍耳效应原理,当霍耳片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍耳电势差h v 输出,该h v 信号经放大器放大后送至施密特触发器整形,使其成为方波输送到oc 门输出。当施加的磁场达到工作点(即op b )时,触发器输出高电压(相对于地电位),使三极管导通,此时oc 门输出端输出低电压,通常称这种状态为开。当施加的磁场达到释放点(即rp b )时,触发器输出低电压,三极管截止,使oc 门输出高电压,这种状态为关。这样两次电压变换,使霍耳开关完成了一次开关动作。其集成霍耳开关外形及接线如图23 所示。图23 集成霍耳开关外形及接线我们选择了p3.2
9、口作为信号的输入端,内部采用外部中断0(这样可以减少程序设计的麻烦),车轮每转一圈(我们设车轮的周长是1 米),霍尔开关就检测并输出信号,引起单片机的中断,对脉计数,当计数达到1000 次时,也就是1 公里,单片机就控制将金额自动的加增加,其计算公式:当前单价 公里数=金额。3 单片机80c51的简介3.1 主芯片80c51的硬件资源3.1.1 单片机的概念单片机(microcontroller,又称微控制器)是在一块硅片上集成了各种部件的微型计算机。这些部件包括中央处理器cpu、数据存储器ram、程序存储器rom、定时器/计数器和多种i/o接口电路。图4-1是80c51单片机的基本结构图图4
10、-1 80c51结构方框图a. 80c51单片机的结构特点有以下几点:l 8位cpu;l 片内振荡器及时钟电路;l 32根i/o线;l 外部存储器rom和ram,寻址范围各64kb;l 两个16位的定时器/计数器;l 5个中断源,2个中断优先级l 全双工串行口l 布尔处理器b. 定时器/计数器80c51内部有两个16位可编程定时器/计数器,记为t0和t1。16位是指它们都是由16个触发器构成,故最大计数模值为2-1。可编程是指他们的工作方式由指令来设定,或者当计数器来用,或者当定时器来用,并且计数(定时)的范围也可以由指令来设置。这种控制功能是通过定时器方式控制寄存器tmod来完成的.如果需要
11、,定时器在计到规定的定时值时可以向cpu发出中断申请,从而完成某种定时的控制功能。在计数状态下同样也可以申请中断。定时器控制寄存器tcon用来负责定时器的启动、停止以及中断管理在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟。技术工作时,时钟脉冲由to和t1输入。c. 中断系统80c51的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。外部中断申请通过into和int1(即p3.2和p3.3)输入,输入方式可以是电平触发(低电平有效),也可以是边沿触发(下降沿有效)。两个定时器中断请求是当定时器溢出时向cpu提出的,即
12、当定时器由状态1转为全零时提出的。第五个中断请求是由串行口发出的,串行口每发送完一个数据或接收完一个数据,就可提出一次中断请求。3.1.2 80c51的芯片引脚图vcc:供电电压。gnd:接地。p0口:p0口为一个8位漏极开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。图4-2 80c51引脚图p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电
13、流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。因此作为输入时,p2口的管脚被外部拉低,将输出电流,这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地
14、址信号和控制信号。p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at80c51的一些特殊功能口,如下表所示:p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 /int0(外部中断0)p3.3 /int1(外部中断1)p3.4 t0(定时器/计数器0外部输入)p3.5 t1(定时器/计数器1外部输入)p3.6 /wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读选通)p3口同时为闪
15、烁编程和编程校验接收一些控制信号。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,
16、置位无效。psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。3.1.3 使用i/o口的注意事项(1)p1,p2,p3口的输出缓冲器
17、可驱动4个lsttl电路。对于hcmos芯片单片机的i/o口,在正常情况下,可任意由ttl或nmos电路驱动。hmos及cmos性的单片机i/o口有集电极开路或漏极开路的输出来驱动时,不必外加上拉电阻(2)对于74ls系列,cd4000系列以及一些大规模集成电路芯片(如8155,8253,8279等),都可以和mcs-51系列单片机直接接口。具体使用时,可以查阅有关器件手册或参考典型电路(3)对一些线性组件,特别是应用键盘、码盘、led显示器等输入/输出设备时,应当尽量增加驱动部分的容量,否则,单片机将提供不出足够的驱动电流供给负载使用3.2 80c51中断系统所谓中断,是指当计算机执行正常程
18、序时,系统中出现某些急需处理的异常情况和特殊情求,cpu暂停执行现行程序,转去对随机发生地更紧迫事件进行处理;处理完毕后,cpu自动返回原来的程序继续执行。中断允许软件设计不需要关心系统其他部分定时要求,算术程序不需要考虑隔几个指令检查i/o设备是否需要服务。相反,算术程序编写时好像有无限的时间作算术运算而无其他工作在进行。若其它事件需要服务时,则通过中断告诉系统。80c51单片机有5个中断源,有两个中断优先级,每个中断源的优先级可以编程控制。中断允许受到cpu开中断和中断源开中断的两级控制。3.2.1 中断源中断源是指任何引起计算机中断的事件,一般一台机器允许有许多个中断源。80c51系列单
19、片机至少有5个中断源。增加很少的硬件就可把各种硬件中断源“线或”成为一个外部中断输入,然后再顺序检索一起中断的特定源。80c51单片机的5个中断源是:外部中断请求0,由(p3.2)输入;外部中断请求1,由(p3.3)输入;片内定时器/计数器0益处中断请求;片内定时器/计数器1溢出中断请求; 片内串行口发送/接收中断请求;为了了解每个中断源是否产生了中断请求,中断系统应设置许多个中断请求触发器(标志位)实现记忆。这些中断源请求标志位分别有特殊功能寄存器tcon和scon的相应位锁存定时器/计数器控制寄存器tcon,它是一个八位的寄存器,各位如表4.1所示:表4.1 定时器/计数器控制寄存器tco
20、ntf1tf0ie1it1ie0it0it0,it1:外部中断0、1触发方式选择位,由软件设置。1是下降沿触发,0是电平触发。ie0,ie1:外部终端0、1请求标志位。tf0,tf1:定时器/计数器0、1溢出中断请求标志。3.2.2 中断的控制中断的控制主要实现中断的开关管理和中断优先级的管理。这个管理主要通过对特殊功能寄存器ie和ip的编程实现。(1)中断允许寄存器ie表4.2 中断允许寄存器ieea -et2eset1ex1et0ex0ex0,ex1:外部终端0,1的中断允许位。1是中断开,0是中断关et0,et1:定时器/计数器0、1溢出中断允许位。1是开中断,0是关中断es:串行口中断
21、允许位。1是中断开,0是中断关et2:定时器/计数器2溢出中断位ea:cpu开/关中断控制位。1是开中断,0是关中断(2)中断优先级寄存器ip表4.3 中断优先级寄存器ippspt1px1pt0px0若系统中多个中断源同时请求中断,则cpu按中断源的优先级别,由高到低分别响应。80c51单片机有两个中断优先级:高优先级和低优先级。每个中断源都可以编程为高优先级。这可以实现两级中断嵌套。嵌套的原则:一个正在执行的中断服务程序可以被高级的中断请求中断,而不能被同级或较低级的中断请求中断。两级中断通过使用ip寄存器设置,相应的位置1,则优先级高,0则优先级低。px0、px1:终端0、1中断优先级控制
22、;pt0、pt1:定时器/计数器0、1中断优先级控制。ps:串行口中断优先级控制。80c51复位时,ip被清零,5个中断源都在同一个优先级。这时若其中几个中断源同时产生中断请求,则cpu按照片内硬件优先级链路的顺序相应中断,硬件优先级由高到低的顺序是:外部终端0,定时器/计数器0,外部中断1,定时器/计数器1串行口中断。3.2.3 中断响应80c51的cpu在每个机器周期采样中断源的中断请求标志位,如果没有上述阻止条件,则将在下一个机器周期响应被激活的最高级中断请求。阻止条件如下: cpu正在处理同级或更高级的中断; 现行机器周期不是所执行指令的最后一个机器周期; 正在执行的是reti或者是访
23、问ie或ip的指令;cpu在中断响应之后完成如下操作: 硬件清除相应的中断标志位; 执行一条硬件子程序,保护断点,并转向中断服务程序入口。 结束中断时执行reti指令,恢复断点,返回主程序。80c51的cpu在相应中断请求时,由硬件电路自动形成转向与该中断源对应的中断的服务程序入口地址。这种方法为硬件向量中断法。各中断源的中断服务程序入口地址如下:表4.4 中断源的中断服务程序入口地址编号中断源入口地址0外部终端00003h1定时器/计数器0000bh2外部终端10013h3定时器/计数器1001bh4串行口中断0023h各中断服务程序入口地址仅隔8个字节,编译器在这些地址放入无条件转移指令,
24、跳到服务程序的实际地址。向量中断包括把先前的程序计数指针推入堆栈,中断服务程序很像其他子程序。当向量中断发生时,硬件禁止所有中断。此时表明外部中断或定时器溢出的标志位由硬件清除。中断服务程序的不同分支取决于中断源。在重新允许全局cpu中断ea之前,必须仔细清除各种标志。标志会引起立即地重复中断。80c51对终端实际上有特殊的返回指令-reti。不是ret。reti重新允许系统识别其他中断。因而,没必要在正常使用中断时复位ea,只要在程序初始化时开中断一次就可以了。3.3 单片机定时器/计数器的使用80c51系列单片机至少有两个16位内部定时器/计数器。8952有三个定时器/计数器,其中连个基本
25、定时器/计数器是定时器/计数器0和定时器/计数器1。他们既可以编程为定时器使用,也可以编程为计数器使用。若是计数内部晶振驱动时钟,则它是定时器;若是计数80c51的输入引脚的脉冲信号,则它是计数器。80c51的t/c时加一计数的。定时器实际上也是工作在技术方式下的,只不过对固定频率的脉冲计数;由于脉冲周期固定,由计数值可以计算出时间,有定时功能。当t/c工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加一,频率加=fosc/12。晶振为6mhz,计数频率=500khz,每2us计数加一。当t/c工作在计数器时,计数脉冲来自外部脉冲输入引脚t0或t1。当t0或t1脚上负跳变需2个
26、机器周期,即24个振荡周期。所以t0或t1脚输入的计数外部脉冲的最高频率为fosc/12。当晶振为12mhz时,最高技术频率为500khz,高于此频率将计数出错。3.3.1 与t/c有关的特殊功能寄存器(1)计数寄存器th和tlt/c是16位的,计数寄存器有th高8位tl低8位构成。在特殊功能寄存器中,对应t/c0为th0和tl0;对应t/c1为th1和tl1。定时器/计数器的初始值通过th1/tl1和th0/tl0设置(2)定时器/计数器控制寄存器tcon表4.5 定时器/计数器控制寄存器tcontr1tr0tr0、tr1:定时器/计数器0、1启动控制位。1是启动,0是停止tcon复位后清零
27、,t/c需要受到软件控制才能启动计数;当计数计满时,产生向高位的进位tf,即溢出中断请求标志t/c的方式控制寄存器tmod表4.6 t/c的方式控制寄存器tmodgatec/tm1m0gatec/tm1m0c/t:计数器或定时器选择位。1位计数器,0位定时器gate:门控信号。1时t/c的启动控制受到双重控制,即要求tr0/tr1和int0/int1同时为高;0时t/c的启动仅受tr0/tr1控制。表4.7 m1和m0工作方式选择位m1 m0方式功能0 00为13位定时器/计数器,tl存低5位,th存高8位0 11为16定时器/计数器,tl存低8,th存高8位1 02常数自动装入的8位定时器/
28、计数器1 13仅适用于t/c0,两个8为定时器/计数器3.3.2 定时器/计数器的初始化(1)初始化步骤在使用80c51的定时器/计数器前,应对它进行编程初始化,主要是对tcon和tmod编程,还需要计算和装载t/c的计数初值。一般完成以下几个步骤:l 确定t/c的工作方式-编程tmod寄存器。l 计算t/c中的计数初值,并装载到th和tl。l t/c在中断方式工作时,须开cpu中断和源中断-编程ie寄存器。l 启动定时器/计数器-编程tcon中tr1和tr0位(2)计数初值的计算在定时器方式下,t/c是对机器周期脉冲计数的,如果fosc=6mhz,一个机器周期为2us,则方式0 13位定时器
29、最大时间间隔=(2-1)2us=16.384ms;方式1 16位定时器最大时间间隔=(2-1)2us=131.072ms;方式2 8 位定时器最大时间间隔=(2-1)2us=512us若使t/c工作在定时器方式1,要求定时1ms,求计数初值。如设计数初值为x,则有(2-1)2us=1000usx=2-500因此,th,tl可置65536-500。2系统组成及工作原理2.1控制单元设计按键名称,o键表示开始计算路程;f键表示暂停;e键表示复位。 当程序开始运行后,按下0键则表示开始计算路程,并由数码管显示出来;按下f键则路程记数器暂停,并显示当前路程,当按下e键则复位。2.2输出单元设计 通过六
30、个8段led数码管来显示路程。前四个分别表示千位、百位、十位、个位,而后两个表示十分位和百分位。2.3定时器的功能和使用方法 首先选择方式1为16位的定时器,其初始化具体如下: s其中fosc为晶振频率,定时时间。3电路方案设计3.1电路设计方案使用单片机来完成设计要求。电路包括显示电路,设置电路,存储电路,复位电路,其工作原理图如图2所示,单片机功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。针对计费模式的切换,通过软件编程就可以轻容易的实现。避免了机械开关带来的不稳定因素,单片机单元框图如图3所示。显示电路 路程显示设置
31、电路系统复位存储电路系统开始系统暂停 单 片 机图2 工作原理框图 cpu数码管显示功能按键时钟电路8255并行编程图3 单片机单元框图3.2单元电路设计3.2.1复位电路设计在单片机的应用系统中,除单片机本身需复位以外,外部扩展的i/o接口电路等也需要复位,因此需要一个系统的同步复位信号:即单片机复位后,cpu开始工作时,外部的电路一定要复位好,以保证cpu有效的对外部电路进行初始化编程。51系列单片机的复位端rst是一个施密特触发输入,高电平有效。复位电路产生的复位信号经施密特电路整形后作为系统复位信号,加到51系列单片机和外部i/o接口电路的复位端.其电路图如图4所示,其中r1=47k,
32、r2=100,c=10uf。图4 复位电路3.2.2时钟电路设计80c51系列单片机内部有一个可控制的反相放大器,引脚xtal1、xtal2为反相放大器的输入端和输出端,在xtal1、xtal2上外接晶振(或陶瓷谐振器)和电容便组成振荡器。具体的时钟电路如图5所示。电容1、2的典型值为30pf+10pf(晶振)或40pf+10pf(陶瓷谐振器)。振荡器频率主要取决与晶振(或陶瓷谐振器)的频率,但必须小于器件所允许的最高频率。振荡器的工作受控制,复位后0(1)振荡器工作,可由软件置1,使振荡器停止振荡,从而使整个单片机停止工作,以达到节电的目的。图3.2 时钟电路图5 时钟电路3.2.3单片机最
33、小系统主控机系统采用了atmel 公司生产的80c51 单片机,它含有128 字节数据存储器,内置4k 的电可擦除flash rom,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。复位电路和晶振电路是80c51 工作所需的最简外围电路。80c51 的复位端是一个史密特触发输入,高电平有效,而系统中的时钟接口和can 总线接口的复位信号都是低电平有效。在复位电路中,按一下复位开关就使在rs端出现一段时间的高电平,经过74ls14 的一次反相整形,提供给单片机复位端。再经过一次反相整形,通过i/orst 端提供给外部接口电路。外接12m 晶振和两个20p 电容组成系统的内部时钟
34、电路。3.3 8255a键盘显示电路设计8255的数据线片选信号线、地址线、读写控制线等分别与系统总线相连,其a、b、c三个端口以排针形式引出,供8255实验使用,如图6所示。 图6 系统中的8255线路采用8255扩展i/o口所谓可编程的接口芯片是指其功能可由微处理机的指令来加以改变的接口芯片,利用编程的方法,可以使一个接口芯片执行不同的接口功能。目前,各生产厂家已提供了很多系列的可编程接口,mcs-51单片机常用的两种接口芯片是8255以及8155,本书主要介绍这两种芯片在51单片机中的使用。8255和mcs-51相连,可以为外设提供三个8位的i/o端口:a口、b口和c口,三个端口的功能完
35、全由编程来决定。8255的内部结构和引脚图(1)a口、b口和c口。a口、b口和c口均为8位i/o数据口,但结构上略有差别。a口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲/锁存器组成。b口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲器组成。三个端口都可以和外设相连,分别传送外设的输入/输出数据或控制信息。 (2) a、b组控制电路。这是两组根据cpu的命令字控制8255工作方式的电路。a组控制a口及c口的高4位,b组控制b口及c口的低4位。 (3) 数据缓冲器。这是一个双向三态8位的驱动口,用于和单片机的数据总线相连,传送数据或控制信息。(4) 读/写控制逻辑。这部分电
36、路接收mcs-51送来的读/写命令和选口地址,用于控制对8255的读/写。 2) 引脚 (1) 数据线(8条):d0d7为数据总线,用于传送cpu和8255之间的数据、命令和状态字。 (2) 控制线和寻址线(6条)。 reset:复位信号,输入高电平有效。一般和单片机的复位相连,复位后,8255所有内部寄存器清0,所有口都为输入方式。/re和/wr:读/写信号线,输入,低电平有效。当为0时(必为1),所选的8255处于读状态,8255送出信息到cpu。反之亦然。cs:片选线,输入,低电平有效。a0、a1:地址输入线。当=0,芯片被选中时,这两位的4种组合00、01、10、11分别用于选择a、b
37、、c口和控制寄存器。(3)i/o口线(24条):pa0pa7、pb0pb7、pc0pc7为24条双向三态i/o总线,分别与a、b、c口相对应,用于8255和外设之间传送数据。(4) 电源线(2条):vcc为+5 v,gnd为地线。 2. 8255的控制字8255的三个端口具体工作在什么方式下,是通过cpu对控制口的写入控制字来决定的。8255有两个控制字:方式选择控制字和c口置/复位控制字。用户通过程序把这两个控制字送到8255的控制寄存器(a0a1=11),这两个控制字以d7来作为标志。1) 方式选择控制字方式选择控制字的格式和定义如图6.18(a)所示。例7.5 设8255控制字寄存器的地
38、址为f3h,试编程使a口为方式0输出,b口为方式0输入,pc4pc7为输出,pc0pc3为输入。其程序为mov r0,#0f3h mov a,#83h movx r0, a 2) c口置/复位控制字c口置/复位控制字的格式和定义如图6.18(b)所示。c口具有位操作功能,把一个置/复位控制字送入8255的控制寄存器,就能将c口的某一位置1或清0而不影响其它位的状态。图7.18 8255控制字的格式和定义 例7.6 仍设8255控制字寄存器地址为f3h,下述程序可以将pc1置1,pc3清0。mov r0,#0f3hmov a,#03hmovx r0, amov a,#06hmovx r0, a3
39、. 8255的工作方式8255有三种工作方式:方式0、方式1、方式2。方式的选择是通过上述写控制字的方法来完成的。(1) 方式0(基本输入/输出方式):a口、b口及c口高4位、低4位都可以设置输入或输出,不需要选通信号。单片机可以对8255进行i/o数据的无条件传送,外设的i/o数据在8255的各端口能得到锁存和缓冲。(2) 方式1(选通输入/输出方式):a口和b口都可以独立的设置为方式1,在这种方式下,8255的a口和b口通常用于传送和它们相连外设的i/o数据,c口作为a口和b口的握手联络线,以实现中断方式传送i/o数据。c口作为联络线的各位分配是在设计8255时规定的,分配表如表7.3所示
40、。表7.3 8255c口联络信号分配表c口各位方式1方式2输入方式输出方式双向方式pc0intrbintrb由b口方式决定pc1ibfb由b口方式决定pc2setb由b口方式决定pc3intraintrbintrapc4i/opc5ibfai/oibfapc6i/opc7i/oi/o口线:可以根据用户需要连接外部设备。图6.19中,a口作输出,接8个发光二极管led;b口作输入,接8个按键开关;c口未用。图7.19 8051和8255的接口电路 2) 地址确定 8051a15a14a13a12a11a10a9a8a7a6a5a4a3a2a1a0p2.7p2.6p2.5p2.4p2.3p2.2p
41、2.1p2.0p0.7p0.6p0.5p0.4p0.3p0.2p0.1p0.08255a1a0a口:000b口:001c口:010控制口:011根据上述接法,8255的a、b、c以及控制口的地址分别为0000h、0001h、0002h和0003h(假设无关位都取0)。3) 编程应用例7.7 如果在8255的b口接有8个按键,a口接有8个发光二极管,即类似于图6.16中按键和二极管的连接,则下面的程序能够完成按下某一按键,相应的发光二极管发光的功能。 mov dptr,#0003h ;指向8255的控制口 mov a,#83h movx dptr, a ;向控制口写控制字,a口输出,b口输入 m
42、ov dptr,#0001h ;指向8255的b口loop: movx a, dptr ;检测按键,将按键状态读入a累加器 mov dptr,#0000h ;指向8255的a口 movx dptr, a ;驱动led发光 sjmp loop4. 8255与mcs-51的接口 8255和单片机的接口十分简单,只需要一个8位的地址锁存器即可。锁存器用来锁存p0口输出的低8位地址信息。图6.19为8255扩展实例。 1) 连线说明 数据线:8255的8根数据线d0d7直接和p0口一一对应相连就可以了。 led数码管显示接口一、led数码管图8-1 led数码管led数码管分类:按其内部结构可分为共阴
43、型和共阳型;按其外形尺寸有多种形式,使用较多的是0.5和0.8;按显示颜色也有多种形式,主要有红色和绿色;按亮度强弱可分为超亮、高亮和普亮。正向压降一般为1.52v,额定电流为10ma,最大电流为40ma。 二、led数码管编码方式 表8-1 共阴和共阳led数码管几种八段编码表 显示数字共阴顺序小数点暗 共阴逆序小数点暗 共阳顺序小数点亮 共阳顺序小数点暗 dp g f e d c b a16进制 a b c d e f g dp16进制00 0 1 1 1 1 1 13fh1 1 1 1 1 1 0 0fch40hc0h10 0 0 0 0 1 1 006h0 1 1 0 0 0 0 06
44、0h79hf9h20 1 0 1 1 0 1 15bh1 1 0 1 1 0 1 0dah24ha4h30 1 0 0 1 1 1 14fh1 1 1 1 0 0 1 0f2h30hb0h40 1 1 0 0 1 1 066h0 1 1 0 0 1 1 066h19h99h50 1 1 0 1 1 0 16dh1 0 1 1 0 1 1 0b6h12h92h60 1 1 1 1 1 0 17dh1 0 1 1 1 1 1 0beh02h82h70 0 0 0 0 1 1 107h1 1 1 0 0 0 0 0e0h78hf8h80 1 1 1 1 1 1 17fh1 1 1 1 1 1 1 0
45、feh00h80h90 1 1 0 1 1 1 16fh1 1 1 1 0 1 1 0f6h10h90h显示数转换为显示字段码的步骤: 从显示数中分离出显示的每一位数字 方法是将显示数除以十进制的权 将分离出的显示数字转换为显示字段码 方法是查表【例8-1】已知显示数存在内ram 30h(高位)、31h中,试将其转换为5位共阴字段码(顺序),存在以30h(高位)为首址的内ram中。解:连续调用下列二个子程序即可。 分离显示数字子程序sprt: mov r0,#30h ;置万位bcd码间址 mov a,30h ;置被除数 mov b,31h ; mov r6,#27h ;置除数10000 = 2
46、710h mov r5,#10h ; lcall sum ;除以10000,万位商存30h,余数存a、b mov r6,#03h ;置除数1000 = 03e8h mov r5,#0e8h ; inc r0 ;指向千位商间址(31h) lcall sum ;除以1000,千位商存31h,余数存a、b mov r6,#0 ;置除数100 mov r5,#100 ; inc r0 ;指向百位商间址(32h) lcall sum ;除以100,百位商存32h,余数存a(b=0) mov b,#10 ;置除数10 div ab ;除以10 inc r0 ;指向十位商间址(33h) mov r0,a ;
47、十位商存33h xch a,b ;读个位数 inc r0 ;指向个位间址(34h) mov r0,a ;个位存34h ret ;说明:sum是16位除以16位子程序:(a、b)(r6、r5)=商r0,余数(a、b)。 转换显示字段码子程序chag: mov dptr,#tab ;置共阴字段码表首址 mov r0,#30h ;置显示数据区首址cglp: mov a,r0 ;取显示数字 movc a,a+dptr ;读相应显示字段码 mov r0,a ;存显示字段码 inc r0 ;指向下一显示数字 cjne r0,#35h,cglp ;判5个显示数字转换完否?未完继续 ret ;转换完毕,结束t
48、ab: db 3fh,06h,5bh,4fh,66h ;共阴字段码表 db 6dh,7dh,07h,7fh,6fh ;三、静态显示方式及其典型应用电路led数码管显示分类:静态显示方式和动态显示方式。 静态显示方式,每一位字段码分别从i/o控制口输出,保持不变直至cpu刷新。 特点:编程较简单,但占用i/o口线多,一般适用于显示位数较少的场合。 动态显示方式,在某一瞬时显示一位,依次循环扫描,轮流显示,由于人的视觉滞留效应,人们看到的是多位同时稳定显示。 特点:占用i/o端线少,电路较简单,编程较复杂,cpu要定时扫描刷新显示。一般适用于显示位数较多的场合。1、并行扩展静态显示电路 图8-2
49、led静态显示电路【例8-2】按图8-2编制显示子程序,显示数(255)存在内ram 30h中。解:dir1: mov a,30h ;读显示数 mov b,#100 ;置除数 div ab ;产生百位显示数字 movc a,a+dptr ;读百位显示符 mov dptr,#0dfffh ;置74377(百位)地址 movx dptr,a ;输出百位显示符 mov a,b ;读余数 mov b,#10 ;置除数 div ab ;产生十位显示数字 mov dptr,#tab ;置共阳字段码表首址 movc a,a+dptr ;读十位显示符 mov dptr,#0bfffh ;置74377(十位)地址 movx dptr,a ;输出十位显示符 mov a,b ;读个位显示数字 mov dptr,#tab ;置共阳字段码表首址 movc a,a+dptr ;读个位显示符 mov dptr,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度常州智能化消防系统设计与施工合同2篇
- 二零二五年度离婚协议中商业秘密保护协议2篇
- 二零二五年度环保工程合作合同范本
- 2025年协作出版合同范文
- 2025招聘合同范本范文
- 建设工程勘察设计合同范本
- 股权收购合同书范本
- 达人签约协议
- 二零二五年建筑行业员工劳动关系转移三方合同3篇
- 天津中心有限合伙企业合伙协议
- 可口可乐火炬营销案例分析
- 赤峰市松山区王府镇水泉沟矿泉水2024年度矿山地质环境治理计划书
- 某年机关老干部工作总结
- 股骨干骨折(骨科)
- 租房定金协议电子版本
- 胸心外科细化标准
- 飞机拆解管理手册
- 农村文化建设培训
- 教科版六年级下册科学第一单元《小小工程师》教材分析及全部教案(定稿;共7课时)
- 身心灵疗愈行业报告
- 汽车安全与法规 (第3版) 课件 第1-3章 汽车安全技术概述、汽车安全技术法规与标准、汽车主动安全性
评论
0/150
提交评论