找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1613|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

新人求大佬幫幫(C語言程序問題) 液晶屏幕無法正確顯示想要的數(shù)字

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1041179 發(fā)表于 2022-8-2 08:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#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 //定義主時鐘

//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;                  //動態(tài)掃描顯示位數(shù)計數(shù)器
uchar *Tdat1,*Tdat2;
uchar LCD_load,W0,bai,shi,ge,W4;
//0~9的段碼查詢表
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對應(yīng)的段碼緩沖
/////////////延時 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對應(yīng)的SEGBUF[]里面
//LCD的管腳定義與LED不同,不是一個COM對應(yīng)一位數(shù)字,而是對應(yīng)每個數(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);  //符號顯示
// 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; //&
}
/*******************************************
/////////////定時器初始化////////////
********************************************/
void InitInterResource()
{
        IE=0;       //關(guān)全部中斷
        TCON=0;     //清全部中斷請求
        IP=0;       //清中斷優(yōu)先級   
        TMOD=0x01;  //T0工作方式1(16位定時器)
        TH0=0xEC;   //T0定時器輔初值
        TL0=0x78;
        TR0=1;      //允許T0定時
        ET0=1;      //允許T0中斷
        EA=0;       //關(guān)全局中斷     
}

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

void tmr0_p(void) interrupt 1
{
   Seg2Seg();
   switch(ScanCoun)                //動態(tài)掃描顯示
    {
      case 0:                        //COM0正向驅(qū)動
                                *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ū)動
                         *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ū)動
       *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ū)動
       *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ū)動
       *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ū)動
         *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ū)動
       *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ū)動
       *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;     //重新定時5ms
                 TH0=0xec;
                 ZZ++;
                 EA=1;      
  }

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1041179 發(fā)表于 2022-8-2 10:23 | 只看該作者
////////////動態(tài)掃描函數(shù)////////////
void tmr0_p(void) interrupt 1
{
   Seg2Seg();
   switch(ScanCoun)                //動態(tài)掃描顯示
    {
      case 0:                        //COM0正向驅(qū)動
             *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ū)動
        *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ū)動
       *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ū)動
       *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ū)動
       *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ū)動
         *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ū)動
       *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ū)動
       *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;     //重新定時5ms
                 TH0=0xec;
                 ZZ++;
                 EA=1;      
  }


什么代碼這部分復(fù)制錯了全是P1^1輸出了,但是改完也還是顯示一樣的東西好奇怪
回復(fù)

使用道具 舉報

板凳
ID:1023753 發(fā)表于 2022-8-2 13:40 | 只看該作者
先驅(qū)動一位顯示,成功了在擴展
回復(fù)

使用道具 舉報

地板
ID:123289 發(fā)表于 2022-8-2 15:35 | 只看該作者
教你一個方法。
1、先顯示一個段,看看亮在何處。
2、再顯示另一個段,看兩者的位置關(guān)系。
3、逐漸增到7個段,你就可以拼成0-9了。
回復(fù)

使用道具 舉報

5#
ID:1041179 發(fā)表于 2022-8-2 15:48 | 只看該作者
haiyang201 發(fā)表于 2022-8-2 13:40
先驅(qū)動一位顯示,成功了在擴展

好,多謝
回復(fù)

使用道具 舉報

6#
ID:1041179 發(fā)表于 2022-8-2 15:48 | 只看該作者
yzwzfyz 發(fā)表于 2022-8-2 15:35
教你一個方法。
1、先顯示一個段,看看亮在何處。
2、再顯示另一個段,看兩者的位置關(guān)系。

好,我去試試
回復(fù)

使用道具 舉報

7#
ID:723681 發(fā)表于 2022-8-2 15:52 | 只看該作者
1.先檢測引腳是否連接正確
2.硬件正確 調(diào)用基本的驅(qū)動函數(shù) 顯示一小段
3.成功顯示一段 再嘗試顯示數(shù)字
回復(fù)

使用道具 舉報

8#
ID:844772 發(fā)表于 2022-8-2 21:25 | 只看該作者
太長了看不下去,又沒什么難度,你能不能發(fā)一下,應(yīng)該顯示什么字,實際顯示的什么。
回復(fù)

使用道具 舉報

9#
ID:401564 發(fā)表于 2022-8-2 22:13 | 只看該作者
新人不是應(yīng)該先寫個延時,跑馬燈什么的嗎?
你duang  duang一堆那么長的代碼上來,誰能找到問題?別人手上都不一定有你用的單片機型號,也不一定有你手頭上的顯示屏
正確的做法是先寫一個單純的函數(shù),只顯示一個數(shù)字3之類的,只要能顯示一個數(shù)字了,再改另外一個數(shù)字燒錄看一下
只要能顯示一個數(shù)字了,其它功能就慢慢的增加,每增加一個功能就燒錄驗證一次
而不是像你現(xiàn)在這樣,要么是自己先按著自己的想法,一下子把所有的功能都寫完
又或者是直接復(fù)制別人的代碼,這改一下,那改一下
然后一燒錄,才發(fā)現(xiàn)不是你想要的效果
回復(fù)

使用道具 舉報

10#
ID:1041179 發(fā)表于 2022-8-4 09:41 | 只看該作者
Y_G_G 發(fā)表于 2022-8-2 22:13
新人不是應(yīng)該先寫個延時,跑馬燈什么的嗎?
你duang  duang一堆那么長的代碼上來,誰能找到問題?別人手上都不 ...

多謝回復(fù),第一次發(fā)帖不太會,謝謝指點,以后注意 嘿嘿嘿
回復(fù)

使用道具 舉報

11#
ID:1041179 發(fā)表于 2022-8-4 09:42 | 只看該作者
Youth8023 發(fā)表于 2022-8-2 15:52
1.先檢測引腳是否連接正確
2.硬件正確 調(diào)用基本的驅(qū)動函數(shù) 顯示一小段
3.成功顯示一段 再嘗試顯示數(shù)字

多謝多謝,問題已經(jīng)解決 就是引腳連接問題
回復(fù)

使用道具 舉報

12#
ID:1041179 發(fā)表于 2022-8-4 09:43 | 只看該作者
glinfei 發(fā)表于 2022-8-2 21:25
太長了看不下去,又沒什么難度,你能不能發(fā)一下,應(yīng)該顯示什么字,實際顯示的什么。

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

使用道具 舉報

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

本版積分規(guī)則

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

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

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