51单片机8255之PC口控制

合集下载

8255编程方法

8255编程方法

8255编程方法
8255是一款并行I/O接口芯片,用于扩展微处理器的并行I/O端口。

以下
是8255的编程方法:
1. 初始化8255
在编程8255之前,需要对其进行初始化,为其分配输入输出端口、工作方式和控制字。

这些设置可以在写入控制寄存器时完成。

控制字定义了8255
的工作模式和输入输出端口。

2. 设置控制字
控制字用于设置8255的工作模式和输入输出端口。

控制字由三个部分组成:工作方式选择位、端口A和端口B选择位、C口高4位选择位。

控制字的
每一位都有特定的含义,需要根据需要进行设置。

3. 读写数据
通过8255的输入输出端口进行数据读写时,需要遵循特定的时序要求。

输入时序要求是:先写入输入选择字节,然后读入数据;输出时序要求是:先写入输出数据,然后写入输出选择字节。

在读写数据时,需要保证时序正确,否则可能导致数据传输错误。

4. 结束操作
在完成数据传输后,需要将8255的控制寄存器清零,以结束操作。

以上是8255的编程方法,需要根据具体的硬件设备和应用需求进行编程操作。

51单片机8255驱动C程序

51单片机8255驱动C程序

51单片机8255驱动C程序/*----------------------------------------------------------------------------------------------------------------库文件名称:driver8155.h功能描述:驱动8155,不需要了解8255的工作原理,透明操作8255的三个输入输出口PA、PB、PC读A口只需要调用rd_PA,写则需要调用wr_PA;B、C操作也一样全局变量: IO_flags,在其它程序中不能对其改写特殊说明: 无//----------------------------------------------------------------------------------------------------------------*/ #include<config.h>unsigned char const cfg_table[8]={0x80, /*10000000b, ;c=out b=out a=out*/0x90, /*10010000b, ;c=out b=out a=in */0x82, /*10000010b, ;c=out b=in a=out*/0x92, /*10010010b, ;c=out b=in a=in */0x89, /*10001001b, ;c=in b=out a=out*/0x99, /*10011001b, ;c=in b=out a=in */0x8B, /*10001011b, ;c=in b=in a=out*/0x9B, /*10011011b, ;c=in b=in a=in */};unsigned char rd_mem(unsigned char mem_ad){}void PABC_config(void ){a8255_CON=cfg_table[IO_flags];}char rd_PA(void) /*读PA口*/{unsigned char PA_data;ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/do{IO_flagsA=1; /*置PA状态标志位为高--输入*/IO_flags=ACC;PABC_config(); /*调用配置子程序,完成对8255的设置*/ACC=IO_flags;}while(IO_flagsA==0); /*判断状态标志位是否为高*//*控制字设置完成*/PA_data=a8255_PA; /*把PA口的数据读到PA_data*/return(PA_data); /*返回PA_data*/}char rd_PB(void) /*读PB口*/{unsigned char PB_data;ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/do{IO_flagsB=1; /*置PB状态标志位为高--输入*/IO_flags=ACC;PABC_config(); /*调用配置子程序,完成对8255的设置*/ACC=IO_flags;}while(IO_flagsB==0); /*判断状态标志位是否为高*//*控制字设置完成*/PB_data=a8255_PB; /*把PA口的数据读到PB_data*/return(PB_data); /*返回PB_data*/}char rd_PC(void) /*读PC口*/{unsigned char PC_data;ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/do{IO_flagsC=1; /*置PC状态标志位为高--输入*/IO_flags=ACC;PABC_config(); /*调用配置子程序,完成对8255的设置*/ACC=IO_flags;}while(IO_flagsC==0); /*判断状态标志位是否为高*//*控制字设置完成*/PC_data=a8255_PC; /*把PC口的数据读到PC_data*/return(PC_data); /*返回PC_data*/}void wd_PA(unsigned char PA_data) /*写PA口*/{ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/{IO_flagsA=0; /*置PA状态标志位为低--输出*/IO_flags=ACC; /*位操作完成,把ACC的内容写回状态标志字*/PABC_config(); /*调用配置子程序,完成对8255的设置*/ACC=IO_flags;}while(IO_flagsA==1); /*判断状态标志位是否为高为高,设置未完成,需从新设置*/a8255_PA=PA_data; /*将PA_data的内容送到PA口*/}void wd_PB(unsigned char PB_data) /*写PB口*/{ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/{IO_flagsB=0; /*置PB状态标志位为低--输出*/IO_flags=ACC; /*位操作完成,把ACC的内容写回状态标志字*/PABC_config(); /*调用配置子程序,完成对8255的设置*/ACC=IO_flags;}while(IO_flagsB==1); /*判断状态标志位是否为高为高,设置未完成,需从新设置*/a8255_PB=PB_data; /*将PB_data的内容送到PB口*/}void wd_PC(unsigned char PC_data) /*写PC口*/{ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/{IO_flagsC=0; /*置PC状态标志位为低--输出*/IO_flags=ACC; /*位操作完成,把ACC的内容写回状态标志字*/PABC_config(); /*调用配置子程序,完成对8255的设置*/ACC=IO_flags;}while(IO_flagsC==1); /*判断状态标志位是否为高为高,设置未完成,需从新设置*/a8255_PC=PC_data; /*将PC_data的内容送到PC口*/}void set_PC(unsigned char PC_num){ACC=IO_flags;IO_flagsC=0;ACC=IO_flags;PC_num=PC_num<<1;PC_num=(PC_num|0x01);a8255_CON=PC_num;}void clr_PC(unsigned char PC_num){ACC=IO_flags;IO_flagsC=1;ACC=IO_flags;PC_num=PC_num<<1;PC_num=(PC_num&0xFE);a8255_CON=PC_num;}void main(void){set_PC(0x01);}/*---------------------------------------------------文件名称:Config.h功能描述:端口定义和RAM配置输入参数:无输出参数:无特殊说明:根据具体分配的地址,重新设定各值//----------------------------------------------------------------------------------------------------------------*/ #include <reg52.h>#include<ABSACC.H>#define a8255_PA XBYTE[0x7F7C] /*PA口地址*/#define a8255_PB XBYTE[0x7F7D] /*PB口地址*/#define a8255_PC XBYTE[0x7F7E] /*PC口地址*/#define a8255_CON XBYTE[0x7F7F] /*控制字地址*/unsigned char IO_flags; /* 用于表示PA、PB、PC的当前输入输出状态内容不能被其它程序改写,操作时ACC=IO_flags*/sbit IO_flagsA=ACC^0; /*PA的当前输入输出状态置位表示输入,复位表示输出*/sbit IO_flagsB=ACC^1; /*PB的当前输入输出状态*/ sbit IO_flagsC=ACC^2; /*PC的当前输入输出状态*/char rd_PA(void); /*读PA口*/char rd_PB(void); /*读PB口*/char rd_PC(void); /*读PC口*/void wd_PA(unsigned char PA_data); /*写PA口*/void wd_PB(unsigned char PB_data); /*写PA口*/void wd_PC(unsigned char PC_data); /*写PA口*/void PABC_config(void ); /*写8255控制字*/。

8255A可编程并行口使用方法

8255A可编程并行口使用方法

8255A并行接口1.课程设计的目的为了巩固《微型计算机技术》课程学到的相关知识,通过对本课程所学知识的综合运用,使学生融会贯通课程中所学的理论知识,加深对计算机系统各个部分的工作原理及相互联系的认识,加深对接口的理解,清晰地建立计算机系统的概念,培养学生进行微机应用系统硬件和软件开发的实践工作能力。

2.设计方案论证2.1设计方案的选择在进行系统设计之前,必须先熟悉被控制对象的生产过程和工艺要求,对控制对象的工作过程进行深入的调查,根据实际应用中的问题提出具体的控制要求,以确定系统所要完成的任务;然后提出不同的总体方案进行比较论证,确定出系统的总体方案。

在确定系统的总体方案时,对系统的硬件和软件功能应进行综合性考虑,因为系统的一个控制功能一般是既可以用硬件来完成,也可以由软件来完成,究竟采用什么方式,则要根据系统的实时性及硬件系统的性能价格比综合平衡后加以确定。

一般情况下,用硬件来完成速度快,可节约CPU的大量时间,但这会使系统非常复杂,而且价格会高一些;用软甲实现价格便宜,但要占用CPU 较多的时间。

所以一般的原则是在CPU时间允许的情况下,尽量采用软件,如果控制回路较多或者有些软件设计比较困难,则可考虑用硬件来完成,总之,一个控制系统哪一部分用硬件来实现,哪一部分用软件来实现,要结合具体情况进行比较后再确定。

2.1.2设计目的随着社会的发展,城市规模的不断扩大,城市交通成为制约城市发展的一大因素。

人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题当然也日益重要。

因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。

有了交通灯,人们的安全出行也有了很大的保障。

自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化。

尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可或缺的工具和手段,这些都为交通灯控制系统的设计提供了一定的技术基础。

基于Intel8255A和MCS-51单片机的电机控制

基于Intel8255A和MCS-51单片机的电机控制

基于Intel8255A和MCS-51单片机的电机控制摘要通过利用可编程并行接口Intel8255A芯片实现MCS-51单片机的外围接口的扩展,利用扩展的接口配合相应的限位开关来控制直流电机的正反转,实现电机的往复运动,这种工况在现场处处可见,如何用较少的单片机资源来完成这个功能是研究的核心问题,在此,选用Intel8255A可编程并行接口。

关键词MCS-51;Intel8255A;直流电机;光电开关;限位开关0引言在工程应用中,我们经常看到电机在两个限位开关间做往复运动,完成某些特定的功能,实现电机往复运动的方法很多,如:可以用PLC控制接触器的开关与闭合来实现电机在限位开关之间的往复运动。

在这里,考虑到PLC的价格较高,虽然其抗干扰能力强,但在小型的工程应用中不必要的,所以,在这里选用MCS-51系列的单片机一样可以较好的完成制定的功能,并且价格低廉,应用灵活,便于再扩展。

1原理简介本实验通过利用Intel8255A可编程并行接口芯片扩展MCS-51单片机的I/O 口,以提高单片机资源的利用率,同时通过8个限位开关作为四台电机的正反转反馈信号。

通过设计的软件,不断的检测Intel8255A的输入接口,来判断哪一台电机碰到限位开关,当确定是哪一台电机时,由软件控制其反转,实现了电机在限位开关之间的往复运动。

Intel8255A简介:Intel 8255A是Intel公司推出的可编程并行口扩展芯片,它有三个输入输出端口,分别为PA,PB,PC口,这三个I/O口可以分成两组,A组和B组;A组由PA口和PC口的高四位组成,B组由PB口和PC口的第四位组成。

Intel8255A有5个控制端口,A0,A1是端口和控制口的选择端,当A0A1=11时选择的是控制口,其他三种状态分别选择PA,PB,PC口,CS为片选端,低电平有效,RD,WR分别为读写选通信号,通常和单片机的WR,RD 相连。

Intel8255AA有Mode0,Mode1,Mode2,3种工作模式,本实验采用的是Mode0,即输出锁存,输入锁存的I/O口。

8255端口地址如何确定_8255怎样计算端口地址

8255端口地址如何确定_8255怎样计算端口地址

8255端口地址如何确定_8255怎样计算端口地址8255芯片特性(1)一个并行输入、输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。

(2)具有24个可编程设置的I/O口,即3组8位的I/O口为PA口,PB口和PC口。

它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B 口及C口(低4位,PC0~PC3)。

A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定。

8255引脚及功能RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输。

RD:读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。

WR:写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。

D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。

方式0————基本输入输出方式;方式1————选通输入/出方式;方式2————双向选通输入/输出方式;PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。

工作于三种方式中的任何一种;。

第8章 MCS_51单片机接口技术-8255

第8章 MCS_51单片机接口技术-8255

D0~D7 RD RD A1 A0 RD RESET
PC4~PC7
B组控制
PB0~PB7
1.
2.
3.
4.
数据总线缓冲器:三态8位双向缓冲器,与系统数据总线 连接的缓冲部件;传送数据、控制字、状态字的通道。 3个8位数据端口(PA、PB、PC):通常PA口与PB口用作输入 输出的数据端口,PC口用作数据传输或提供联络线的端口。 在方式字的控制下,PC口可以分成两个4位的端口,其中 PC7~PC4同端口A配合使用, PC3~PC0同端口B配合使用。 A组、B组控制电路:这两组控制电路根据CPU发出的方式 选择控制字来控制8255A的工作方式,每个控制组都接收 来自读写控制逻辑的“命令”,接收来自内部数据总线的 “控制字”,并向与其相连的端口发出适当的控制信号。 A组控制电路控制PA口和PC口高4位,B组控制电路控制PB 口和PC口低4位。 读/写控制逻辑:用来管理数据、控制字和状态字的传送, 接收系统总线发来的有关信号,并向A、B两组控制部件发 送命令。



方式2将方式1的选通输入输出功能组合成一个 双向数据端口,可以发送数据和接收数据 只有端口A可以工作于方式2,需要利用端口C的 5个信号线,其作用与方式1相同 方式2的数据输入过程与方式1的输入方式一样 方式2的数据输出过程与方式1的输出方式有一 点不同:数据输出时8255A不是在OBF*有效时向 外设输出数据,而是在外设提供响应信号ACK* 时才送出数据
有效
输出数据 数据有效
tWB
8255A的工作方式——方式1(选通工作方式)
利用一组选通控制信号控制A端口和B端口的数据输入输出。 特点: 1. A、B口作输入或输出口,C口分为两部分,其部分位(6位) 固定用作A口、B口的选通控制信号。 2. C口的剩余位仍可作数据位使用。 3. A口、B口在作为输入和输出时的选通信号不同。 方式1的应用: 主要用于中断控制方式下的输入输出。 说明:C口除部分位用作选通信号外,其余位(2位)可工作在方 式0下,作为输入或输出线,用程序指定其数据传送方向。

基于PC机与8255的交通灯电路系统设计

基于PC机与8255的交通灯电路系统设计

微机原理与接口技术课程设计课程设计题目:基于PC机与8255的交通灯电路系统设计班级专业:姓名:学号:指导老师:地点:微机原理与接口技术实验室基于PC机与8255的交通灯电路系统设计第一部分概论十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。

井然秩序的实现,靠的是交通信号灯的自动指挥系统。

交通信号灯控制方式有很多。

本系统采用8255A芯片实现了A口设置红、绿、黄灯点亮时间的功能,从而控制LED发光二极管实现红、黄、绿灯循环点亮。

另外结合日常生活经验,并且从亚残会中对残疾人的生活不便中得出感悟,采用8253进行控制扬声器,在红、绿灯变换之间黄灯闪烁时,同时添加了“声音提示"功能。

整个系统具有固定的“红灯—黄灯—绿灯”转换间隔,并自动切换,对东西南北方向的道路进行“自动”的控制。

但是,经过小组成员提出的各种假设,发现此系统需要加入更多人性化的元素:交警可以根据实际的路面情况,针对不同的突发事件,进行手工控制红绿灯的转换。

例如救护车警车执行紧急任务;例如东西道路塞车,南北道路空闲无车辆行驶时,需要灵活调节红绿灯的转化。

通过8255并口控制,可以达到更加人性化的效果从而方便各种人群。

1.1设计任务:交通信号灯的控制(1)通过8255并行接口来控制LED发光二极管的亮灭,并适当延时。

(2)黄灯闪烁时,通过8253控制扬声器发出声音,以提醒灯的转换。

(3)通过8255并口控制,人工进行交通灯的转换。

1.2 任务要求(1)南北路口的绿灯、东西路口的红灯同时亮5秒左右。

(2)南北路口的黄灯闪烁若干次,扬声器鸣叫,同时东西路口的红灯闪烁。

(3)南北路口的红灯、东西路口的绿灯同时亮5秒左右。

(4)南北路口的红灯闪烁、同时东西路口的黄灯亮闪烁若干次,扬声器鸣叫。

(5)转(1)重复。

紧急情况可以手动控制红绿灯的变换。

1.3设计原理电路原理:本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。

8255控制数码管、单片机程序

8255控制数码管、单片机程序

8255 管脚图下面是8255 管脚设置,具体代码要看原理图中各管脚的连接情况。

reset = 0; 禁止复位cs = 0;wr = 0;//允许CPU将数据或控制字写入8255//A1=1.A0=1;选择.控制寄存器//假设00001111控制D口的数据,从A口输出;11110000控制D口的数据,从B口输出;实际情况由实际管脚连接决定。

d0 = d1=d2= d3=0;d4 = d5=d6=d7 = 1;A1=0;A0=0;选择PA口//pa口--数码管的段选//根据原理图设置pa口各引脚,假设使pa输出00000001控制第1个数码管pa0 = pa1=pa2=pa3=pa4=pa5=pa6= 0;pa7 = 1;A1=0;A0=1;选择PB口//PB口--数码管的位选//根据原理图设置pb口各引脚,假设使pb输出00000001控制数码管显示0 pa0 = pa1=pa2=pa3=pa4=pa5=pa6= 0;pa7 = 1;//=========A1=1.A0=1;选择.控制寄存器//假设00001111控制D口的数据,从A口输出;11110000控制D口的数据,从B口输出;实际情况由实际管脚连接决定。

d0 = d1=d2= d3=1;d4 = d5=d6=d7 = 0;A1=0;A0=0;选择PA口//pa口--数码管的段选//根据原理图设置pa口各引脚,假设使pa输出00000010控制第2个数码管pa0 = pa1=pa2=pa3=pa4=pa5=pa7= 0;pa6 = 1;A1=0;A0=1;选择PB口//PB口--数码管的位选//根据原理图设置pb口各引脚,假设使pb输出00000001控制数码管显示0 pa0 = pa1=pa2=pa3=pa4=pa5=pa6= 0;pa7 = 1;。

利用8255和51单片机实现数码管显示按键值的实验

利用8255和51单片机实现数码管显示按键值的实验

三个附加的控制端、和。当、时,输出为高电平(S=1),译码器处 于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平, 如表 3.3.5 所示。这三个控制端也叫做“片选”输入端,利用片选的作 用可以将多篇连接起来以扩展译码器的功能。 带控制输入端的译码 器又是一个完整的数据分配器。在图 3.3.8 电路中如果把作为“数据” 输入端(同时),而将作为“地址”输入端,那么从送来的数据只能通 过所指定的一根输出线送出去。这就不难理解为什么把叫做地址输入 了。例如当=101 时,门的输入端除了接至输出端的一个以外全是高 电平,因此的数据以反码的形式从输出,而不会被送到其他任何一个 输出端上。 【例 3.3.2】 试用两片 3 线-8 线译码器 74LS138 组成 4 线-16 线译码器,将输入的 4 位二进制代码译成 16 个独立的低电平 信号。 解:由图 3.3.8 可见,74LS138 仅有 3 个地址输入端。如果 想对 4 位二进制代码,只能利用一个附加控制端(当中的一个)作为 第四个地址输入端。 取第(1)片 74LS138 的和作为它的第四个地 址输入端(同时令),取第(2)片的作为它的第四个地址输入端(同 时令),取两片的、、,并将第(1)片的和接至,将第(2)片的接至, 如图 3.3.9 所示,于是得到两片 74LS138 的输出分别为 图 3.3.9 用 两片 74LS138 接成的 4 线-16 线译码器 式(3.3.8)表明时第(1) 片 74LS138 工作而第(2)片 74LS138 禁止,将的 0000~0111 这 8 个代码译成 8 个低电平信号。而式(3.3.9)表明时,第(2)片 74LS138 工作,第(1)片 74LS138 禁止,将的 1000~1111 这 8 个代码译成 8 个低电平信号。这样就用两个 3 线-8 线译码器扩展成一个 4 线-

51单片机-8255A扩展_sxj

51单片机-8255A扩展_sxj

位选择 PC0 PC1 PC2 PC3 PC4 PC5
三位无效 可置000
D7=0 置位 / 复位控制字标志
1
1
1
1
0
1
PC6
PC7
信电学院 孙秀娟
写端口C的方法
• 通过端口C的I/O地址

– •
向C端口直接写入字节数据
向C端口写入位控字 使C端口的某个引脚输出1或0
• 通过控制端口
信电学院 孙秀娟
WR
1 D6 D5 D4 D3 D2 D1 D0
WR
RD
B组 (下半部) 1=输入 0=输出 端口B 1=输入 PB 0~ PB 7 0=输出 方式选择 0=方式0 1=方式1
PC 0~PC 7
CS
OE
端口C PA 0~PA 7
74LS 373
A1 A0 D0
8255A
D7
8255工作方式控制字 RESET
8 lines
8255A
PPI
24 lines
信电学院 孙秀娟
1、8255A的结构与功能
• 一种通用的多功能可编程RAM/IO扩展器
信电学院 孙秀娟
数据总线
缓冲器
D0-D7 A 组控 制器 /RD /WR RESET /CS
8255A
A口 C口 (高4位) C口 (低4位) PA0PA7 PC4PC7 PC0PC3 PB0PB7
D0-D7 A 组控 制器 /RD /WR RESET /CS
8255A
A口 C口 (高4位) C口 (低4位) PA0PA7 PC4PC7 PC0PC3 PB0PB7
控制 逻辑 Port A Port B Port C

MCS51并行口扩展8255

MCS51并行口扩展8255

MCS-51并行口的扩展
D0~D7 数据 总线
缓冲器
RD
WR 读写
CS 控制
A0 A1
逻辑
RESET
①A组控制电路用来控制A口 及C口的高4位。 ②B组控制电路用来控制B口 及C口的低4位。
A组 控制
B组 控制
口A
PA0~PA7
口C 高4
口C 低4
口B
PC4~PC7 PC0~PC3 PB0~PB7
最为常用。 ② 方式1――选通输入/输出――中断方式;A ,B,两个端口均可。 ③ 方式2――双向输入/输出――中断方式。只有A端口才有。 注意:工作方式的选择可通过向控制端口写入方式控制字来实现。
MCS-51并行口的扩展
方式0方式0为一种简单的输入/输出方式,没有规定固定的应答联络信号,
可用A,B,C三个口的任意一位充当查询信号,其余I/O口仍可作为独立 的端口和外设相连。
缓冲器
RD
WR 读写
CS 控制
A0 A1
逻辑
RESET
A组 控制
B组 控制
口A
PA0~PA7
口C 高4
口C 低4
口B
PC4~PC7 PC0~PC3 PB0~PB7
读/写控制逻辑电路负责管理8255A的数据传输过 程。它接收片选信号及系统读信号、写信号、复位信 号RESET,还有来自系统地址总线的口地址选择信号 A0和A1。
MOV DPTR,#0023H
MOVX
D0:D0=0 选中的C口引脚输出0,D0=1 选中的C口引脚输出1。 @DPTR,A
MCS-51并行口的扩展
8255初始化
8255是可编程的接口芯片,在使用8255之前,硬件上必须复位,即给RESET端送一个

51单片机实验报告按钮开关

51单片机实验报告按钮开关

单片机实验制作实验题目:按钮开关应用实验完成时间:2013年5月31日系别:班级:姓名:学号:按钮开关应用实验一、实验目的1.掌握七段LED数码管的结构及工作原理;2.掌握共阳极LED数码管连接方法、及其静态和动态显示方法;3.进一步掌握并行接口芯片8255A的使用方法;4.掌握独立式按键的控制方法的设计。

二、实验器材七段LED数码管89S51单片机三个按钮开关30pF的两个微电容1个0.1uF电容晶振限流电阻(220欧7个、10千欧2个、100千欧1个)导线若干三、实验说明1.按一下PB1按钮,LED数码管会显示一个数字1,再按一下会显示数字2,就这样连续按,数字将会从1依次变到9。

2.按一下PB0按钮(复位键),LED数码管上的数字将会从9归零。

3.按一下PB2按钮,LED数码管上的数字将从0变到9,连续按数字将会从9逐一的变到0。

4.所以此按钮开关的运用可以通过PB1按钮和PB2按钮以及PB0按钮的控制来进行简单的计数功能。

四、实验原理1.七段LED数码管的组成如图1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。

通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。

LED数码管中的发光二极管共有两种连接方法:共阳极接法:把发光二极管的阳极连在一起构成公共阳极。

使用时公共阳极接+5V。

这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。

常用的七段LED数码管尺寸与引脚配置图七段LED数码管的七个LED组合图如图12.七段LED数码管的显示代码把发光二极管的阳极连在一起构成公共阳极。

使用时公共阳极接+5V。

这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。

为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。

七段发光二极管,再加上一个小数点位,共计八段。

8255工作方式接口编程

8255工作方式接口编程

一.实验目的掌握8255工作方式的编程设计;8255与外部设备(压力和温度平台)进行连接的应用;二.实验器材教学实验系统一台,扁平插线若干条,PC机一台,压力和温度平台一个;三.实验内容和要求a)设计内容A、用温度和压力的平台,读入温度的值,并显示在发光二极管上。

并用加热器实现温度的调节和报警。

B、要求发光二极管上用BCD码显示出温度或压力的值,用一个按键来选择显示哪种数据。

b)设计要求A、要求发光二极管上用BCD码显示出温度或压力的值,用一个按键来选择显示哪种数据。

B、用一个双色二极管显示温度达到了最高的值,并将加热器关闭;C、另一个双色二极管亮显示温度达到了最低的值,打开加热器。

D、用一个双色灯指示加热器的状态。

E、用按键或开关设定最高温度值和最低温度值。

F加热器也可以手动控制,用开关控制其关闭和打开。

四.实验内容及其步骤利用实验仪上的模数转换器,将程序中的一组波形的数据转换为电压的变化曲线,用示波器测量模数转换器的输出端可以看见转换波形。

1.连接电路图•PA0-PA7 接到RL0-RL7 八列键的列值。

•PC0,PC1,PC2接到Y0 Y1 Y2 三行键的行码。

•PB0-PB7 接到DL1-DL8,显示数/模转换的数值。

•PC3接到DR1显示低温到。

•PC4接到DR2 显示高温到。

•PC5接到DR3 显示加热的状态。

2.8255的选通输入,输出方式图 1-1本系统中的8255芯片8255的数据线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,本实验通过对 8255A方式控制字的设置(如图1-1),设置为10010000,即PA为输入口,PB、PC为输出口。

对A、B、C端口地址的设置如图1-2;图1-23.8255接口的应用键盘扫描及显示接线图(图1-3)图1-3 注:圆圈处是要求接的连线图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键。

将键盘中的列与PA0—PA7相连,A口为输入;将行与C口的PC0—PC2相连,C口为输出口; PB0—PB7与发光管连接B口为输出。

单片机可编程并行接口芯片8255的应用实验

单片机可编程并行接口芯片8255的应用实验

可编程并行接口芯片8255的应用实验一、实验目的和要求1、掌握单片机与可编程并行接口芯片8255的接口设计方法。

2、掌握Proteus软件与Keil软件的使用方法。

3、熟悉可编程并行接口芯片8255初始化程序的设计方法。

二、实验内容或原理1、在可编程并行接口芯片8255的PA口或PB口的某一口线上产生连续周期性矩形波。

2、在可编程并行接口芯片8255的PC口的PC0-PC3上接4个按键作输入,PC4-PC7上接4个发光二极管作输出,编程实现发光二极管正确指示按键的状态。

三、设计要求1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与8255接口。

2、在8255PA口或PB口的某一口线上产生周期为500μS的连续方波,接示波器观察波形。

3、在8255PC口的PC0-PC3上接4个按键作输入,PC4-PC7上接4个发光二极管作输出,编程实现发光二极管正确指示按键的状态四、实验报告要求1、实验目的和要求。

2、设计要求。

3、电路原理图。

4、实验程序流程框图和程序清单。

5、实验结果(波形图)。

6、实验总结。

7、思考题。

五、思考题1、在8255PC口上外接8个发光二极管,利用8255PC口的置位/复位控制字控制其按某种规律变化。

ORG 0000HSTART: LJMP MAINORG 0030HMAIN: MOV IE, #00HMOV SP, #60HMOV TMOD, #02HMOV TH0, #5HMOV TL0, #5HLOOP: MOV DPTR, #0E003H MOV A, #80HMOVX @DPTR, AMOV DPTR, #0E000H LOOP1: MOV A, #04HMOVX @DPTR, ALCALL DLMOV A, #00HMOVX @DPTR, ALCALL DLLJMP LOOP1DL: SETB TR0DL0: JBC TF0, DL1LJMP DL0DL1: CLR TR0RETENDORG 0000HSTART: LJMP MAINMAIN: MOV SP, #70HMOV PSW, #08HMOV A, #81HMOV DPTR, #0E003HMOVX @DPTR, AMOV A, #0FFHMOVX @DPTR, ALOOP: LCALL KEYJB ACC.0, L0JB ACC.1, L1JB ACC.2, L2JB ACC.3, L3LJMP LOOPL0: MOV A, #10HMOVX @DPTR, ARETL1: MOV A, #20HMOVX @DPTR, ARETL2: MOV A, #40HMOVX @DPTR, ARETL3: MOV A, #80HMOVX @DPTR, ARETKEY: LCALL CHUSHIHUALCALL KEYCHULIJZ EXITLCALL DLLCALL KEYCHULIJZ EXITMOV B, 20H KEYSF: LCALL KEYCHULIJZ KEY0LCALL DLLJMP KEYSFKEY0: MOV 20H, BEXIT: RETKEYCHULI: PUSH PSWCLR RS1SETB RS0MOV A, #0FFHMOVX @DPTR, AMOV DPTR, #0E002HMOVX A, @DPTRCPL AANL A, #0FHMOV 20H, ACLR RS1CLR RS0POP PSWRETCHUSHIHUA: MOV A, #81H MOV DPTR, #0E003HMOVX @DPTR, AMOV A, #0FFHMOVX @DPTR, AMOV DPTR, #0E002HMOVX A, @DPTRRETDL: MOV R1, #20MOV R0, #255 DL1: DJNZ R0, DL1DJNZ R1, DL1RETENDORG 0000HSTART: LJMP MAINMAIN: MOV DPTR, #TABMOVX A, @DPTRMOV DPTR, #0E003HMOV R7, #08H LOOP: MOVX @DPTR, AINC ADJNZ R7, LOOPLJMP MAINTAB: DB 01H,03H,05H,07H,09H,0BH,0DH,0FH END。

单片机8255

单片机8255

按照8255控制寄存器方式控制字格式写命令:
D7 D6 D5 D4 D3 D2 D1 D0
特征位 A组方式选择
=1 0 0 1
A 口
= =
CH 口
= =
B组方 式选择
B 口 = =
CL 口
=
=
0:方式 0 1 0 1 0 1 0 1 0 , , , , , , 1:方式 1 输 输 输 输 , , 输 输 方 方 X:方式 2 入 出 入 出 式 式 入 出 1 0
◆ 三种方式中只有方式 0 用得最多且最容易使用。 基本输入/输出方式 就是简单输入/输出方式。 ◆ 方式1 和方式2 使用复杂。因单片机能自动提供 各种应答信号,这两种方式已很难见到再有人用 于单片机系统。
PA,PB,PC口的三种工作方式示意图:P.167
地址总线 控制总线 PC口 A
7 6 5 4 3 2 1 0
=
=
1 0 , , 输 输 入 出
8255硬件实验五:8255 A.B.C口输出方波
ORG 0100H WAVE: MOV DPTR,#0FFDBH MOV A, #80H MOVX @DPTR, A MOV A, #55H REPT: MOV DPTR,#0FFD8H MOVX @DPTR, A INC DPTR MOVX @DPTR, A INC DPTR MOVX @DPTR, A LCALL DELY1S CPL A SJMP RETP ;8255 控制字寄存器地址 ;初始化A,B,C口为基本输出口 ;8位高/低电平相间输出 ;8255 A口地址 ;8255 B口地址(0FFD9H)
A组 B组
1 0 , , 输 输 入 出
注意:对同一控制寄存器可写两种命令,故必须在命令本身用 “特征位”加以区别。第二条命令的特征位=0

基于PC机与8255的交通灯电路系统设计

基于PC机与8255的交通灯电路系统设计

基于PC机与8255的交通灯电路系统设计学院:**学院专业:通信工程班级:一班学号:**********姓名:****目录一、前言二、设计目的三、设计要求四、设计元器件五、设计总体方案六、芯片、端口选择及使用原理七、设计程序八、实验原理图九、PCB图十、运行结果十一、设计心得体会一、前言十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。

十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。

当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。

它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。

这是一个交通红绿灯的模拟实验,由8255控制四个双色红绿灯的亮与暗,颜色来表达交通路口的信号,PC口0~3,4~7分别控制南北东西方向,绿灯和红灯共同表示黄灯,用数码管显示DLY函数的延时效果。

二、设计目的1.掌握计算机应用系统特别是微机接口系统的设计。

2.掌握接口电路设计技术,初步掌握电子设计软件Protel99的使用。

3.掌握微机接口程序的编制与调试技术,提高动手能力。

4.通过这次课程设计,熟悉8255的功能,掌握初始化编程方法。

5.了解交通灯管理的基本原理。

三、设计要求1.设计一交通灯控制系统,控制东西方向的红、黄、绿灯和南北方向的红、黄、绿灯。

2.用protel设计硬件电路。

画出电路原理图,标示引脚编号、元器件参数。

3.完成硬件电路的搭建。

4.编制相应接口程序,与硬件一并调试成功。

四.设计使用的元器件1.实验室提供PC机与爱迪克AEDK8688ET实验系统五.设计总体方案1.基本框架2.编写汇编程序实现用过8255控制四个方向的交通灯的状态,我们可以设计五个状态。

状态1:红灯全亮。

状态2:南北绿灯亮,东西红灯亮。

状态3:南北绿灯先闪然后黄灯闪,东西保持红灯。

状态4:南北变为红灯,东西变为绿灯。

状态5:东西绿灯先闪然后黄灯闪,南北保持红灯。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电路原理图(图一):
元器件(51芯片;74ls373锁存器;led灯若干;按钮若干;导线若干;5v电
源)
图一汇编源程序:
ORG0000H;
LJMPMAIN;
ORG0030H;头文件
MAIN:MOVDPTR,#0FF7FH;工作方式设置
MOVA,#81H;
MOVX@DPTR,A;
MOVDPTR,#0FF7DH;PB口赋初值(灯全免)
MOVA,#0FFH;
MOVX@DPTR,A;
LJMPLP;
END
tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!
51单片机8255之PC口控制
程序编写步骤:1.设置8255工作方式(PB工作在模式0且为输出,PC上
半位在工作模式0且为输入)
2.编码PA,PB口地址(PB为#,PC口为#FF7EH,控制端口为
#0FF7FH)
3.布置电路图(见图一)
4.设计程序(见源程序注释)
5.调试仿真(见视频文件)
MOVA,#0FFH;
MOVX@DPTR,A;
LP:MOVDPTR,#0FF7EH;(扫描PC口状态)
MOVXA,@DPTR;
JZLP;
CJNEA,#1H,LOOP1;判断执行什么操作
MOVDPTR,#0FF7DH;灯全亮操作
MOVA,#0H;
MOVX@DPTR,A;
LJMPLP;
LOOP1:MOVDPTR,#0FF7DH;灯全灭操作
相关文档
最新文档