找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4918|回復(fù): 4
收起左側(cè)

求TM1638控制程序。。

[復(fù)制鏈接]
ID:158574 發(fā)表于 2017-6-19 10:08 | 顯示全部樓層 |閱讀模式
用的STM32F103,驅(qū)動(dòng)程序借助單片機(jī)的做了修改,按鍵程序搞不太明白,所以沒(méi)辦法實(shí)現(xiàn)按鍵數(shù)碼管+-和移位,求解答

  1. uint8_t Read_Key()
  2. {
  3.         uint8_t i=0;
  4.         uint8_t key1=0;
  5.         uint16_t key2=0;
  6.         Write_Cmd(0x42);
  7.         Set(DIO);                       //this is obligatory, check the data sheet,GPIO
  8.         for(i=0;i<4;i++)
  9.         {
  10.           key1=Read_Byte();
  11.           key2|=(key1<<i);
  12.         }
  13.         key2>>=1;
  14.         for(i=0;i<8;i++)
  15.         {
  16.           if(0x01<<i==key2)return i+1;
  17.         }
  18.         return 0;
  19. }

  20. /***********************************************************************************************
  21. *Function Name: TM1638_SendData               
  22. *Purpose      : Write data to the location specified
  23. *params       : i     ------the bit code of digtal tube,0 to 7
  24.                 str   ------the string,the char which was not in tm_data will be replace with "''".
  25. *return       : none
  26. ***********************************************************************************************/
  27. void TM1638_SendData(uint8_t i,uint8_t * str){
  28.         int j=0,k=0;
  29.         unsigned char chr;
  30.         for(;i<8;i++)
  31.         {
  32.                 k=0;
  33.                 for(j=0;j<14;j++)
  34.                 {
  35.                         if(*str==tm_dat[0][j])
  36.                         {
  37.                                 chr=tm_dat[1][j];
  38.                                 k=1;
  39.                                 break;
  40.                         }
  41.                 }
  42.                
  43.                 if(k==0)
  44.                 {
  45.                         chr=0x00;
  46.                 }
  47.                
  48.                 if(*(str+1)=='.')
  49.                 {
  50.                         chr|=0x80;
  51.                         Write_Dat(i*2,chr);
  52.                         str++;
  53.                 }else
  54.                 {
  55.                         Write_Dat(i*2,chr);
  56.                 }
  57.                 str++;
  58.                 if(*str=='\0')break;
  59.         }
  60. }
  61. 這個(gè)TM1638_SendData看不懂啊,怎么用?
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:199141 發(fā)表于 2017-10-24 20:05 | 顯示全部樓層
你的能掃到案件按鍵的數(shù)據(jù)嗎?
我的不能,但你的其他問(wèn)題我可以解決
回復(fù)

使用道具 舉報(bào)

ID:884711 發(fā)表于 2022-8-17 09:59 | 顯示全部樓層
還是被按鍵困擾 ,用各大佬的成熟程序做測(cè)試,明明用的是k3線的按鍵,電路圖中加入k2線的8個(gè)按鍵居然有7個(gè)按鍵可以控制程序的運(yùn)行,搞不懂該如何處理
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2022-8-17 12:44 來(lái)自觸屏版 | 顯示全部樓層
haide1998 發(fā)表于 2022-8-17 09:59
還是被按鍵困擾 ,用各大佬的成熟程序做測(cè)試,明明用的是k3線的按鍵,電路圖中加入k2線的8個(gè)按鍵居然有7個(gè) ...

加電容
回復(fù)

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2024-2-2 17:03 | 顯示全部樓層
haide1998 發(fā)表于 2022-8-17 09:59
還是被按鍵困擾 ,用各大佬的成熟程序做測(cè)試,明明用的是k3線的按鍵,電路圖中加入k2線的8個(gè)按鍵居然有7個(gè) ...

你好,我是可以讀按鍵,只是有電磁干擾時(shí)沒(méi)有按鍵也會(huì)讀到不一定是哪個(gè)按鍵就有動(dòng)作了,所以不太敢用,不知道咋辦了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表