山东大学单片机实验-(实验6)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

信息科学与工程学院2016-2017学年第二学期实验报告课程名称:单片机原理与应用实验名称:3.7LCD1602显示实验山东大学·微处理器原理与应用·实验报告-1-实验报告【实验题目】本实验利用LCD1602和16个按键实现简单的十进制数的加减乘除四则混合运算。其中按键KEY0~KEY9分别代表数字0~9,;按键KEY10~KEY13分别代表运算符“+”“-”“*”“/”;按键KEY15代表“=”;按键KEY14代表清除命令,以便进行下一次的输入和计算。不管什么时候按下“清除”按键,计算过程均将停止,两个输入变量都将清0,屏幕将清屏。【实验要求】1.编写源程序并进行必要的注释;2.记录实验过程;3.记录程序运行结果;【实验过程及结果记录】自我完成实验A.电路图山东大学·微处理器原理与应用·实验报告-2-B.运行结果【实验源程序】#includereg51.h#includeintrins.h#defineuintunsignedint#defineucharunsignedcharucharcodeKEY_TABLE[]={0x11,0x21,0x41,0x81,0x12,0x22,0x42,0x82,0x14,0x24,0x44,0x84,0x18,0x28,0x48,0x88};山东大学·微处理器原理与应用·实验报告-3-sbitLCD_RS=P1^7;sbitLCD_RW=P1^6;sbitLCD_EN=P1^5;longintnum1=0;longintnum2=0;ucharflag=0;ucharKEYY=0;uchartemp,key,num,n1,n2;longintresults,shang,yu;voiddelay_ms(uintxms){uinti,j;for(i=xms;i0;i--){for(j=110;j0;j--);}}bitlcd_busy();LCD忙检查子程序{bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;_nop_();_nop_();_nop_();_nop_();result=(bit)(P2&0x80);LCD_EN=0;returnresult;}voidlcd_wcmd(ucharcmd);写命令子程序山东大学·微处理器原理与应用·实验报告-4-{while(lcd_busy());LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P2=cmd;_nop_();_nop_();_nop_();_nop_();LCD_EN=1;_nop_();_nop_();_nop_();_nop_();LCD_EN=0;}voidlcd_clr();LCD清屏子程序{lcd_wcmd(0x01);delay_ms(2);}voidlcd_wdat(uchardat);写数据子程序{while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;_nop_();山东大学·微处理器原理与应用·实验报告-5-_nop_();P2=dat;_nop_();_nop_();_nop_();_nop_();LCD_EN=1;_nop_();_nop_();_nop_();_nop_();LCD_EN=0;}voidlcd_init()//初始化子程序{delay_ms(15);lcd_wcmd(0x38);//8位数据总线,显示2行,5*7点阵delay_ms(5);lcd_wcmd(0x0c);//显示开,关光标,不闪烁delay_ms(5);lcd_wcmd(0x06);//进入模式设置指令中,地址自动增加delay_ms(5);lcd_wcmd(0x01);//清除LCD显示内容delay_ms(5);}voidlcd_wrst(longintrst){ucharscw;ucharzdw=0;scw=rst/1000000000;rst=rst%1000000000;if(scw!=0){山东大学·微处理器原理与应用·实验报告-6-zdw=1;最大位输出标志位scw=scw+'0';lcd_wdat(scw);delay_ms(10);}scw=rst/100000000;rst=rst%100000000;if(zdw==1){scw=scw+'0';lcd_wdat(scw);delay_ms(10);}else{if(scw!=0){zdw=1;scw=scw+'0';lcd_wdat(scw);delay_ms(10);}}scw=rst/10000000;rst=rst%10000000;if(zdw==1){scw=scw+'0';lcd_wdat(scw);delay_ms(10);}else{if(scw!=0)山东大学·微处理器原理与应用·实验报告-7-{zdw=1;scw=scw+'0';lcd_wdat(scw);delay_ms(10);}}scw=rst/1000000;rst=rst%1000000;if(zdw==1){scw=scw+'0';lcd_wdat(scw);delay_ms(10);}else{if(scw!=0){zdw=1;scw=scw+'0';lcd_wdat(scw);delay_ms(10);}}scw=rst/100000;rst=rst%100000;if(zdw==1){scw=scw+'0';lcd_wdat(scw);delay_ms(10);}else山东大学·微处理器原理与应用·实验报告-8-{if(scw!=0){zdw=1;scw=scw+'0';lcd_wdat(scw);delay_ms(10);}}scw=rst/10000;rst=rst%10000;if(zdw==1){scw=scw+'0';lcd_wdat(scw);delay_ms(10);}else{if(scw!=0){zdw=1;scw=scw+'0';lcd_wdat(scw);delay_ms(10);}}scw=rst/1000;rst=rst%1000;if(zdw==1){scw=scw+'0';lcd_wdat(scw);delay_ms(10);山东大学·微处理器原理与应用·实验报告-9-}else{if(scw!=0){zdw=1;scw=scw+'0';lcd_wdat(scw);delay_ms(10);}}scw=rst/100;rst=rst%100;if(zdw==1){scw=scw+'0';lcd_wdat(scw);delay_ms(10);}else{if(scw!=0){zdw=1;scw=scw+'0';lcd_wdat(scw);delay_ms(10);}}scw=rst/10;rst=rst%10;if(zdw==1){scw=scw+'0';山东大学·微处理器原理与应用·实验报告-10-lcd_wdat(scw);delay_ms(10);}else{if(scw!=0){zdw=1;scw=scw+'0';lcd_wdat(scw);delay_ms(10);}}rst=rst+'0';lcd_wdat(rst);}voidKEY_SCAN(){uchari;P3=0xf0;if(P3!=0xf0){delay_ms(10);P3=0xf0;if(P3!=0xf0){KEYY=1;temp=P3;P3=0x0f;key=temp|P3;key=0xff-key;for(i=0;i16;i++){if(key==KEY_TABLE[i])山东大学·微处理器原理与应用·实验报告-11-{num=i;break;}}while(P3!=0xf0)P3=0xf0;}}}voidmain(){lcd_init();lcd_clr();delay_ms(5);lcd_wcmd(0x80);while(1){KEY_SCAN();if(KEYY==1){KEYY=0;if(num10){if(flag==0){num1=num1*10;num1=num1+num;n1=num+'0';lcd_wdat(n1);delay_ms(100);}else{山东大学·微处理器原理与应用·实验报告-12-num2=num2*10;num2=num2+num;n2=num+'0';lcd_wdat(n2);delay_ms(100);}}if(num==10){flag=1;lcd_wdat('+');}if(num==11){flag=2;lcd_wdat('-');}if(num==12){flag=3;lcd_wdat('*');}if(num==13){flag=4;lcd_wdat('/');}if(num==14){num1=0;num2=0;flag=0;lcd_clr();delay_ms(5);山东大学·微处理器原理与应用·实验报告-13-}if(num==15){switch(flag){case0:num1=num1+'0';lcd_wcmd(0x40|0x80);lcd_wdat(num1);while(num!=14){KEY_SCAN();}break;case1:results=num1+num2;lcd_wcmd(0x40|0x80);lcd_wrst(results);while(num!=14){KEY_SCAN();}break;case2:if(num1=num2){results=num1-num2;lcd_wcmd(0x40|0x80);lcd_wrst(results);while(num!=14){KEY_SCAN();}}山东大学·微处理器原理与应用·实验报告-14-else{results=num2-num1;lcd_wcmd(0x40|0x80);lcd_wdat('-');lcd_wrst(results);while(num!=14){KEY_SCAN();}}break;case3:results=num1*num2;lcd_wcmd(0x40|0x80);lcd_wrst(results);while(num!=14){KEY_SCAN();}break;case4:if(num2==0){lcd_wcmd(0x40|0x80);lcd_wdat('E');delay_ms(5);lcd_wdat('R');delay_ms(5);lcd_wdat('R');delay_ms(5);lcd_wdat('O');delay_ms(5);lcd_wdat('R');山东大学·微处理器原理与应用·实验报告-15-break;}shang=num1/num2;yu=num1%num2;lcd_wcmd(0x40|0x80);lcd_wrst(shang);delay_ms(100);if(yu!=0){lcd_wdat('.');delay_ms(100);lcd_wdat('.');delay_ms(100);lcd_wdat('.');delay_ms(100);lcd_wrst(yu);}while(num!=14){KEY_SCAN();}break;}}}}}

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功