资源简介
PCF8574LCD模块链接1602单片机51例程 节省单片机的IO口使用
代码片段和文件信息
#include“pcf8574lcd.h“
char ADDR = 0x4E;
void delay(int ms)
{
unsigned char y ;
while(ms--)
{
for(y = 0 ; y<250 ; y++)
{
_nop_() ;
_nop_() ;
_nop_() ;
_nop_() ;
}
}
}
void IIC_start(void)
{
SDA=1;
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
}
void IIC_stop(void)
{
SDA=0;
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
}
void IIC_writeByte(char temp)
{
char i;
for(i=0;i<8;i++)
{
SDA=(bit)(temp & 0x80) ;
temp <<=1;
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
}
_nop_();
_nop_();
_nop_();
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
while(SDA);
_nop_();
SCL=0;
}
void LCD_write_command(char comm)
{
char tmp;
IIC_start();
IIC_writeByte(ADDR);
tmp = comm & 0xF0;
tmp |= 0x0C; //RS = 0 RW = 0 EN = 1
IIC_writeByte(tmp);
delay(20);
tmp &= 0xFB; //Make EN = 0
IIC_writeByte(tmp);
tmp = (comm & 0x0F) << 4 ;
tmp |= 0x0C; //RS = 0 RW = 0 EN = 1
IIC_writeByte(tmp);
delay(20);
tmp &= 0xFB; // Make EN = 0
IIC_writeByte(tmp);
//stop_8574();
}
void LCD_write_data(char data1)
{
char tmp;
IIC_start();
IIC_writeByte(ADDR);
tmp = data1 & 0xF0;
tmp |= 0x0D; //RS = 0 RW = 0 EN = 1
IIC_writeByte(tmp);
delay(20);
tmp &= 0xFB; //Make EN = 0
IIC_writeByte(tmp);
tmp = (data1 & 0x0F) << 4 ;
tmp |= 0x0D; //RS = 0 RW = 0 EN = 1
IIC_writeByte(tmp);
delay(20);
tmp &= 0xFB ; // Make EN = 0
IIC_writeByte(tmp);
}
void Init_Lcd(void)
{
LCD_write_command(0x33);
delay(50) ;
LCD_write_command(0x32);
delay(50) ;
LCD_write_command(0x28);
delay(50) ;
LCD_write_command(0x0C);
delay(50) ;
LCD_write_command(0x06);
delay(50) ;
LCD_write_command(0x01);
delay(50) ;
}
//Clear Screen
void Clear_Lcd(void)
{
LCD_write_command(0x01);
}
void Write_LCD(int x int y char *str)
{
char addr;
if( x < 0)
{
x = 0;
}
if(x > 15)
{
x = 15;
}
if(y<0)
{
y = 0;
}
if(y > 1)
{
y = 1;
}
// Move cursor
addr = 0x80 + 0x40 * y + x;
LCD_write_command(addr);
while (*str)
{
LCD_write_data(*str++);
}
}
void Write_Customer(int x int y char *str)
{
unsigned char itmp;
for(i=0;i<8;i++)
{
LCD_write_command(0x40+i);
LCD_write_data(*str++);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-10-12 19:39 PCF8574LCD\
文件 108409 2018-03-19 08:19 PCF8574LCD\Last Loaded Test.DBK
文件 2593 2018-10-12 19:33 PCF8574LCD\PCF8574LCD.c
文件 500 2018-10-12 19:34 PCF8574LCD\PCF8574LCD.h
文件 7743 2018-10-12 19:34 PCF8574LCD\PCF8574LCD.LST
文件 11375 2018-10-12 19:34 PCF8574LCD\PCF8574LCD.OBJ
文件 11783 2018-10-12 19:34 PCF8574LCD\Test
文件 206 2018-10-12 19:32 PCF8574LCD\Test.c
文件 108409 2018-03-19 10:07 PCF8574LCD\Test.DSN
文件 2088 2018-10-12 19:34 PCF8574LCD\Test.hex
文件 44 2018-10-12 19:34 PCF8574LCD\Test.lnp
文件 1351 2018-10-12 19:34 PCF8574LCD\Test.LST
文件 14336 2018-10-12 19:34 PCF8574LCD\Test.M51
文件 1881 2018-10-12 19:34 PCF8574LCD\Test.OBJ
文件 13638 2018-10-12 19:34 PCF8574LCD\Test.plg
文件 742 2018-05-25 18:05 PCF8574LCD\Test.PWI
文件 57290 2018-10-12 19:39 PCF8574LCD\Test.uvopt
文件 13392 2018-10-12 19:39 PCF8574LCD\Test.uvproj
文件 55848 2018-10-12 00:11 PCF8574LCD\Test_uvopt.bak
文件 13218 2017-03-07 13:11 PCF8574LCD\Test_uvproj.bak
- 上一篇:webrtc+VS2017完整工程及编译结果
- 下一篇:cad.txt
评论
共有 条评论