资源描述:
《单片机课程设计报告---简易计算器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《单片机课程设计》课程设计报告班级:姓名:学号:设计时间:10实验一用单片机做简易计算器一、实验目的利用430作为主控器组成一个四则运算的计算器。二、实验功能1、可以实现加、减、乘、除以及指数运算。开始关看门狗初始化快速查询是否有按键按下延时消抖快速查询是否有按键按下扫描键值计算结果显示eer读取键值数字键功能键键入数值等待键值是否溢出是否溢出显示结果YYYYNNNN2、硬件部分包括:430单片机、显示4位的7段数码显示管、4×4的键盘。其中单片机的P2口将要显示的数据的段码送给显示管,而P4口将位码送给显示管。P1口接键盘,其中高四位接键盘的四根列线,低四位
2、接键盘的四根行线。三、流程图10四、源代码#includeconstunsignedchardata[22]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8f,0xbf,0x89,0xb9,0xff,0xaf};//0~9a~f符号unsignedcharsegment[8]={20,20,0,0,0,0,0,0};//初始数码管unsignedcharflag1=0;voiddelay(unsignedintj
3、)//延时{unsignedinti;for(i=0;i1;a--)segment[a]=0;}voidzhuanhuan(unsignedlongr)//将计算结果逐位取出{segment[
4、7]=r%10;segment[6]=r/10%10;segment[5]=r/100%10;segment[4]=r/1000%10;segment[3]=r/10000%10;segment[2]=r/%10;}10unsignedchargetkey(void)//获取键值{unsignedcharm,n=16;P1OUT=0x00;if((!(P1IN&BIT4))
5、
6、(!(P1IN&BIT5))
7、
8、(!(P1IN&BIT6))
9、
10、(!(P1IN&BIT7))){delay(10000);if((!(P1IN&BIT4))
11、
12、(!(P1IN&BIT5)
13、)
14、
15、(!(P1IN&BIT6))
16、
17、(!(P1IN&BIT7))){flag1=1;for(m=0;m<=2;m++){P1OUT=~BIT0;//第四列if(!(P1IN&BIT7)){n=3;break;}if(!(P1IN&BIT6)){n=7;break;}if(!(P1IN&BIT5)){n=11;break;}if(!(P1IN&BIT4)){n=15;break;}P1OUT=~BIT1;//第三列if(!(P1IN&BIT7)){n=2;break;}if(!(P1IN&BIT6)){n=6;break;}if(!(P1IN&BIT4)){n
18、=14;break;}if(!(P1IN&BIT5)){n=10;break;}P1OUT=~BIT2;//第二列if(!(P1IN&BIT7)){n=1;break;}if(!(P1IN&BIT6)){n=5;break;}if(!(P1IN&BIT5)){n=9;break;}if(!(P1IN&BIT4)){n=13;break;}P1OUT=~BIT3;//第一列if(!(P1IN&BIT7)){n=0;break;}if(!(P1IN&BIT6)){n=4;break;}if(!(P1IN&BIT5)){n=8;break;}if(!(P1IN&BI
19、T4)){n=12;break;}while((!(P1IN&BIT6))
20、
21、(!(P1IN&BIT7))
22、
23、(!(P1IN&BIT5))
24、
25、(!(P1IN&BIT4)))for(unsignedcharj=0;j<=7;j++){P4OUT=0x80>>j;P2OUT=data[segment[j]];10delay(500);}delay(20000);}}}return(n);}voidmain(void)//主函数{unsignedcharflag=0,i=9;WDTCTL=WDTPW+WDTHOLD;//关看门狗P5DIR
26、=BIT7;P5OUT&=
27、~BIT7;P4DIR=0xff;P2