?? f_measure.c
字號(hào):
#include <reg51.h>
sbit Dig1 = P2^0;
sbit Dig2 = P2^1;
sbit Dig3 = P2^2;
sbit Dig4 = P2^3;
sbit Dig5 = P2^4;
sbit Dig6 = P2^5;
sbit Dig7 = P2^6;
sbit Latch = P3^0; //latch in
sbit Clr_data = P3^4;
sbit Dig_sel2 = P3^5;
sbit Dig_sel1 = P3^6;
sbit Dig_sel0 = P3^7;
#define T0_High_Init 0xfa;
#define T0_Low_Init 0x00;
unsigned int Counter;
unsigned char Digit1,Digit2,Digit3,Digit4,Digit5,Digit6,Digit7;
//字形表
int Get_7_Segment[16] = {0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B,0x77,0x1f,0x4e,0x3d,0x4f,0x47};
unsigned char indata;
//---------------------------------------------------------------------------------------------------------
//主函數(shù)
//初始化函數(shù)
void Initial(void)
{
Counter = 0;
TMOD = 0x11; //定時(shí)器工作方式
TH0 = T0_High_Init;
TL0 = T0_Low_Init; //設(shè)置定時(shí)器初值
TR0 = 1; //啟動(dòng)定時(shí)器
ET0 = 1; //允許定時(shí)器中斷
EA = 1; //開中斷
}
//延時(shí)
void delay()
{
int ti;
for(ti=0;ti<10;ti++)
{}
}
//判斷Latch是否為高電平
int latch_high(void)
{
int reci; //返回值
if(Latch)
{
delay();
if(Latch)
reci = 1;
else
reci = 0;
}
else
reci = 0;
return reci;
}
//判斷Latch是否為低電平
int latch_low(void)
{
int reci; //返回值
if(!Latch)
{
delay();
if(!Latch)
reci = 1;
else
reci = 0;
}
else
reci = 0;
return reci;
}
void get_data(void)
{
Dig_sel2 = 0;
Dig_sel1 = 0;
Dig_sel0 = 0;
delay();
indata = P0;
Digit7 = indata & 0x0f;
Dig_sel0 = 1;
delay();
indata = P0;
Digit6 = indata & 0x0f;
Dig_sel1 = 1;
Dig_sel0 = 0;
delay();
indata = P0;
Digit5 = indata & 0x0f;
Dig_sel0 = 1;
delay();
indata = P0;
Digit4 = indata & 0x0f;
Dig_sel2 = 1;
Dig_sel1 = 0;
Dig_sel0 = 0;
delay();
indata = P0;
Digit3 = indata & 0x0f;
Dig_sel0 = 1;
delay();
indata = P0;
Digit2 = indata & 0x0f;
Dig_sel1 = 1;
Dig_sel0 = 0;
delay();
indata = P0;
Digit1 = indata & 0x0f;
}
//主函數(shù)
void main()
{
Initial();
while( 1 )
{
while( latch_high() );
get_data();
Clr_data = 0;
delay();
Clr_data = 1;
while( latch_low() );
}
}
//-------------------------------------------------------------------
//中斷
//顯示
void Display_Digit(unsigned int Digit_Selected)
{
if( Digit_Selected == 1 )
{
Dig7 = 1;
P1 = Get_7_Segment[Digit1];
Dig1 = 0;
}
if( Digit_Selected == 2 )
{
Dig1 = 1;
P1 = Get_7_Segment[Digit2];
Dig2 = 0;
}
if( Digit_Selected == 3 )
{
Dig2 = 1;
P1 = Get_7_Segment[Digit3];
Dig3 = 0;
}
if( Digit_Selected == 4 )
{
Dig3 = 1;
P1 = Get_7_Segment[Digit4];
Dig4 = 0;
}
if( Digit_Selected == 5 )
{
Dig4 = 1;
P1 = Get_7_Segment[Digit5];
Dig5 = 0;
}
if( Digit_Selected == 6 )
{
Dig5 = 1;
P1 = Get_7_Segment[Digit6];
Dig6 = 0;
}
if( Digit_Selected == 7 )
{
Dig6 = 1;
P1 = Get_7_Segment[Digit7];
Dig7 = 0;
}
}
//中斷處理函數(shù)
void display(void) interrupt 1
{
ET0 = 0;
TR0 = 0;
TH0 = T0_High_Init;
TL0 = T0_Low_Init; //重裝定時(shí)器初值
TR0 = 1;
if( ++Counter == 8 )
Counter = 1;
Display_Digit(Counter); //顯示
ET0 = 1;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -