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

📄 led.c

📁 一端连续波功率计的led显示程序
💻 C
字号:
#include <mega128.h>
#include <delay.h>
#include "Led.h"
//+++++++++++++++++++++++++++++++++++++++++++++++++  
///////////////////////////0~9  
flash unsigned char LED_CODE[23]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40, 0x79, 0x50, 0x77, 0x71, 0x7c, 0x5c, 0x39, 0x38, 0x6d, 0x3e, 0x5b,0X80};
//0~9-, E, R, A, F, b, o, C, L, S, V, Z, . 
//最后一个小数点
void LED_Init(void)
{
DDRA=0XFF;
DDRC=0XF0;
} 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++ 
 
/*
LED DISPLAY
using 74LS164
number =0~9999 
whichPoint=4,3,2,1,从左到右
0 表示不显示小数点 
*/
void LED_dispNumber(unsigned int number,unsigned char whichPoint)  
{
unsigned char i,head_zero_cnt; 
unsigned char A=0,B=0,C=0,D=0;
unsigned int number_back;
number_back=number;
while(number>=1000)
	{
	A++;
	number=number-1000;
	
	}   
while(number>=100)
	{
	B++;
	number=number-100;
	
	}
while(number>=10)
	{
	C++;
	number=number-10;
	
	}
D=number;

Clear_LED();
LED_CLK=0;
Set_LED(); 
LED_SEL1=1;
LED_SEL2=1;
LED_SEL3=1;  
LED_SEL4=1; 
for(i=0;i<8;i++)
{  

     	LED_CLK=0;
        if(whichPoint==1)  LED_SDATA=((LED_CODE[D]|0x80)<<i)&0x80;
	else	LED_SDATA=(LED_CODE[D]<<i)&0x80;  
       delay_us(5);
     	LED_CLK=1;
	delay_us(5);
     	
} 
for(i=0;i<8;i++)
{ 

	
     	LED_CLK=0;
	if(whichPoint==2)  LED_SDATA=((LED_CODE[C]|0x80)<<i)&0x80;
	else	LED_SDATA=(LED_CODE[C]<<i)&0x80;
	delay_us(5);
     	LED_CLK=1;
	delay_us(5);
     
} 
for(i=0;i<8;i++)
{  
	LED_CLK=0;
	if(whichPoint==3)  LED_SDATA=((LED_CODE[B]|0x80)<<i)&0x80;
	else	LED_SDATA=(LED_CODE[B]<<i)&0x80;
	delay_us(5);
     	LED_CLK=1;
     	delay_us(5);
     	
} 
for(i=0;i<8;i++)
{  
	LED_CLK=0;
	if(whichPoint==4)  LED_SDATA=((LED_CODE[A]|0x80)<<i)&0x80;
	else	LED_SDATA=(LED_CODE[A]<<i)&0x80;
	delay_us(5);
     	LED_CLK=1;
     	delay_us(5);
} 
//以下清除前面的零显示
LED_SEL1=0;
LED_SEL2=0;
LED_SEL3=0;  
LED_SEL4=0; 

if(number_back>=1000) head_zero_cnt=0;
else if(number_back>=100) head_zero_cnt=1;
else if(number_back>=10) head_zero_cnt=2;
else if(number_back>0) head_zero_cnt=3;
else head_zero_cnt=4;

switch(whichPoint)
{
case 0:
	if(head_zero_cnt==1) LED_SEL1=1;
	else if(head_zero_cnt==2) 
		{
		LED_SEL1=1;
		LED_SEL2=1;
		}
	else if(head_zero_cnt==3||head_zero_cnt==4)
		{
		LED_SEL1=1;
		LED_SEL2=1;
		LED_SEL3=1;		
		}
	break;
case 2:
	if(head_zero_cnt==1)
		{
		LED_SEL1=1;
		}
	else if(head_zero_cnt>1)
		{
		LED_SEL1=1;
		LED_SEL2=1;
		}
	break;
case 3:
	if(head_zero_cnt>0) LED_SEL1=1;
	break;

default:
	break;
		
}

delay_us(10);
}
//LED_dispDash()
// 显示- ---
//用于调零时候的显示
void LED_dispDash(void)
{
unsigned char i,j;
Clear_LED();
LED_CLK=0;
Set_LED(); 
for(j=0;j<4;j++)
{
LED_PORT_SEL=LED_PORT_SEL|0xF0;

for (i=0;i<8;i++)
{
	LED_CLK=0;
	LED_SDATA=(LED_CODE[10]<<i)&0x80;  
       delay_us(5);
     	LED_CLK=1;
     	delay_us(5);
 	
} 
LED_PORT_SEL=LED_PORT_SEL&(~(0x80>>j));
delay_ms(500);
}
LED_PORT_SEL=LED_PORT_SEL|0xF0;
/*
LED_SEL1=0;
LED_SEL2=0;
LED_SEL3=0;  
LED_SEL4=0; */
}

//POS 从左到右0~3
void LED_dispOneDash(unsigned char pos)
{
unsigned char i,j;
Clear_LED();
LED_CLK=0;
Set_LED(); 
for(j=0;j<pos+1;j++)
{
LED_PORT_SEL=LED_PORT_SEL|0xF0;

for (i=0;i<8;i++)
{
	LED_CLK=0;
	LED_SDATA=(LED_CODE[10]<<i)&0x80;  
       delay_us(1);
     	LED_CLK=1;
     	delay_us(1);
 	
} 
LED_PORT_SEL=LED_PORT_SEL&(~(0x80>>j));
}
//LED_PORT_SEL=LED_PORT_SEL|0xF0;
}
void LED_dispAllDash(void)
{
unsigned char i,j;
Clear_LED();
LED_CLK=0;
Set_LED(); 
for(j=0;j<4;j++)
{
//LED_PORT_SEL=LED_PORT_SEL|0xF0;

for (i=0;i<8;i++)
{
	LED_CLK=0;
	LED_SDATA=(LED_CODE[10]<<i)&0x80;  
       delay_us(5);
     	LED_CLK=1;
     	delay_us(5);
 	
} 
LED_PORT_SEL=LED_PORT_SEL&(~(0x80>>j));
//delay_ms(500);
}
/*
LED_SEL1=0;
LED_SEL2=0;
LED_SEL3=0;  
LED_SEL4=0; */
}
//************************************
void Light_LED(unsigned char whichLED)  
{
unsigned char A,B,C;
A=(whichLED&0x01)?(1<<5):0;
B=(whichLED&0x02)?(1<<4):0;
C=(whichLED&0x04)?(1<<6):0;
G1_138=1;
PORT_138=(0X80|A|B|C);
} 

⌨️ 快捷键说明

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