找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1618|回復(fù): 3
收起左側(cè)

用單片機+8255A驅(qū)動數(shù)碼管顯示的這個程序哪里有錯誤?

[復(fù)制鏈接]
ID:892731 發(fā)表于 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;  /*顯示數(shù)據(jù)*/
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;
        }
}
圖里面的開關(guān)本來是想要控制PB口的,全為1就輸出,否則就不輸出(但還沒寫程序)。
目的是做一個數(shù)模轉(zhuǎn)換的C語言顯示,必須要用8255驅(qū)動數(shù)碼管,所以這有點迷茫。


1123.rar

30.48 KB, 下載次數(shù): 4

回復(fù)

使用道具 舉報

ID:892731 發(fā)表于 2021-3-16 19:46 | 顯示全部樓層
我自己已經(jīng)解決,是A1,A0的問題

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:275826 發(fā)表于 2021-3-16 21:25 | 顯示全部樓層
你使用了 #define PA     XBYTE[0xBcFF],P2口不能再用作普通I/O口了吧,你怎么還用P2驅(qū)動數(shù)碼管?
回復(fù)

使用道具 舉報

ID:917552 發(fā)表于 2021-5-13 03:36 | 顯示全部樓層
求解,為什么這里要用display_data = ((8.0/255) * DATA) * 1000這樣寫
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表