欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 用單片機+8255A驅動數碼管顯示的這個程序哪里有錯誤? [打印本頁]

作者: 641402962    時間: 2021-3-16 19:07
標題: 用單片機+8255A驅動數碼管顯示的這個程序哪里有錯誤?
有沒有大佬能幫忙看下


單片機源程序如下:
#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


作者: 641402962    時間: 2021-3-16 19:46
我自己已經解決,是A1,A0的問題
作者: tyrl800    時間: 2021-3-16 21:25
你使用了 #define PA     XBYTE[0xBcFF],P2口不能再用作普通I/O口了吧,你怎么還用P2驅動數碼管?
作者: lyly450    時間: 2021-5-13 03:36
求解,為什么這里要用display_data = ((8.0/255) * DATA) * 1000這樣寫




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1