블루 브리지 컵 단편기 디지털 파이프

여전히 표준 템플릿을 사용하여 디지털 파이프 디스플레이를 씁니다. 여기에 간단한 디지털 파이프 디스플레이를 씁니다.
기본적인 사고방식
  • chuli(): 표시할 숫자를 그룹에 저장
  • display (): 그룹에 저장된 내용을 표시합니다
  • chuli()는 주함수에,display()는 서비스 중단 함수(정시 리셋)에
  • smg.c
    #include "smg.h"
    
    uchar wei[8]={
         0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
    uchar duan[11]={
         0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
    uchar zhi[8]={
         0};//        
    
    void chuli(uchar d0,d1,d2,d3,d4,d5,d6,d7)//          
    {
         
    	zhi[0]=d0;
    	zhi[1]=d1;
    	zhi[2]=d2;
    	zhi[3]=d3;
    	zhi[4]=d4;
    	zhi[5]=d5;
    	zhi[6]=d6;
    	zhi[7]=d7;
    }
    
    void display()//  
    {
         
    	static uchar i=0;
    	
    	Y7;P0=0xff;//  
    	Y6;P0=wei[i];
    	Y0;P0=0xff;//        
    	Y7;P0=duan[zhi[i]];
    	
    	i++;
    	if(i==8)i=0;
    }
    

    smg.h
    #ifndef _SMG_H_
    #define _SMG_H_
    
    #include "common.h"
    
    void chuli(uchar d0,d1,d2,d3,d4,d5,d6,d7);
    void display(void);
    
    #endif
    

    ds.c
    #include "ds.h"
    
    extern uchar timer_flag;
    
    void InitTimer0()//      
    {
         
    	TMOD=0x01;
    	TH0=(65535-1000)/256;
    	TL0=(65535-1000)%256;
    	ET0=1;
    	TR0=1;
    	EA=1;
    }
    
    void ServiceTimer0() interrupt 1//   0    
    {
         
    	TH0=(65535-1000)/256;
    	TL0=(65535-1000)%256;
    	display();//    , 1ms    
    	timer_flag=1;
    }
    

    ds.h
    #ifndef _DS_H_
    #define _DS_H_
    
    #include "common.h"
    #include "smg.h"
    
    void InitTimer0(void);
    
    #endif
    

    main.c
    #include "main.h"
    
    uchar timer_flag=0;
    
    void main()
    {
         
    	cls_buzz();
    	InitTimer0();
    	while(1)
    	{
         
    		if(timer_flag==1)
    		{
         
    			//chuli(1,2,10,3,4,10,5,6);//  12-34-56
    			chuli(1,10,2,10,3,10,4,10);//               1-2-3-4-,duan[10]    10     -
    			timer_flag=1;
    		}
    	}
    }
    

    main.h
    #ifndef _MAIN_H_
    #define _MAIN_H_
    
    #include "common.h"
    #include "ds.h"
    #include "smg.h"
    
    #endif
    

    common.c
    #include "common.h"
    
    void cls_buzz()//     、  
    {
         
    	Y4;P0=0xff;
    	Y5;P0=0xa0&(P0|0x5f);
    }
    

    common.h
    #ifndef _COMMON_H_
    #define _COMMON_H_
    
    #include "STC15F2K60S2.h"
    #include 
    
    #define uchar unsigned char
    #define uint unsigned int
    	
    #define Y4 P2=0x9f&(P2|0xe0);
    #define Y5 P2=0xbf&(P2|0xe0);
    #define Y6 P2=0xdf&(P2|0xe0);
    #define Y7 P2=0xff&(P2|0xe0);
    #define Y0 P2=0x1f&(P2|0xe0);
    
    void cls_buzz(void);
    
    #endif
    

    이렇게 쓰면 좋은 점:
  • 표시된 내용과 표시 자체를 분리하여 쓰고 표시 내용이 바뀔 때 표시 내용의 함수만 처리하면 된다.예를 들어 모드1은 12-34-56, 모드2는 1-2-3-4-를 나타낸다. 이때 주 함수에서chuli()에 저장된 그룹을 수정하면 된다.
  • 디스플레이 디스플레이()를 타이머에 넣고 리셋하면 기본적으로 제목의 요구에 맞는 디스플레이 리셋 주파수를 충족시킬 수 있을 뿐만 아니라 깜빡이는 문제를 피할 수 있다.
  • 템플릿 고정, 기억하면 됩니다. 어느 블루 브리지 컵의 제목이든 이 디지털 파이프 디스플레이는 모두 사용할 수 있습니다
  • 디스플레이를 타이머에 넣으면 그런 깜빡이는 문제도 쉽게 해결할 수 있습니다!됐어~ 여기까지 다 끝났어!현재 제가 발표한 것은 모두 기초 모듈의 강좌입니다. 천천히 쌓으면 뒤에 진짜 문제를 풀 수 있습니다!질문이 있거나 급하게 필요한 자료가 있으면 저에게 댓글을 남겨주세요!!나는 거의 매일 답장을 한다
  • 좋은 웹페이지 즐겨찾기