seg_trd.c

来自「数字时钟--51单片机 可以用KEY调整时间」· C语言 代码 · 共 102 行

C
102
字号
#include <reg51.h>
#include <intrins.h>
#include <math.h>

#define uchar unsigned char 
#define uint unsigned int 

/*sbit segdigit_1 = P2^2;
sbit segdigit_2 = P2^3;
sbit segdigit_3 = P2^4;
sbit segdigit_4 = P2^5;
sbit segdigit_5 = P2^6;
sbit segdigit_6 = P2^7;//最高位*/

/*unsigned char code table[]=
{0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,0x8E};//0-F*/
unsigned char code led_data[]=
{0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90};//0-9



uchar flag = 0;
void delay1(uint dly)
{
	uint i, j;

	for(i=50; i>0; i--)
		for(j=dly; j>0; j--);
}

void display_one(uchar count,uchar dat)
{
 P0 = led_data[dat];    //显示的数
 P2 =  ~(1<<count); //选中对应要显示的位
}
void display_sec(uint dat)
{
  uchar temp;
 //十位
 if(dat>=10)
 {
  temp=dat/10;
  display_one(3,temp);
  delay1(2);
  }
 else
 {
  display_one(3,0);
  delay1(2);
  }
 //个位
  temp=dat%10;
  display_one(2,temp);
  delay1(2);  
}

void display_min(uint dat)
{
  uchar temp;
 //十位
 if(dat>=10)
 {
  temp=dat/10;
  display_one(5,temp);
  delay1(2);
  }
 else
 {
  display_one(5,0);
  delay1(2);
  }
 //个位
  temp=dat%10;
  display_one(4,temp);
  delay1(2);  
}


void display_hor(uint dat)
{
  uchar temp;
 //十位
 if(dat>=10)
 {
  temp=dat/10;
  display_one(7,temp);
  delay1(2);
  }
 else
 {
  display_one(7,0);
  delay1(2);
  }
 //个位
  temp=dat%10;
  display_one(6,temp);
  delay1(2);  
}		   

⌨️ 快捷键说明

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