找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1618|回复: 3
收起左侧

用单片机+8255A驱动数码管显示的这个程序哪里有错误?

[复制链接]
ID:892731 发表于 2021-3-16 19:07 | 显示全部楼层 |阅读模式
有没有大佬能帮忙看下
b8f096fb5d679d5a30848f06771c342.png

单片机源程序如下:
#include <reg52.h>
#include<absacc.h>
#define uint unsigned int
#define uchar unsigned char
#define DATA P1
#define PA     XBYTE[0xBcFF]
#define PB     XBYTE[0xBdFF]
#define PC     XBYTE[0xBeFF]
#define COM    XBYTE[0xBFFF]
sbit OE  = P2^5;
sbit EOC = P3^3;
sbit ST  = P2^7;

sbit C1  = P3^0;
sbit C2  = P3^1;
sbit C3  = P3^2;

uint display_data = 0;  /*显示数据*/
uchar code LEDData[]=
{
         0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};


void DelayMS(uint ms)
{
         uchar i;
        while(ms--)
        {
                 for(i=0;i<120;i++);
        }
}

void Display_Result(uint d)
{
        
         P2 = 0xf7;
        PB = LEDData[d%10];
        DelayMS(5);
        P2 = 0xfb;
        PB = LEDData[d%100/10];
        DelayMS(5);
        P2 = 0xfd;
        PB = (LEDData[d%1000/100]| 0x80);
        DelayMS(5);
        
        P2 = 0xfe;
        PC = LEDData[d/1000];
        DelayMS(5);
        
}

void main()
{
COM =0X80;

        C1  = 1;
        C2  = 1;
        C3  = 0;
        
        while(1)
        {
                 ST = 0;
                ST = 1;
                ST = 0;
                while(EOC == 0);
                OE = 1;
                display_data = ((8.0/255) * DATA) * 1000;
                Display_Result(display_data);
                OE = 0;
        }
}
图里面的开关本来是想要控制PB口的,全为1就输出,否则就不输出(但还没写程序)。
目的是做一个数模转换的C语言显示,必须要用8255驱动数码管,所以这有点迷茫。


1123.rar

30.48 KB, 下载次数: 4

回复

使用道具 举报

ID:892731 发表于 2021-3-16 19:46 | 显示全部楼层
我自己已经解决,是A1,A0的问题

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:275826 发表于 2021-3-16 21:25 | 显示全部楼层
你使用了 #define PA     XBYTE[0xBcFF],P2口不能再用作普通I/O口了吧,你怎么还用P2驱动数码管?
回复

使用道具 举报

ID:917552 发表于 2021-5-13 03:36 | 显示全部楼层
求解,为什么这里要用display_data = ((8.0/255) * DATA) * 1000这样写
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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