⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_display.c

📁 基于PIC16F877 温湿度控制器原代码及原理图PCB图
💻 C
字号:
#include <pic.h>
#include "Pindefine.h"
Disdata  bank1  DisData;
void display(void);
extern unsigned int bank1  AD_result[2];
void LED_CS(unsigned char lednum);
void TO_Displaydata(unsigned int data,unsigned int Dis_floatnum,unsigned char line);
const unsigned char dispcode[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x00};// 0, 1,2,3,4,5,6,7,8,9,a,b,不显示, //far rom const
/***************************************************************************
函数名称:void display()
函数功能:双排共15位数码管显示
入口参数:无
备注: 
***************************************************************************/
void display(void)
{
  unsigned char data;
   LEDWX1=1;
   LEDWX2=1;
   LEDWX3=1;
   LEDWX4=1;
   LEDWX5=1;
   LEDWX6=1;
   LEDWX7=1;
   LEDWX8=1;
  data = DisData.data[DisData.bitnum/4][DisData.bitnum%4];
  PORTD = data;
  LED_CS(DisData.bitnum);
  DisData.bitnum++;

  if(DisData.bitnum>=8)  DisData.bitnum = 0;
}

void LED_CS(unsigned char lednum)
{
     
      if(lednum==0) 
        {   
          LEDWX1=0;
        }
      else if(lednum==1) 
        {   
          LEDWX2=0;
        }
       else if(lednum==2) 
        {   
          LEDWX3=0;
        }  
       else if(lednum==3) 
       {
          LEDWX4=0;
        } 
       else if(lednum==4) 
        {   
          LEDWX5=0;
        } 
       else if(lednum==5) 
        {   
          LEDWX6=0;
        }   
       else if(lednum==6) 
        {   
          LEDWX7=0;
        } 
       else if(lednum==7) 
        {   
          LEDWX8=0;
        }     
     
}
/******************************************************
**data——要显示的数据
**Dis_floatnum——显示小数点的位数(如10——表示1位小数点,100——表示两位小数点)
**line——显示在数码管的第几排(共2排数码管)
*******************************************************/
void TO_Displaydata(unsigned int data,unsigned int Dis_floatnum,unsigned char line)
{
    unsigned char i,bitcount,n;
    unsigned int  Dec_data,floatdata,m;
    Dec_data = data/Dis_floatnum;
    floatdata = data%Dis_floatnum;
    m = 1000/Dis_floatnum;
    bitcount = 0;
    for(i=0;i<4;i++)
    {
         if(m>0)
         {                                     //显示十进制位
            n = Dec_data/m;
            Dec_data = Dec_data%m;
            if(n==0)
            {
              if((i<4)&&(bitcount==0)) n = 12;
            }
            else bitcount = 1;
                DisData.data[line][i] = dispcode[n];
            if(m>1) m = m/10;
            else
             {
               m = 0;
               DisData.data[line][i] = DisData.data[line][i]|0x80;
               if(bitcount==0)    DisData.data[line][i] =DisData.data[line][i]|0x3f;
             }
         }
         else                            //显示小数点
         {
              Dis_floatnum = Dis_floatnum/10;
              n = floatdata/Dis_floatnum;
              floatdata = floatdata%Dis_floatnum;
              DisData.data[line][i] = dispcode[n];
              if(Dis_floatnum==1)  break;
         }
   }
}
/*********************************************/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -