at89c52单片机与1602液晶显示器第一行显示200115009,第二行显示FENGJINFU,从屏幕左侧移入,遇到屏幕右侧停止;c:这二行内容居中;d:第一行靠左显示,第二行靠右显示。
时间: 2024-02-19 21:57:46 浏览: 18
下面是您需要的代码,实现了您的要求:
```c
#include <reg52.h>
#include <intrins.h>
#define LCD_RS P2_0
#define LCD_RW P2_1
#define LCD_EN P2_2
#define LCD_DATA P0
void delay_ms(unsigned int ms) {
unsigned int i, j;
for(i = 0; i < ms; i++) {
for(j = 0; j < 1141; j++);
}
}
void lcd_init() {
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
LCD_DATA = 0x38; // function set: 8-bit mode, 2-line display, 5x7 font
_nop_();
_nop_();
_nop_();
LCD_EN = 1;
_nop_();
_nop_();
_nop_();
LCD_EN = 0;
delay_ms(5);
LCD_DATA = 0x0c; // display control: display on, cursor off, blink off
_nop_();
_nop_();
_nop_();
LCD_EN = 1;
_nop_();
_nop_();
_nop_();
LCD_EN = 0;
delay_ms(5);
LCD_DATA = 0x01; // clear display
_nop_();
_nop_();
_nop_();
LCD_EN = 1;
_nop_();
_nop_();
_nop_();
LCD_EN = 0;
delay_ms(5);
LCD_DATA = 0x06; // entry mode set: increment cursor, no shift
_nop_();
_nop_();
_nop_();
LCD_EN = 1;
_nop_();
_nop_();
_nop_();
LCD_EN = 0;
delay_ms(5);
}
void lcd_write_cmd(unsigned char cmd) {
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
LCD_DATA = cmd;
_nop_();
_nop_();
_nop_();
LCD_EN = 1;
_nop_();
_nop_();
_nop_();
LCD_EN = 0;
delay_ms(5);
}
void lcd_write_data(unsigned char dat) {
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
LCD_DATA = dat;
_nop_();
_nop_();
_nop_();
LCD_EN = 1;
_nop_();
_nop_();
_nop_();
LCD_EN = 0;
delay_ms(5);
}
void lcd_set_cursor(unsigned char row, unsigned char col) {
unsigned char addr;
if(row == 0) {
addr = 0x80 + col;
} else {
addr = 0xc0 + col;
}
lcd_write_cmd(addr);
}
void lcd_display_centered() {
lcd_set_cursor(0, 0);
lcd_write_data('2');
lcd_write_data('0');
lcd_write_data('0');
lcd_write_data('1');
lcd_write_write_data('1');
lcd_write_data('5');
lcd_write_data('0');
lcd_write_data('0');
lcd_write_data('9');
lcd_set_cursor(1, 0);
lcd_write_data('F');
lcd_write_data('E');
lcd_write_data('N');
lcd_write_data('G');
lcd_write_data('J');
lcd_write_data('I');
lcd_write_data('N');
lcd_write_data('F');
lcd_write_data('U');
unsigned char i, j;
for(i = 0; i < 16; i++) {
lcd_write_cmd(0x1c); // shift display right
delay_ms(100);
}
for(j = 0; j < 6; j++) {
lcd_write_cmd(0x10); // shift cursor left
delay_ms(100);
}
}
void lcd_display_left_right() {
lcd_set_cursor(0, 0);
lcd_write_data('2');
lcd_write_data('0');
lcd_write_data('0');
lcd_write_data('1');
lcd_write_write_data('1');
lcd_write_data('5');
lcd_write_data('0');
lcd_write_data('0');
lcd_write_data('9');
lcd_set_cursor(1, 8);
lcd_write_data('F');
lcd_write_data('E');
lcd_write_data('N');
lcd_write_data('G');
lcd_write_data('J');
lcd_write_data('I');
lcd_write_data('N');
lcd_write_data('F');
lcd_write_data('U');
unsigned char i, j;
for(i = 0; i < 16; i++) {
lcd_write_cmd(0x1c); // shift display right
delay_ms(100);
}
for(j = 0; j < 6; j++) {
lcd_write_cmd(0x14); // shift cursor right
delay_ms(100);
}
}
void main() {
lcd_init();
lcd_display_centered();
delay_ms(2000);
lcd_write_cmd(0x01); // clear display
delay_ms(5);
lcd_display_left_right();
while(1);
}
```
该代码实现了1602液晶显示器的初始化和显示功能,并且分别实现了居中显示和左右对齐的显示。您可以根据需要调整移动速度和停止位置。注意,在居中显示时,需要移动到屏幕正中央,因此需要更长时间的移动和调整。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)