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

(16页)

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

《山东大学单片机实验-(实验6).doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《山东大学单片机实验-(实验6).doc》文档请在天天文库搜索。

1、信息科学与工程学院2016-2017学年第二学期实 验 报 告课程名称: 单片机原理与应用 实验名称: 3.7 LCD1602显示实验实验报告【实验题目】 本实验利用LCD1602和16个按键实现简单的十进制数的加减乘除四则混合运算。其中按键KEY0~KEY9分别代表数字0~9,;按键KEY10~KEY13分别代表运算符“+”“-” “*”“/”;按键KEY15代表“=”;按键KEY14代表清除命令,以便进行下一次的输入和计算。不管什么时候按下“清除”按键,计算过程均将停止,两个输入变量都将清0,屏幕将清屏。【实验要求】 1. 编写源程序并进行必要的注释;2. 记录实验过程;3. 记录程序运行结果;【实验过程及结果记录】自我完成实验A.电路图B.运行结果【实验源程序】#include #include #define uint unsigned int#define uchar unsi。

2、gned charuchar code KEY_TABLE[]={0x11,0x21,0x41,0x81,0x12,0x22,0x42,0x82,0x14,0x24,0x44,0x84,0x18,0x28,0x48,0x88};sbit LCD_RS=P1^7;sbit LCD_RW=P1^6;sbit LCD_EN=P1^5;long int num1=0;long int num2=0;uchar flag=0;uchar KEYY=0;uchar temp,key,num,n1,n2;long int results,shang,yu;void delay_ms(uint xms){ uint i,j; for(i=xms;i>0;i--) { for(j=110;j>0;j--); }}bit lcd_busy();LCD忙检查子程序{ bit result; LCD_。

3、RS=0; LCD_RW=1; LCD_EN=1; _nop_(); _nop_(); _nop_(); _nop_(); result=(bit)(P2&0x80); LCD_EN=0; return result;}void lcd_wcmd(uchar cmd);写命令子程序{ 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;}void lcd_clr();LCD清屏子程序{ lcd_wcmd(0x01); delay_ms(2);}void lcd_wdat(uchar dat);写数据子程序{ whi。

4、le(lcd_busy()); LCD_RS=1; LCD_RW=0; LCD_EN=0; _nop_(); _nop_(); P2=dat; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN=1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN=0;}void lcd_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);}void lcd_wrst(long i。

5、nt rst){ uchar scw; uchar zdw=0; scw=rst/; rst=rst%; if(scw!=0) { zdw=1;最大位输出标志位 scw=scw+'0'; lcd_wdat(scw); delay_ms(10); } scw=rst/; rst=rst%; 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/; rst=rst%; if(zdw==1) { scw=scw+'0'; lcd_wdat(scw); delay_ms(10); } else { if(scw!=0) { zdw=1; scw=scw+'0'; lcd_wdat。

6、(scw); delay_ms(10); } } scw=rst/; rst=rst%; 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/; rst=rst%; 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/10000; rst=rst%10000; if(zdw==1) { scw=scw+'0'; lcd_wdat(scw); dela。

7、y_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); } 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); } } s。

8、cw=rst/10; rst=rst%10; 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); } } rst=rst+'0'; lcd_wdat(rst);}void KEY_SCAN(){ uchar i; 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;i<16;i++) { if(key==KEY_TABLE[i]) { num=i; break; } } while(P3!=0xf。

9、0) P3=0xf0; } }}void main(){ lcd_init(); lcd_clr(); delay_ms(5); lcd_wcmd(0x80); while(1) { KEY_SCAN(); if(KEYY==1) { KEYY=0; if(num=num2) { results=num1-num2; lcd_wcmd(0x40|0x80); lcd_wrst(results); while(num!=14) { KEY_SCAN(); } } else { results=num2-num1; lcd_wcmd(0x40|0x80); lcd_wdat('-'); lcd_wrst(results); while(num!=14) { KEY_SCAN(); } } break; case 3: results=num1*num2; lcd_wcmd(0x40|0x80)。

10、; lcd_wrst(results); while(num!=14) { KEY_SCAN(); } break; case 4: 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'); 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; } } } }}。

关 键 词:
实验 山东大学 单片机
 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:山东大学单片机实验-(实验6).doc
链接地址: https://www.wenku365.com/s-58581396.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给天天文库发消息,QQ:1290478887 - 联系我们

本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:1290478887 欢迎举报。

1290478887@qq.com 2017-2027 https://www.wenku365.com 网站版权所有

粤ICP备19057495号 

收起
展开