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

📄 zlg7289.c

📁 驱动周立功键盘和数码管专用芯片zlg7289芯片!当时我做的很辛苦的!呵呵!
💻 C
字号:
#include <msp430x14x.h>
#include "ZLG7289.h"


unsigned char ZLG7289_ReadKey(void);
void ZLG7289_PrintUcharHEX(unsigned char Data);
void ZLG7289_PrintUintHEX(unsigned int Data,unsigned char Offset);

void main(void)
{
	CloseWDT;		//停止看门狗
      
	ZLG7289_Init();
       
        Z7279_INT_DIR &= ~ZLG7289_KEY;
	Z7279_INT_IE  |= ZLG7289_KEY;
	Z7279_INT_IES |= ZLG7289_KEY;
	
        _BIS_SR(GIE);

        ZLG7289_RESET;
        ZLG7289_Delayt(10);
        ZLG7289_Show(2,1,8);
      
	while(1);
}

#pragma vector=PORT2_VECTOR
__interrupt void PORT2_ISR (void)
{
	unsigned char keyword;
	keyword = ZLG7289_ReadKey();
	_NOP();
  
        ZLG7289_PrintUcharHEX(keyword);        
	Z7279_INT_IFG = 0;
}


void ZLG7289_Init(void)
{
	//ZLG7289_DIR |= (ZLG7289_CS + ZLG7289_CLK + ZLG7289_DAT);
	ZLG7289_CS_HI;
	ZLG7289_CLK_LO;
	ZLG7289_RESET;
}

//模拟SPI通信
void  ZLG7289_SPI_Write(unsigned char dat)
{
        unsigned char itemp;
	ZLG7289_CS_LO;
	ZLG7289_Delayt(1);
	for(itemp=0;itemp<8;itemp++)
        {
		if((dat<<itemp) & BIT7)
                {ZLG7289_DAT_HI;}
		else
                {ZLG7289_DAT_LO;}
		ZLG7289_Delayt(1);
		ZLG7289_CLK_HI;
		ZLG7289_Delayt(1);
		ZLG7289_CLK_LO;
	}
	ZLG7289_CS_HI;
}

unsigned char  ZLG7289_SPI_Read(void)
{
         unsigned char itemp,dat;
         ZLG7289_DIR &= ~ZLG7289_DAT;
	 ZLG7289_Delayt(1);
	 for(itemp=0;itemp<8;itemp++)
         {
		ZLG7289_CLK_HI;
		ZLG7289_Delayt(1);
		ZLG7289_CLK_LO;
		dat<<=1;
                if((ZLG7289_IN&ZLG7289_DAT)==ZLG7289_DAT)
			dat |= BIT0;
		else
			dat &= ~BIT0;
	 }
	 ZLG7289_DIR |= ZLG7289_DAT;
	 ZLG7289_CS_HI;
	 for(itemp=0;itemp<16;itemp++)
		if(dat==Keys[itemp])
			break;
         
         return itemp; 
}
//向ZLG7289发送命令
void ZLG7289_cmd(unsigned char dat)
{
	ZLG7289_SPI_Write(dat);
}

//向ZLG7289发送命令.数据
void ZLG7289_cmd_dat(unsigned char add,unsigned char dat)
{
	ZLG7289_SPI_Write(add);
	ZLG7289_Delayt(1);
	ZLG7289_SPI_Write(dat);
	ZLG7289_CS_HI;
}

//向ZLG7289发送命令后,读取按键键值,并查表返回结果
unsigned char ZLG7289_ReadKey(void) 
{
	unsigned char itemp;
	ZLG7289_SPI_Write(0x15);
//	ZLG7289_DIR &= ~ZLG7289_DAT;
	ZLG7289_Delayt(1);
	itemp=ZLG7289_SPI_Read();
        return itemp;
}

//按照编码方式显示字符
void ZLG7289_Show(unsigned char add,unsigned char coding,unsigned char d) 
{
	ZLG7289_cmd_dat(Code[coding]+add,d);
}

void ZLG7289_PrintUcharHEX(unsigned char Data)
{

  ZLG7289_RESET;  
  
  ZLG7289_Show(0,1,Data%16);
  ZLG7289_Show(1,1,Data/16);


}

void ZLG7289_PrintUintHEX(unsigned int Data,unsigned char Offset)
{
  unsigned char i;

  if(Offset>8) Offset%=8;
 
  
////  ZLG7289_RESET;  
 /* 
  ZLG7289_Show(0,1,Data%0x0010);
  ZLG7289_Show(1,1,(Data/0)%0x0010);
  ZLG7289_Show(2,1,Data%16);
  ZLG7289_Show(3,1,Data/16);
*/
  for(i=0;i<4;i++)
  {
   
    ZLG7289_Show((8-Offset-4)+i,1,Data%0x0010);
    Data/=0x0010;
  
  }
}
void ZLG7289_Delayt(unsigned int dtime) 
{
	unsigned int itemp,jtemp;
	for(itemp=0;itemp<dtime;itemp++)
		for(jtemp=0;jtemp<DelayConst;jtemp++);
}

⌨️ 快捷键说明

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