智能車制作

 找回密碼
 注冊

掃一掃,訪問微社區

QQ登錄

只需一步,快速開始

查看: 1521|回復: 9
打印 上一主題 下一主題

【求教】誰做過北科那種鍵盤加液晶調參的,希望能學習一下

[復制鏈接]

1

主題

1

帖子

0

精華

注冊會員

Rank: 2

積分
113
威望
63
貢獻
42
兌換幣
40
注冊時間
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
分享到:  微信微信 QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 轉播轉播 分享分享 頂 踩
回復

使用道具 舉報

13

主題

71

帖子

0

精華

金牌會員

Rank: 6Rank: 6

積分
2516
QQ
威望
1319
貢獻
911
兌換幣
865
注冊時間
2014-4-9
在線時間
143 小時
畢業學校
山達電子工作室
2#
發表于 2019-12-11 10:37:01 | 只看該作者
這個是哪里的視頻?
回復 支持 反對

使用道具 舉報

16

主題

196

帖子

0

精華

常駐嘉賓

Rank: 8Rank: 8

積分
4274
威望
2226
貢獻
1360
兌換幣
1486
注冊時間
2018-4-22
在線時間
344 小時
3#
發表于 2019-12-11 13:39:41 | 只看該作者
如果不是io特別少的芯片,不非得用這個吧
回復 支持 反對

使用道具 舉報

12

主題

289

帖子

0

精華

常駐嘉賓

Rank: 8Rank: 8

積分
5394
威望
2687
貢獻
1635
兌換幣
1819
注冊時間
2018-7-12
在線時間
536 小時
4#
發表于 2019-12-11 21:33:22 | 只看該作者
不一定要鍵盤,這樣太浪費板子面積了。至于算法方面,搞個結構體就能做液晶調參了,自個多琢磨吧
回復 支持 反對

使用道具 舉報

3

主題

319

帖子

0

精華

跨屆大俠

Rank: 10Rank: 10Rank: 10

積分
6093

活躍會員獎章優秀會員獎章論壇元老獎章在線王獎章

威望
3047
貢獻
2150
兌換幣
1994
注冊時間
2016-5-3
在線時間
448 小時
5#
發表于 2019-12-12 09:54:38 | 只看該作者
4樓正解,一個五向解決問題
回復 支持 反對

使用道具 舉報

53

主題

4857

帖子

3

精華

頂級版主

北京科技大學智能汽車隊公共主頁管理員

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

積分
54649

特殊貢獻獎章資源大師獎章論壇骨干獎章推廣達人獎章優秀版主獎章熱心會員獎章論壇元老獎章在線王獎章活躍會員獎章優秀會員獎章

威望
18680
貢獻
13339
兌換幣
2764
注冊時間
2010-7-22
在線時間
11315 小時
6#
發表于 2019-12-12 10:54:51 | 只看該作者
優樂美 發表于 2019-12-11 10:37
這個是哪里的視頻?

電磁受地下鋼筋影響.mp4
回復 支持 反對

使用道具 舉報

53

主題

4857

帖子

3

精華

頂級版主

北京科技大學智能汽車隊公共主頁管理員

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

積分
54649

特殊貢獻獎章資源大師獎章論壇骨干獎章推廣達人獎章優秀版主獎章熱心會員獎章論壇元老獎章在線王獎章活躍會員獎章優秀會員獎章

威望
18680
貢獻
13339
兌換幣
2764
注冊時間
2010-7-22
在線時間
11315 小時
7#
發表于 2019-12-12 11:01:25 | 只看該作者
IIC總線受上下文影響比較大,新手建議用SPI總線的器件
回復 支持 反對

使用道具 舉報

0

主題

11

帖子

0

精華

注冊會員

Rank: 2

積分
67
威望
41
貢獻
26
兌換幣
29
注冊時間
2019-11-27
在線時間
0 小時
8#
發表于 2019-12-12 21:02:58 | 只看該作者
我們用的搖桿,感覺也不錯
回復 支持 反對

使用道具 舉報

13

主題

71

帖子

0

精華

金牌會員

Rank: 6Rank: 6

積分
2516
QQ
威望
1319
貢獻
911
兌換幣
865
注冊時間
2014-4-9
在線時間
143 小時
畢業學校
山達電子工作室
9#
發表于 2020-1-10 18:02:55 | 只看該作者
附件為模塊演示視頻  1.3寸OLED+ch455矩陣鍵盤+無源蜂鳴器  IIC驅動接口

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
回復 支持 反對

使用道具 舉報

13

主題

71

帖子

0

精華

金牌會員

Rank: 6Rank: 6

積分
2516
QQ
威望
1319
貢獻
911
兌換幣
865
注冊時間
2014-4-9
在線時間
143 小時
畢業學校
山達電子工作室
10#
發表于 2020-1-11 11:10:54 | 只看該作者
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

關于我們|聯系我們|小黑屋|智能車制作 ( 京ICP備14023231號-8

GMT+8, 2020-2-27 06:27 , Processed in 0.120101 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表
好孝心能赚钱吗