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

📄 7279.c

📁 AT89c51单片机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 + -