UC1701x LCD Module Application Guide
1. Module Overview
The UC1701x is a commonly used LCD controller chip that supports a 96×64 dot matrix display, with 4-bit or 8-bit parallel interfaces and 3-wire or 4-wire serial interfaces. This controller is widely used in industrial control panels, handheld instruments, and other scenarios. Its highlights include a simple driving circuit, clear display effects, and low power consumption.
2. Hardware Connections
Basic Pin Description
- • CS : Chip select signal, active low
- • RST : Reset signal, active low
- • RS(DC) : Data/command selection pin
- • SCL : Clock line
- • SDA : Data line
- • VDD : Power positive terminal (typically 3.3V)
- • GND : Power ground
Typical Wiring Example (SPI Mode)
// Microcontroller pin definitions
#define LCD_CS P1_0
#define LCD_RST P1_1
#define LCD_DC P1_2
#define LCD_SCL P1_3
#define LCD_SDA P1_4
3. Core Driver Code
// Send command
void LCD_WriteCmd(uint8_t cmd) {
LCD_DC = 0; // Command mode
LCD_CS = 0; // Chip select enable
// Send 8-bit data
for(uint8_t i = 0; i < 8; i++) {
LCD_SCL = 0;
LCD_SDA = (cmd & 0x80) ? 1 : 0;
LCD_SCL = 1;
cmd <<= 1;
}
LCD_CS = 1; // Chip select disable
}
// Send data
void LCD_WriteData(uint8_t dat) {
LCD_DC = 1; // Data mode
LCD_CS = 0;
for(uint8_t i = 0; i < 8; i++) {
LCD_SCL = 0;
LCD_SDA = (dat & 0x80) ? 1 : 0;
LCD_SCL = 1;
dat <<= 1;
}
LCD_CS = 1;
}
// Display initialization
void LCD_Init(void) {
LCD_RST = 0;
delay_ms(100);
LCD_RST = 1;
LCD_WriteCmd(0xE2); // System reset
LCD_WriteCmd(0x2C); // Boost step 1
LCD_WriteCmd(0x2E); // Boost step 2
LCD_WriteCmd(0x2F); // Boost step 3
LCD_WriteCmd(0x23); // Coarse contrast adjustment
LCD_WriteCmd(0x81); // Fine contrast adjustment
LCD_WriteCmd(0x28); // Fine adjustment value
LCD_WriteCmd(0xA2); // 1/9 bias ratio
LCD_WriteCmd(0xC8); // Row scan order
LCD_WriteCmd(0xA0); // Column scan order
LCD_WriteCmd(0x40); // Start line
LCD_WriteCmd(0xAF); // Turn on display
}
4. Display Control Key Points
1. Coordinate Setting
Page address range: 0-7 (8 rows per page)Column address range: 0-95
void LCD_SetPos(uint8_t page, uint8_t column) {
LCD_WriteCmd(0xB0 | page); // Set page address
LCD_WriteCmd(0x10 | (column >> 4)); // Set high 4 bits of column address
LCD_WriteCmd(0x00 | (column & 0x0F)); // Set low 4 bits of column address
}
2. Clear Display
void LCD_Clear(void) {
for(uint8_t i = 0; i < 8; i++) {
LCD_SetPos(i, 0);
for(uint8_t j = 0; j < 96; j++) {
LCD_WriteData(0x00);
}
}
}
5. Common Problem Solutions
- 1. Display is blurry or contrast is insufficient
- • Check if the VDD voltage is stable at 3.3V
- • Adjust the contrast command value (parameter after command 0x81)
- • Confirm that the operating environment temperature is within specifications
- 2. Display garbled

- • Check if the SPI timing meets the requirements
- • Confirm that the RST reset signal is normal
- • Verify that the initialization command sequence is correct
- 3. Some pixels are not lit
- • Check if display data has been written to that position
- • Verify if the point is damaged due to static electricity
- • Investigate soldering quality issues
6. Performance Optimization Suggestions
- 1. Increase refresh speed
- • Use DMA to transfer data
- • Implement page caching mechanism
- • SPI clock frequency can reach up to 4MHz
- 2. Reduce power consumption
- • Use display caching for content that does not need frequent refreshing
- • Use sleep mode wisely
- • Adjust contrast based on ambient light
Practical Exercise Suggestions
- 1. Create a small meter to display temperature and humidity
- 2. Design a simple game interface
- 3. Implement Chinese character display functionality
- 4. Add page-turning animation effects
Notes:
- • The complete initialization process must be executed upon first power-up
- • Pay attention to SPI timing requirements during programming
- • Pixel writing must be done in page address order
- • The power supply should use a good voltage regulator LDO
This LCD module is cost-effective, easy to drive, and suitable for beginners and small project development. Once you master the driving method of the UC1701x, other similar dot matrix LCD modules will also be easy to handle.