📄 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 + -