OpenEdv-开源电子网

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

【求助】STM32F103驱动LCD12864(ST7920控制的)画圆函数调用后画成矩形了,ATmega88上跑该程序没有问题,这是怎么了???

[复制链接]

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
发表于 2014-8-31 23:31:10 | 显示全部楼层 |阅读模式
5金钱
如题,我用stm32f103vct6驱动了一个ST7920控制的12864,这个驱动我在2011年再avr单片机上跑过,画圆函数是没有问题的。
今天移植到stm32上,画圆函数调用后画出来的确实矩形,我的画点,画线函数测试都没有问题。

问题1:我的画圆函数怎么了???现在没有avr那个板子了,无法再次测试了。
问题2:根据st7920的手册,读RAM时先要写一个地址,然后伪读一次,再连续读2个字节,这样才是真正的读。
           但是我网上能找到的读法和我下面的程序差不多,没有写地址,也没有伪读,更没有读2个字节。但是下面的读函数
           我测试(画点,画线,填充一个矩形)确实可以工作,这是为啥呢?读函数到底怎么写?手册上写的错了??
问题3:问题2中读出的2个字节,哪个有用?

================郁闷的读函数================
[mw_shl_code=c,true]U8 LCD12864_Read(void) { U8 data=0xFF; WaitForReady();//判忙 SetReadData; //数据管脚设置为输入 LCD12864_RS_1; //数据 delay(10); LCD12864_RW_1; //读 delay(10); LCD12864_EN_1; delay(10); data = LCD12864_Data_PIN;//读 delay(10); LCD12864_EN_0; SetWriteData;//数据管脚设置为输出 return data; }[/mw_shl_code]

================跑哪儿去的画圆函数================

[mw_shl_code=c,true]void plotC(U16 x,U16 y,U16 xc,U16 yc,U8 color) { DrawPoint(xc+x,yc+y,color); DrawPoint(xc+x,yc-y,color); DrawPoint(xc-x,yc+y,color); DrawPoint(xc-x,yc-y,color); DrawPoint(xc+y,yc+x,color); DrawPoint(xc+y,yc-x,color); DrawPoint(xc-y,yc+x,color); DrawPoint(xc-y,yc-x,color); } void LCD12864_DrawCircle(U16 xc,U16 yc,U16 r,U8 color) { U16 x=0,y=0,d=0; y = r; d = 3 - (r + r); x = 0; while(x <= y) { plotC(x,y,xc,yc,color); //使用Bresenham算法画圆 if(d <=0) { d += (x + x + x + x) + 6; } else { d+=((x - y) + (x - y) + (x - y) + (x - y)) + 10; y--; } x++; } }[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

哈哈,问题已经解决: 画圆函数:U16 x=0,y=0,d=0; 定义成:S16 x=0,y=0,d=0;即可
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
 楼主| 发表于 2014-8-31 23:31:11 | 显示全部楼层
哈哈,问题已经解决:

画圆函数:U16 x=0,y=0,d=0;
定义成:S16 x=0,y=0,d=0;即可
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-9-1 00:37:48 | 显示全部楼层
帮顶....
回复

使用道具 举报

19

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
382
金钱
382
注册时间
2014-1-7
在线时间
42 小时
发表于 2014-9-1 08:48:45 | 显示全部楼层
你好 请问你是串行驱动的吗?
留下QQ我和你交流一下
回复

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
 楼主| 发表于 2014-9-1 22:55:06 | 显示全部楼层
回复【3楼】ALIEN_WALI:
---------------------------------
我用8位并口驱动的,企鹅:0x16E2AA3C

谢谢
回复

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
 楼主| 发表于 2014-9-1 22:55:44 | 显示全部楼层
夜深了,自己再顶顶

看来大家没有遇到过这样的疑惑。
回复

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
 楼主| 发表于 2014-9-1 22:56:14 | 显示全部楼层
回复【3楼】ALIEN_WALI:
---------------------------------
qq一般晚上7点后在线
回复

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
 楼主| 发表于 2014-9-2 12:46:43 | 显示全部楼层
再顶顶,等待高手啊
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2015-2-3
在线时间
0 小时
发表于 2015-2-3 22:57:51 | 显示全部楼层
你好,最近本人也在研究12864的使用,方便借鉴一下程序吗
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
发表于 2017-6-7 22:07:32 | 显示全部楼层
源码可以分享吗我也是用12864并口
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2021-12-22
在线时间
89 小时
发表于 2023-2-10 09:54:50 | 显示全部楼层
能不能分享一下程序
回复

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
 楼主| 发表于 2024-3-5 11:33:25 | 显示全部楼层
ASDF1347 发表于 2023-2-10 09:54
能不能分享一下程序

时间太久了,程序已经找不到了
网上有很多,下一个试试就行
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 09:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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