欢迎来到天天文库
浏览记录
ID:48620315
大小:79.50 KB
页数:11页
时间:2020-01-29
《1602液晶显示计算器电路图及程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#include#includeunsignedcharcodeError[]={"error"};unsignedcharcodeSystemerror[]={"systemerror"};unsignedcharcodeLcd[]={"lcdcalculate"};charstr[16];sbitRS=P2^0;sbitRW=P2^1;sbitE=P2^2;sbitBF=P0^7;/***
2、********************函数功能:延时1ms***********************/voiddelay1ms(){unsignedchari,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/************************函数功能:延时n毫秒入口参数:n************************/voiddelaynms(unsignedcharn){unsignedchari;for(i=0;i3、();}/************************************函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙。************************************/bitBusyTest(void){bitresult;RS=0;//根据规定,RS为低电平、RW为高电平时,可以读状态RW=1;E=1;//E=1,才允许读/写_nop_();_nop_();_nop_();_nop_();result=BF;/4、/将忙碌标志电平赋给resultE=0;returnresult;}/*************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate**************************************/voidWriteInstruction(unsignedchardictate){while(BusyTest()==1);//如果忙就等待RS=0;//根据规定,RS和R/W同为低电平时,可以写入指令RW=0;5、E=0;_nop_();_nop_();P0=dictate;//将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_();E=1;//E置高电平_nop_();_nop_();_nop_();_nop_();E=0;}/*****************************************函数功能:指定字符显示的实际地址入口参数:x,y*****************************************/voidWriteAddres6、s(unsignedcharx,unsignedchary){unsignedchartemp;if(x==0){switch(y){case0:temp=0x00;break;case1:temp=0x01;break;case2:temp=0x02;break;case3:temp=0x03;break;case4:temp=0x04;break;case5:temp=0x05;break;case6:temp=0x06;break;case7:temp=0x07;break;case8:temp7、=0x08;break;case9:temp=0x09;break;case10:temp=0x0a;break;case11:temp=0x0b;break;case12:temp=0x0c;break;case13:temp=0x0d;break;case14:temp=0x0e;break;case15:temp=0x0f;break;}}if(x==1){switch(y){case0:temp=0x40;break;case1:temp=0x41;break;case2:temp=0x42;8、break;case3:temp=0x43;break;case4:temp=0x44;break;case5:temp=0x45;break;case6:temp=0x46;break;case7:temp=0x47;break;case8:temp=0x48;break;case9:temp=0x49;break;case10:temp=0x4a;break;case11:temp=0x4b;break;case12:temp=0x4c;break;
3、();}/************************************函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙。************************************/bitBusyTest(void){bitresult;RS=0;//根据规定,RS为低电平、RW为高电平时,可以读状态RW=1;E=1;//E=1,才允许读/写_nop_();_nop_();_nop_();_nop_();result=BF;/
4、/将忙碌标志电平赋给resultE=0;returnresult;}/*************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate**************************************/voidWriteInstruction(unsignedchardictate){while(BusyTest()==1);//如果忙就等待RS=0;//根据规定,RS和R/W同为低电平时,可以写入指令RW=0;
5、E=0;_nop_();_nop_();P0=dictate;//将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_();E=1;//E置高电平_nop_();_nop_();_nop_();_nop_();E=0;}/*****************************************函数功能:指定字符显示的实际地址入口参数:x,y*****************************************/voidWriteAddres
6、s(unsignedcharx,unsignedchary){unsignedchartemp;if(x==0){switch(y){case0:temp=0x00;break;case1:temp=0x01;break;case2:temp=0x02;break;case3:temp=0x03;break;case4:temp=0x04;break;case5:temp=0x05;break;case6:temp=0x06;break;case7:temp=0x07;break;case8:temp
7、=0x08;break;case9:temp=0x09;break;case10:temp=0x0a;break;case11:temp=0x0b;break;case12:temp=0x0c;break;case13:temp=0x0d;break;case14:temp=0x0e;break;case15:temp=0x0f;break;}}if(x==1){switch(y){case0:temp=0x40;break;case1:temp=0x41;break;case2:temp=0x42;
8、break;case3:temp=0x43;break;case4:temp=0x44;break;case5:temp=0x45;break;case6:temp=0x46;break;case7:temp=0x47;break;case8:temp=0x48;break;case9:temp=0x49;break;case10:temp=0x4a;break;case11:temp=0x4b;break;case12:temp=0x4c;break;
此文档下载收益归作者所有