📄 key_display.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 + -