?? 7279.c
字號:
/*******************************
模塊名稱:7279顯示
創建人: 田本武 修改人: 田本武 修改時間:2007-10-16
功能描述:鍵盤顯示管理
版本號: 2.0版本
********************************/
#include "reg51.h "
#define uchar unsigned char
#define uint unsigned int
/******************
函數聲明
*****************/
void long_delay(void); //長延時
void short_delay(void);//短延時
void write7279_byte(uchar ,uchar );//寫7279
void send_byte(uchar);//發送一字節
//uchar receive_byte(void);//接收一字節
void HD7279_LongDelay(void); //長延時函數
void HD7279_ShortDelay(void); //短延時函數
/************************
I/O 定義
************************/
sbit key_7279=P2^0;
sbit da_7279=P3^7;
sbit clk_7279=P3^3;
sbit A_74138=P2^4;
sbit B_74138=P2^3;
sbit C_74138=P2^2;
/************************
定義全局變量
***********************/
uchar key=0;
/****************************
顯示數組
****************************/
uchar code disp[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
/*************************
7279指令定義
**************************/
#define readkey 0x15 //讀鍵值指令
#define reset 0xa4 //復位指令
#define try 0xbf //測試指令
#define decode1 0xc8 //方式1譯碼
/************************
函數名: HD7279_LongDelay
功能描述:長延時函數
*************************/
void HD7279_LongDelay(void)
{
unsigned char i;
for (i=0;i<6;i++);
}
/************************
函數名: HD7279_shortDelay
功能描述:長延時函數
*************************/
void HD7279_ShortDelay(void)
{;}
/************************
函數名: send_byte
功能描述:向7279中寫入一個字節的數據
函數說明:
調用函數:
全局變量:
輸入: k
輸出: 無
返回: 無
*************************/
void send_byte(uchar k)
{
uchar i,j;
A_74138=0;
B_74138=0;
C_74138=1;
clk_7279=0;
HD7279_LongDelay();
for(i=0;i<8;i++) //產生8個脈沖
{
da_7279=(bit)(0x80&k);//十進制數轉化成位數據
clk_7279=1;
HD7279_ShortDelay();
k=k<<1;
clk_7279=0 ;
HD7279_ShortDelay();
}
da_7279=0;
}
/************************
函數名: write_byte
功能描述:向7279中寫入兩個字節的數據
函數說明:
調用函數:send_byte()
全局變量:
輸入: comd dta
輸出: 無
返回: 無
*************************/
void write7279_byte(uchar comod ,uchar dta)
{ send_byte(comod);
send_byte(dta);
}
/************************
函數名: receive()
功能描述: 接受從7279傳回的按鍵值
*************************/
uchar receive()
{uchar i,in_byte;
da_7279=1;
for(i=0;i<8;i++)
{ clk_7279=1;
HD7279_ShortDelay();
in_byte<<=1;//初始值是0
if(da_7279)
{in_byte|=0x01;}
clk_7279=0;
HD7279_ShortDelay();
}
da_7279=0;
return(in_byte);
}
/************************
函數名: read7279()
功能描述:從7279中讀出鍵盤值
函數說明:
調用函數: send_byte(); receive();
全局變量:
輸入: k
輸出: 無
返回: 鍵值
*************************/
uchar read7279(uchar k)
{send_byte(k);
return(receive());
}
void main(void)
{uchar t,num;
uchar *p;
p=disp;
send_byte(reset); //7279復位
//send_byte(try);//測試7279,調試用
//while(1);
//write7279_byte(decode1,0x00);
while(1)
{
if(!key_7279)
{
if(key<8)
goto loop;
else key=0;
loop:num=read7279(readkey);
write7279_byte(decode1+key,num);
key++; //修改
while(!key_7279);
}
}
while(1);
for(t=0;t<8;t++)
{
write7279_byte(decode1+t,disp+t);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -