msp430单片机课程设计.doc_第1页
msp430单片机课程设计.doc_第2页
msp430单片机课程设计.doc_第3页
msp430单片机课程设计.doc_第4页
msp430单片机课程设计.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机应用课程设计学院: 电气学院班级: 生医0902学号:3090505044姓名: 田文简易计算器一、 试验目的:综合运用按键,数码管显示及I/O口输入输出实现简易计算器功能。二、 计算器功能: 编写程序实现简单加、减、乘、除及幂运算,本试验要求输入数据不多于六位,同时要求计算结果不超过六位,否则报错,并在数码管显示运算结果,要求最高位显示运算符,次高位闲置不用,第六位显示输入数字或结算结果。三、流程图开始初始化扫描键盘按键中断i10(键值)?i=11(键值)?i=10,12,13,14,15,NNN取数p取数q并进行运算获取运算符YYY显示结果四、程序系统主程序void main(void) uchar flag=0,i=9; WDTCTL = WDTPW + WDTHOLD; /关闭看门狗 P5DIR|=BIT7; P5OUT&=BIT7; P4DIR=0xff; P2DIR=0xff; P1DIR=0x0F; P1OUT=0xff; while(1) long p,q,r; time1=20; i=getkey(); if(i999999)|(r0) qingping(); time5=21; time6=21; time7=22; else fenjie(r); break; for(uchar j=0;jj; P2OUT=leddatatimej; delay(200); /end of main取数程序unsigned int qiushu() /转化成相应的十进制整数unsigned int y;y=time2*100000+time3*10000+time4*1000+time5*100+time6*10+time7; return y;清屏设计void qingping(void) unsigned int a; for(a=7;a1;a-) timea=0;void fenjie(long r) /提取十进制整数各位数值,并显示 time7=r%10; time6=r/10%10; time5=r/100%10; time4=r/1000%10; time3=r/10000%10; time2=r/100000%10;long factorial(long a) long x,i; x=a; for(i=1;ia;i+) x=x*(a-i); return(x);按键的处理uchar getkey(void) uchar z,x=16; P1OUT=0x00; if(!(P1IN&BIT6)|(!(P1IN&BIT7)|(!(P1IN&BIT5)|(!(P1IN&BIT4) delay(10000); if(!(P1IN&BIT6)|(!(P1IN&BIT7)|(!(P1IN&BIT5)|(!(P1IN&BIT4) for(z=0;z=1;z+) P1OUT=BIT0; if(!(P1IN&BIT7) x=3;break; P1OUT=BIT0; if(!(P1IN&BIT6) x=7;break; P1OUT=BIT0; if(!(P1IN&BIT5) x=11;break; P1OUT=BIT0; if(!(P1IN&BIT4) x=15;break; /line 1 P1OUT=BIT1; if(!(P1IN&BIT7) x=2;break; P1OUT=BIT1; if(!(P1IN&BIT6) x=6;break; P1OUT=BIT1; if(!(P1IN&BIT5) x=10;break; if(!(P1IN&BIT4) x=14;break; /line3 P1OUT=BIT3; if(!(P1IN&BIT6) x=4; break; P1OUT=BIT3; if(!(P1IN&BIT7) x=0; break; P1OUT=BIT3; if(!(P1IN&BIT5) x=8; break; P1OUT=BIT3; if(!(P1IN&BIT4) x=12; break; /line 2 P1OUT=BIT2; if(!(P1IN&BIT6) x=5; break; P1OUT=BIT2; if(!(P1IN&BIT7) x=1; break; P1OUT=BIT2; if(!(P1IN&BIT5) x=9; break; P1OUT=BIT2; if(!(P1IN&BIT4) x=13; break; while(!(P1IN&BIT6)|(!(P1IN&BIT7)|(!(P1IN&BIT5)|(!(P1IN&BIT4) for(uchar j=0;jj; P2OUT=leddatatimej; delay(500); delay(20000); while(!(P1IN&BIT6)|(!(P1IN&BIT7)|(!(P1IN&BIT5)|(!(P1IN&BIT4)for(uchar j=0;jj; P2OUT=leddatatimej; delay(500); delay(20000); return (x);猜数字游戏一、实验目的:综合运用按键,数码管显示及I/O口输入输出实现简易计算器功能。二、实验任务: 输入一组四位数并储存起来,再输入一组四位数与之进行比较,若输入数与储存数的数字和位置均相同则记为A,若输入数与储存数的数字相同且位置不同则记为B,单输入数与储存数完全相同时则成功。三、流程图开始初始化扫描键盘按键中断i=10(键值)?i=11(键值)?NN设置初始数进行比较获取数据YYY显示结果i=12(键值)?四、程序系统主函数void main(void) uchar flag=0,i=9; WDTCTL = WDTPW + WDTHOLD; /关闭看门狗 P5DIR|=BIT7; P5OUT&=BIT7; P4DIR=0xff; P2DIR=0xff; P1DIR=0x0F; P1OUT=0xff; while(1) long p,q,r; i=getkey();if(i9999)|(r0) qingping(); time5=21; time6=21; time7=22; else fenjie(r); break; for(uchar j=0;jj; P2OUT=leddatatimej; delay(200); /end of main比较函数long compare() uchar i,j,a=0,b=0,x,s; for(i=4;i=7;i+) if(yuanshui-4=timei) a+; for(i=0;i=4;i+) for(j=4;j1;a-) timea=0;void fenjie(long r) /提取十进制整数各位数值,并显示 time7=r%10; time6=r/10%10; time5=r/100%10; time4=r/1000%10; time3=r/10000%10; time2=r/100000%10;long factorial(long a) long x,i; x=a; for(i=1;ia;i+) x=x*(a-i); return(x);按键处理函数uchar getkey(void) /获取键值 uchar z,x=16; P1OUT=0x00;if(!(P1IN&BIT6)|(!(P1IN&BIT7)|(!(P1IN&BIT5)|(!(P1IN&BIT4) delay(10000);if(!(P1IN&BIT6)|(!(P1IN&BIT7)|(!(P1IN&BIT5)|(!(P1IN&BIT4) for(z=0;z=1;z+) P1OUT=BIT0; if(!(P1IN&BIT7) x=3;break; P1OUT=BIT0; if(!(P1IN&BIT6) x=7;break; P1OUT=BIT0; if(!(P1IN&BIT5) x=11;break; P1OUT=BIT0; if(!(P1IN&BIT4) x=15;break; /line 1 P1OUT=BIT1; if(!(P1IN&BIT7) x=2;break; P1OUT=BIT1; if(!(P1IN&BIT6) x=6;break; P1OUT=BIT1; if(!(P1IN&BIT5) x=10;break; if(!(P1IN&BIT4) x=14;break; /line3 P1OUT=BIT3; if(!(P1IN&BIT6) x=4; break; P1OUT=BIT3; if(!(P1IN&BIT7) x=0; break; P1OUT=BIT3; if(!(P1IN&BIT5) x=8; break; P1OUT=BIT3; if(!(P1IN&BIT4) x=12; break; /line 2 P1OUT=BIT2; if(!(P1IN&BIT6) x=5; break; P1OUT=BIT2; if(!(P1IN&BIT7) x=1; break; P1OUT=BIT2; if(!(P1IN&BIT5) x=9; break; P1OUT=BIT2; if(!(P1IN&BIT4) x=13; break; while(!(P1IN&BIT6)|(!(P1IN&BIT7)|(!(P1IN&BIT5)|(!(P1IN&BIT4) for(uchar j=0;jj; P2OUT=leddatatimej; delay(500); delay(20000);while(!(P1IN&BIT6)|(!(P1IN&BIT7)|(!(P1IN&BIT5)|(!(P1IN&BIT4) for(uchar j=0;jj; P2OUT=leddatatimej; delay(500); delay(20000); return (x);心得体会通过本次课程设计我收获了很多,同时对单片机与程序的理解也加深了,当然还领会到了团队合作精神。以前由于接触的少对开发板的了解少的可怜,有数的几次试验也由于组员人数过多而不能有过大的时间去使用,而在这次持续一周半的设计中,我们每人都有了比较多的时间去使用开发板,这大大增强了我们的动手能力,让我们很好的把课堂上学习的东西运用到了实践中来。同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论