资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
计计 算算 器器 实实 验验 报报 告告电子电子 08-1 班班 XX 学号:学号:0850213134目录目录实验目的.3 实验器材.4 实验任务.5 实验步骤.6 1、在 protues 中画好原理图.6 2、在 keil 中编写程序.6 3、仿真.8 4、程序清单.8 实验小结.15实验目的实验目的学习运用 4*4 的矩阵键盘,学会使用单片机编程扫描法学习使用 1602 液晶显示,对其初始化学习综合使用液晶、键盘,学会综合编程实验器材实验器材上机仿真计算机一台Keil 软件Protues 软件实验任务实验任务运用 at89s51 和 1602 液晶与按键开关来制作简单的两位的加减乘除的简单计算器。实验步骤实验步骤1、在、在 protues 中画好原理图中画好原理图2、在、在 keil 中编写程序中编写程序编写过程编译通过3、仿真、仿真4、程序清单、程序清单#include /包含头文件 #define uc unsigned char /宏定义 sbit rs=P35;/位申明 sbit rw=P36; sbit e=P37;void csh(); /函数申明 void jj(); uc keyscan(); void wirte_com(uc com); void wirte_data(uc date); void delay(unsigned int z); uc code table=“123+456-789*0=#/“; /定义表格 uc code table1=“0123456789“; uc code table2=“2 wei ji suan qi“; uc temp,bb,num,a,b,c,d,shi,ge,bai,qi; /定义全局变量 unsigned int i; void main()/主函数 csh();/初始化while(1)/大循环 for(i=0;i=48 else i=c-a; void csh() /初始化子函数 P3=0xff;wirte_com(0x01);delay(10);wirte_com(0x38);delay(10);wirte_com(0x0f);delay(10);wirte_com(0x06);delay(10);wirte_com(0x80);delay(10); void wirte_com(uc com) /液晶写指令 P2=com; rs=0; rw=0; e=0;delay(10);e=1; void wirte_data(uc date)/液晶写数据 P2=date; rs=1; rw=0; e=0; delay(100); e=1; void delay(unsigned int z)/延时子程序 unsigned int x,y; for(x=z;x0;x-) for(y=110;y0;y-); uc keyscan()/键盘扫描子程序 while(1) P1=0xfe;temp=P1; temp=temp if(temp!=0xf0) delay(10);temp=P1; bb=P1;temp=tempif(temp!=0xf0) temp=P1; switch(temp) case 0xee:num=0;break; case 0xde:num=1;break; case 0xbe:num=2;break; case 0x7e:num=3;break;default:break; while(P1=bb); delay(10); while(P1=bb);P1=0xfd;temp=P1; bb=P1; temp=temp if(temp!=0xf0) delay(10);temp=P1;temp=tempif(temp!=0xf0) temp=P1; switch(temp) case 0xed:num=4;break; case 0xdd:num=5;break; case 0xbd:num=6;break; case 0x7d:num=7;break; default:break; while(P1=bb); delay(10); while(P1=bb);P1=0xfb;temp=P1; bb=P1; temp=temp if(temp!=0xf0) delay(10);temp=P1;temp=tempif(temp!=0xf0) temp=P1; switch(temp) case 0xeb:num=8;break; case 0xdb:num=9;break; case 0xbb:num=10;break; case 0x7b:num=11;break; default:break; while(P1=bb); delay(10); while(P1=bb);P1=0xf7;temp=P1; bb=P1; temp=temp if(temp!=0xf0) delay(10);temp=P1;temp=tempif(temp!=0xf0) temp=P1; switch(temp) case 0xe7:num=12;break; case 0xd7:num=13;break; case 0xb7:num=14;break; case 0x77:num=15;break; default:break; while(P1=bb); delay(10); while(P1=bb);if(num!=99) return(num); 实验小结实验小结通过本次实验我巩固了前面对键盘、液晶的使用,并且学会了如何把它们 综合起来运用,更加熟悉了程序编写过程!
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号