msp430简易计算器

msp430简易计算器
msp430简易计算器

/**************************************************************

程序功能:实现六位数的加,减,乘,除和数的n次方,键盘K0~K9的键值

为0~9,K12~K15分别为+,—,*和/,K10为=,K11为上次输入数的n方。

***************************************************************/

#include

#include

#define uint unsigned int

#define uchar unsigned char

const uchar segment[19]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,

0xb7,0xc8,0x8f,0xbf,0x89,0xb9,0xff,0x86,0x88};

uchar static key_flag;

uchar static key1;

uchar A[6]={0,0,0,0,0,0}; //第一次输入的各位数

uchar B[6]={0,0,0,0,0,0}; //第二次输入的各位数

uchar F[8]={0,0,0,0,0,0,16,16}; //存放显示的数

long int c=0; //第一次输入的数值

long int d=0; //第二次输入的数值

int e=0; //存放符号位

long int g;

/****************键盘初始化函数****************/

void int_I_O(void) //扫描键盘p1口及数码管p2,p4,p5口的板上资源初始化(数码管共阳极){

P1DIR |=BIT0+BIT1+BIT2+BIT3; // p1.0至p1.3为输出(p1.0至p1.3为键盘的行)

P1OUT &=0x00; //p1输出初始化全为0

P5DIR |=BIT7; //p5.7输出

P5OUT &=~BIT7; //使能UC573SJ芯片,p5.7为锁存器使能端,低电平有效

P2DIR |=0XFF; //p2口与阴极接口端有连接,控制p2口能获得想要的显示

P4DIR |=0XFF; //p4口与数码管控制端有连接,p4端能控制数码管的熄灭或开启

}

/****************系统时钟初始化函数****************/

void int_clk() //时钟设置为smclk=mclk=xt2clk

{

uchar i;

BCSCTL1&=~XT2OFF; //xt2off=0,打开高频晶振

BCSCTL2|=SELM1+SELS;//设置smclk=mclk,并使用高频晶振

do

{

IFG1&=~OFIFG;

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

_NOP();

}

while((IFG1&OFIFG)!=0);//直至OFIFG标志位清为0

IFG1&=~OFIFG;

}

/****************timerA初始化函数****************/

void int_timer() //smclk为时钟来源,8分频,1MHz,增加模式,10ms来一个中断{

TACTL|=TASSEL1+TACLR+ID0+ID1;//smclk为时钟来源,8分频,1MHz

TACTL|=MC0+TAIE; //增加模式,并且使能中断

TACCR0=9999; //10ms来一个中断

}

/****************检测键盘有无输入函数****************/

void fast_scan() //检测键盘有无输入,没输入key_flag=0,有输入key_flag=1

{

uchar temp;

P1OUT &=0xf0; //p1口低四位清0,高四位不变,

temp=P1OUT&0xf0; //p1口为oxf0,没输入,否则有输入

if(temp==0xf0)key_flag=0; //没输入key_flag=0,有输入key_flag=1

else

{

key_flag=1;

}

}

/****************行扫描读列值函数****************/

uchar scan_key(uchar line) //表示每行扫描一次,判断一下列值

{

uchar key;

P1OUT=line; //接受扫描行,用p1第四位控制,就是其中1位为低位,剩余3位为高位switch(P1IN&0xf0) //p1高四位输入判断第几列,如第一列0111

{

case 0x70:key=0x01;break; //第一列0x01表示,列为从左往右数

case 0xb0:key=0x02;break; //第二列0x02表示

case 0xd0:key=0x03;break; //第三列0x03表示

case 0xe0:key=0x04;break; //第四列0x04表示

default:key=0xff;break;

}

return(key); //返回列键值

}

/****************获取键盘数值函数****************/

uchar get_key() //对行扫描,读列值的方法获取键盘数值

{

uchar key;

while(1) //一直扫描,直到扫描完为止

{ key=scan_key(0x7); //第一行的扫描,从下往上为第一行,将0111给p1的低4位

if(key!=0xff){key|=0x10;P1OUT=0x0f;break;} //第一行用0x10

key=scan_key(0xb); //第二行的扫描,将1011给p1的低4位

if(key!=0xff){key|=0x20;P1OUT=0x0f;break;} //第二行用0x20

key=scan_key(0xd); //第三行的扫描,将1101给p1的低4位

MSP430单片机外围晶振设计选型及参考方案

MSP430单片机外围晶振设计选型及参考方案MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低MSP430单片机。它的功耗小、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片机”解决方案。 该系列单片机多应用于需要电池供电的便携式仪器仪表中。本文主要讲解MSP430系列芯片外围晶振设计选型及注意事项等。 ---MSP430F149 MSP430系列芯片一般外搭两颗晶振:一颗主频晶振,通常在4~16Mhz中选择;另外一颗时钟晶振,即32.768Khz晶振,早期选用直插封装的,现在大部分采用贴片封装的产品,其一便于贴装,其二追求产品的稳定性和品质的可靠性等。

---应用电路 ---MSP430开发板 一、主频晶振的选择 通常MSP430芯片的主频晶振一般选择4Mhz的整数倍,即

4Mhz、8Mhz、16Mhz、32Mhz等。早期电路设计的时候一般选择成本较低的49S封装产品,现阶段越来越倾向于稳定性更好、体积更小、便于贴装的贴片3225封装产品,上海唐辉电子代理的日本KDS大真空公司推出的DSX321G和DSX320G\DSX320GE产品。 1、工业级、消费类产品用DSX321G8Mhz,如下图: 该型号产品封装为3.2mm*2.5mm,体积不到传统直插型49S封装的1/5,精度可达到20PPM,工作温度达到-40—+85°C的工业级,完全能够满足客户的要求。

GUI设计的简易计算器附程序

电子信息工程系实验报告 课程名称:MATLAB 应用 实验项目名称:GUI 计算器设计 实验时间:2012-11-22班级:测控081姓名:学号:810707132实验目的: 1.熟悉MATLAB 的菜单设计方法 2.熟悉MATLAB 的主要控件使用方法 3.熟悉MATLAB 的GUI 设计流程 4.运用MATLAB 的GUI 设计一个简单的计算器 实验环境: MATLAB7.8 实验内容: function varargout =jisuanqi1(varargin)%JISUANQI1M-file for jisuanqi1.fig %JISUANQI1,by itself,creates a new JISUANQI1or raises the existing %singleton*.%%H =JISUANQI1returns the handle to a new JISUANQI1or the handle to %the existing singleton*.%%JISUANQI1('CALLBACK',hObject,eventData,handles,...)calls the local %function named CALLBACK in JISUANQI1.M with the given input arguments.%%JISUANQI1('Property','Value',...)creates a new JISUANQI1or raises the %existing singleton*.Starting from the left,property value pairs are %applied to the GUI before jisuanqi1_OpeningFunction gets called.An %unrecognized property name or invalid value makes property application %stop.All inputs are passed to jisuanqi1_OpeningFcn via varargin.%%*See GUI Options on GUIDE's Tools menu.Choose "GUI allows only one %instance to run (singleton)".%%See also:GUIDE,GUIDATA,GUIHANDLES %Edit the above text to modify the response to help jisuanqi1 %Last Modified by GUIDE v2.505-Dec-201022:24:59 %Begin initialization code -DO NOT EDIT gui_Singleton =1;成 绩: 指导教师(签名):

C语言程序设计之简单计算器

攀枝花学院 学生课程设计(论文) 题目:简易计算器 学生姓名:葛肪瑜学号:201010801018 所在院(系):计算机学院 专业:计算机科学与技术 班级:10计本(1)班 指导教师:陈三清职称:讲师 2011年6月25日 攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书 题目计算器的设计 1、课程设计的目的 本课程设计的目的和任务:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。 2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等) 一、用C实现如下功能: 使用C语言编写一个类似于Windows附件提供的计算器软件,实现计算器的基本功能,能进行浮点数的加、减、乘、除、乘方和求模运算。 二、撰写课程设计报告或课程设计总结课程设计报告要求:总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。 3、主要参考文献 [1] 潭浩强,《C程序设计》,清华大学出版社 [2] 王声决,《C语言程序设计》,中国铁道出版社 [3] 潭浩强,《C程序设计题解与上机指导》,清华大学出版社 [4] 刘玲等,《C语言程序设计应用教程》,西南师范大学出版社 4、课程设计工作进度计划 第1天完成方案设计与程序框图 第2、3天编写程序代码 第4天程序调试分析和结果 第5天课程设计报告和总结 指导教师(签字)日期年月日 教研室意见: 年月日 学生(签字): 接受任务时间:年月日注:任务书由指导教师填写。

简易计算器设计-msp430-C语言

简易计算器

目录 摘要…………………………………………………………………………………P3 关键字………………………………………………………………………………P3 一、设计要求………………………………………………………………………P3 二、方案论证与选择………………………………………………………………P3 2.1 单片机选择………………………………………………………………P3 2.2 LCD显示屏选择…………………………………………………………P3 2.3 键盘选择…………………………………………………………………P4 2.4 CPU工作方式选择………………………………………………………P4 三、系统实现………………………………………………………………………P4 3.1 硬件设计…………………………………………………………………P4 3.1.1系统框图……………………………………………………………P4 3.1.2 盘的电平设计以及与单片机的连接 键……………………………P5 3.2.3单片机与显示器的连接…………………………………………… P5 3.2软件设计…………………………………………………………………… P6 四、作品性能测试与分析…………………………………………………………P10 4.1试性能概览………………………………………………………………P10 4.2误差分析…………………………………………………………………P12

五、参考文献………………………………………………………………………P12 六、附录……………………………………………………………………………P13 6.1计算器功能介绍…………………………………………………………P13 6.2仿真电路图………………………………………………………………P13 6.3元件清单…………………………………………………………………P13 6.4原程序代码………………………………………………………………P14 摘要:本设计以低功耗单片机MSP430V136T、1602字符型液晶屏和4*4简易键盘为主要器件,来实现加、减、乘、除、开根号、平方、求倒数等运算。设计中分别采用P1口低4位和P2口低4位与键盘的行列线相连,用于采集中断信号并分析键值;键盘规格为4*4,由于所需的功能键数大于16,因此需要进行按键复用;单片机的P3口连接显示器的D0~D7端,用于输出显示数据或控制命令;选用P4口中的3、4和5口用于实现显示屏的控制功能:使能、控制/数

衡星MSP430F5529大作业报告

中国地质大学(北京)本科课程报告《电子电路设计与实践》 学生姓名衡星 院(系)地球物理与信息技术学院 专业测控技术与仪器 学号1010152213 2018 年3 月19 日 中国地质大学(北京)

第一章程序框图 说明: (1)“文字说明”的具体内容为:“当前A0~A7循环采集,串口发送a/b/c/d实现PWM 转换。按键P2.1通道转换,按键P1.1实现A0~A7通道循环采集。” (2)占空比不同的PWM波由P3.6通道输出。 (3)按键P2.1按x下后,“Ax通道循环采集并显示”,其中x取值1~8。当x>8时,x=x%8。 (4)所有显示均在串口助手窗口显示,串口波特率设置为115200。

课堂程序编写过程: 3月6日(周二):王猛老师在课堂上讲解大作业要求。 3月8日(周四):分发MSP430F5529单片机,并学习GPIO相关程序编写。 3月10日(周六):学习定时计数器、时钟功能,并完成“呼吸灯”和“时钟分频”等课堂函数编写。 3月15日(周四):学习中断、串口和ADC采集功能,完成“中断服务”等课堂函数编写。 3月17日(周六):完成“串口显示”和“测温环节”等课堂函数编写。 大作业程序编写过程: 3月17日(周六)15:00~16:00:仔细阅读《MSP单片机-验收标准》和相关PPT,确定整个程序的功能框图。 3月17日(周六)16:00~18:00:通过串口中断函数完成PWM波形输出与串口指令的连接功能,并通过串口调试助手验证了程序的准确性。 3月18日(周日)9:00~11:00:通过按键中断函数完成ADC八路循环采集和单路选择采集的切换功能,并通过串口中断函数将采集的数据输出,在串口调试助手页面进行了验证。 3月18日(周日)14:00~15:00:通过按键中断添加LED1与LED2的闪烁功能,为整个实验程序增添创意。 3月18日(周日)15:30~16:00:与钮学长就《MSP单片机验收标准》交换了意见。 3月18日(周日)19:00~21:00:完成《电子电路设计与实践》课程报告程序框图。 3月19日(周一)19:00~21:00:检查大作业程序,完成《电子电路设计与实践》课程报告。

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

简单计算器的设计与实现

C/C++程序设计课程设计设计说明书 简单计算器的设计与实现 学生姓名 学号 班级 成绩 指导老师 计算机科学与技术系 2010年11月22日

C/C++程序设计课程设计评阅书

课程设计任务书 2010—2011学年第一学期 专业:计算机科学与技术学号:姓名: 课程设计名称: C/C++程序设计课程设计 设计题目:简单计算器的设计与实现 完成期限:自2010 年 11月 15 日至 2010 年 11 月 26 日共2 周 设计内容及要求: 要求用C/C++语言设计一个简易的计算器程序,对输入的数据进行加、减、乘、除、开平方等操作。 设计要求及功能如下: 1.阐述设计思想,画出流程图; 2.实现功能: (1)对输入的数据进行加法运算; (2)对输入的数据进行减法运算; (3)对输入的数据进行乘法运算; (4)对输入的数据进行除法运算; (5)对输入的数据进行开平方根运算。 最终设计成果形式为: 1.编写好的程序; 2.撰写课程设计说明书一份,打印并装订成册。 指导教师(签字):教研室主任(签字): 批准日期:年月日

摘要 设计了一个简单的计算器程序,该计算器具有简单的四则混合运算以及复杂的数学表达式的功能。该计算器采用VC++作为软件开发环境,采用算数表达式处理算法来实现加、减。乘、除四则混合运算。操作简单,界面清晰,易于用户使用,容易被他们所接受的。 关键词:计算器;VC++;数学表达式

目录 1课题描述 (1) 2问题分析和任务制定 (2) 3详细设计 (3) 3.1头文件设计 (3) 3.2简单计算器的设计与实现函数设计 (3) 4 程序调试与测试 (8) 4.1主界面测试 (8) 4.2基本功能的测试 (8) 5结果分析 (12) 总结 (13) 参考文献 (14)

MSP430单片机大作业 彩灯电子琴

彩灯电子琴 MSP430 May 27 2010 在MSP430单片机的大地上,上亿条数据急流在宽度仅几个原子的河道中以光速湍急地流着,它们在无数个点上会聚,分支,交错,生成更多的急流,在芯片大地上形成了一个无边无际的复杂蛛网。到处都是纷飞的数据碎片,到处是如箭矢般穿行的地址码;一个主控程序在漂行着,挥舞着无数支纤细的透明触手,把几千万个 飞快旋转着的循环程序段扔到咆哮的数据大洋中;在一个存贮器的一片死寂的电路沙漠中,一个微小的奇数突然爆炸,升起一团巨大的电脉冲的蘑菇云;一行孤独的程序代码闪电般地穿过一阵数据暴雨中,去寻找一滴颜色稍微深一些的雨点。这又是一个惊人有序的世界,浑浊的数据洪流冲过一排细细的索引栅栏后,顷刻变成一片清澈见底的平静的大湖;当排序模块像幽灵似地飘进一场数据大雪时,所有的雪花在千分之一秒内突然按形状排成了无限长的一串……在这0和1组成的台风暴雨和巨浪中,只要有一个水分子的状态错了,只要有一个0被错为1或1被错为0,整个世界就有可能崩溃。这是一个庞大的帝国,在我们眨一下眼的时候,这个帝国已经历了上百个朝代,但从外面看去,它只是一个银色立方箱体。 曹哲0710200310 同组人: 郭宁张颖

目录 1 引言 (1) 2 系统总体设计 (2) 2.2系统各组成部分及功能原理介绍 (2) 2.3系统结构框图 (2) 3 系统硬件设计 (3) 3.1电源模块 (3) 3.2键盘模块 (3) 3.3LED显示模块 (4) 3.4发声模块 (4) 4 系统软件设计 (4) 4.1系统软件结构流程图 (4) 4.2键盘扫描程序设计 (4) 4.3发声程序设计 (7) 4.4亮灯程序设计 (7) 5 系统调试与结果分析 (8) 5.1系统调试步骤 (8) 5.2遇到的问题及解决方案 (8) 5.3实验结果及系统展望 (9) 6 心得体会 (9) 参考文献 (10)

基于单片机的简易计算器设计

目录 引言 (1) 第一章设计原理及要求 (2) 1.1设计方案的确定 (2) 1.2系统的设计方案 (2) 1.3系统的设计要求 (2) 第二章硬件模块设计 (4) 2.1单片机AT89C51 (4) 2.1.1 AT89C51芯片的特点 (5) 2.1.2 管脚说明 (5) 2.1.3 振荡器特性 (7) 2.1.4 芯片擦除 (7) 2.2键盘控制模块 (7) 2.2.1 矩阵键盘的工作原理 (8) 2.2.2 键盘电路主要器件介绍 (8) 2.3LCD显示模块 (10) 2.3.1 显示电路 (11) 2.3.2 LCD1602主要技术参数 (11) 2.3.3 引脚功能说明 (11) 2.4运算模块(单片机控制) (12) 第三章软件设计 (14) 3.1功能介绍 (14) 3.2系统流程图 (14) 3.3程序 (16) 第四章系统调试 (17) 4.1软件介绍 (17) 4.1.1 Keil uVision2仿真软件简介 (17) 4.1.2 protues简介 (17)

4.2软件调试 (18) 4.2.1 软件分析及常见故障 (18) 4.2.2 仿真结果演示 (20) 4.3硬件调试 (21) 结束语 (23) 参考文献 (24) 附录 (25) 致谢 (36)

引言 计算工具最早诞生于中国,中国古代最早采用的一种计算工具叫筹策,也被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的,约二百七十枚一束,放在布袋里可随身携带。另外直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。 17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加、减、乘、除、乘方和开方运算,甚至可以计算三角函数、指数函数和对数函数。这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是它只能做加减运算。1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。此后,一直到20世纪50年代末才有电子计算器的出现。

简单计算器c++课程设计讲解

简单计算器 1 基本功能描述 简单计算器包括双目运算符和单目运算符。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦、阶乘、对数、开方、倒数等运算。可对输入任意操作数包含小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出提示,同时包含清除、退格、退出功能以及有与所有按钮相对应的菜单项。 2 设计思路 如图1,是输入数据子函数的流程图。打开计算器程序,输入数据,判断此次输入之前是否有数字输入,如果有,则在之前输入的数字字符后加上现有的数字字符;如果没有,则直接使编辑框显示所输入的数字字符。判断是否继续键入数字,如果是,则继续进行前面的判断,如果否,则用UpdateData(FALSE)刷新显示。 如图2,是整个计算器的流程图。对于输入的算式,判断运算符是双目运算符还是单目运算符。如果是双目运算符,则把操作数存入数组a[z+2]中,把运算符存入b[z+1]中;如果是单目运算符,则把字符串转化为可计算的数字,再进行计算。下面判断运算符是否合法,如果合法,则将结果存入a[0],不合法,则弹出对话框,提示错误。结束程序。

输入一个数字 在之前输入的数字字符后面加上现在的数字字符。 Eg :m_str+=”9”。 直接使编辑框显示所输入的数字字符。 Eg :m_str=”9”。 pass3=1表示已有数字输入 开始 之前是否有数字输入? pass3==1? 继续键入数字? 用UpdateData(FALSE)刷新显示 图1 输入数据子函数流程图 Y N Y N

输入开始 双目运算符 是否每一个操作数都存入a[]数组? 把操作数存入a[z+2],把运算符存入b[z+1]。 单目运算符 将字符串转换 为可计算的数进行运算 运算是否合法? 将结果存入a[0] 弹出对话框提示错误 结束Y Y N N 图2 简单计算器总流程图

北京邮电大学课设 基于MSP430的简单信号发生器的设计

基于MSP430的信号发生器 设计报告 学院:电子工程学院 班级:2013211212 组员:唐卓浩(2012211069) 王旭东(2013211134) 李务雨(2013211138) 指导老师:尹露

一、摘要 信号发生器是电子实验室的基本设备之一,目前各类学校广泛使用的是标准产品,虽然功能齐全、性能指标较高,但是价格较贵,且许多功能用不上。本设计介绍一款基于MSP430G2553 单片机的信号发生器。该信号发生器虽然功能及性能指标赶不上标准信号发生器,但能满足一般的实验要求,且结构简单,成本较低。本次需要完成的任务是以MSP430 LaunchPad 的单片机为控制核心、DAC 模块作为转换与按键电路作为输入构成的一种电子产品。MSP430 LaunchPad 单片机为控制核心,能实时的进行控制;按键输入调整输出状态,DAC0832将单片机输出的数字信号转化为模拟量,经运放放大后,在示波器上输出。在本次程序设计中充分利用了单片机内部资源,涉及到了中断系统、函数调用等。 关键字:信号发生器 MSP430单片机数模转换 二、设计要求 以msp430单片机为核心,通过一个DA (数字模拟)转换芯片,将单片机输出的方波、三角波、正弦波(数字信号)转换为模拟信号输出。提供芯片:msp430G2553、DAC0832、REF102、LM384、OP07。参考框图如下: Lauchpad MSP430 电位器 按键1 DA 转换DAC0832 放大输出LM384 按键N 按键2 AD …… 图1 硬件功能框图 1、基本要求 (1) 供电电压 VDD= 5V~12V ;(√) (2) 信号频率:5~500Hz(可调);(√) (3) 输出信号电压可调范围:≥0.5*VDD ,直流偏移可调:≥0.5*VDD ;(√) (4) 完成输出信号切换;(√) (5) 方波占空比:平滑可调20%~80%;(√) (6) 通带内正弦波峰峰值稳定度误差:≤±10%(负载1K )。(√)

51单片机的简单计算器设计和仿真

基于单片机的简易计算器设计与仿真

设计题目:基于单片机的简易计算器设计与仿真 一、设计实验条件: 地点:自动化系实验室 实验设备:PC机(装有Keil;Protues;Word ;Visio ) 二、设计任务: 本系统选用AT89C51单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下: (1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。 (2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示围时,计算器会在LCD上提示overflow;当除数为0时,计算器会在LCD上提示error。 设计要求:分别对键盘输入检测模块;LCD显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真 分析其设计结果。 三、设计时间与设计时间安排:

1、设计时间:6月27日~7月8日 2、设计时间安排: 熟悉课题、收集资料:3天(6月27日~6月29日) 具体设计(含上机实验):6天(6月30日~7月5日) 编写课程设计说明书:2天(7月6日~7月7日) 答辩:1天(7月8日) 四、设计说明书的容: 1、前言:(自己写,组员之间不能相同,写完后将红字删除,排版时注意对齐) 本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在LCD上显示相应的结果;设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真。 2、设计题目与设计任务: 现实生活中人们熟知的计算器,其功能主要如下:(1)键盘输入;(2)数值显示;(3)加、减、乘、除四则运算;(4)对错误的控制及提示。 针对上述功能,计算器软件程序要完成以下模块的设计:(1)键盘输入检测模块;(2)LCD显示模块;(3)算术运算模块;(4)错误处理及提示模块。 3、主体设计部分: (1)、系统模块图:

单片机设计简易计算器

简易计算器 Simply Calculator 1 设计思想 此计算器有键盘部分、单片机、显示部分三部分组成,键盘部分主要完成输入功能;单片机主要完成数据处理功能,包括确定按键,完成运算,以及输出数据;显示器部分主要完成单片机输出的显示。 本设计的思路是利用单片机性能好,稳定性强的优点来实现系统的运行。设计大致可以分为三个步骤:第一步,硬件的选取和设计;第二步,程序的设计和调试;第三步,Protues 系统仿真。 硬件是设计的骨骼,不仅关系到设计总体方向的确定,还要综合考虑节能,环保,以及稳定性和经济性等各种因素。因此需要花费大量的时间。硬件的选取最为重要,包括选用的芯片,显示设备的选取,输入设备的选取等。本设计是通过单片机来实现的,因此选用了ATMEGA16单片机作为主体,输入设备选用矩阵键盘。程序是硬件的灵魂,是实现设计的中心环节。本设计使用的程序语言是C语言,在“ICC AVR”中运行,调试,直到运行出正确结果,然后输出后缀名为.HEX格式的文件,以备在Protues中仿真使用。程序是设计的关键,程序的调试需要大量的时间,耐心,还够要有足的细心才能成功。本设计中就出现了大量的错误,经过认真修改,最终才能运行出正确结果。最后的系统仿真是设计是否成功的验证,是设计不可缺少的重要环节。这就要求能掌握Protues的一些基本操作。2原理分析 2.1矩阵键盘的扫描 图2.1 矩阵键盘图

如图2.1所示,单片机的8个I/O口和矩阵键盘相连,用8个I/O口来控制矩阵键盘的16个按键是非常有意思的,首先我们设置单片机的PD0—PD7为输出,且PD0—PD3依次设置为低电平,而PD4—PD7设置为高电平,然后我们设置PD4—PD7为输入,而PD0—PD3仍然为输出,假如此时M1键按下,则PD0与PD4相连,因为PD0是低电平,而PD4是输入,所以PD4会被拉为低电平,同理,如果M2被按下,则PD5会被拉低,M3按下,PD6会被拉低,M4按下,PD7被拉低。这是判断有无键盘按下的过程,当我们判断是那一个键盘按下时,我们首先设置8个I/O口为输出,输出为FE,即,PD0为低电平,其他全为高电平,然后我们设置PD4—PD7为输入,如果M1被按下,则PD4会比被拉为低电平,此时会变成EE,同理可以知道M2被按下时会变为DE,M3被按下时会变为BE,M4被按下时会变为7E。同理我们可以设置8个I/O口输出FD来检测M5—M8是否被按下,设置8个I/O口输出FC来来检测M9—M12,设置8个I/O口输出F7来检测M13—M16,如果M1—M4没有被按下,就继续检测M4—M8,一次类推,就可以检测出16个按键了。在这次设计中,16个按键M1—M16所对应检测值分别为:EE,DE,BE,7E,ED,DD,BD,7D,EB,DB,BB,7B,E7,D7,B7,77。 2.2 数字显示与计算 本次设计选用的显示器是1602液晶显示器,此液晶显示器能显示32个字符,VSS接地,VDD接电源正极,E为时使能信号,R/W为读写选择端(H/L),RS为数据/命令选择端(H/L),D0—D7为数据I/O口。 首先我们初始化液晶显示器,然后显示出第一个被按下的数,并且使光标右移,如果有第二个数按下,则据继续显示,以此类推,然后把所有显示出来的数换算成一个数,如果按下“+”号,则显示出“+”,并且同理显示出“+”号后面按下的数字,然后调用加子程序,运算出结果,如果按下的是“-”,则调用减子程序,如果按下“*”,则调用乘子程序,如果按下“/”,则调用除子程序。然后再调用显示结果子程序,显示出结果。

(完整word版)C语言简易计算器课程设计.doc

C语言课程设计报告书题目:简易计算器 院系: 班级: 学号: 姓名:

摘要 该软件为用户提供在windows 系统上的简易计算器,能进行简单的加、减、 乘、除四则运算与混合运算。目的是为了巩固和加深 C 语言课程的基本知识的理 解和掌握,利用 C语言进行基本的软件设计,掌握 C 语言的编程和程序调试 的基本技能,掌握书写程序设计说明文档的能力,提高运用 C 语言解决实际问 题的能力。 关键词: C; 简易计算器 ; 程序 ; 基本算法;混合运算 SUMMARY the software provides a simple calculator in Windows system for users ,can be a simple add,subtract,multiply,divide.The purpose is to consolidate and deepen the basic knowledge of C language courses to understand and master, The use of C language for software design basic, To master the basic skills of C language programming and program debugging, Master the writing program design documentation ability,improve the ability to use C language to solve practical problems.

基于MSP430的电子密码锁设计

基于MSP430的电子密码锁设计 一、预期性能指标 1、(1)密码通过键盘输入,若密码正确,则将锁打开。 (2)报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示, 若密码输入错误次数超过 3 次,LED红灯亮并且锁定键盘。 2、密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能: (1)密码输入功能:按下一个数字键,一个“-”就显示在最右边的数 码管上,再输入时显示数码管向右移动一个。 (2)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除 所有显示。 (3)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果 正确锁打开,否则不打开。 二、工作原理 1、工作原理概述 利用MSP430单片机灵活的编程设计和丰富的I/O端口,及其控制的准确 性,实现基本的密码锁功能。此次课程设计是以以前学过的msp430F149 单片机为核心,加上一些外围模块来实现电子锁应该具有的基本功能。单片机灵活的编程设计和丰富的IO 端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能,为其功能的扩展提供便利。由于条件的限制此次实验只实现其基本功能,锁的开启关闭与锁定以二极管的发光来模拟,密码的输入用4X4 键盘替 代,功能键用键盘上对应的10 以后的数字代替,这实现了在条件有所限制的情况下以有限的资源模拟电子锁的功能。输入密码用矩形键盘,包括数字键和功能键。 LED 数码管显示输入密码,用uln2003A 驱动数码管发光且控制哪一位显示数码,用430 的P4 脚控制各位显示器分时进行显示。用发光二极管代

替开锁的电路,发光表示开锁锁定。输入密码错误次数超过3 次,系统 蜂鸣器响,发出警报。打开电源后,显示器显示“0000”,设原始密码为 “1234”,只要输入此密码便了开门。这样可预防停电后再来电时无密码 可用。按“C”键,清除显示器为“000000”。欲重新设定密码,先输入密码在案“*”。输入密码,再按“D”键。若密码与设定密码相同,则开门。 否则显示器清为“0000”。 软件的设计主要包括键盘键值的读取,LED 显示程序,密码比较程序和报警程序 2、设计方案与原理框图 (1)主要的设计实施过程: 第一步,选用 msp430单片机,以及选购其他电子元器件(电阻(100欧、150欧、2K欧等)、发光二极管、三极管、数码管(阴极)、ULN2003AG 芯片、按键、电线、PADS9.3软件、MATLEB软件、焊接电路板一 块)。 第二步,使用PADS9.3软件设计硬件电路原理图,并设计 PCB图完成人工布线。 第三步,焊接电路 第四步,MATLEB软件编写单片机的 C 语言程序、仿真、软件调试。 第五步,联合软、硬件调试电路板,完成本次设计。 (2)原理框图: 3、原理框图的说明

简易计算器的设计

一、功能实现:利用1602液晶显示器实现整数和小数的加法、减法、乘法、除法、开根号的运算。第一行显示输入的数据,第二行显示运算结果。 二、Proteus仿真图

三、操作说明:每次运算完后必须按一下清零键,该系统才会重新开始执行。 四、程序: #include #include #define int unsigned int #define char unsigned char void inti(); //初始化

void delay(); //延时 void anjian(); //按键显示数字和符号,第一个数存在a内 void sheji(); //设计显示完后的参数 void jsab(); //存储两个输入数 void jisuanxs(); //计算显示 void chufa(); //除法计算部分 void chengfa(); //乘法计算部分 void jianfa(); //减法计算部分 void jiafa(); //加法计算部分 void kaigenhao(); //开根号运算部分 void benshenxs(); //一个数本事显示 void leijixiaoshudian(); //小数点的累计 void fenli(); //计算后的结果分离,以便于显示 void ql(); //清屏 void xshuju(char shuju); //写数据 void xzhiling(char zhiling); //写指令 //char num[]="I LOVE YOU"; 显示在屏幕上 int sz[]={'0','1','2','3','4','5','6','7','8','9','+','-','*','/','=','.'}; char xs[]="ENRRO"; sbit e=P2^2; sbit rs=P2^0; sbit rw=P2^1; sbit key0=P2^6; sbit key1=P2^7; sbit key2=P3^0; sbit key3=P3^1; sbit key4=P3^2; sbit key5=P3^3; sbit key6=P3^4; sbit key7=P3^5; sbit key8=P3^6; sbit key9=P3^7; sbit key10=P1^3; sbit key11=P1^4; sbit key12=P1^5; sbit key13=P1^6; sbit key14=P1^7; sbit qingling=P1^0; sbit key15=P1^1; sbit key16=P1^2; int fuhao,num,m,n,q,w,s,fuhao1,fuhao2,fuhao3,fuhao4,fuhao5,xiaoshu,cishu1,cishu2; int i,g,j,p; int t,f,h; float a,b,c,d;

简单计算器编程

计算器程序 包括4个数字按钮,1个小数点按钮,+-*/= 5个计算按钮 不接受键盘输入 计算规则:当前正在输入的数存储到字符串变量 用户输入操作符,存储已经输入的数,作为第一个数,存储操作符 用户输入第二个数 用户输入操作符,与第一个数计算,并存储为第一个数,存储操作符 小数点只能输入一次 1 创建基于对话框的程序 2 打开对话框模板,增加控件: 编辑框1个 按钮4个,文字1-4 按钮1个,文字:小数点 按钮5个,文字:+ - * / = 按钮1个,文字:关闭 3 打开类向导 为编辑框加成员变量,CString m_edit 为所有按钮加消息映射

注意:以上都加再对话框类中。 4 打开对话框类的声明,加成员变量 double m_result; //前面的结果,即第一个数 int m_opt; //前面的操作符,0=,1+,2-,3*,4/ int ,m_dot; //是否输入了小数点 CString m_string; //当前正在输入的数,存为字符串 5 继续在话框类,声明2个函数 void calculation(void); //执行计算 void NumInput(CString x) //执行数字按钮输入 6 打开函数OnInitDialog(),加初始化代码 m_result = 0; m_opt = 0; m_dot = 0; m_string = ""; 6 “关闭按钮”消息映射代码: OnOK(); 8 分别打开数字按钮1-4的消息映射函数,分别输入代码: NumInput("1");

NumInput("2"); NumInput("3"); NumInput("4"); 9 打开小数点按钮的消息映射函数,输入代码: if ( m_dot==0 ) { m_dot = 1; NumInput("."); } 10 分别打开 + - * / 按钮的消息映射函数,分别输入代码: calculation(); m_opt = 0; calculation(); m_opt = 1; calculation(); m_opt = 2; calculation();

基于MSP430毕业设计论文.

专科生毕业设计论文 基于MSP430单片机实验系统的开发与设计-基本模块 学院:机电工程学院 专业:电气自动化技术 班级: 学号: 指导教师: 职称(或学位) 2014年5月

原创性声明 本人郑重声明:所呈交的论文(设计),是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文(设计)不含任何其他个人或集体已经发表或撰写过的作品成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学生签名:年月日 指导声明 本人指导的同学的毕业论文(设计)题目大小、难度适当,且符合该同学所学专业的培养目标的要求。本人在指导过程中,通过网上文献搜索及文献比对等方式,对其毕业论文(设计)内容进行了检查,未发现抄袭现象,特此声明。 指导教师签名:年月日

目录 1 绪论 (2) 1.1课题背景 (2) 1.2设计原理 (2) 1.3单片机概述 (2) 2 系统硬件设计 (3) 2.1电源模块设计 (3) 2.2串口模块设计 (4) 2.3GSM模块接口设计 (5) 2.4I2C模块设计 (7) 2.5A/D模块设计 (8) 2.6单片机模块 (9) 3 系统软件设计 (10) 3.1软件开发工具的介绍 (10) 3.2系统软件流程图 (11) 3.3A/D软件设计 (11) 3.4短信息软件设计 (11) 3.5SM软件设计 (12) 4 结论 (13) 致谢: (13) 参考文献 (13) 附录 (14)

基于MSP430单片机实验系统的开发与设计 -基本模块 (机电工程学院指导教师:) 摘要:GSM系统是目前基于时分多址技术的移动通信体制中比较成熟,完整的系统。系统以MSP430F149为核心,实验系统的基础模块主要有串口模块、I2C模块、A/D模块、电源模块、GSM模块。着重的设计了该系统的特点以及硬件和软件的组成,同时描述了实验系统的功能 以及所能开设的实验内容,通过Embedded Workbench进行软件仿真从而实现了系统的实现 数据的有效数据传输,构成一个简单的MSP430单片机系统,方便对系统的高效学习的研究, 具有低功耗、抗干扰能力强、易携带等优点。 关键词:MSP430F149;实验系统;数据传输 Based on MSP430 SCM Experiment System Development and Design - Basic Module (Electronic & Information Engineering Department, Supervisor:) Abstraot:The GSM system is based on relatively mature mobile communication system of time division multiple accesstechnology, complete system.The system takes MSP430F149 as the core, basic modules of the experiment system mainly include serial port module I2C module,A/D module,power module,GSM module. Mainlydesign the system components and the characteristic of the hardwar and software,and describes the system function and can open the experiment content,software simulation by Embeddded Workbench so as to realize theeffective data transmission system,Make a simple MSP430 single chip microcomputer system, facilitate the study ofefficient learning system the,has advantages of low power power consumption strong anti-interference ability,easy to carry.

相关文档
最新文档