void write_com(uchar com) { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; delay(5); }
时间: 2024-05-21 10:18:14 浏览: 29
这是一个写命令到LCD屏幕的函数,参数是一个8位的无符号整数型变量com,表示要写入的命令。这个函数使用了单片机的P0口(即8个I/O口)作为数据口,将com值写入P0口,然后通过控制LCD屏幕的EN(使能)引脚和RS(寄存器选择)引脚来向LCD屏幕发送命令。其中,lcden和lcdrs是单片机和LCD屏幕之间的控制引脚,delay(5)是一个延时函数,用于控制写入命令的时间。
相关问题
#include "lcd1602.h" void delay_ (uint i) { while(i--); } void write_com(uchar com) { e=0; rs=0; rw=0; P0=com; delay_uint(20); e=1; delay_uint(20); e=0; } void write_data(uchar dat) { e=0; rs=1; rw=0; P0=dat; delay_uint(20); e=1; delay_uint(20); e=0; } //设置当前行和列 void write_sfm(uchar hang,uchar add) { if(hang==1) //设置当前行 write_com(0x80+add); else write_com(0x80+0x40+add); } void write_string(uchar hang,uchar add,uchar *p) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p == '\0') break; write_data(*p); p++; } } void init_1602() { write_com(0x38); write_com(0x0c); write_com(0x06); delay_uint(1000); }
这是一个LCD1602液晶屏的驱动程序,用于控制1602液晶屏的显示。程序中包含以下函数:
1. delay_ (uint i):实现简单的延时功能,i表示延时的时间,通过while循环实现延时。
2. write_com(uchar com):向液晶屏写入指令,com表示指令的值,通过P0口将指令传递给液晶屏,实现对液晶屏的控制。
3. write_data(uchar dat):向液晶屏写入数据,dat表示数据的值,通过P0口将数据传递给液晶屏,实现对液晶屏的显示。
4. write_sfm(uchar hang,uchar add):设置当前行和列,hang表示当前行,add表示当前列,通过调用write_com函数实现设置。
5. write_string(uchar hang,uchar add,uchar *p):向液晶屏写入字符串,hang表示字符串所在的行,add表示字符串所在的列,p表示字符串的地址,通过调用write_data函数实现向液晶屏的写入。
6. init_1602():初始化液晶屏,通过调用write_com函数实现对液晶屏的初始化。
总的来说,这个程序实现了对LCD1602液晶屏的控制和显示。其中,延时函数和向液晶屏写入指令和数据的函数是基础,而设置当前行和列、写入字符串和初始化函数则是对这些基础函数的封装。
解释以下程序的设计思路:void LCDdelay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=10;y>0;y--); } void LCD_WriteData(u8 dat) { if(dat&0x01)D0=1;else D0=0; if(dat&0x02)D1=1;else D1=0; if(dat&0x04)D2=1;else D2=0; if(dat&0x08)D3=1;else D3=0; if(dat&0x10)D4=1;else D4=0; if(dat&0x20)D5=1;else D5=0; if(dat&0x40)D6=1;else D6=0; if(dat&0x80)D7=1;else D7=0; } void write_com(uchar com) { LCDRS=0; LCD_WriteData(com); LCDdelay(5); LCDEN=1; LCDdelay(5); LCDEN=0; } void write_data(uchar date) { LCDRS=1; LCD_WriteData(date); LCDdelay(5); LCDEN=1; LCDdelay(5); LCDEN=0; }
这段代码是针对LCD屏幕的控制代码,主要实现的是向LCD屏幕写入命令或数据的功能。下面是程序的设计思路:
1. 函数LCDdelay()实现的是延时功能,参数z表示延时的时间,函数中使用两个for循环来实现延时,其中内层的for循环是为了增加延时的时间精度。
2. 函数LCD_WriteData()实现的是将数据写入LCD屏幕的功能,参数dat表示要写入的数据。函数中使用了8个if语句来逐位判断dat的二进制值,并将对应的数据线D0-D7设置为1或0。
3. 函数write_com()实现的是向LCD屏幕写入命令的功能,参数com表示要写入的命令。函数中先将RS(寄存器选择线)设置为0,然后调用LCD_WriteData()函数将命令写入数据线,接着通过LCDEN(使能线)来触发LCD屏幕执行命令,最后延时一段时间。
4. 函数write_data()实现的是向LCD屏幕写入数据的功能,参数date表示要写入的数据。函数中先将RS设置为1,然后调用LCD_WriteData()函数将数据写入数据线,接着通过LCDEN来触发LCD屏幕接收数据,最后延时一段时间。
总体来说,这段代码实现了对LCD屏幕进行控制的基本功能,包括写入数据和命令,以及控制延时和使能等。这些功能的实现都需要通过数据线和控制线来与LCD屏幕进行通信,因此需要对数据线和控制线进行相应的设置。