找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3900|回复: 8
收起左侧

请教51单片机接8255扩展IO口的问题

[复制链接]
ID:296622 发表于 2018-5-13 08:39 | 显示全部楼层 |阅读模式
500黑币
本帖最后由 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
回复

使用道具 举报

ID:296622 发表于 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;
                                }
                                }
                            }       
回复

使用道具 举报

ID:296622 发表于 2018-5-15 14:50 | 显示全部楼层
顶一下,好几天了,找不出原因在哪,按理来说这么简单的电路,不应该找这么长时间找不出问题啊
回复

使用道具 举报

ID:111634 发表于 2018-5-15 21:00 | 显示全部楼层
本帖最后由 zl2168 于 2018-5-15 21:01 编辑

实例36  并行扩展8255
Proteus仿真一下,确认有效。
实例36 并行扩展8255.rar (39.15 KB, 下载次数: 49)
回复

使用道具 举报

ID:111634 发表于 2018-5-15 21:04 | 显示全部楼层
本帖最后由 zl2168 于 2018-5-15 21:06 编辑

实例60  8255A扩展8位LED数码管动态显示
Proteus仿真一下,确认有效。
实例60 8255A扩展8位LED动态显示.rar (40.19 KB, 下载次数: 35)
回复

使用道具 举报

ID:158375 发表于 2018-5-16 10:43 | 显示全部楼层
看你的图,8255没有复位。
8255不需要复位吗?
回复

使用道具 举报

ID:336165 发表于 2018-5-24 22:59 | 显示全部楼层
感觉cs,a1,a0都直接连单片机就行啊
回复

使用道具 举报

ID:337872 发表于 2018-5-25 10:30 | 显示全部楼层
zl2168 发表于 2018-5-15 21:04
实例60  8255A扩展8位LED数码管动态显示
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片 ...

请问有对应的程序吗
回复

使用道具 举报

ID:111634 发表于 2018-5-25 22:19 | 显示全部楼层
北鼻君 发表于 2018-5-25 10:30
请问有对应的程序吗

仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表