?? 7279.c
字號:
#include <msp430x14x.h>
//********* 7279指令 ********
#define CMD_RESET 0xA4 //復位(清除)
#define CMD_TEST 0xBF //測試
#define CMD_READ 0x15 //讀鍵盤數據指令
#define RL_CYCLE 0xA3 //循環左移
#define RR_CYCLE 0xA2 //循環右移
#define RL_UNCYL 0xA1 //左移
#define RR_UNCYL 0xA0 //右移
#define DECODE0 0x80 //下載數據,按方式0譯碼 DECODE0+地址, 數據
#define DECODE1 0xC8 //下載數據,按方式1譯碼 DECODE1+地址, 數據
#define UNDECODE 0x90 //下載數據,不譯碼 UNDECODE+地址,數據(碼字)〓1-亮;0-滅
#define ACTCTL 0x98 //消隱控制 ACTCTL,數據(d8-d0;1-亮;0-滅)
#define BLINK 0x88 //閃爍顯示 BLINK, 數據(d8-d0;0-閃爍;1-不閃爍)
#define SEGON 0xE0 //段點亮
#define SEGOFF 0xC0 //段關閉
idata uchar key_number=0xff;
//7279端口定義
#define CS P3DIR |= BIT0 //片選輸出
#define CLK P3DIR |= BIT1 //時鐘輸出
#define DAT P3DIR |= BIT2
#define KEY P3DIR &=~ BIT3 //I/O口為輸入 //接P3。2為外部中斷0輸入
//7279驅動
void Send_Byte( uchar ); //發送一個字節
void Write7279( uchar, uchar ); //寫入到7279
uchar Read7279( void ); //讀7279
uchar Receive_Byte( void ); //接收一個字節
void L_Delay(); //延時 */
void S_Delay();
void Delay10ms( uint n ) ;
//*********** 長延時 *************
void L_Delay() //CS被清零后,要經過50μs,才送CLK.
{
idata uchar i;
for ( i=0; i<48; i++ ) ;
}
//*********** 短延時 *************
void S_Delay() //在傳送指令或字節時,CLK要持續8μs的高電平.
{
idata uchar i;
for ( i=0; i<8; i++ ) ;
}
//*********** 延時 n*10ms *******
void Delay10ms( uint n )
{
idata uint j;
while( n-- )
{
for ( j=0; j<912; j++ );
}
}
//*********** 寫入到7279 ******* //讓LED顯示
void Write7279( uchar CMD, uchar DTA )
{
Send_Byte( CMD );
Send_Byte( DTA );
}
//*********** 讀7279 ************* //讀鍵盤按鍵
uchar Read7279( void )
{
Send_Byte( CMD_READ );
return( Receive_Byte());
}
//*********** 發送一個字節 *************
void Send_Byte( uchar out_byte )
{
idata uchar i;
CS=0;
L_Delay();
for( i=0; i<8; i++ )
{
if (out_byte&0x80 ) { DAT=1; }
else { DAT=0; }
CLK = 1;
S_Delay();
CLK = 0;
S_Delay();
out_byte = out_byte<<1;
}
DAT=0;
}
//*********** 讀一個字節 ***************
uchar Receive_Byte()
{
idata uchar i, IN_Byte=0x00;
DAT =1;
L_Delay();
for( i=0; i<8; i++ )
{
CLK = 1;
S_Delay();
IN_Byte = IN_Byte<<1;
if (DAT ) { IN_Byte = IN_Byte|0x01; }
CLK = 0;
S_Delay();
}
DAT=0;
return ( IN_Byte ) ;
}
void main()
{
key_number=OX02;
void Write7279( uchar CMD, uchar DTA );
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -