5170|9

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【求助】关于键盘和AD转换的问题! [复制链接]

小女子初学430,现做一块MSP430实验板的演示程序开发,遇到了几个问题,恳请大侠们指点(用的是MSP430F449):

1。 我的键盘程序运行影响到了步进电机的模块的运行。我是用TA中断,在中断程序中依次进行键盘扫描(行列式扫描),步进电机运行控制等,在键盘扫描中,原来设了个判断键释放与否的循环,后来发现当我按住某键不释放时,步进电机就不转了(因为不能跳出上述循环)。我问我的老师,他说将判键释放的循环取消掉即可。但我取消掉之后,按一下某键,他会重复显示好几次。请问这个问题怎么解决?是不是有其他的键盘扫描方式可以不用判断键释放且只作一次按键?

2。 关于AD转换:我要用AD12测干电池的电压,然后在LCD上显示出来。AD转换的数值是不是以mv为单位的?比如,我测量的电压为1.5V,那么在ADC12MEM0中的数值是不是为05DCh(转换为十进制即1500mv),那么我只要将这个值转换为十进制,并加上小数点后显示就可以了。不知道我这样理解对不对?

谢谢解答哦!

最新回复

430的汇编我个人认为没有什么学习的必要啊  详情 回复 发表于 2006-5-11 08:32
 
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我回答一下,不一定对
1.键盘程序都得有判断键是否释放啊,否则肯定在你一直按时,就会又发现这个键被按了
2.你理解错误了,12位AD转换是0~4095,测量1.5V,那么如果你V+ 选1.5V,V-选0V,那就会得出4095,如果测0V,就得出0
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
一、键盘:

1、设立两个位变量和两个8位变量。两个位变量分别是:KEYUP、KEYDOWN,两个8位变量分别是KEYBUF和KEYSTATE。初始化时KEYBUF=0xFF,KEYSTATE=KEYBUF。

2、MCU的所有按键输入端均串接上拉电阻到VCC(1兆欧姆)。

3、键盘扫描方法:给键盘某行(或某列)端口输出低电平,测试键盘对应的列(或行)端口输入信息,根据测试所得结果,设定KEYBUF对应的位。输入为“1”时,置位KEYBUF对应位,否则清除KEYBUF对应位。依次循环,直至扫描完所有键盘输入端口信号,构件完整的KEYBUF。

4、安排在主程序里进行击键分析(以下流程只是个例子,并且假定“没有组合键”):
if(KEYBUF=0xFF)
{
if(KEYSTATE=0xFF)
{KEYDWON=0,KEYUP=0}
else
{KEYDOWN=0,KEYUP=1;具体按键分解过程;/*从略*/}
}
else
{KEYDOWN=1,KEYUP=0;具体按键分解过程;/*从略*/}
KEYSTATE=KEYBUF;

二、ADC:

1、ADC12“满刻度”值为4095,共4096个分度值(包括0)。

2、用1.5V参考电压时,ADC12输入当量为1.5V/4095=0.366mV。当被测输入信号为1.5V时,ADC12转换值为满刻度,即4095。

3、用2.5V参考电压时,ADC12输入当量为2.5V/4095=0.611mV。当被测输入信号为1.5V时,ADC12转换值为(1.5/2.5)*4095=2457。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢baisix和mmtcyq!但是关于AD还是不太明白,比如我V+选2.5V, V- 选0V,所测量的电压为1.5V,那我又怎么将ADC12MEM0中的2457这个数值转换为它对应的电压值(二进制或十进制,用于显示)呢? 难道是将它乘以0.661?理论上这可得出正确的值,可是我用汇编写的,要做一个小数的乘法好像不简单啊,而且我感觉应该是有其他方法的,可能我想歪了
请各位指导一下,帮帮忙哈~ *_*
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
很好做的,如果是12位的,那么最大刻度是4096,你只要把电压分成4096个刻度,这个值是定死的,只要你的参考电压不变,周围的环境温度的干扰不是很大的话,这个刻度值是定的,只要将这个刻度值(实际就是单位AD值对应的电压值)乘上AD值就可以了。
关于小数乘法其实也很容易实现,参考电压值乘上AD值,再右移12位就可以了,不过这个操作会导致溢出,你需要对溢出进行相应处理。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

6
 
用C语言写啊,再用IAR,很省心的
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
楼上说的没错,如果是用449开发,就用C好了,这么大的flash^_^
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

8
 
对奥 除以4096就是右移12位
呵呵 谢谢以上各位
这是我的毕设题目,我以前学过一点51,是用汇编写的,而430我是刚刚接触,所以我想用汇编可能容易上手一些,上次我老师也说用C语言写简单些,所以我现在想先用汇编写完,再改成C,呵呵,有大家的帮助,祝自己早日完成,也祝楼上各位好人天天好心情哦!
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

9
 
唉,写汇编,牛啊,不过写汇编可以练习逻辑,哈哈
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

10
 
430的汇编我个人认为没有什么学习的必要啊
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表