实现的效果
上面是用Proteus仿真的,,对了如果自己想用proteus仿真需要安装下面这个软件
再看一下实物显示效果
先做上位机部分...........
为了程序一启动就把电脑上能用的串口号显示在下拉框中
还有就是串口呢可能会随时改变,所以在用户点击下拉框的时候重新更新一下下拉框中的内容
虚拟串口软件下载:http://www.51hei.com/bbs/dpj-89983-1.html
现在在波特率框中添加常用的波特率
现在的效果
然后放一个按钮用来打开和关闭串口
现在就做打开和关闭串口部分,,,
对了按钮点击了打开串口,让它显示"关闭串口"
就用回调来显示
现在按钮事件就这样了
现在在多优化一下,我们在打开了串口的时候,我接着用去选择别的串口了,那么为了不去重复重新打开的按钮动作,我们就多加一点程序,,,,这个一会再说吧!现在看不出效果现在写接收程序部分
放一个textbox
接收的文本框设置只读
接收的数据肯定会很多,,所以让他有上下的滚动条
然后界面又加了几个按钮和选择
现在接收数据
为了接收到一条完整的数据之后再去做处理,我就用个定时器用于检测接收是否空闲了一段时间,只要出现空闲说明接收到了一条完整的数据
设置的是10ms检测一次
看程序里面怎么做,,,其实和我的单片机检测空闲是一样的道理
定义一个链表用于存储数据,还有两个计数变量
我电脑上安装了虚拟串口软件,方便调试
还有就是
当我们选择这个的时候希望接收框里面的内容也跟着改变
就像是这样
选择上
然后再取消选择
这样感觉更好一些
写上以下代码
加一个功能,,,我已经电机打开一个串口了,然后呢想换一个
然而如果和第一次选择的一样就不切换了
这段代码放在了定时器2里面,,,我这样做的,只要拖动滑块后500Ms没在改变滑块的值,那么就把当前滑块的值发给单片机,让单片机显示出来
我没有做成一直发给单片机的,,因为12864本身刷新整个界面就慢,,一直发也没什么用.............
其余的亲们看源码吧!
现在做做下位机--单片机程序
由于单片机程序太多了,所以就事先做好了底层的了,,,就先看一看
直接贴上来把
单片机源程序如下:
- #define _MAIN_C_
- #include "include.h"
- #include "main.h"
- void main()
- {
- unsigned int CRC=0;
- InitTimer0();//初始化定时器
- InitUART(9600);//初始化串口
- Init12864();//初始化12864
- ClearGDRAM();//清除界面
- CRAM_OFF();//关闭显示
- DisplayImage(Image);//显示图片
- CRAM_ON();//打开显示
- DelayS(1);
- ClearGDRAM();//清除界面
-
- Init12864();//初始化12864
-
- for(CRC = 17;CRC<127;CRC+=23)
- {
- DrawCircle(32,CRC, 16);
- }
- while(1)
- {
- if(UsartFlage == 1)
- {
- UsartFlage = 0;
-
- if(crc16_flage(UsartReceive,UsartReadCntCopy-2))
- {
- ClearGDRAM();//清除界面
- Init12864();//初始化12864
- switch(UsartReceive[0])
- {
- case 1 : Chinese(1,1,(UsartReadCntCopy-3)/2,&UsartReceive[1]); break;//显示汉字
- case 2 : fsin(UsartReceive[1],UsartReceive[2]); break;//显示正弦波
- case 3 : RecWave(UsartReceive[1],UsartReceive[2]); break;//显示锯齿波
- case 4 : TriWave(UsartReceive[1],UsartReceive[2]); break;//显示三角波
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码 算了剩下的不贴了,反正后面有源码.......
说几个地方吧
程序风格呢,还是自己习惯的风格.....
串口接收和上位机一样的道理
在定时器里面做的判断是否接收到一个完整的数据
串口的配置呢加入了115200的,因为印象深刻......
这个控制显示正弦波的函数 h呢很容易看出来是控制这个波形的高度,,,,,那个3.14和f共同决定了周期(其实就是点数),,f越大这个函数的图像越拉伸,,,,,
这个三角波函数是当初自己造的......其实就是画线.....
上面的 f 很容易看出来就是控制拐点的,,每隔 f 个点拐一下,
x1 和 x2是记录当前的 i 的值,关于那个 j 是由于 i 是从 0 开始的 如果不限制一下,那么第一根先就会是这样
最后看一下主函数
主函数呢,没什么说的....源码地址
关于为什么要有实物了,,因为确实有人用到实物,,,,能满足的就一定要满足,而且好多元器件放着就浪费了.....
记得当初一个朋友学8266,竟然用了1个多月才能正常通信,,,那时候其实就想着应该做一个实物供朋友使用,这样的话就不能耽搁这么长时间了...
想想这都过去5个多月了,,我还没有去做8266的实验板......哎,,,,,,,感觉太懒了
所有资料51hei提供下载:
上位机控制12864显示.rar
(3.31 MB, 下载次数: 113)
|