标题: 请教51单片机接8255扩展IO口的问题 [打印本页]
作者: 53546538 时间: 2018-5-13 08:39
标题: 请教51单片机接8255扩展IO口的问题
本帖最后由 53546538 于 2018-5-13 09:59 编辑
如图,我P0口接74HC373,低三位接8255的A0、A1、CS。
#define PA XBYTE[0X0000]
#define PB XBYTE[0X0001]
#define PC XBYTE[0X0002]
#define COM XBYTE[0X0003]
但是我发现无法控制8255,我在主程序中写PA=0XFF,然后测PA口的电压,发现前四个是0v,后四个1.1v(前四个接了继电器)。我又测了CS,A0,A1电压,都是4.95V。
下面是部分主程序,我测试一下,程序执行到了do while循环后就出不来了,因为检测不到按键。
void main(void)
{
int z=17;
int m;
char v;
COM=0X80;
while(1)
{
start: initinal(); //调用LCD字库初始化程序
delay(20); //大于100uS的延时程序
lcd_mesg(IC_DAT); //显示中文汉字
delayms(10);
do
{
KeyScan();
}
while(key_flag==0);
key_flag=0;
if(key==12) //存快递
{
-
获.PNG
(74.46 KB, 下载次数: 63)
作者: 53546538 时间: 2018-5-13 08:40
这是键盘程序
void KeyScan() //键盘扫描程序,key应定义为全局无符号字符型
{
uchar temp;
PC=0X0F;
if(PC!=0X0F)
{
delayms(1);
if(PC!=0X0F)
{
temp=PC;
PC=0xf0;
key=temp|PC;
switch(key)
{
case 0xee:key=0;break;
case 0xed:key=1;break;
case 0xeb:key=2;break;
case 0xe7:key=3;break;
case 0xde:key=4;break;
case 0xdd:key=5;break;
case 0xdb:key=6;break;
case 0xd7:key=7;break;
case 0xbe:key=8;break;
case 0xbd:key=9;break;
case 0xbb:key=10;break;
case 0xb7:key=11;break;
case 0x7e:key=12;break;
case 0x7d:key=13;break;
case 0x7b:key=14;break;
case 0x77:key=15;break;
}
key_flag=1;
}
}
}
作者: 53546538 时间: 2018-5-15 14:50
顶一下,好几天了,找不出原因在哪,按理来说这么简单的电路,不应该找这么长时间找不出问题啊
作者: zl2168 时间: 2018-5-15 21:00
本帖最后由 zl2168 于 2018-5-15 21:01 编辑
实例36 并行扩展8255
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。
作者: zl2168 时间: 2018-5-15 21:04
本帖最后由 zl2168 于 2018-5-15 21:06 编辑
实例60 8255A扩展8位LED数码管动态显示
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。
作者: 笨笨兔 时间: 2018-5-16 10:43
看你的图,8255没有复位。
8255不需要复位吗?
作者: 优雅的刺猬 时间: 2018-5-24 22:59
感觉cs,a1,a0都直接连单片机就行啊
作者: 北鼻君 时间: 2018-5-25 10:30
请问有对应的程序吗
作者: zl2168 时间: 2018-5-25 22:19
仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |