欢迎来到天天文库
浏览记录
ID:50916064
大小:66.50 KB
页数:6页
时间:2020-03-15
《基于51单片机的1602液晶频率计设计(Proteus仿真图和程序).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于51单片机的1602液晶频率计设计一、Proteus仿真图:二、程序代码//最大测量65536Hz的频率计//原理:T0定时1S,T1计数#include#include#defineucharunsignedchar#defineuintunsignedintuintcount=0;uintnm=0;ucharFw,Fq,Fb,Fs,Fg;#defineDataPortP0sbitLCM_RS=P2^0;sbitLCM_RW=P2^1;sbitLCM_EN=P2^2;ucharcodestr0[]={"-Testfreque
2、ncy-"};ucharcodestr1[]={"F=00000Hz"};//ucharcodestr2[]={""};/*******************************/voiddelay(unsignedintk){unsignedinti,j;for(i=0;i3、==========================//voidWaitForEnable(void){DataPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();//while(DataPort&0x80);delay(5);LCM_EN=0;}//==========================================================///*函数名:voidWriteCommandLCM(ucharCMD,ucharAttribc)作用:写命令到LCM*///======4、====================================================//voidWriteCommandLCM(ucharCMD,ucharAttribc){if(Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;}//=========================================================///*函数名:voidWriteDataLCM5、(uchardataW)作用:写数据*///=========================================================//voidWriteDataLCM(uchardataW){WaitForEnable();LCM_RS=1;LCM_RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;}//=========================================================///*函数名:voidInitLcd(6、)作用:LCM初始化*///=========================================================//voidInitLcd(){WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);}//=========================================================///*函数名:voidDisplayOne7、Char(ucharX,ucharY,ucharDData)作用:显示指定坐标的一个字符*///=========================================================//voidDisplayOneChar(ucharX,ucharY,ucharDData){Y&=1;X&=15;if(Y)X8、=0x40;X9、=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);}//======================================
3、==========================//voidWaitForEnable(void){DataPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();//while(DataPort&0x80);delay(5);LCM_EN=0;}//==========================================================///*函数名:voidWriteCommandLCM(ucharCMD,ucharAttribc)作用:写命令到LCM*///======
4、====================================================//voidWriteCommandLCM(ucharCMD,ucharAttribc){if(Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;}//=========================================================///*函数名:voidWriteDataLCM
5、(uchardataW)作用:写数据*///=========================================================//voidWriteDataLCM(uchardataW){WaitForEnable();LCM_RS=1;LCM_RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;}//=========================================================///*函数名:voidInitLcd(
6、)作用:LCM初始化*///=========================================================//voidInitLcd(){WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);}//=========================================================///*函数名:voidDisplayOne
7、Char(ucharX,ucharY,ucharDData)作用:显示指定坐标的一个字符*///=========================================================//voidDisplayOneChar(ucharX,ucharY,ucharDData){Y&=1;X&=15;if(Y)X
8、=0x40;X
9、=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);}//======================================
此文档下载收益归作者所有