微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 我的HD7279学习笔记——基于msp430g2553

我的HD7279学习笔记——基于msp430g2553

时间:11-28 来源:互联网 点击:
Createdon:2012-9-7

Author:zhangbin

学习笔记

formsp430g2553

redesignedbyzhangbin

2012-09-07

versions:12_09_01

AllRightsReserved

HD7279的基本说明如下:

HD7279是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立led)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成led显示、键盘接口的全部功能。

HD7279内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。

HD7279具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。

典型应用:

仪器仪表,工业控制,条形显示器,控制面板

特点:

1串行接口,无需外围元件可直接驱动led

2各位独立控制译码/不译码及消隐和闪烁属性

3(循环)左移/(循环)右移指令

4具有段寻址指令,方便控制独立led

564键键盘空盒子器,内含去抖动电路

6有DIP和SOIC两种封装形式供选择

2.引脚说明:
VDD:电源VSS:
CS:片选CLK:时钟输入端
DATA:串行数据输入/输出端CLK0:振荡输出端
KEY:按键有效输出端RES:复位端
SG-SA:段g—段a驱动输出
DP:小数点驱动输出DIG0-7:数位0-7驱动输出
RC:RC振荡器连接端

HD7279A的控制指令分为二大类——纯指令和带有数据的指令

具体的这两种指令的详解,参考数据手册。

上面的说明是摘录数据手册上的,只介绍了HD7279的基本大概情况,更详细的介绍如:读写时序、详细命令等,就要参考数据手册了。

单片机对各种外围芯片、器件进行操作的时候,主要是处理好相互的通信。那么就要特别注意手册上介绍的操作的时序,写程序的时候,要严格按照时序写就行了。

下面是我写的对HD7279进行操作的一个程序,是基于msp430g2553单片机的,可以控制4*4的16矩阵键盘。目前对led的操作还没有实现,需要继续完善程序,程序贴在了下面,注释的也比较详细:

//本程序是为了测试键盘、led驱动芯片HD7279所写的,主要完成HD7279读,写操作,控制4*4矩阵键盘和4led

//4个led分别接到了DIG0~DIG3

//目前这4个led还没有控制得住,要继续努力

#include

#include"ser_12864.h"

//HD7279各个管脚定义

#defineSET_CSP1OUT|=BIT0;

#defineCLR_CSP1OUT&=~BIT0;

#defineSET_CLKP1OUT|=BIT1;

#defineCLR_CLKP1OUT&=~BIT1;

#defineDATA_INP1DIR&=~BIT2;//data脚设为输入

#defineDATA_OUTP1DIR|=BIT2;//data脚设为输出

#defineSET_DATAP1OUT|=BIT2;

#defineCLR_DATAP1OUT&=~BIT2;

//#defineDATAP1IN&BIT2;

//#defineKEYP1IN&BIT3;

//HD7279基本命令定义

#defineCMD_RESET0xa4//复位(清除)指令

#defineCMD_TEST0xbf//测试指令

#defineRTL_UNCYL0xa1//左移指令

#defineRTR_UNCYL0xa0//右移指令

#defineRTL_CYCLE0xa3//循环左移指令

#defineRTR_CYCLE0xa2//循环右移指令

#defineDECODE00x80//方式0译码

#defineDECODE10xc8//方式1译码

#defineUNDECODE0x90//不带小数点显示

#defineBLINKCTL0x88//闪烁控制

#defineACTCTL0x98//消隐控制

#defineSEGON0xe0//段点亮指令

#defineSEGOFF0xc0//段关闭指令

#defineCMD_READ0x15//读取键盘数据指令

//long_delayshort_delay延时57us延时11us

#definelong_delay()delay_us(57);

#defineshort_delay()delay_us(11);

uintkey_code[]={61,36,37,38,44,45,46,52,53,54};//键盘上的数字键对应的键值,在程序中要进行处理,要转化为0~9

//数组中为数字0~9对应的键值,顺序不能变

ucharkey=0;//按下的键码

//向HD7279中发送指令相当于写纯指令

voidsend_byte(ucharcom)

{

uchari=0;

CLR_CS;

long_delay();

for(i=0;i<8;i++)//发送命令,高位在前一个时钟脉冲,送一位数据到7279中

{

if(com&0x80)//高位在前

{

SET_DATA;

}

else

{

CLR_DATA;

}

SET_CLK;//发生脉冲

short_delay();

CLR_CLK;

short_delay();

com<=1;//左移一位

}

CLR_DATA;

}

//从7279中读取数据

ucharreceive_byte(void)

{

unsignedchari,in_byte;

SET_DATA;//settoinputmode

long_delay();

for(i=0;i<8;i++)

{

SET_CLK;

short_delay();

in_byte=in_byte<1;

DATA_IN;//把DATA脚设为输入DATA为P12

if(P1IN&BIT2)

{

in_byte=in_byte|0x01;

}

CLR_CLK;

short_delay();

}

DATA_OUT;//把data设为输出

CLR_DATA;

return(in_byte);

}

//向7279中写入带数据的指令

voidwr_data_com(ucharcom,uchardata)//先发送指令,再发送数据

{

send_byte(com);//发送指令

send_byte(data);//发送数据

}

//从7279中读取键盘数据函数

ucharrd_key()

{

send_byte(CMD_READ);//先写入读取键盘数据的指令

return(receive_byte());//返回接收到的数据,即为键值

}

//7279的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top