找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2215|回复: 2
打印 上一主题 下一主题
收起左侧

请各位大神帮忙看一下我这个程序送数据要怎样处理

[复制链接]
跳转到指定楼层
楼主
ID:203572 发表于 2017-6-9 11:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
20黑币
我的显示无字符串函数如下:
uint   Strlen(uchar *p)
{
    uint i;
   for(i=0;*(p+i);i++)
  return i;
}
void dispiay_12864(uchar hang; uchar lie; *p)
{
    uchar i;
    switch(hang)
    {
    case 1:SerialWriteCmd(0x80+lie);break;
    case 2:SerialWriteCmd(0x90+lie);break;
    case 3:SerialWriteCmd(0x88+lie);break;
    case 4:SerialWriteCmd(0x98+lie);break;
    }
   for(i=0;i<Strlen(p);i++)
    {
    SerialWriteData(p[i]);
    }
}
如果我要写一个void display_12864Uchar(uchar hang ; uychar lie ; uchar a)
{

}应该怎样写?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:111634 发表于 2017-6-9 20:33 | 只看该作者
你第一个子函数就错!1.i与p数据类型不同;2.for循环第2个表达式是终值条件判断,*(p+i)错了。
回复

使用道具 举报

板凳
ID:203572 发表于 2017-6-9 20:49 | 只看该作者
zl2168 发表于 2017-6-9 20:33
你第一个子函数就错!1.i与p数据类型不同;2.for循环第2个表达式是终值条件判断,*(p+i)错了。

  1. #include <reg52.h>
  2. #include <string.h>
  3. #include "delay.h"
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. sbit RW=P2^6;  
  7. sbit EN=P2^7;                  //                 注:采用2线时,第15脚PSB接地->GND yuqingshan  2017-06-02
  8. uint Strlen(uchar *p)
  9. {
  10.         uint i;
  11.         for(i=0;*(p+i);i++);
  12.         return i;
  13. }
  14. void WriteBytes(uchar *p)
  15. {
  16.         uchar i,j,temp;
  17.     EN=0;
  18.         for(j=0;j<3;j++)
  19.         {
  20.                 temp=p[j];
  21.                 for(i=0;i<8;i++)
  22.                 {
  23.                         if(temp & 0x80)
  24.                   RW=1;
  25.                 else RW=0;
  26.                         EN=1;
  27.                         delay(1);
  28.                         EN=0;
  29.                         temp<<=1;
  30.                 }
  31.         }
  32.         RW=1;
  33. }
  34. void SerialWriteData(uchar send)
  35. {
  36.         uchar data1[3];
  37.         data1[0]=0xfa ;     //1111 1010向液晶写数据
  38.         data1[1]=send & 0xf0;      //取高4位
  39.         data1[2]=(send<<4)&0xf0;       //取低4位
  40.         WriteBytes(data1);
  41. }
  42. void SerialWriteCmd(uchar send)
  43. {
  44.         uchar data1[3];
  45.         data1[0]=0xf8 ;                    //1111 1000向液晶写命令
  46.         data1[1]=send & 0xf0;      //取高4位
  47.         data1[2]=(send<<4) & 0xf0;       //取低4位
  48.         WriteBytes(data1);        
  49. }
  50. void init_lcd()
  51. {
  52.         SerialWriteCmd(0x0C);
  53.         SerialWriteCmd(0x06);
  54.         SerialWriteCmd(0x01);
  55. }
  56. void display_12864(uchar hang,uchar lie,uchar *p)
  57. {
  58.         uchar i;
  59.         switch(hang)
  60.         {
  61.             case 1:SerialWriteCmd(0x80+lie);break;
  62.             case 2:SerialWriteCmd(0x90+lie);break;
  63.             case 3:SerialWriteCmd(0x88+lie);break;
  64.             case 4:SerialWriteCmd(0x98+lie);break;
  65.         }
  66.         for(i=0;i<strlen(p);i++)
  67.         {
  68.             SerialWriteData(p[i]);
  69.         }   
  70. }   
复制代码

这是12864.c的文件     我整的是一个多级菜单,已经能正常显示,现在是要加上一个送数的子函数。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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