找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 758|回复: 11
打印 上一主题 下一主题
收起左侧

新人求大佬帮帮(C语言程序问题) 液晶屏幕无法正确显示想要的数字

[复制链接]
跳转到指定楼层
楼主
ID:1041179 发表于 2022-8-2 08:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<STC8xxxx.h>
#include <stdio.h>
#include "intrins.h"
/*************  外部函数和变量声明 *****************/
#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;                  //动态扫描显示位数计数器
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
////段码缓冲区
uchar SegBuf[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//COM1、COM2、COM3、COM4对应的段码缓冲
/////////////延时 ms//////////////
void DelayMS(uint ms)
{
        uchar i,j;
        for(i=0; i<250; i++)
        for(j=0; j<200;j++);
}
//COM口设置高阻态
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; //一定要设置为0,输出缓存初始化
        SegBuf[2]=0x00;SegBuf[3]=0x00;
        SegBuf[4]=0x00;SegBuf[5]=0x00;
        SegBuf[6]=0x00;SegBuf[7]=0x00;
//把3位数字的SEG放到COM1、COM2、COM3、COM4对应的SEGBUF[]里面
//LCD的管脚定义与LED不同,不是一个COM对应一位数字,而是对应每个数字的一部分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位数字
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位数字
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位数字
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;       //关全部中断
        TCON=0;     //清全部中断请求
        IP=0;       //清中断优先级   
        TMOD=0x01;  //T0工作方式1(16位定时器)
        TH0=0xEC;   //T0定时器辅初值
        TL0=0x78;
        TR0=1;      //允许T0定时
        ET0=1;      //允许T0中断
        EA=0;       //关全局中断     
}

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

void tmr0_p(void) interrupt 1
{
   Seg2Seg();
   switch(ScanCoun)                //动态扫描显示
    {
      case 0:                        //COM0正向驱动
                                *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反向驱动
                         *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正向驱动
       *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反向驱动
       *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正向驱动
       *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反向驱动
         *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正向驱动
       *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反向驱动
       *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供电单片机引脚直接驱动LCD屏幕(1/4BUTY,1/3BIAS),编译无错,就是没有搞懂那里出问题了,一直没有显示正确的数


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1041179 发表于 2022-8-2 10:23 | 只看该作者
////////////动态扫描函数////////////
void tmr0_p(void) interrupt 1
{
   Seg2Seg();
   switch(ScanCoun)                //动态扫描显示
    {
      case 0:                        //COM0正向驱动
             *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反向驱动
        *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正向驱动
       *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反向驱动
       *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正向驱动
       *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反向驱动
         *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正向驱动
       *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反向驱动
       *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;      
  }


什么代码这部分复制错了全是P1^1输出了,但是改完也还是显示一样的东西好奇怪
回复

使用道具 举报

板凳
ID:1023753 发表于 2022-8-2 13:40 | 只看该作者
先驱动一位显示,成功了在扩展
回复

使用道具 举报

地板
ID:123289 发表于 2022-8-2 15:35 | 只看该作者
教你一个方法。
1、先显示一个段,看看亮在何处。
2、再显示另一个段,看两者的位置关系。
3、逐渐增到7个段,你就可以拼成0-9了。
回复

使用道具 举报

5#
ID:1041179 发表于 2022-8-2 15:48 | 只看该作者
haiyang201 发表于 2022-8-2 13:40
先驱动一位显示,成功了在扩展

好,多谢
回复

使用道具 举报

6#
ID:1041179 发表于 2022-8-2 15:48 | 只看该作者
yzwzfyz 发表于 2022-8-2 15:35
教你一个方法。
1、先显示一个段,看看亮在何处。
2、再显示另一个段,看两者的位置关系。

好,我去试试
回复

使用道具 举报

7#
ID:723681 发表于 2022-8-2 15:52 | 只看该作者
1.先检测引脚是否连接正确
2.硬件正确 调用基本的驱动函数 显示一小段
3.成功显示一段 再尝试显示数字
回复

使用道具 举报

8#
ID:844772 发表于 2022-8-2 21:25 | 只看该作者
太长了看不下去,又没什么难度,你能不能发一下,应该显示什么字,实际显示的什么。
回复

使用道具 举报

9#
ID:401564 发表于 2022-8-2 22:13 | 只看该作者
新人不是应该先写个延时,跑马灯什么的吗?
你duang  duang一堆那么长的代码上来,谁能找到问题?别人手上都不一定有你用的单片机型号,也不一定有你手头上的显示屏
正确的做法是先写一个单纯的函数,只显示一个数字3之类的,只要能显示一个数字了,再改另外一个数字烧录看一下
只要能显示一个数字了,其它功能就慢慢的增加,每增加一个功能就烧录验证一次
而不是像你现在这样,要么是自己先按着自己的想法,一下子把所有的功能都写完
又或者是直接复制别人的代码,这改一下,那改一下
然后一烧录,才发现不是你想要的效果
回复

使用道具 举报

10#
ID:1041179 发表于 2022-8-4 09:41 | 只看该作者
Y_G_G 发表于 2022-8-2 22:13
新人不是应该先写个延时,跑马灯什么的吗?
你duang  duang一堆那么长的代码上来,谁能找到问题?别人手上都不 ...

多谢回复,第一次发帖不太会,谢谢指点,以后注意 嘿嘿嘿
回复

使用道具 举报

11#
ID:1041179 发表于 2022-8-4 09:42 | 只看该作者
Youth8023 发表于 2022-8-2 15:52
1.先检测引脚是否连接正确
2.硬件正确 调用基本的驱动函数 显示一小段
3.成功显示一段 再尝试显示数字

多谢多谢,问题已经解决 就是引脚连接问题
回复

使用道具 举报

12#
ID:1041179 发表于 2022-8-4 09:43 | 只看该作者
glinfei 发表于 2022-8-2 21:25
太长了看不下去,又没什么难度,你能不能发一下,应该显示什么字,实际显示的什么。

多谢帮助回复,问题已经解决啦!以后发帖会注意要问的问题,多谢多谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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