1.8255的字节操作应用示例
任务书:单片机通过8255芯片控制LCD12864显示“长阳职业教育中心”。使用的模块有LCD12864、8255模块、主机(单片机)。下面介绍两种方式实现该任务:
(1)单片机使用扩展地址方式控制8255。LCD12864的CS1、CS2、E、RS端口都接在单片机的I/O上,见程序代码中的端口声明。8255的必须接P3^6(单片机的),必须接在P3^7(单片机的)上,A0和A1分别接在单片机上的P2^0和P2^1上。8255的复位引脚接在单片机的复位引脚上,8255的CS直接接地。PA接LCD12864的数据口DB0~DB7,P0接8255的D0~D7,如图10-2所示。
图10-2 字节操作下单片机、8255、液晶屏的连线(R/W已接地)
程序代码如下:
(2)单片机以基本的I/O端口输入/输出来控制8255的示例。仍按图10-2的接线。与扩展地址方式的程序代码不同的是:扩展地址的程序的第2行的头文件不需要,7~10的宏定义也不要,另需多声明4个端口。
具体操作方法是:
1)写寄存器。也就是设置8255的工作模式、设置PA、PB、PC的输入或输出。将A1、A0均置为1,以选中寄存器,再由单片机的任一组I/O口(假设为P0口)将设置工作模式的指令传送到8255的D0~D7即可。
注意:在进行以下操作之前,需设置8255的工作模式:将表10-3所示的模式设置指令写入寄存器中。
2)输出命令。由PA、PB或PC通道输出命令(如LCD12864等外设有一些指令)。具体方法是通过设置A1、A0的电平选择PA、PB或PC,由单片机的I/O口(如P0)将命令的具体代码(数据)传输给8255的D0~D7即可。
3)输出数据。由PA、PB或PC通道输出数据(如驱动LCD12864、数码管、LED点阵的显示所需的数据等)。读者可结合下面的程序示例进行理解、归纳方法。(www.xing528.com)
4)读取数据。就是单片机通过PA、PB或PC通道读取外设传来的数据。具体方法是通过设置A1、A0的电平选择PA、PB或PC,定义一个字符型变量(如temp,用于保持读取的数据)。将单片机的接收数据端口(如P0)全置为高电平(为接收数据做准备),启动读时序,这时经过PA、PB或PC通道读取的数据(从外设传来)就传到了P0端口,然后再将P0收到的数据赋给temp,保存下来供编程时使用。
程序示例如下:
补充示例:仍然采用P0接D0~D7。假设需要将PC通道接收到的数据由PB口传送到外设。程序代码(主要的部分)如下:
2.8255的位操作
位操作的应用很广泛。8255的端口不能直接进行位操作,但可以用位寻址的变量来缓冲数据,实现位操作。下面举例介绍8255的位操作。
任务书:编程实现开关S0闭合则使D0点亮否则D0熄灭;开关S1闭合则使D1点亮否则D1熄灭。接线如示意图10-3所示。
图10-3 位操作下单片机、8255、液晶屏的连接(R/W已接地)
程序示例如下:
注意:我们可以声明S0~S7为PC8255的第0~7位,D0~D7为PA8255的第0~7位。可以进行的除了示例中的判断位外,常用的还有以下几种:直接传递位(如D1=S1)、位取反后传递(如:D2=!S2)、与(如D5=S4&S5)、或(如D7=S1|S2)等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。