智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 15024|回复: 11
打印 上一主题 下一主题

【求教】谁做过北科那种键盘加液晶调参的,希望能学习一下

[复制链接]

1

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
160
威望
92
贡献
60
兑换币
60
注册时间
2018-11-4
在线时间
4 小时
跳转到指定楼层
1#
发表于 2019-12-10 21:57:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
类似于图片这种,我能想到的是用CH355做  这样oled加键盘只需要一对ic但是程序这块一致搞不定,希望大佬可以教一下
下面是我的程序:
ch455。c
/*********************************************************************/
* * 函数功能:IIC产生起始信号函数 * 输入参数:无 * 输出参数:无 */
void CH455_I2c_Start()
{   
  DIR_OUT();   
  SCL1();   //SCL = high;   
  simiic_delay();
  SDA1();   //SDA = high;   
  simiic_delay();  
  SDA0();    //SDA = low;   
  simiic_delay();   
  SCL0();    //SCL = low;   
  simiic_delay();
}
/* * 函数功能:IIC产生停止信号 * 输入参数:无 * 输出参数:无 */
void CH455_I2c_Stop()
{   
  DIR_OUT();   
  SCL0();     //SCL = low;   
  simiic_delay();   
  SDA0();     //SDA = low;   
  simiic_delay();   
  SCL1();    //SCL = high;   
  simiic_delay();   
  SDA1();    //SDA = high;   

void CH455_I2c_WrByte(unsigned char IIC_Byte)
{   
  unsigned char i;   
  DIR_OUT();
  for(i = 0; i < 8; i++)   
  {        
    if(IIC_Byte & 0x80)            
      SDA1();   //SDA=high;        
    else            
      SCL0();  //SDA=low;        
    simiic_delay();      
    SCL1();      //SCL=high;        
   simiic_delay();      
    SCL0();       //SCL=low;        
    simiic_delay();      
    IIC_Byte<<=1;   
  }   
  simiic_delay();
  SDA1();          //SDA=1;   
  simiic_delay();  
  SCL1();          //SCL=1;   
  simiic_delay();
  SCL0();           //SCL=0;   
  simiic_delay();
}
unsigned char  CH455_I2c_RdByte( void )  //读一个字节数据
{        
  unsigned char i, bytedata;   
  DIR_IN();    //将数据设置为输入模式   
  simiic_delay();   
  SDA1();      //数据线拉高   
simiic_delay();  
  SDA0();   
simiic_delay();   
    for(i = 0; i < 8; i++)      //读8位数据   
    {        
      SCL1();        
      simiic_delay();      
      bytedata <<= 1;        
      simiic_delay();   
      bytedata |= (gpio_get(SEEKFREE_SDA));        
      simiic_delay();   
      SCL0();      
      simiic_delay();
    }   
    DIR_OUT();          //数据线设置回输出模式   
    SDA1();         //SDA=1;   
   simiic_delay();
    SCL1();         //SCL=1;   
   simiic_delay();  
   SCL0();           //SCL=0;   
   simiic_delay();  
    return bytedata;//返回数据
}
void CH455_Write( uint16 cmd ) //写命令
{
        CH455_I2c_Start();               //启动总线   
// simiic_start();
        CH455_I2c_WrByte(((uint8)(cmd>>7)&CH455_I2C_MASK)|CH455_I2C_ADDR);   
        CH455_I2c_WrByte((uint8)cmd);     //发送数据   
        CH455_I2c_Stop();                 //结束总线
    //    simiic_stop();
}
extern uint8 keycode;
uint8 CH455_Read( void )  //读取按键
{
//  uint8 keycode;   
  // simiic_start();
  CH455_I2c_Start();                //启动总线   
  CH455_I2c_WrByte((uint8)(CH455_GET_KEY>>7)&CH455_I2C_MASK|0x01|CH455_I2C_ADDR);   
  keycode=CH455_I2c_RdByte();      //读取数据
//simiic_stop();
   CH455_I2c_Stop();                //结束总线
  return keycode;
}
/********************************************************************************/
ch455.h
/********************************************************************************/
* ********************************************************************************************* */
// 设置系统参数命令
#define CH455_BIT_ENABLE 0x01  // 开启/关闭位
#define CH455_BIT_SLEEP  0x04  // 睡眠控制位
#define CH455_BIT_7SEG  0x08  // 7段控制位
#define CH455_BIT_INTENS1 0x10  // 1级亮度
#define CH455_BIT_INTENS2 0x20  // 2级亮度
#define CH455_BIT_INTENS3 0x30  // 3级亮度
#define CH455_BIT_INTENS4 0x40  // 4级亮度
#define CH455_BIT_INTENS5 0x50  // 5级亮度
#define CH455_BIT_INTENS6 0x60  // 6级亮度
#define CH455_BIT_INTENS7 0x70  // 7级亮度
#define CH455_BIT_INTENS8 0x00  // 8级亮度
#define CH455_SYSOFF     0x0400           // 关闭显示、关闭键盘
#define CH455_SYSON         ( CH455_SYSOFF | CH455_BIT_ENABLE ) // 开启显示、键盘
#define CH455_SLEEPOFF     CH455_SYSOFF // 关闭睡眠
#define CH455_SLEEPON     ( CH455_SYSOFF | CH455_BIT_SLEEP ) // 开启睡眠
#define CH455_7SEG_ON     ( CH455_SYSON | CH455_BIT_7SEG ) // 开启七段模式
#define CH455_8SEG_ON     ( CH455_SYSON | 0x00 )         // 开启八段模式
#define CH455_SYSON_4     ( CH455_SYSON | CH455_BIT_INTENS4 ) // 开启显示、键盘、4级亮度
#define CH455_SYSON_8     ( CH455_SYSON | CH455_BIT_INTENS8 ) // 开启显示、键盘、8级亮度
   
// 加载字数据命令
#define CH455_DIG0  0x1400   // 数码管位0显示,需另加8位数据
#define CH455_DIG1  0x1500   // 数码管位1显示,需另加8位数据
#define CH455_DIG2  0x1600   // 数码管位2显示,需另加8位数据
#define CH455_DIG3  0x1700   // 数码管位3显示,需另加8位数据
   
// 读取按键代码命令
#define CH455_GET_KEY 0x0700     // 获取按键,返回按键代码

// CH455接口定义
#define  CH455_I2C_ADDR  0x40   // CH455的地址
#define  CH455_I2C_MASK  0x3E   // CH455的高字节命令掩码


/****************************************************************/
留的是硬件IIC引脚
    //因此这里使用硬件IIC初始化6050,如需使用软件IIC,可以将软件iic引脚修改为SDA 接A13  SCL接A14
    //然后使用软件IIC初始化函数即可
    //硬件IIC速度明显优于软件IIC
   // mpu6050_init_hardware();
   
    EnableInterrupts;
    while(1)
    {
          CH455_Write( CH455_SYSON );         //抗干扰,定时刷新CH455寄存器  
//          CH455_Write( CH455_DIG0 | 0XFF );   
          switch((CH455_Read()/8)%8)   
          {   
                    case 0:key=0;break;   
                    case 1:key=1;break;   
                    case 2:key=2;break;   
                    case 3:key=3;break;   
                    case 4:key=4;break;   
                    case 5:key=5;break;   
                    case 6:key=6;break;   
          default:  key=10;  
          }
   }
}
求大佬指教

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

13

主题

96

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2964
QQ
威望
1586
贡献
1092
兑换币
1048
注册时间
2014-4-9
在线时间
143 小时
毕业学校
山达电子工作室
2#
发表于 2019-12-11 10:37:01 | 只看该作者
这个是哪里的视频?
回复 支持 反对

使用道具 举报

16

主题

220

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5191
威望
2784
贡献
1719
兑换币
1865
注册时间
2018-4-22
在线时间
344 小时
3#
发表于 2019-12-11 13:39:41 | 只看该作者
如果不是io特别少的芯片,不非得用这个吧
回复 支持 反对

使用道具 举报

12

主题

344

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6706
威望
3495
贡献
2139
兑换币
2373
注册时间
2018-7-12
在线时间
536 小时
4#
发表于 2019-12-11 21:33:22 | 只看该作者
不一定要键盘,这样太浪费板子面积了。至于算法方面,搞个结构体就能做液晶调参了,自个多琢磨吧
回复 支持 反对

使用道具 举报

3

主题

346

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7317

活跃会员奖章优秀会员奖章论坛元老奖章在线王奖章

威望
3766
贡献
2655
兑换币
2481
注册时间
2016-5-3
在线时间
448 小时
5#
发表于 2019-12-12 09:54:38 | 只看该作者
4楼正解,一个五向解决问题
回复 支持 反对

使用道具 举报

56

主题

4914

帖子

3

精华

顶级版主

北京科技大学智能汽车队公共主页管理员

Rank: 11Rank: 11Rank: 11Rank: 11

积分
56131

特殊贡献奖章资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
19568
贡献
13933
兑换币
3365
注册时间
2010-7-22
在线时间
11315 小时
6#
发表于 2019-12-12 10:54:51 | 只看该作者
优乐美 发表于 2019-12-11 10:37
这个是哪里的视频?

电磁受地下钢筋影响.mp4
回复 支持 反对

使用道具 举报

56

主题

4914

帖子

3

精华

顶级版主

北京科技大学智能汽车队公共主页管理员

Rank: 11Rank: 11Rank: 11Rank: 11

积分
56131

特殊贡献奖章资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
19568
贡献
13933
兑换币
3365
注册时间
2010-7-22
在线时间
11315 小时
7#
发表于 2019-12-12 11:01:25 | 只看该作者
IIC总线受上下文影响比较大,新手建议用SPI总线的器件
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

注册会员

Rank: 2

积分
72
威望
44
贡献
28
兑换币
31
注册时间
2019-11-27
在线时间
0 小时
8#
发表于 2019-12-12 21:02:58 | 只看该作者
我们用的摇杆,感觉也不错
回复 支持 反对

使用道具 举报

13

主题

96

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2964
QQ
威望
1586
贡献
1092
兑换币
1048
注册时间
2014-4-9
在线时间
143 小时
毕业学校
山达电子工作室
9#
发表于 2020-1-10 18:02:55 | 只看该作者
附件为模块演示视频  1.3寸OLED+ch455矩阵键盘+无源蜂鸣器  IIC驱动接口

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

13

主题

96

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2964
QQ
威望
1586
贡献
1092
兑换币
1048
注册时间
2014-4-9
在线时间
143 小时
毕业学校
山达电子工作室
10#
发表于 2020-1-11 11:10:54 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-28 00:25 , Processed in 0.050544 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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