#include<pic.h>
#include"LCM12232B.H"
/*
* 检查忙函数
*/
void testBusy(unsigned char i)
{
if(i==1) //选中半屏,1为左半屏,其它值默认为右半屏
{
LCD_E1=1;
LCD_E2=0;
}
else
{
LCD_E2=1;
LCD_E1=0;
}
IODIRE=0XFF; //数据口为输入状态
LCD_A0=0; //指令
LCD_RW=1; //读
while(STATUS); //循环,直到忙信号过去
}
/*
* 写指令到左半屏
*/
void outMI(unsigned char i)
{
testBusy(1); //检测忙信号,并选中左半屏(E1=1)
IODIRE=0; //数据口为输出状态
LCD_A0=0; //指令
LCD_RW=0; //写
LCD_DB=i; //指令码送到数据口
LCD_E1=0; //关闭左半屏使能端
}
/*
* 写数据到左半屏
*/
void outMD(unsigned char i)
{
testBusy(1); //检测忙信号,并选中左半屏(E1=1)
IODIRE=0; //数据口为输出状态
LCD_A0=1; //数据
LCD_RW=0; //写
LCD_DB=i; //数据送到数据口
LCD_E1=0; //关闭左半屏使能端
}
/*
* 写指令到右半屏
*/
void outSI(unsigned char i)
{
testBusy(2); //检测忙信号,并选中右半屏(E2=1)
IODIRE=0; //数据口为输出状态
LCD_A0=0; //指令
LCD_RW=0; //写
LCD_DB=i; //指令码送到数据口
LCD_E2=0; //关闭右半屏使能端
}
/*
* 写数据到右半屏
*/
void outSD(unsigned char i)
{
testBusy(2); //检测忙信号,并选中右半屏(E2=1)
IODIRE=0; //数据口为输出状态
LCD_A0=1; //数据
LCD_RW=0; //写
LCD_DB=i; //数据送到数据口
LCD_E2=0; //关闭右半屏使能端
}
/*
* 设置左半屏和右半屏页地址
*/
void setPage(unsigned char page)
{
outMI(0XB8|page); //设置页地址指令码:0B(1011 1xxx)
outSI(0XB8|page);
}
/*
* 设置左半屏和右半屏页列地址
*/
void setAddress(unsigned char address)
{
if(address<61)
outMI(0x7F&address); //设置列地址指令码:0B(0xxx xxxx)
else
outSI(0x7F&(address-61));
}
/*
* 初始化函数
*/
void LCD_Init()
{
outMI(0XE2); //复位
outSI(0XE2);
outMI(0XAE); //关显示
outSI(0XAE);
outMI(0XA4); //动态显示
outSI(0XA4);
outMI(0XA9); //1/32DUTY
outSI(0XA9);
outMI(0XA0); //显示方向为左到右
outSI(0XA0);
outMI(0XEE); //END指令
outSI(0XEE);
outMI(0XC0); //设置起始行
outSI(0XC0);
outMI(0X00); //设置列
outSI(0X00);
outMI(0XAF); //开显示
outSI(0XAF);
}
/*
* 清屏函数
*/
void LCD_Clr()
{
unsigned char i,page;
for(page=0;page<4;page++) //清屏就是让显示RAM全为0
{
setPage(page);
setAddress(0);
for(i=0;i<61;i++)
outMD(0);
setAddress(61);
for(i=0;i<61;i++)
outSD(0);
}
}
/*
* 在(x,y)显示一个字符(宽×高=8×16)
*/
void putChar(unsigned char x,unsigned char y,const unsigned char ch[])
{
unsigned char i;
//显示上半字符
if(1==y) //设置上半字符页地址
setPage(0);
else
setPage(2);
for(i=x;i<x+8;i++) //设置列地址,输入上半字符的数据
{
setAddress(i);
if(i<61)
outMD(ch[i-x]);
else
outSD(ch[i-x]);
}
//显示下半字符
if(1==y) //设置下半字符页地址
setPage(1);
else
setPage(3);
for(i=x;i<x+8;i++) //设置列地址,输入下半字符的数据
{
setAddress(i);
if(i<61)
outMD(ch[i-x+8]);
else
outSD(ch[i-x+8]);
}
}
/*
* 在(x,y)显示一个汉字(宽×高=16×16)
*/
void putWord(unsigned char x,unsigned char y,const unsigned char ch[])
{
unsigned char i;
//显示上半汉字
if(1==y) //设置上半汉字页地址
setPage(0);
else
setPage(2);
for(i=x;i<x+16;i++) //设置列地址,输入上半汉字的数据
{
setAddress(i);
if(i<61)
outMD(ch[i-x]);
else
outSD(ch[i-x]);
}
//显示下半汉字
if(1==y) //设置下半汉字页地址
setPage(1);
else
setPage(3);
for(i=x;i<x+16;i++) //设置列地址,输入下半汉字的数据
{
setAddress(i);
if(i<61)
outMD(ch[i-x+16]);
else
outSD(ch[i-x+16]);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
I2C.rar_I2C mplab_MPLAB picc_i2c pic16f877a_pic16f877a i2c
共95个文件
lst:11个
obj:11个
rlf:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 145 浏览量
2022-09-20
18:23:43
上传
评论
收藏 160KB RAR 举报
温馨提示
现PIC16F877A的I2C通信模块; MPLAB开发环境,PICC编译器
资源详情
资源评论
资源推荐
收起资源包目录
I2C.rar (95个子文件)
I2C
R_MCU
R_I2C.c 237B
TABLE.obj 2KB
TABLE.cce 0B
Interrupt.obj 3KB
R_MCU.cof 20KB
Interrupt.rlf 22KB
Interrupt.lst 19KB
R_I2C.obj 435B
main.c 561B
TABLE.rlf 29KB
LCM12232B.H 1KB
main.lst 19KB
R_I2C.lst 12KB
main.rlf 25KB
LCM12232B.sdb 11KB
R_MCU.lde 0B
R_I2C.cce 0B
R_I2C.sdb 10KB
R_I2C.h 66B
LCM12232B.cce 0B
R_MCU.tagsrc 384B
main.obj 4KB
TABLE.lst 20KB
R_MCU.mcp 1KB
R_MCU.cod 15KB
LCM12232B.obj 13KB
R_MCU.hex 7KB
Interrupt.h 244B
main.sdb 10KB
R_I2C.rlf 12KB
R_MCU.map 15KB
LCM12232B.C 4KB
R_MCU.mptags 4KB
Interrupt.c 1KB
TABLE.h 373B
LCM12232B.lst 47KB
R_MCU.mcs 3KB
TABLE.C 2KB
LCM12232B.rlf 70KB
R_MCU.mcw 42KB
main.cce 0B
R_MCU.sym 8KB
Interrupt.cce 0B
Interrupt.sdb 10KB
TABLE.sdb 636B
T_MCU
BUTTON.obj 744B
TABLE.obj 2KB
TABLE.cce 0B
Interrupt.obj 2KB
Interrupt.rlf 17KB
BUTTON.cce 0B
Interrupt.lst 15KB
T_MCU.lde 0B
T_MCU.cof 25KB
main.c 1KB
TABLE.rlf 29KB
LCM12232B.H 1KB
main.lst 28KB
main.rlf 40KB
T_I2C.sdb 10KB
LCM12232B.sdb 11KB
BUTTON.h 238B
T_MCU.map 17KB
T_MCU.mcs 3KB
LCM12232B.cce 0B
main.obj 8KB
T_I2C.c 1KB
TABLE.lst 20KB
BUTTON.sdb 10KB
BUTTON.rlf 13KB
T_MCU.mcw 45KB
LCM12232B.obj 13KB
T_I2C.h 236B
Interrupt.h 105B
main.sdb 11KB
T_I2C.obj 2KB
T_I2C.rlf 23KB
LCM12232B.C 4KB
Interrupt.c 371B
TABLE.h 373B
LCM12232B.lst 47KB
BUTTON.lst 13KB
TABLE.C 2KB
LCM12232B.rlf 70KB
T_MCU.mcp 2KB
T_MCU.sym 9KB
T_I2C.lst 20KB
T_MCU.cod 17KB
T_I2C.cce 0B
BUTTON.c 352B
main.cce 0B
Interrupt.cce 0B
T_MCU.hex 8KB
Interrupt.sdb 10KB
TABLE.sdb 626B
共 95 条
- 1
朱moyimi
- 粉丝: 64
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0