您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 72MSP430单片机课程设计
MSP430单片机课程设计报告姓名:专业:学号:所在学院:2012年6月17号MSP430单片机课程设计2实验一:简单计算器设计一、目的利用单片机芯片MSP430x14x、四位八段共阴数码管,已制作好的电路板等器件设计制作一个计算器,用LED显示计算数值及结果。二、功能要求计算器能实现六位以内的数加减乘除四种运算,当所得结果超过六位数时则显示“EER”,当一次计算结束时要求计算器有复位功能。LED的最高位显示符号位,次高位空下来,其余六位显示要计算的数字。(自我发挥:求平方根。)三、程序流程图MSP430单片机课程设计3四、程序源代码#includemsp430x14x.h#includestdio.h#includemath.h#defineucharunsignedchar#defineuintunsignedintunsignedcharsegment[24]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8f,0xbf,0x89,0xb9,0xff,0x86,0xaf,0xde};unsignedchardisbuff[8]={20,20,0,0,0,0,0,0};//初始数码管unsignedchargetkey(void);unsignedintqiushu();voidclear(void);voidzhuanhuan();voiddelay(unsignedintj){for(uinti=0;ij;i++);}unsignedintqiushu()//转化成相应的十进制整数{unsignedinty;y=disbuff[2]*100000+disbuff[3]*10000+disbuff[4]*1000+disbuff[5]*100+disbuff[6]*10+disbuff[7];returny;}voidclear(void)//清除屏幕{unsignedinta;for(a=7;a1;a--)disbuff[a]=0;}voidzhuanhuan(longr)//提取十进制整数各位数值,并显示{disbuff[7]=r%10;disbuff[6]=r/10%10;disbuff[5]=r/100%10;disbuff[4]=r/1000%10;MSP430单片机课程设计4disbuff[3]=r/10000%10;disbuff[2]=r/100000%10;}uchargetkey(void)//获取键值{ucharz,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;}//line1P1OUT=~BIT1;if(!(P1IN&BIT7)){x=2;break;}P1OUT=~BIT1;if(!(P1IN&BIT6)){x=6;break;}P1OUT=~BIT1;if(!(P1IN&BIT4)){x=14;break;}//line3P1OUT=~BIT3;if(!(P1IN&BIT6)){x=4;break;}P1OUT=~BIT3;if(!(P1IN&BIT7))MSP430单片机课程设计5{x=0;break;}P1OUT=~BIT3;if(!(P1IN&BIT5)){x=8;break;}P1OUT=~BIT3;if(!(P1IN&BIT4)){x=12;break;}//line2P1OUT=~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(ucharj=0;j=7;j++){P4OUT=0x80j;P2OUT=segment[disbuff[j]];delay(500);}delay(20000);while((!(P1IN&BIT6))||(!(P1IN&BIT7))||(!(P1IN&BIT5))||(!(P1IN&BIT4)))for(ucharj=0;j=7;j++){P4OUT=0x80j;P2OUT=segment[disbuff[j]];delay(500);}delay(20000);}}return(x);}MSP430单片机课程设计6/*************************主函数************************/voidmain(void){uchark,flag=0,i=9;WDTCTL=WDTPW+WDTHOLD;//关闭看门狗P5DIR|=BIT7;P5OUT&=~BIT7;P4DIR=0xff;P2DIR=0xff;P1DIR=0x0F;P1OUT=0xff;while(1){longp,q,r;disbuff[1]=20;i=getkey();if(i10){disbuff[2]=disbuff[3];disbuff[3]=disbuff[4];disbuff[4]=disbuff[5];disbuff[5]=disbuff[6];disbuff[6]=disbuff[7];disbuff[7]=i;}else{switch(i){case10:disbuff[0]=23;p=qiushu();clear();flag=10;break;case12:disbuff[0]=16;p=qiushu();clear();flag=12;break;case13:disbuff[0]=17;p=qiushu();clear();flag=13;break;case14:disbuff[0]=18;MSP430单片机课程设计7p=qiushu();clear();flag=14;break;case15:disbuff[0]=19;p=qiushu();clear();flag=15;break;case11:{q=qiushu();//做相应的计算求值clear();switch(flag){case10:r=sqrt(p);break;case12:r=p+q;break;case13:r=p-q;break;case14:r=p*q;break;case15:r=p/q;break;}if((r999999)||(r0)){clear();disbuff[5]=21;disbuff[6]=21;disbuff[7]=22;}elsezhuanhuan(r);}break;}}for(ucharj=0;j=7;j++)//显示{P4OUT=0x80j;P2OUT=segment[disbuff[j]];delay(200);}}}MSP430单片机课程设计8实验二:猜数字游戏设计一、目的利用单片机芯片MSP430x14x、四位八段共阴数码管,设计一个猜数字游戏,并将游戏结果显示在数码管上。二、功能要求该设计能实现如下的功能:游戏开始后,先在程序内随即设定四个0-9之间的不同数,作为游戏数答案。然后用户给出4个数,该软件会将您提交的数与它自动产生的数进行比较,结果在八段数码管上显示成kAsB。k代表位置正确数字也正确的字数,s代表数字正确但位置不正确的字数。当k=4且s=0时,则比较正确显示“GOOD”,进行下一次比较。三、程序流程图开始初始化参数LED显示扫描按键,有按键消抖,读入键值显示数字,并与设定的数进行比较k=4且s=0?Y比较正确,显示“GOOD”,进行下一次比较NLED显示比较结果MSP430单片机课程设计9四、程序源代码#includemsp430x14x.h#defineucharunsignedchar#defineuintunsignedintunsignedcharleddata[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x82};unsignedchardisbuff[8]={0,0,0,0,0,10,0,11};//初始数码管unsignedchara[4]={2,4,6,7};unsignedchargetkey(void);voiddelay(unsignedintasdf)//延时{for(uintasd=0;asdasdf;asd++);}/*************************主函数************************/voidmain(void){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗P5DIR|=BIT7;P5OUT&=~BIT7;P4DIR=0xff;P2DIR=0xff;P1DIR=0x0F;P1OUT=0xff;while(1){intk=0,s=0,i,j;i=getkey();if(i10){disbuff[0]=disbuff[1];disbuff[1]=disbuff[2];disbuff[2]=disbuff[3];disbuff[3]=i;}for(j=0;j4;j++)//比较for(i=0;i4;i++){if((a[j]==disbuff[i])&&(i==j)){k++;}elseif((a[j]==disbuff[i])&&(i!=j)){s++;}disbuff[4]=k;disbuff[6]=s;MSP430单片机课程设计10if(k==4&&s==0){disbuff[0]=16;disbuff[1]=0;disbuff[2]=0;disbuff[3]=13;}}for(ucharj=0;j=7;j++)//显示{P4OUT=0x80j;P2OUT=leddata[disbuff[j]];delay(200);}}}uchargetkey(void)//获取键值{ucharz,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;}//line1P1OUT=~BIT1;if(!(P1IN&BIT7)){x=2;break;}P1OUT=~BIT1;MSP430单片机课
本文标题:72MSP430单片机课程设计
链接地址:https://www.777doc.com/doc-4989324 .html