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

📄 hd7279.c

📁 非常好用的串行数据转并行数据的芯片,价格也不高,非常好用,程序经过调试,可用
💻 C
字号:
	#include "reg668.h"
	#include "absacc.h"
	#define uchar unsigned char

	/*HD7279 指令*/

	#define CMD_RESET 0xa4/*复位(清除)指令0xa4*/
	#define CMD_TEST 0xbf/*测试指令0xbf*/
	#define CMD_RTL_CYCLE 0xa3/*循环左移指令0xa3*/
	#define CMD_RTR_CYCLE 0xa2/*循环右移指令0xa2*/
	#define CMD_RTL_UNCYCLE 0xa1/*左移指令0xa1*/
	#define CMD_RTR_UNCYCLE 0xa0/*右移指令0xa0*/
	#define CMD_DECODE0 0x80/*译码方式0   0x80*/
	#define CMD_UDECODE 0x90/*不译码方式   0x90*/
	#define CMD_BLINKCTL 0x88/*闪烁控制0x88*/
	#define CMD_ACTCTL 	0x98/*削隐控制0x98*/
	#define CMD_SEGON 0xe0/*段点亮指令0xe0*/
	#define CMD_SEGOFF 0xc0/*段关闭指令0xc0*/
	#define CMD_READKEY 0x15/*读键盘数据指令0x15*/
	#define CMD_8255 XBYTE[0X7FF3]
	#define pa XBYTE[0x7ff0]//(*(char*)0x8000)
	#define pb XBYTE[0x7ff1]//(*(char*)0x8001)
	#define pc XBYTE[0x7ff2]//(*(char*)0x8002)
	void long_delay(void) reentrant;
	void short_delay(void) reentrant;
	
	/*定HD7279引脚(I/O口)*/

	sbit HD7279KEY=P1^7;/*按键有效输出端*/
	sbit HD7279DIO=P2^4;/*串行数据输入/输出端*/
	sbit HD7279CLK=P3^4;/*同步时钟输入端*/
	sbit HD7279CS=P3^5;/*片选端*/
	
	/****************************************************************************
	Function:send_byte
	Parameter:Uc_Outbyte
	Retrun:None
	Description:向HD7279发送一个字节,包括指令,数据
	*****************************************************************************/
	void send_byte(uchar Uc_Outbyte) reentrant
	{
		uchar i;
		HD7279CS=0;
		long_delay();
		//HD7279CLK=0;
		for(i=0;i<8;i++)
		{
			if(Uc_Outbyte)//下载数据
			{
				HD7279DIO=1;
			}
			else
			{
				HD7279DIO=0; 
			}
		
		short_delay();
		HD7279CLK=1;
		short_delay();
		HD7279CLK=0;
		Uc_Outbyte<<=1;
		}
		HD7279DIO=0;
	//	HD7279CS=1;
	}
  /****************************************************************************
	Function:write7279
	Parameter:cmd,data
	Retrun:None
	Description:向HD7279发送要显示的数据和译码方式
	*****************************************************************************/
	void WriteHd7279(uchar cmd,uchar dta) reentrant
	{
		send_byte(cmd);
		send_byte(dta);
	}


	/****************************************************************************
	Function:long_delay
	Parameter:None
	Retrun:None
	Description:长延时
	*****************************************************************************
*************************************************************************************/
	 void long_delay(void) reentrant
	{
		uchar i;
		for(i=0;i<0x30;i++);
	}
	/****************************************************************************
	Function:short_delay
	Parameter:None
	Retrun:None
	Description:短延时
	*****************************************************************************/
	void short_delay(void) reentrant
	{
		uchar i;
		for(i=0;i<8;i++);
	}
	/****************************************************************************
	Function:Testhd7279
	Parameter:None
	Retrun:None
	Description:测试HD7279一二三位红绿灯依次各亮一次
	*****************************************************************************/
	void Testhd7279(void) reentrant
	{
		WriteHd7279(CMD_UDECODE,0xaa);
        long_delay();
        long_delay();
        WriteHd7279(CMD_UDECODE,0x55);
        long_delay();
        long_delay();
        WriteHd7279(CMD_UDECODE+1,0xaa);
        long_delay();
        long_delay();
        WriteHd7279(CMD_UDECODE+1,0x55);
        long_delay();
        long_delay();
        WriteHd7279(CMD_UDECODE+2,0xaa);
        long_delay();
        long_delay();
        WriteHd7279(CMD_UDECODE+2,0x55);
        long_delay();
        long_delay();
        
            
	}

	
/*主程序*/
	 main (uchar i,uchar j)
	       { 
             int tmr;
             Testhd7279( );
             long_delay();
             while (1)
	               {
		              for (tmr=0;tmr<0x2000;tmr++);	// 上电延时
		              send_byte(CMD_RESET);			// 复位HD7279A
		              WriteHd7279(i,j);			// 按不译码方式显示
		              long_delay();
                    }
            }

⌨️ 快捷键说明

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