能驅動,能顯示
單片機源程序如下:
- /*
- * lcd1602.c
- *
- * Created on: 10月18日
- */
- #include "c_types.h"
- #include "osapi.h" //串口1需要的頭文件
- #include "lcd1602.h"
- #include "i2c_master.h"
- uint8 flag;
- void ICACHE_FLASH_ATTR i2c_write_1602(uint8 com)
- {
- i2c_master_start();
- i2c_master_writeByte(0x4e);
- flag = i2c_master_getAck();
- i2c_master_writeByte(com);
- flag = i2c_master_getAck();
- i2c_master_stop();
- }
- void ICACHE_FLASH_ATTR lcd1602_write_com(uint8 com)
- {
- os_delay_us(5000);
- i2c_write_1602((com&0xf0)|0x0c);
- os_delay_us(5);
- i2c_write_1602((com&0xf0)|0x08);
- os_delay_us(5);
- i2c_write_1602((com<<4)|0x0c);
- os_delay_us(5);
- i2c_write_1602((com<<4)|0x08);
- }
- void ICACHE_FLASH_ATTR lcd1602_write_dat(uint8 com)
- {
- os_delay_us(5000);
- i2c_write_1602((com&0xf0)|0x0d);
- os_delay_us(5);
- i2c_write_1602((com&0xf0)|0x09);
- os_delay_us(5);
- i2c_write_1602((com<<4)|0x0d);
- os_delay_us(5);
- i2c_write_1602((com<<4)|0x09);
- }
- void ICACHE_FLASH_ATTR lcd1602_init()
- {
- i2c_master_gpio_init();
- i2c_master_init();
- lcd1602_write_com(0x02);
- lcd1602_write_com(0x08);
- //lcd1602_write_com(0x32);//實驗N次的結果,28,38都不行
- //lcd1602_write_com(0x32);//實驗N次的結果,28,38都不行
- lcd1602_write_com(0x0c);
- lcd1602_write_com(0x01);
- }
- void ICACHE_FLASH_ATTR print(unsigned char a,unsigned char *str)
- {
- lcd1602_write_com(a | 0x80);
- while(*str != '\0'){
- lcd1602_write_dat(*str++);
- }
- *str = 0;
- }
復制代碼
|