关闭

Zigbee网关 cc2530 zstack添加1602驱动

标签: zigbee网关zigbee网关1602
1334人阅读 评论(4) 收藏 举报
分类:

1602的驱动已经写好了,Zigbee网关 CC2530驱动1602显示屏,但是发现不怎么稳定,走了很多弯路,一直以为是自己的指令没有用好,最后实在没辙放出了大招,用逻辑分析仪查看波形,发现波形很乱,尤其是E的下降沿之后的延迟时间非常短,因此简单的进行了修改


修改的主要位置是函数

 void LCD_en_write(void)  
 {                       //EN由高电平跳变到低电平时液晶使能  
 LCD1602_EN=1;  
 delay_nus(40);  
 LCD1602_EN=0;  
 delay_nus(40);  
 
 }  

主要添加了延迟,虽然这里写的是40us,但是用逻辑分析仪查看已经超过1ms了,无所谓了,好用就行

不过现在也有一个问题,就是由于没用rw,任何线上了干扰都被1602认为是有效的数据或者指令,所以在再次复位的时候有时候乱码,这个没办法解决,除非把rw加上

现在想办法把1602挂在zstack上面,

首先应该在初始化函数

void ZigbeeGateWay_Init( uint8 task_id )

里面添加1602初始化函数

#ifndef APP_UIP
 
  lcd1602_init();
  LCD_init();
  LCD_PutStr("Hello,World!",12,1); 
  
#endif

呵呵,起的名称不太好,自己知道意思就行了

添加完了,在合适的位置更新1602的显示就行了,我放到这个函数里面

void ZigbeeGateWay_MessageMSGCB( afIncomingMSGPacket_t *pkt )

本来是用串口打印调试信息的,现在1602也同时打印调试信息

  LCD_PutStr(pkt->cmd.Data,pkt->cmd.DataLength,2);
  HalUARTWrite(HAL_UART_PORT,"RF receive:",11);
  HalUARTWrite(HAL_UART_PORT,pkt->cmd.Data,pkt->cmd.DataLength);
  HalUARTWrite(HAL_UART_PORT,"\r\n",2);

对了函数

 void LCD_PutStr(unsigned char *DData,int length, int pos)  //pos表示字符显示位置,0~31  
 {   
    unsigned char i = 0;   
    LCD_write_command(0x01); //清屏 
    delay_nms(5);  

    if(pos==2)  
    {   
      //LCD_en_write();
       LCD_write_command(0xc0);
       delay_nms(5);    
    }   
    while(i < length)  
    {      
        LCD_write_data(DData[i++]);  
        //length --;
    }  
 
 }

内容被我改成了上面的样子,因为最初我觉得数组指令相互掺杂着可能是造成乱码的原因,找到原因了也没改回来,就这么用吧

一切准备好,下载发现根本就没有显示

非常奇怪,同样的源码,放在不同的工程现象怎么会不一样呢?百思不得其解,继续放大招,逻辑分析仪,发现延迟根本不起作用了,本来写的是延迟5ms,结果波形显示400多us。

想到这里想到了一个原因就是编译器给优化了,改变优化选项


选择low,重新生成下载发现成功了,有图为证:



解说:点击ledall闪烁摁钮,控制台发送字符串

{"From":"PC","Addr":"16FE","Type":"Command","Content":"LEDALLFLASH05"}

该字符串通过服务器转发到zigbee网关,zigbee网关经过解析将content内容转发给短地址为16FE的终端,将命令LEDALLFLASH05转发给终端

改天没什么事情 的时候再改一改android上位机,改成用手机远程遥控的。

工具下载请参考 web.nenewind.com

当然像这种类操作系统的程序,大量的延迟是不应该的,应该利用定时器的功能,把延迟的时间交给操作系统去处理其他的事情。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:90614次
    • 积分:1504
    • 等级:
    • 排名:千里之外
    • 原创:62篇
    • 转载:1篇
    • 译文:0篇
    • 评论:10条
    文章分类
    最新评论