OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8369|回复: 4

液晶驱动,还是不行啊啊啊啊啊啊啊啊啊

[复制链接]

83

主题

349

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2012-8-10
在线时间
13 小时
发表于 2012-10-12 17:54:13 | 显示全部楼层 |阅读模式

小弟还是没整出来,我觉得并口传输时有问题,请问大侠,如果我想对PB0-7的八位进行宏定义,应该怎样定义,因为在51控制12864中,有如下控制程序
void write_com(uchar com)
{
 lcdrs=0; //写指令
 0=com;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0;
}


void write_dat(uchar dat)
{
 lcdrs=1; //写数据
 0=dat;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0;
}
所以,我就想直接定义一组IO口,让com和dat(红色部分)赋值给GPIOB0-7,青问大侠,如何实现,小弟跪求了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

头像被屏蔽

82

主题

191

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
465
金钱
465
注册时间
2011-11-14
在线时间
33 小时
发表于 2012-10-12 22:13:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

2

主题

100

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2012-4-15
在线时间
0 小时
发表于 2012-10-12 22:43:15 | 显示全部楼层
com和dat是变量啊,用带参数的宏定义可以解决。可以借鉴位带操作的定义
 #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
如果想单靠宏定义而不改变函数中红字部分,有点困难。
喜欢单片机,没什么道理,就像爱吃水煮鱼,对味而已。
回复 支持 反对

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1816
金钱
1816
注册时间
2011-10-9
在线时间
230 小时
发表于 2012-10-13 12:08:47 | 显示全部楼层
GPIOA->ODR &= 0XFF00;
GPIOA->ODR |=dat;
回复 支持 反对

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1816
金钱
1816
注册时间
2011-10-9
在线时间
230 小时
发表于 2012-10-13 13:47:11 | 显示全部楼层
你可以测试

主函数 主循环
 
GPIOA->ODR &= 0XFF00; 
GPIOA->ODR |=0xaa;     
while (1);


  //用示波器看IO的状态 包括其他io(RS RW cs 之类的状态)     如果状态正确那里我觉得是你时序的问题

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-20 04:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表