标题:
请各位大神帮忙看一下我这个程序送数据要怎样处理
[打印本页]
作者:
看透不说透
时间:
2017-6-9 11:02
标题:
请各位大神帮忙看一下我这个程序送数据要怎样处理
我的显示无字符串函数如下:
uint Strlen(uchar *p)
{
uint i;
for(i=0;*(p+i);i++)
return i;
}
void dispiay_12864(uchar hang; uchar lie; *p)
{
uchar i;
switch(hang)
{
case 1:SerialWriteCmd(0x80+lie);break;
case 2:SerialWriteCmd(0x90+lie);break;
case 3:SerialWriteCmd(0x88+lie);break;
case 4:SerialWriteCmd(0x98+lie);break;
}
for(i=0;i<Strlen(p);i++)
{
SerialWriteData(p[i]);
}
}
如果我要写一个void display_12864Uchar(uchar hang ; uychar lie ; uchar a)
{
}应该怎样写?
作者:
zl2168
时间:
2017-6-9 20:33
你第一个子函数就错!1.i与p数据类型不同;2.for循环第2个表达式是终值条件判断,*(p+i)错了。
作者:
看透不说透
时间:
2017-6-9 20:49
zl2168 发表于 2017-6-9 20:33
你第一个子函数就错!1.i与p数据类型不同;2.for循环第2个表达式是终值条件判断,*(p+i)错了。
#include <reg52.h>
#include <string.h>
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int
sbit RW=P2^6;
sbit EN=P2^7; // 注:采用2线时,第15脚PSB接地->GND yuqingshan 2017-06-02
uint Strlen(uchar *p)
{
uint i;
for(i=0;*(p+i);i++);
return i;
}
void WriteBytes(uchar *p)
{
uchar i,j,temp;
EN=0;
for(j=0;j<3;j++)
{
temp=p[j];
for(i=0;i<8;i++)
{
if(temp & 0x80)
RW=1;
else RW=0;
EN=1;
delay(1);
EN=0;
temp<<=1;
}
}
RW=1;
}
void SerialWriteData(uchar send)
{
uchar data1[3];
data1[0]=0xfa ; //1111 1010向液晶写数据
data1[1]=send & 0xf0; //取高4位
data1[2]=(send<<4)&0xf0; //取低4位
WriteBytes(data1);
}
void SerialWriteCmd(uchar send)
{
uchar data1[3];
data1[0]=0xf8 ; //1111 1000向液晶写命令
data1[1]=send & 0xf0; //取高4位
data1[2]=(send<<4) & 0xf0; //取低4位
WriteBytes(data1);
}
void init_lcd()
{
SerialWriteCmd(0x0C);
SerialWriteCmd(0x06);
SerialWriteCmd(0x01);
}
void display_12864(uchar hang,uchar lie,uchar *p)
{
uchar i;
switch(hang)
{
case 1:SerialWriteCmd(0x80+lie);break;
case 2:SerialWriteCmd(0x90+lie);break;
case 3:SerialWriteCmd(0x88+lie);break;
case 4:SerialWriteCmd(0x98+lie);break;
}
for(i=0;i<strlen(p);i++)
{
SerialWriteData(p[i]);
}
}
复制代码
这是12864.c的文件 我整的是一个多级菜单,已经能正常显示,现在是要加上一个送数的子函数。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1