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

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

时间:11-28 来源:互联网 点击:

初始化函数

voidhd7279_init()

{

delay_ms(50);//上电延迟

P1DIR|=BIT0+BIT1+BIT2;//单片机相关IO口设置

//P1DIR&=~BIT3;//KEY为输入

send_byte(CMD_RESET);//输入清除指令

delay_ms(50);

}

//因为当HD7279A检测到有效的按键时,KEY引脚从高电平变为低电平,并一直保持到按键结束,所以可以用下降沿出发,也可以用上升沿出发

voidinterrupt_init()

{

//在本程序中,按键按下于不按下,key的电平要么为高,要么为低,是确定的,不会有悬空浮动状态,所以下面两句内部拉电阻的设置可以不用要

//P1REN|=BIT3;//pullup内部上拉电阻使能

//////使用中断时,使能内部的上拉电阻这样当该脚悬空是,电平不会跳变,防止悬空时电平跳变不停的触发中断

//P1OUT=BIT3;//当引脚上的上拉或下拉电阻使能时,PxOUT选择是上拉还是下来

//////0:下拉,1:上拉

P1IE|=BIT3;//P1.3interruptenabledP13中断使能

P1IES|=BIT3;//P1.3Hi/loedge下降沿中断

P1IFG&=~BIT3;//P1.3IFGcleared中断标志位清零

}

voidmain(void)

{

unsignedchars1[]={"key:"};

WDTCTL=WDTPW+WDTHOLD;//停止看门狗定时器

BCSCTL1=CALBC1_12MHZ;//设定cpu时钟DCO频率为12MHz

DCOCTL=CALDCO_12MHZ;

P2DIR|=BIT5+BIT4;//液晶的两条线

init_lcd();

hd7279_init();

interrupt_init();//IO中断初始化

P1DIR|=BIT6;

P1OUT&=~BIT6;

wr_string(0,0,s1);//第一行第一个位置显示s1

_BIS_SR(LPM4_bits+GIE);//进入LPM4开中断

}

//Port1interruptserviceroutine

#pragmavector=PORT1_VECTOR

__interruptvoidPort_1(void)

{

uchari=0;

_DINT();

P1OUT|=BIT6;

key=rd_key();//读取键值

//while((P1IN&BIT3)==0);//等待按键松开

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

{

if(key==key_code[i])//利用数组进行键值转化

key=i;//转化为了对应的数字

}

wr_int(1,0,key);//显示

P1IFG&=~BIT3;//中断标志位清零

_EINT();//打开中断

}

//下面是用死循环检测按键按下,这种方法可以,但是不灵敏,并且浪费cpu资源改进是用key出发IO口中断,然后进行键盘处理

//for(;;)//用死循环检测按键按下

//{

//if((P1IN&BIT3)==0)//当HD7279A检测到有效的按键时,KEY引脚从高电平变为低电平,并一直保持到按键结束。在此期间,

////如果HD7279A接收到‘读键盘数据指令’,则输出当前按键的键盘代码;如果在收到‘读键盘指令’时没有有效按键,HD7279A将输出FFH。

//

//{

//key=rd_key();//读取键值

//while((P1IN&BIT3)==0);//等待按键松开

//}

//wr_int(2,0,key);//显示

//}

//对应键值:1-362-373-384-445-456-467-528-539-540-61*-60#-62A-39B-47C-55D-63

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

网站地图

Top