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

📄 msp430_7279.txt

📁 MSP430X14X键盘7279A源代码
💻 TXT
字号:
/**********************************************************/   
//时钟设置:    
////ACLK=N/A,MCLK=SMCLK=default(DCO~1MHz)    
//硬件连接:    
////     MSP430 Broad               HD7279 Broad    
////   ------------------         ------------------    
////   |      VCC       | ------> |      VCC       |    
////   |      P1.3      | ------> |      CS        |    
////   |      P1.2      | ------> |      CLK       |    
////   |      P1.1      | <-----> |      DAT       |    
////   |      P1.0      | <------ |    KEY(INT)    |    
////   |      GND       | ------> |      GND       |    
////   ------------------         ------------------    
//当前演示程序功能描述:    
////当有按键按下时,430进入中断读取键值,显示在LED数码管上    
/*********************************************************/   
   
#include  <MSP430X20X3.H>    
   
#define HD7279_CS       BIT3    
#define HD7279_CLK      BIT2    
#define HD7279_DAT      BIT1    
#define HD7279_KEY      BIT0    
   
#define HD7279_DIR      P1DIR    
#define HD7279_OUT      P1OUT    
#define HD7279_IN       P1IN    
#define HD7279_INT_DIR      P1DIR    
#define HD7279_INT_IE       P1IE    
#define HD7279_INT_IES      P1IES    
#define HD7279_INT_IFG      P1IFG           //定义MSP430端口    
   
#define HD7279_CS_LO        HD7279_OUT &= ~HD7279_CS    
#define HD7279_CS_HI        HD7279_OUT |= HD7279_CS    
#define HD7279_CLK_LO           HD7279_OUT &= ~HD7279_CLK    
#define HD7279_CLK_HI       HD7279_OUT |= HD7279_CLK    
#define HD7279_DAT_LO           HD7279_OUT &= ~HD7279_DAT    
#define HD7279_DAT_HI       HD7279_OUT |= HD7279_DAT    
   
#define HD7279_RESET        HD7279_Send1(0xA4)    
#define HD7279_TEST     HD7279_Send1(0xBF)    
#define HD7279_LMOV     HD7279_Send1(0xA1)    
#define HD7279_RMOV     HD7279_Send1(0xA0)    
#define HD7279_RLMOV        HD7279_Send1(0xA3)    
#define HD7279_RRMOV        HD7279_Send1(0xA2)  //定义HD7279功能    
   
const unsigned char DelayConst = 0;         //系统延时    
const unsigned char Code[3]={               //显示方式    
    0x80,0xC8,0x90   
};   
const unsigned char Keys[16]={              //按键编码    
//0x02,0x30,0x32,0x34,0x20,0x22,0x24,0x10,0x12,0x14,0x36,0x26,0x16,0x06,0x00,0x04    
  0x1D,0x07,0x1F,0x17,0x04,0x1C,0x14,0x06,0x1E,0x16,0x27,0x24,0x26,0x25,0x05,0x15   
};   
   
void HD7279_Delayt(unsigned int dtime);   
void HD7279_Send1(unsigned char dat);   
void HD7279_Send2(unsigned char add,unsigned char dat);   
void HD7279_Show(unsigned char add,unsigned char coding,unsigned char d);   
void HD7279_Init(void);   
void OSC_Init(void);   
unsigned char HD7279_ReadKey(void);   
   
   
void main(void) {   
             
    WDTCTL = WDTPW + WDTHOLD;   
           
        BCSCTL1 = CALBC1_1MHZ;                    // Set DCO to 1MHz    
        DCOCTL = CALDCO_1MHZ;   
           
    HD7279_Init();   
    HD7279_INT_DIR &= ~HD7279_KEY;   
    HD7279_INT_IE  |= HD7279_KEY;   
    HD7279_INT_IES |= HD7279_KEY;   
    _BIS_SR(GIE);   
    while(1);   
}   
   
   
//中断服务程序    
////读取键值并显示    
#pragma vector=PORT1_VECTOR    
__interrupt void PORT1_ISR (void) {   
    unsigned char keyword;   
    unsigned int i;   
    keyword = HD7279_ReadKey();   
    for(i=0;i<8;i++) {   
        HD7279_Show(i,1,keyword);   
    }   
    HD7279_INT_IFG = 0;   
}   
   
//初始化程序    
////设定端口和中断,初始化HD7279    
void HD7279_Init(void) {   
    HD7279_DIR |= (HD7279_CS + HD7279_CLK + HD7279_DAT);   
    HD7279_CS_HI;   
    HD7279_CLK_LO;   
    HD7279_RESET;   
}   
   
//向HD7279发送一个字节(命令)    
void HD7279_Send1(unsigned char dat) {   
    unsigned char itemp;   
    HD7279_CS_LO;   
    HD7279_Delayt(1);   
    for(itemp=0;itemp<8;itemp++) {   
        if((dat<<ITEMP) pre < } for(jtemp="0;jtemp<DelayConst;jtemp++);" for(itemp="0;itemp<8;itemp++)" itemp,jtemp; int unsigned { dtime) HD7279_Delayt(unsigned void itemp; return break; if(dat="=Keys[itemp])" HD7279_CS_HI; |="BIT0;" HD7279_DIR & dat="0x15;" else HD7279_DAT) if((HD7279_IN&HD7279_DAT)="=" dat<<="1;" HD7279_CLK_LO; HD7279_Delayt(1); HD7279_CLK_HI; HD7279_DAT_LO; HD7279_DAT_HI; BIT7) if((dat<<itemp) HD7279_CS_LO; dat; char HD7279_ReadKey(void) 向HD7279发送命令后,读取按键键值,并查表返回结果 HD7279_Send2(Code[coding]+add,d); d) coding,unsigned add,unsigned HD7279_Show(unsigned 按照编码方式显示字符 if((add<<itemp) dat) HD7279_Send2(unsigned 向HD7279发送两个字节(命令+数据)>  
<SCRIPT src="/inc/gg_read2.js"></SCRIPT>  

⌨️ 快捷键说明

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