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

📄 display.h

📁 nRF905无线FSK芯片在51单片机上工作的代码
💻 H
字号:

////////////////////////////////////////////////////////////
#ifndef display_h
#define display_h
#include<reg51.h>
#include <absacc.h>
/////////////////////////
#define ADDR_8SEG	XBYTE[0x2000]

/* 数码管位驱动和指示灯驱动寄存器地址 */
#define ADDR_SEL	XBYTE[0x4000]
/* 数码管位驱动和指示灯驱动信号输出缓存,定义了一个可位寻址的变量 */
unsigned char bdata output_sel;
	sbit led_1 = output_sel^5;
	sbit led_2 = output_sel^6;
	sbit led_3 = output_sel^7;
	sbit led_4 = output_sel^4;
	/* 数码管扫描驱动指针,为测试外部存储器(U3 6264),特使用xdata类型 */
unsigned char xdata digi_scaner;
/////////////////////////////////
//显示的字符
unsigned char fir_dis=1;
unsigned char sec_dis=2;
unsigned char thi_dis=3;
unsigned char for_dis=4;
////////////////////////////////////////////
unsigned char NUMTOSEG7(unsigned char DATA)
{ unsigned char AA;
  switch (DATA)
  { case 0: AA=0xc0;break; /* ‘0’*/
    case 1: AA=0xf9;break; /* ‘1’*/
    case 2: AA=0xa4;break; /* ‘2’*/
    case 3: AA=0xb0;break; /* ‘3’*/
    case 4: AA=0x99;break; /* ‘4’*/
    case 5: AA=0x92;break; /* ‘5’*/
    case 6: AA=0x82;break; /* ‘6’*/
    case 7: AA=0xf8;break; /* ‘7’*/
    case 8: AA=0x80;break; /* ‘8’*/
    case 9: AA=0x90;break; /* ‘9’*/
    case 10: AA=0x88;break; /* ‘A’*/
    case 11: AA=0x83;break; /* ‘B’*/
    case 12: AA=0xc6;break; /* ‘C’*/
    case 13: AA=0xa1;break; /* ‘D’*/
    case 14: AA=0x86;break; /* ‘E’*/
    case 15: AA=0x8e;break; /* ‘F’*/
    case '-':AA=0xbf;break; /* 破折号,此处原误为0xdf,系04级王资凯同学指正*/
    case '_':AA=0xf7;break; /* 下划线*/
    case ' ':AA=0xff;break; /* 消隐*/
    default: AA=0xff;
  }
  return(AA);
}
//////////////////////////////////////////////////////////
void Display()
 {
 	   
 		/* 数码管扫描驱动指针值从1到4重复变换,每5ms间隔对一个数码管进行驱动,20ms一个轮回 */
	if (++digi_scaner>=5) digi_scaner = 1;
	switch (digi_scaner)
	{
		case 1: /* 驱动第一个数码管 */
				output_sel |= 0x01;
				ADDR_8SEG = NUMTOSEG7(' ')&0x7f;
				
				ADDR_8SEG = NUMTOSEG7(fir_dis)&0x7f; /*输出到锁存器U5(在电路图中找)*/  //d1
				break;																			   

		case 2: /* 驱动第二个数码管 */
				output_sel |= 0x02;
				ADDR_8SEG = NUMTOSEG7(' ');
				ADDR_8SEG = NUMTOSEG7(sec_dis); /*输出到锁存器U5*/  //d2
				break;

		case 3: /* 驱动第三个数码管 */
				output_sel |= 0x04;
				ADDR_8SEG = NUMTOSEG7(' ');
				ADDR_8SEG = NUMTOSEG7(thi_dis); /*输出到锁存器U5*///d3
				break;

		case 4: /* 驱动第四个数码管 */
				output_sel |= 0x08;
				ADDR_8SEG = NUMTOSEG7(' ');
				ADDR_8SEG = NUMTOSEG7(for_dis); /*输出到锁存器U5*/
				break;
	}

	ADDR_SEL = output_sel;     	/*输出到锁存器U6(在电路图中找)*/

 }
////////////////////////////////////////////////////


#endif
///////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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