解释意思void writecom(uchar com) { busy(); s_ms(500); PORTD&=~(1<<RS); //RS=7 s_ms(500); PORTD&=~(1<<RW); //RW=6 s_ms(500); PORTD|=(1<<EN); //EN=5 s_ms(500); PORTC = com; //输出指令 s_ms(500); PORTD&=~(1<<EN); //EN=0 s_ms(500); }
时间: 2024-03-03 07:52:20 浏览: 27
这段代码是一个函数,函数名为writecom,参数为一个8位无符号整数(uchar类型)com,函数没有返回值。该函数的功能是向LCD1602写入指令。
具体实现过程如下:
1. 调用busy()函数,等待LCD1602处于空闲状态。
2. s_ms(500); //延时500毫秒
3. PORTD &= ~(1<<RS); //将PD7口清零,RS=7
4. s_ms(500); //延时500毫秒
5. PORTD &= ~(1<<RW); //将PD6口清零,RW=6
6. s_ms(500); //延时500毫秒
7. PORTD |= (1<<EN); //将PD5口置1,EN=5
8. s_ms(500); //延时500毫秒
9. PORTC = com; //将参数com写入PC口,作为指令
10. s_ms(500); //延时500毫秒
11. PORTD &= ~(1<<EN); //将PD5口清零,EN=5
12. s_ms(500); //延时500毫秒
该函数的作用是将参数com作为指令写入LCD1602,具体实现是通过设置不同的引脚状态和延时操作来达到目的。
相关问题
void busy(void) { uchar temp; s_ms(500); PORTD&=~(1<<RS); //RS=7 s_ms(500); PORTD|=(1<<RW); //RW=6 s_ms(500); while(temp) { PORTD|=(1<<EN); //EN=5 s_ms(500); DDRC=0x00; //A口变输入 PORTC=0xff; //上拉使能 s_ms(500); temp = PINC&0x80; //读取C口 s_ms(500); DDRC=0xff; PORTC=0xff; //C口变输出 s_ms(500); PORTD&=~(1<<EN); //EN=0 s_ms(500); } } 解释意思
这段代码是一个函数,函数名为busy,没有参数和返回值。该函数的目的是检测LCD1602是否处于忙状态。
函数中使用了一些引脚控制和延时操作,具体解释如下:
1. s_ms(500); //延时500毫秒
2. PORTD &= ~(1<<RS); //将PD7口清零,RS=7
3. s_ms(500); //延时500毫秒
4. PORTD |= (1<<RW); //将PD6口置1,RW=6
5. s_ms(500); //延时500毫秒
6. while(temp) //进入循环,直到temp值为0才退出
7. {
8. PORTD |= (1<<EN); //将PD5口置1,EN=5
9. s_ms(500); //延时500毫秒
10. DDRC = 0x00; //将PC口设置为输入
11. PORTC = 0xff; //将PC口上拉
12. s_ms(500); //延时500毫秒
13. temp = PINC & 0x80; //读取PC7口的值,temp为0表示忙状态结束
14. s_ms(500); //延时500毫秒
15. DDRC = 0xff; //将PC口设置为输出
16. PORTC = 0xff; //将PC口置1
17. s_ms(500); //延时500毫秒
18. PORTD &= ~(1<<EN); //将PD5口清零,EN=5
19. s_ms(500); //延时500毫秒
20. }
总体来说,该函数的作用就是不断地读取LCD1602的忙状态,直到其处于空闲状态为止。其中的具体实现方式是通过设置不同的引脚状态和延时操作来达到目的。
void WriteNum(uchar row,uchar col,uchar num) { if (row == 1) row = 0x80 + col; else row = 0xC0 + col; writecom(row); PORTD|=(1<<RS); PORTD&=~(1<<RW); PORTD|=(1<<EN); PORTC = num; s_ms(500); PORTD&=~(1<<EN); }为什么这样就可以写入进去
这段代码是用来在LCD1602液晶屏上显示数字的函数。具体来说,通过设置LCD的行和列,将光标移动到指定位置,然后将数字写入LCD的数据寄存器中,最后通过控制LCD的使能引脚,将数据写入LCD中。
其中,PORTD控制LCD的RS、RW、EN引脚,PORTC用来传输数据。RS引脚用来选择写入命令还是写入数据,RW引脚用来选择读取还是写入操作,EN引脚用来控制LCD的使能。函数中的s_ms(500)是通过延时函数产生的一个短暂的脉冲,用来触发LCD的写入操作。
总的来说,这段代码的实现原理是通过控制LCD的引脚和数据传输来实现数字显示的功能。