想我泱泱大国,以诚信为本!
那个谁谁谁,放开原子哥,有事冲大家来!
计划赶不上变化,变化赶不上客户端的一句话!
说来惭愧,离上次发帖已经快俩个月了,原因是客户发话了:12864(带字库)显示的字太大了,要求改小。以前搞过自定义字符,不过是并行方式,觉得原理差不多,遂应之。12864自定义字符的核心是任意位置显示一个点,只要写出画点函数,其他画线,画矩形,画个圈圈诅咒你都是浮云!画点函数必须先读数据再写数据,可问题来了,我写出的画点函数显示显示下一个点会把前一个覆盖,也就是不能同时显示两个点,单步跟一下,发现问题,MCU无法读取LCD,每次读到的都是0,上网查资料,一看吓一跳,说是ST7920的硬件问题,串行方式无法读取,可数据手册上写的可以,卡在这里,但事情总得解决!有些人必须做点什么。改并行方式?开什么玩笑,板子都打样了;改程序,调了好多次没用,怎么办呢?活人还能让尿给憋死?经过带头大哥的一番指点,果断打通任督二脉,新方法是:在单片机内开辟一块显存区,所有的显示函数直接操作显存区,然后一起刷新显示!一想速度,32的速度还跟不上12864?还有缺点是占内存,想到128K,我自己也呵呵了,不用白不用,留着给谁用!成功将原来的16X8大小改成4X5大小,人一下子精神不少,敲一下午代码腰也不酸了,骑自行车回学校腿也不疼了,食堂的饭也觉得香了!然而,人的一生就是一个问题接着另一个问题,有的解决了,有的未解决,一个大问题正随着时间的流逝悄然而至!这是后话!
显示问题搞定,主板基本搞定,就差串口通讯,三线齐飞,波特率设置一致,数据手到擒来,这里说说通信协议,我自己写是和校验,底板发送的数据开始加个命令头,然后发送有效数据,最后发送的所有数据的和,主板判断最后数据是否一致?相等则显示,不相等则重新发送!可能有人会说了(有人真的很厉害,从小到大就数他问题最多),如果数据中增加量刚好等于减少量那和校验岂不是没用?理论上有这个可能,但概率和国足进世界杯差不多,经调试后发现,和校验简单,可靠,实用。当然你也可以用CRC校验,奇偶校验,你也可以制定属于自己的游戏规则!主板和底板之间来电后,整个检测器总算搞定,接下来,组装,上电,测试,50套,开心!
祸兮福所倚福兮祸所伏!老祖宗早把一切看透了。当我得意的还在公司焊板子的时候,同学的一个电话差点没把烙铁扔在两腿之间,这周考试了!没错,大问题终于来了!听到后第一反应怎么这么早,我该怎么办!赶紧请假,通宵,红牛,借书,看书!时间实在紧迫,但总不能晚节不保啊。这学期由于实习,课几乎都没去,只好听天由命了!考完后什么都不管,挂就挂呗,爱咋咋滴,踢球先!
几天后成绩出来了,查分数心情还是那么的小激动,还好哥命好,人品好,没有扑街,之后等着上短学期,我会告诉你我们的短学期内容竟然是STM32串口通信!!!果然又应了老祖宗的话,深藏功与名!果断请假实习答应最后一天验收。STM32用的还是F103C8T6,直接将代码移植,两天搞定,自己还扩展了一个电量指示器,采集一路AD值转化成电压串口发送,电压越大,LED亮的个数越多,老师说不错!心里偷着乐一个!
程序的效果如下图,没事显示了三张图片,分别是基地标志,NBA标志和楼主,接着是自定义字符显示,等待发送,协议用的原子哥的回车键结束,显示加了换行处理,希望和大家一起进步加油!程序中如有什么错误,请加以指正,在下不甚感激!
|