资源描述
7、单片机扩展8255A控制显示器实验
一、实验目的及要求
学习利用Proteus软件,通过8255扩展接口,仅通过P0端口控制8只集成式7段数码的显示控制。本例的接口扩展电路与6264数据内存扩展电路非常相似,都使用了地址锁存芯片74LS373,单片机还使用ALE,/RD,/WR连接地址锁存芯片及接口扩展芯片。8255仅使用PA和PB端口。
二、实验原理(图)
1、使用Proteus ISIS 7 Professional应用程序,建立一个.DSN文件
2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、74LS373、7seg-MPX8-CA-GRN。
3、构建仿真电路
4、创建一个Keil应用程序:新建一个工程项目文件;为工程选择目标器件(AT89C51);为工程项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。
5、把用户程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件→文件路径)
三、实验设备(环境):
电路一台
Proteus ISIS 7 Professional应用程序
Keil应用程序
四、实验内容(算法、程序、步骤和方法):
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define PA XBYTE[0x0000]
#define PB XBYTE[0x0001]
#define PC XBYTE[0x0002]
#define COM XBYTE[0x0003]
uchar code DSY_Index[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar code DSY_CODE[]={0xa4,0xc0,0xf9,0xa4,0xf9,0xf9,0xf9,0x99};
void delayms(uint x)
{ uchar i;
while(x--) for(i=0;i<120;i++); }
void main()
{ uchar i,j;
COM=0x80; //1000、0000
while(1)
{
for(i=0;i<40;i++)
{
for(j=0;j<8;j++)
{
PB=DSY_Index[j];//j=0,PB=DSY_Index[0],=0x01
PA=DSY_CODE[j];//j=0;PA=DSY_CODE[0],=0xa4
delayms(1);
}
}
}
}
五、实验结论(结果):
本实验实现了XXX功能,核心算法采用了XXX的方式,达到了预期目的。
六、实验心得与小结:
(自行填写,如:功能是否实现;整个过程中存在哪些问题;如何解决的….)
展开阅读全文