#include "LCD1602.h" void waitforready(void) { unsigned char idata status; DATABUSINPUTMODE(); //DATABUS=0x00; //do{ ENL; RSL; RWH;delay100ns;// tps1>60ns do{ ENH; delay1us;//ENH Tpw>450ns DATABUSINPUTMODE();DATABUS=0xff; status=DATABUS; ENL; delay1us;//ENL Tpw>450ns ENH+ENL>1us }while(status&0x80);//4100ns=400ns //} //while(StatusPIN&0x80); } void writecmd(unsigned char cmd) {waitforready(); //DATABUSOUTPUTMODE();//DDRA=0xff; DATABUS=cmd; ENL; RSL;RWL;delay100ns;//tps1>60ns ENH;delay1us;//Tpw>450ns ENL;delay1us;//Tpw>450ns } void writedata(unsigned char cmd) {waitforready(); //DATABUSOUTPUTMODE();//DDRA=0xff; DATABUS=cmd; ENL; RSH;RWL;delay100ns;//tps1>60ns ENH;delay1us;//Tpw>450ns ENL;delay1us;//Tpw>450ns } //row>=1,col>=1 void SetCurPos(unsigned char row,unsigned char col) { writecmd(((row-1)<<6)+col-1+0x80); } void LCDInit() { //RSOUTPUTMODE(); //RWOUTPUTMODE(); //ENOUTPUTMODE(); writecmd(0x01);// clear the display writecmd(0x38);//8bits bus+double rows display+57 martix display writecmd(0x0f);// disp enable+cursor disp+cursor sparking writecmd(0x06);//cursor rightly moved //writecmd(0xc3); } void LCDPrint(unsigned char *p) { while(*p!='\0') {writedata(*p); p++; } } void LCDHideCursor(void) { writecmd(0x0c); // } void LCDShowCursor(void) { writecmd(0x0e); // } void LCDCursorSparking(void) { writecmd(0x0f); } 请逐段分析此段代码
时间: 2024-01-14 10:02:32 浏览: 95
这段代码是关于LCD1602液晶屏的控制程序。具体分析如下:
1. `waitforready()`函数:等待液晶屏就绪。该函数使用了`DATABUSINPUTMODE()`函数将数据总线设置为输入模式,并循环读取状态寄存器,判断是否就绪。当液晶屏就绪时,函数退出。
2. `writecmd(unsigned char cmd)`函数:向液晶屏写入指令。该函数先调用`waitforready()`函数等待就绪,然后设置数据总线为输出模式,将指令写入数据总线,然后依次置位ENL、RSL、RWL,最后延时一段时间后清零ENL,以完成写入指令的过程。
3. `writedata(unsigned char cmd)`函数:向液晶屏写入数据。该函数与`writecmd()`函数类似,只是发送的是数据而不是指令。
4. `SetCurPos(unsigned char row,unsigned char col)`函数:设置光标位置。该函数先调用`writecmd()`函数写入指令,指定光标所在的行和列。
5. `LCDInit()`函数:初始化液晶屏。该函数依次调用`writecmd()`函数写入不同的指令,以完成液晶屏的初始化过程。
6. `LCDPrint(unsigned char *p)`函数:在液晶屏上打印字符串。该函数循环调用`writedata()`函数,依次将字符串中的字符写入液晶屏。
7. `LCDHideCursor()`函数:隐藏光标。
8. `LCDShowCursor()`函数:显示光标。
9. `LCDCursorSparking()`函数:设置光标闪烁模式。
阅读全文