void busy(void) { uchar temp; s_ms(500); PORTD&=~(1<<RS); //RS=7 s_ms(500); PORTD|=(1<<RW); //RW=6//RS = 0 RW = 1写数据模式 s_ms(500); while(temp) { PORTD|=(1<<EN); //EN=5启用LCD屏幕 s_ms(500); DDRC=0x00; //C口变输入 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); } }
时间: 2024-03-04 19:51:09 浏览: 49
这段代码是一个名为 busy 的函数,其作用是等待 LCD 屏幕就绪。具体解释如下:
1. 定义一个无符号字符变量 temp。
2. 等待 500 毫秒,这可能是为了等待前一次写入操作完成。
3. 将 RD 引脚(即 LCD 屏幕的 RS 引脚)置为低电平,表示要写入的是指令而不是数据。
4. 再次等待 500 毫秒。
5. 将 RW 引脚置为高电平,表示进入写数据模式。
6. 再次等待 500 毫秒。
7. 进入一个 while 循环,当 temp 不为0时执行循环,相当于等待 LCD 屏幕就绪。
8. 将 EN 引脚置为高电平,表示启用 LCD 屏幕。
9. 再次等待 500 毫秒。
10. 将 C 口(即 LCD 屏幕的数据总线)设置为输入模式。
11. 将 C 口上拉,可能是为了保证信号稳定。
12. 再次等待 500 毫秒。
13. 从 C 口读取数据,即读取 LCD 屏幕的状态。
14. 再次等待 500 毫秒。
15. 将 C 口设置为输出模式。
16. 将 C 口全部置为高电平,这可能是为了保证信号稳定。
17. 再次等待 500 毫秒。
18. 将 EN 引脚置为低电平,表示禁用 LCD 屏幕。
19. 再次等待 500 毫秒。
相关问题
解释意思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); }
这段代码是一个函数,函数名为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,具体实现是通过设置不同的引脚状态和延时操作来达到目的。
uchar temp; s_ms(500); PORTD&=~(1<<RS); //RS=7 s_ms(500); PORTD|=(1<<RW); //RW=6//RS = 0 RW = 1写数据模式 s_ms(500); while(temp) { PORTD|=(1<<EN); //EN=5 s_ms(500); DDRC=0x00; //C口变输入 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); }解释具体意思
这段代码是在控制LCD显示屏进行数据写入的过程中使用的。具体解释如下:
1. 定义一个无符号字符变量 temp。
2. 等待 500 毫秒,这可能是为了等待前一次写入操作完成。
3. 将 RD 引脚(即 LCD 屏幕的 RS 引脚)置为低电平,表示要写入的是指令而不是数据。
4. 再次等待 500 毫秒。
5. 将 RW 引脚置为高电平,表示进入写数据模式。
6. 再次等待 500 毫秒。
7. 进入一个 while 循环,当 temp 不为0时执行循环,相当于等待 LCD 屏幕就绪。
8. 将 EN 引脚置为高电平,表示启用 LCD 屏幕。
9. 再次等待 500 毫秒。
10. 将 C 口(即 LCD 屏幕的数据总线)设置为输入模式。
11. 将 C 口上拉,可能是为了保证信号稳定。
12. 再次等待 500 毫秒。
13. 从 C 口读取数据,即读取 LCD 屏幕的状态。
14. 再次等待 500 毫秒。
15. 将 C 口设置为输出模式。
16. 将 C 口全部置为高电平,这可能是为了保证信号稳定。
17. 再次等待 500 毫秒。
18. 将 EN 引脚置为低电平,表示禁用 LCD 屏幕。
19. 再次等待 500 毫秒。
阅读全文