標(biāo)題: 新人求大佬幫幫(C語(yǔ)言程序問(wèn)題) 液晶屏幕無(wú)法正確顯示想要的數(shù)字 [打印本頁(yè)]

作者: 敲代碼好難啊啊    時(shí)間: 2022-8-2 08:55
標(biāo)題: 新人求大佬幫幫(C語(yǔ)言程序問(wèn)題) 液晶屏幕無(wú)法正確顯示想要的數(shù)字
#include<STC8xxxx.h>
#include <stdio.h>
#include "intrins.h"
/*************  外部函數(shù)和變量聲明 *****************/
#define  uint   unsigned int
#define  uchar  unsigned char
uchar  ScanCoun,ZZ;
#define MAIN_Fosc 22118400L //定義主時(shí)鐘

//COM  SEG 的管腳定義
sbit  LED=P1^6;  //LED
sbit COM0=P1^0;  //COM0
sbit COM1=P1^1;  //COM1
sbit COM2=P1^2;  //COM2
sbit COM3=P1^3;  //COM3
sbit SEG0=P1^4;  //SEG0
sbit SEG1=P1^5;  //SEG1
sbit SEG2=P2^6;  //SEG2
sbit SEG3=P2^5;  //SEG3
sbit SEG4=P2^4;  //SEG4
sbit SEG5=P2^3;  //SEG5
sbit SEG6=P2^2;  //SEG6
sbit SEG7=P2^1;  //SEG7
sbit SEG8=P2^0;  //SEG8
uchar ScanCoun=0;                  //動(dòng)態(tài)掃描顯示位數(shù)計(jì)數(shù)器
uchar *Tdat1,*Tdat2;
uchar LCD_load,W0,bai,shi,ge,W4;
//0~9的段碼查詢(xún)表
uchar code seg_code[12]={0xFA,0x60,0xD2,0xF4,0x6C,0xBC,0xBE,0x0E,0xEF,0xFC,0x01};
                           //0   1    2   3    4    5    6    7    8   9    Dot
////段碼緩沖區(qū)
uchar SegBuf[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//COM1、COM2、COM3、COM4對(duì)應(yīng)的段碼緩沖
/////////////延時(shí) ms//////////////
void DelayMS(uint ms)
{
        uchar i,j;
        for(i=0; i<250; i++)
        for(j=0; j<200;j++);
}
//COM口設(shè)置高阻態(tài)
void IO_set()
{
        P1n_open_drain(1<<3);//P1^3高阻    COM3
        P1n_open_drain(1<<2);//P1^2高阻    COM2
        P1n_open_drain(1<<1);//P1^1高阻    COM1
        P1n_open_drain(1<<0);//P1^0高阻    COM0
       
        P2M1=0x00;  //P2口為輸出
        P2M0=0xFF;                  //SEG2--SEG8
        P1n_push_pull(1<<4);//P1^4輸出   SEG0
        P1n_push_pull(1<<5);//P1^5輸出   SEG1
        P1n_push_pull(1<<6);//P1^6輸出   LED
}

void xianshi()
{
        LCD_load=111;
        bai=LCD_load/100%10;
        shi=LCD_load/10%10;
        ge=LCD_load%10;
}
//seg定義
void Seg2Seg()
{
        uchar SegXX;
        SegBuf[0]=0x00;SegBuf[1]=0x00; //一定要設(shè)置為0,輸出緩存初始化
        SegBuf[2]=0x00;SegBuf[3]=0x00;
        SegBuf[4]=0x00;SegBuf[5]=0x00;
        SegBuf[6]=0x00;SegBuf[7]=0x00;
//把3位數(shù)字的SEG放到COM1、COM2、COM3、COM4對(duì)應(yīng)的SEGBUF[]里面
//LCD的管腳定義與LED不同,不是一個(gè)COM對(duì)應(yīng)一位數(shù)字,而是對(duì)應(yīng)每個(gè)數(shù)字的一部分SEG
// 1    2   3    4    5   6   7   8   9   10  11  12              | 13   
//COM0                T5  T4  1F  1A  2F  2a  3f  3a -- segBuf【0】| v -- segBuf【4】  
//---- COM1           T6  T3  1G  1B  2G  2b  3g  3b -- segBuf【1】| A -- segBuf【5】   
//-------- COM2       T7  T2  1E  1C  2E  2c  3e  3c -- segBuf【2】| H -- segBuf【6】
//-------- ---- COM3  T8  T1   /  1D  P1  2d  P2  3d -- segBuf【3】| % -- segBuf【7】

// SegXX=seg_code[W0];  //電池方格
// if (SegXX&0x80) SegBuf[0]|=0x10; //T4
// if (SegXX&0x40) SegBuf[1]|=0x10; //T3
// if (SegXX&0x20) SegBuf[2]|=0x10; //T2
// if (SegXX&0x10) SegBuf[3]|=0x10; //T1
// if (SegXX&0x08) SegBuf[0]|=0x20; //T5
// if (SegXX&0x04) SegBuf[1]|=0x20; //T6
// if (SegXX&0x02) SegBuf[2]|=0x20; //T7
// if (SegXX&0x01) SegBuf[3]|=0x20; //T8

SegXX=seg_code[bai];  //第1位數(shù)字
if (SegXX&0x80) SegBuf[0]|=0x20; //1a
if (SegXX&0x40) SegBuf[1]|=0x20; //1b
if (SegXX&0x20) SegBuf[2]|=0x20; //1c
if (SegXX&0x10) SegBuf[3]|=0x20; //1d

if (SegXX&0x08) SegBuf[0]|=0x40; //1f
if (SegXX&0x04) SegBuf[1]|=0x40; //1g
if (SegXX&0x02) SegBuf[2]|=0x40; //1e
// if (SegXX&0x01) SegBuf[3]|=0x40; //0

SegXX=(seg_code[ge]|0x01);   //第2位數(shù)字
if (SegXX&0x80) SegBuf[0]|=0x08;//2a
if (SegXX&0x40) SegBuf[1]|=0x08;//2b
if (SegXX&0x20) SegBuf[2]|=0x08;//2c
if (SegXX&0x10) SegBuf[3]|=0x08;//2d
if (SegXX&0x08) SegBuf[0]|=0x10;//2f
if (SegXX&0x04) SegBuf[1]|=0x10;//2g
if (SegXX&0x02) SegBuf[2]|=0x10;//2e
if (SegXX&0x01) SegBuf[3]|=0x10;//p1

SegXX=seg_code[shi];   //第3位數(shù)字
if (SegXX&0x80) SegBuf[0]|=0x02;//3a
if (SegXX&0x40) SegBuf[1]|=0x02;//3b
if (SegXX&0x20) SegBuf[2]|=0x02;//3c
if (SegXX&0x10) SegBuf[3]|=0x02;//3d
if (SegXX&0x08) SegBuf[0]|=0x04;//3f
if (SegXX&0x04) SegBuf[1]|=0x04;//3g
if (SegXX&0x02) SegBuf[2]|=0x04;//3e
if (SegXX&0x01) SegBuf[3]|=0x04;//p2

//SegXX=(seg_code[W4]|0x01);  //符號(hào)顯示
// if (SegXX&0x80) SegBuf[4]|=0x01; //v
// if (SegXX&0x40) SegBuf[5]|=0x01; //a
// if (SegXX&0x20) SegBuf[6]|=0x01; //h
// if (SegXX&0x10) SegBuf[7]|=0x01; //&
}
/*******************************************
/////////////定時(shí)器初始化////////////
********************************************/
void InitInterResource()
{
        IE=0;       //關(guān)全部中斷
        TCON=0;     //清全部中斷請(qǐng)求
        IP=0;       //清中斷優(yōu)先級(jí)   
        TMOD=0x01;  //T0工作方式1(16位定時(shí)器)
        TH0=0xEC;   //T0定時(shí)器輔初值
        TL0=0x78;
        TR0=1;      //允許T0定時(shí)
        ET0=1;      //允許T0中斷
        EA=0;       //關(guān)全局中斷     
}

void main()
{
         DelayMS(20);
         IO_set();
         InitInterResource();
         EA=1;         //開(kāi)全局中斷
         while(1);
}

void tmr0_p(void) interrupt 1
{
   Seg2Seg();
   switch(ScanCoun)                //動(dòng)態(tài)掃描顯示
    {
      case 0:                        //COM0正向驅(qū)動(dòng)
                                *Tdat1=SegBuf[0];
                        SEG0 = (bit)(*Tdat1&0x01);  
                        SEG1 = (bit)(*Tdat1&0x02);
                        SEG2 = (bit)(*Tdat1&0x04);  
                        SEG3 = (bit)(*Tdat1&0x08);
                        SEG4 = (bit)(*Tdat1&0x10);  
                        SEG5 = (bit)(*Tdat1&0x20);  
                        SEG6 = (bit)(*Tdat1&0x40);  
                        SEG7 = (bit)(*Tdat1&0x80);
                        *Tdat2=SegBuf[4];
                        SEG8 = (bit)(*Tdat2&0x01);
                        COM0=0;  
                 P1n_push_pull(1<<1);//P1^1輸出  COM1        
                 P1n_open_drain(1<<2);//P1^2高阻 COM3        
                 P1n_open_drain(1<<3);//P1^3高阻 COM2
     P1n_open_drain(1<<0);//P1^0高阻 COM0
        break;

     case 1:                        //COM0反向驅(qū)動(dòng)
                         *Tdat1=~SegBuf[0];
     SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
     SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);
                 SEG7 = (bit)(*Tdat1&0x80);
                 *Tdat2=~SegBuf[4];
                 SEG8 = (bit)(*Tdat2&0x01);   
                 COM0=1;                        
                 P1n_push_pull(1<<1);//P1^1輸出  COM1        
                 P1n_open_drain(1<<2);//P1^2高阻 COM3        
                 P1n_open_drain(1<<3);//P1^3高阻 COM2
     P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;

     case 2:                       //COM1正向驅(qū)動(dòng)
       *Tdat1=SegBuf[1];
     SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
     SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);  
                 SEG7 = (bit)(*Tdat1&0x80);
                 *Tdat2=SegBuf[5];
     SEG8 = (bit)(*Tdat2&0x01);         
                 COM1=0;      
                 P1n_push_pull(1<<1);//P1^1輸出  COM1        
                 P1n_open_drain(1<<2);//P1^2高阻 COM3        
                 P1n_open_drain(1<<3);//P1^3高阻 COM2
     P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;

     case 3:                       //COM1反向驅(qū)動(dòng)
       *Tdat1=~SegBuf[1];
     SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);  
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
     SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);  
                 SEG7 = (bit)(*Tdat1&0x80);
                 *Tdat2=~SegBuf[5];
                 SEG8 = (bit)(*Tdat2&0x01);
                 COM1=1;                  
                 P1n_push_pull(1<<1);//P1^1輸出  COM1        
                 P1n_open_drain(1<<2);//P1^2高阻 COM3        
                 P1n_open_drain(1<<3);//P1^3高阻 COM2
     P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;

      case 4:                       //COM2正向驅(qū)動(dòng)
       *Tdat1=SegBuf[2];
      SEG0 = (bit)(*Tdat1&0x01);  
                        SEG1 = (bit)(*Tdat1&0x02);
                        SEG2 = (bit)(*Tdat1&0x04);  
                        SEG3 = (bit)(*Tdat1&0x08);
                        SEG4 = (bit)(*Tdat1&0x10);  
                        SEG5 = (bit)(*Tdat1&0x20);  
                        SEG6 = (bit)(*Tdat1&0x40);  
                        SEG7 = (bit)(*Tdat1&0x80);
                        *Tdat2=SegBuf[6];
                        SEG8 = (bit)(*Tdat2&0x01);            
                        COM2=0;                     
                 P1n_push_pull(1<<1);//P1^1輸出  COM1        
                 P1n_open_drain(1<<2);//P1^2高阻 COM3        
                 P1n_open_drain(1<<3);//P1^3高阻 COM2
     P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;
                       
      case 5:                       //COM2反向驅(qū)動(dòng)
         *Tdat1=~SegBuf[2];
                        SEG0 = (bit)(*Tdat1&0x01);  
                        SEG1 = (bit)(*Tdat1&0x02);
                        SEG2 = (bit)(*Tdat1&0x04);  
                        SEG3 = (bit)(*Tdat1&0x08);
      SEG4 = (bit)(*Tdat1&0x10);  
                        SEG5 = (bit)(*Tdat1&0x20);  
                        SEG6 = (bit)(*Tdat1&0x40);  
                        SEG7 = (bit)(*Tdat1&0x80);
                        *Tdat2=~SegBuf[6];
                        SEG8 = (bit)(*Tdat2&0x01);   
                        COM2=1;         
                 P1n_push_pull(1<<1);//P1^1輸出  COM1        
                 P1n_open_drain(1<<2);//P1^2高阻 COM3        
                 P1n_open_drain(1<<3);//P1^3高阻 COM2
     P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;  
                       
     case 6:                       //COM3正向驅(qū)動(dòng)
       *Tdat1=SegBuf[3];
     SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
     SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);  
                 SEG7 = (bit)(*Tdat1&0x80);
                 *Tdat2=SegBuf[7];
                 SEG8 = (bit)(*Tdat2&0x01);
                 COM3=0;                     
                 P1n_push_pull(1<<1);//P1^1輸出  COM1        
                 P1n_open_drain(1<<2);//P1^2高阻 COM3        
                 P1n_open_drain(1<<3);//P1^3高阻 COM2
     P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;  
                 
     case 7:                       //COM3反向驅(qū)動(dòng)
       *Tdat1=~SegBuf[3];
     SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
     SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);  
                 SEG7 = (bit)(*Tdat1&0x80);
                 *Tdat2=~SegBuf[7];
                 SEG8 = (bit)(*Tdat2&0x01);
                 COM3=1;                  
                 P1n_push_pull(1<<1);//P1^1輸出  COM1        
                 P1n_open_drain(1<<2);//P1^2高阻 COM3        
                 P1n_open_drain(1<<3);//P1^3高阻 COM2
     P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;  
       }
               
     ScanCoun++;       //下一位
     if(ScanCoun>7)
     ScanCoun=0;

                 TL0=0x78;     //重新定時(shí)5ms
                 TH0=0xec;
                 ZZ++;
                 EA=1;      
  }

//5V供電單片機(jī)引腳直接驅(qū)動(dòng)LCD屏幕(1/4BUTY,1/3BIAS),編譯無(wú)錯(cuò),就是沒(méi)有搞懂那里出問(wèn)題了,一直沒(méi)有顯示正確的數(shù)



作者: 敲代碼好難啊啊    時(shí)間: 2022-8-2 10:23
////////////動(dòng)態(tài)掃描函數(shù)////////////
void tmr0_p(void) interrupt 1
{
   Seg2Seg();
   switch(ScanCoun)                //動(dòng)態(tài)掃描顯示
    {
      case 0:                        //COM0正向驅(qū)動(dòng)
             *Tdat1=SegBuf[0];
                SEG0 = (bit)(*Tdat1&0x01);  
                SEG1 = (bit)(*Tdat1&0x02);
                SEG2 = (bit)(*Tdat1&0x04);  
                SEG3 = (bit)(*Tdat1&0x08);
                SEG4 = (bit)(*Tdat1&0x10);  
                SEG5 = (bit)(*Tdat1&0x20);  
                SEG6 = (bit)(*Tdat1&0x40);  
                SEG7 = (bit)(*Tdat1&0x80);
            *Tdat2=SegBuf[4];
                SEG8 = (bit)(*Tdat2&0x01);
                COM0=0;  
        //          P1n_push_pull(1<<0);//P1^0輸出  COM0               
                 P1n_open_drain(1<<3);//P1^3高阻 COM2
                 P1n_open_drain(1<<2);//P1^2高阻 COM3  
                 P1n_open_drain(1<<1);//P1^1高阻 COM1
        break;
         
     case 1:                        //COM0反向驅(qū)動(dòng)
        *Tdat1=~SegBuf[0];
                 SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
                SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);
                 SEG7 = (bit)(*Tdat1&0x80);
       *Tdat2=~SegBuf[4];
                 SEG8 = (bit)(*Tdat2&0x01);   
                 COM0=1;                        
             // P1n_push_pull(1<<0);//P1^0輸出  COM0             
                 P1n_open_drain(1<<3);//P1^3高阻 COM3
                 P1n_open_drain(1<<2);//P1^2高阻 COM2  
                 P1n_open_drain(1<<1);//P1^1高阻 COM1
          break;
               
     case 2:                       //COM1正向驅(qū)動(dòng)
       *Tdat1=SegBuf[1];
                 SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
                 SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);  
                 SEG7 = (bit)(*Tdat1&0x80);
                 *Tdat2=SegBuf[5];
                 SEG8 = (bit)(*Tdat2&0x01);         
                 COM1=0;      
            //  P1n_push_pull(1<<1);//P1^1輸出  COM1              
                 P1n_open_drain(1<<3);//P1^3高阻 COM3
                 P1n_open_drain(1<<2);//P1^2高阻 COM2  
                P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;
         
     case 3:                       //COM1反向驅(qū)動(dòng)
       *Tdat1=~SegBuf[1];
                SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);  
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
                 SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);  
                 SEG7 = (bit)(*Tdat1&0x80);
         *Tdat2=~SegBuf[5];
                 SEG8 = (bit)(*Tdat2&0x01);
                 COM1=1;                  
             // P1n_push_pull(1<<1);//P1^1輸出  COM1              
                 P1n_open_drain(1<<3);//P1^3高阻 COM3
                 P1n_open_drain(1<<2);//P1^2高阻 COM2
                 P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;

      case 4:                       //COM2正向驅(qū)動(dòng)
       *Tdat1=SegBuf[2];
                        SEG0 = (bit)(*Tdat1&0x01);  
                        SEG1 = (bit)(*Tdat1&0x02);
                        SEG2 = (bit)(*Tdat1&0x04);  
                        SEG3 = (bit)(*Tdat1&0x08);
                        SEG4 = (bit)(*Tdat1&0x10);  
                        SEG5 = (bit)(*Tdat1&0x20);  
                        SEG6 = (bit)(*Tdat1&0x40);  
                        SEG7 = (bit)(*Tdat1&0x80);
        *Tdat2=SegBuf[6];
                        SEG8 = (bit)(*Tdat2&0x01);            
                        COM2=0;                     
// P1n_push_pull(1<<2);//P1^2輸出  COM2              
                 P1n_open_drain(1<<3);//P1^3高阻 COM3
                 P1n_open_drain(1<<1);//P1^1高阻 COM1  
                 P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;
                       
      case 5:                       //COM2反向驅(qū)動(dòng)
         *Tdat1=~SegBuf[2];
                        SEG0 = (bit)(*Tdat1&0x01);  
                        SEG1 = (bit)(*Tdat1&0x02);
                        SEG2 = (bit)(*Tdat1&0x04);  
                        SEG3 = (bit)(*Tdat1&0x08);
                        SEG4 = (bit)(*Tdat1&0x10);  
                        SEG5 = (bit)(*Tdat1&0x20);  
                        SEG6 = (bit)(*Tdat1&0x40);  
                        SEG7 = (bit)(*Tdat1&0x80);
        *Tdat2=~SegBuf[6];
                        SEG8 = (bit)(*Tdat2&0x01);   
                        COM2=1;         
// P1n_push_pull(1<<2);//P1^2輸出  COM2        
                 P1n_open_drain(1<<3);//P1^3高阻 COM3
                 P1n_open_drain(1<<1);//P1^1高阻 COM1      
                 P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;  
                       
     case 6:                       //COM3正向驅(qū)動(dòng)
       *Tdat1=SegBuf[3];
                 SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
                 SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);  
                 SEG7 = (bit)(*Tdat1&0x80);
        *Tdat2=SegBuf[7];
                 SEG8 = (bit)(*Tdat2&0x01);
                 COM3=0;                     
// P1n_push_pull(1<<3);//P1^3輸出  COM3        
                 P1n_open_drain(1<<2);//P1^2高阻 COM2        
                 P1n_open_drain(1<<1);//P1^1高阻 COM1
                 P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;  
                 
     case 7:                       //COM3反向驅(qū)動(dòng)
       *Tdat1=~SegBuf[3];
                 SEG0 = (bit)(*Tdat1&0x01);  
                 SEG1 = (bit)(*Tdat1&0x02);
                 SEG2 = (bit)(*Tdat1&0x04);  
                 SEG3 = (bit)(*Tdat1&0x08);
                 SEG4 = (bit)(*Tdat1&0x10);  
                 SEG5 = (bit)(*Tdat1&0x20);  
                 SEG6 = (bit)(*Tdat1&0x40);  
                 SEG7 = (bit)(*Tdat1&0x80);
     *Tdat2=~SegBuf[7];
                 SEG8 = (bit)(*Tdat2&0x01);
                 COM3=1;                  
// P1n_push_pull(1<<3);//P1^3輸出  COM3        
                 P1n_open_drain(1<<2);//P1^2高阻 COM2        
                 P1n_open_drain(1<<1);//P1^1高阻 COM1
                P1n_open_drain(1<<0);//P1^0高阻 COM0
          break;  
       }
               
     ScanCoun++;       //下一位
     if(ScanCoun>7)
     ScanCoun=0;
   
                 TL0=0x78;     //重新定時(shí)5ms
                 TH0=0xec;
                 ZZ++;
                 EA=1;      
  }


什么代碼這部分復(fù)制錯(cuò)了全是P1^1輸出了,但是改完也還是顯示一樣的東西好奇怪
作者: haiyang201    時(shí)間: 2022-8-2 13:40
先驅(qū)動(dòng)一位顯示,成功了在擴(kuò)展
作者: yzwzfyz    時(shí)間: 2022-8-2 15:35
教你一個(gè)方法。
1、先顯示一個(gè)段,看看亮在何處。
2、再顯示另一個(gè)段,看兩者的位置關(guān)系。
3、逐漸增到7個(gè)段,你就可以拼成0-9了。
作者: 敲代碼好難啊啊    時(shí)間: 2022-8-2 15:48
haiyang201 發(fā)表于 2022-8-2 13:40
先驅(qū)動(dòng)一位顯示,成功了在擴(kuò)展

好,多謝
作者: 敲代碼好難啊啊    時(shí)間: 2022-8-2 15:48
yzwzfyz 發(fā)表于 2022-8-2 15:35
教你一個(gè)方法。
1、先顯示一個(gè)段,看看亮在何處。
2、再顯示另一個(gè)段,看兩者的位置關(guān)系。

好,我去試試
作者: Youth8023    時(shí)間: 2022-8-2 15:52
1.先檢測(cè)引腳是否連接正確
2.硬件正確 調(diào)用基本的驅(qū)動(dòng)函數(shù) 顯示一小段
3.成功顯示一段 再?lài)L試顯示數(shù)字
作者: glinfei    時(shí)間: 2022-8-2 21:25
太長(zhǎng)了看不下去,又沒(méi)什么難度,你能不能發(fā)一下,應(yīng)該顯示什么字,實(shí)際顯示的什么。
作者: Y_G_G    時(shí)間: 2022-8-2 22:13
新人不是應(yīng)該先寫(xiě)個(gè)延時(shí),跑馬燈什么的嗎?
你duang  duang一堆那么長(zhǎng)的代碼上來(lái),誰(shuí)能找到問(wèn)題?別人手上都不一定有你用的單片機(jī)型號(hào),也不一定有你手頭上的顯示屏
正確的做法是先寫(xiě)一個(gè)單純的函數(shù),只顯示一個(gè)數(shù)字3之類(lèi)的,只要能顯示一個(gè)數(shù)字了,再改另外一個(gè)數(shù)字燒錄看一下
只要能顯示一個(gè)數(shù)字了,其它功能就慢慢的增加,每增加一個(gè)功能就燒錄驗(yàn)證一次
而不是像你現(xiàn)在這樣,要么是自己先按著自己的想法,一下子把所有的功能都寫(xiě)完
又或者是直接復(fù)制別人的代碼,這改一下,那改一下
然后一燒錄,才發(fā)現(xiàn)不是你想要的效果
作者: 敲代碼好難啊啊    時(shí)間: 2022-8-4 09:41
Y_G_G 發(fā)表于 2022-8-2 22:13
新人不是應(yīng)該先寫(xiě)個(gè)延時(shí),跑馬燈什么的嗎?
你duang  duang一堆那么長(zhǎng)的代碼上來(lái),誰(shuí)能找到問(wèn)題?別人手上都不 ...

多謝回復(fù),第一次發(fā)帖不太會(huì),謝謝指點(diǎn),以后注意 嘿嘿嘿
作者: 敲代碼好難啊啊    時(shí)間: 2022-8-4 09:42
Youth8023 發(fā)表于 2022-8-2 15:52
1.先檢測(cè)引腳是否連接正確
2.硬件正確 調(diào)用基本的驅(qū)動(dòng)函數(shù) 顯示一小段
3.成功顯示一段 再?lài)L試顯示數(shù)字

多謝多謝,問(wèn)題已經(jīng)解決 就是引腳連接問(wèn)題
作者: 敲代碼好難啊啊    時(shí)間: 2022-8-4 09:43
glinfei 發(fā)表于 2022-8-2 21:25
太長(zhǎng)了看不下去,又沒(méi)什么難度,你能不能發(fā)一下,應(yīng)該顯示什么字,實(shí)際顯示的什么。

多謝幫助回復(fù),問(wèn)題已經(jīng)解決啦!以后發(fā)帖會(huì)注意要問(wèn)的問(wèn)題,多謝多謝




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