- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
msp430报告
基于MSP430单片机的计算器设计
课程设计实验报告
课 题: 基于MSP430单片机的计算器设计
班 级: 电信0804班
报 告 人: 高思宇
学 号: U200812909
指导老师: 徐永建
课设评价:
课设成绩:
摘要
本设计采用一片MSP430单片机作为系统的输入、计算、显示和控制的核心。由键盘输入实现加、减、乘、除、清零等功能,经过单片机运算,将结果显示在LCD上。
一、方案设计
1、系统组成
本系统由单片机控制模块、键盘输入模块、LCD显示模块三个基本模块组成。由各个模块组成的系统框图如下:
2、各模块方案选择
(1)单片机控制模块
单片机是整个系统中最主要的控制和运算模块,它就像是指挥中心指挥调度其他的2个模块。采用MSP430单片机是因为它具有低功耗、速度快、集成度高的特点,并且抗干扰性强、保密性好、价格合理。
(2)键盘输入模块
键盘输入模块是系统中的数据信息来源,将键值输入到单片机中进行处理。
方案一:中断式
在键盘按下时产生一个外部中断通知CPU,并由中断处理程序通过不同位址读取资料线上的状态来判断哪个按键被按下。
方案二:反转式
先将所有行扫描线输出低电位,读取列值。若列值有一位是低,则表明该行与低电位对应的列按键被按下,接着所有列扫描线输出低电位,再读行值。根据读到的值的组合就可以查表得到键码。
方案三:扫描式
对键盘上每一行送低电位,其他为高电位,然后读取列值。若列值中有一位是低,表明该行与低电位对应列的按键被按下,否则扫描下一行。
结合实际程序需要,这里选择方案三。
(3)LCD显示模块
显示是最终运算式和结果输出模块,也是最直接显示本系统功能的模块。
采用6位LCD显示。此方案体积小,易于实现,成本低。
二、硬件设计
1、单片机控制模块
本设计采用实验室所提供的T33号MSP430单片机。
2、键盘输入模块
本系统中采用的是4*4的键盘,其中每一列均通过10K的上拉电阻接至电源端。外接上拉电阻可以起到保护作用,以及使得键盘取值更加稳定,不易出错。
3、LCD显示模块
本系统中采用LCD显示6个字符,通过软件编程,使其显示输入数值与运算结果。
三、软件设计
1、基本功能
(1)能够实现加、减、乘、除等运算功能
(2)将数值定义为实整型,计算范围为6位
(3)具有清零功能
2、软件代码
#include msp430x44x.hchar speed=1;char key_val;char yunsuanfu ;char fuhao=1;unsigned char key_Map[12]={1,2,3,10,4,5,6,0,7,8,9,11};#define LED_IN_USE 6/*****************************************************//*??? 数据定义???????????????????????????????????????? *//*****************************************************/const unsigned char NUM_LED[20]=??????????????????????? {0xd7,0x14,0xcd,0x5d,0x1E,?? // 0 ~ 4??????????????????????? 0x5b,0xdb,0x15,0xdf,0x5f,??? // 5 ~ 9??????????????????????? 0x9f,0xda,0xc3,0xdc,0xcb,??? // a ~ e??????????????????????? 0x8b,0x00,0x40,0x8};????????????????? //f,0x00使LED不显示
unsigned char led_Buf[LED_IN_USE];?? // LED显示缓冲区 ,???????????????????????????????????? // 存放要显示数据unsigned char led_Ctrl;/********************************************************????? 模块初始化*******************************************************/void init_LED(void){???? char tmpv;???? P3DIR?? = 0xff;???? // 设置 p3 输出???? P3OUT?? = 0x00;????
文档评论(0)