久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1842|回復: 3
打印 上一主題 下一主題
收起左側

51單片機驅動TM1637 固定地址 程序能優化嗎?

[復制鏈接]
跳轉到指定樓層
樓主
ID:1010435 發表于 2022-8-29 09:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我是個單片機愛好者,喜歡驅動各類數碼管,網上TM1637都是地址+1模式,我改了個固定地址模式,請問我這種代碼能優化簡寫嗎?這個代碼仿真通過了。不是很懂C語言。
  1. void SmgDisplay(unsigned char Wei,i) //寫顯示寄存器
  2. {

  3. I2CStart();
  4. I2CWrByte(0x44); // 40H 地址自動加 1 模式,44H 固定地址模式,本程序采用固定地址模式

  5. I2CStop();
  6. I2CStart();
  7.         if(Wei==1)
  8.         {
  9.          I2CWrByte(0xc0); //設置 地址,
  10.          I2CWrByte(Num[i]); //送數據
  11.          I2CStop();
  12.          I2CStart();
  13.          I2CWrByte(0xc1); //設置 地址,
  14.          I2CWrByte(Numoff); //送數據
  15.          I2CStop();
  16.          I2CStart();
  17.          I2CWrByte(0xc2); //設置 地址,
  18.          I2CWrByte(Numoff); //送數據
  19.          I2CStop();
  20.          I2CStart();
  21.          I2CWrByte(0xc3); //設置 地址,
  22.          I2CWrByte(Numoff); //送數據       
  23.          I2CStop();
  24.          I2CStart();
  25.          I2CWrByte(0xc4); //設置 地址,
  26.          I2CWrByte(Numoff); //送數據       
  27.          I2CStop();
  28.          I2CStart();
  29.          I2CWrByte(0xc5); //設置 地址,
  30.          I2CWrByte(Numoff); //送數據       
  31.          I2CStop();
  32.          I2CStart();       
  33.         }
  34.         if(Wei==2)
  35.         {
  36.          I2CWrByte(0xc0); //設置 地址,
  37.          I2CWrByte(Numoff); //送數據
  38.          I2CStop();
  39.          I2CStart();
  40.          I2CWrByte(0xc1); //設置 地址,
  41.          I2CWrByte(Num[i]); //送數據
  42.          I2CStop();
  43.          I2CStart();
  44.          I2CWrByte(0xc2); //設置 地址,
  45.          I2CWrByte(Numoff); //送數據
  46.          I2CStop();
  47.          I2CStart();
  48.          I2CWrByte(0xc3); //設置 地址,
  49.          I2CWrByte(Numoff); //送數據       
  50.          I2CStop();
  51.          I2CStart();
  52.          I2CWrByte(0xc4); //設置 地址,
  53.          I2CWrByte(Numoff); //送數據       
  54.          I2CStop();
  55.          I2CStart();
  56.          I2CWrByte(0xc5); //設置 地址,
  57.          I2CWrByte(Numoff); //送數據       
  58.          I2CStop();
  59.          I2CStart();       
  60.         }
  61.         if(Wei==3)
  62.         {
  63.          I2CWrByte(0xc0); //設置 地址,
  64.          I2CWrByte(Numoff); //送數據
  65.          I2CStop();
  66.          I2CStart();
  67.          I2CWrByte(0xc1); //設置 地址,
  68.          I2CWrByte(Numoff); //送數據
  69.          I2CStop();
  70.          I2CStart();
  71.          I2CWrByte(0xc2); //設置 地址,
  72.          I2CWrByte(Num[i]); //送數據
  73.          I2CStop();
  74.          I2CStart();
  75.          I2CWrByte(0xc3); //設置 地址,
  76.          I2CWrByte(Numoff); //送數據       
  77.          I2CStop();
  78.          I2CStart();
  79.          I2CWrByte(0xc4); //設置 地址,
  80.          I2CWrByte(Numoff); //送數據       
  81.          I2CStop();
  82.          I2CStart();
  83.          I2CWrByte(0xc5); //設置 地址,
  84.          I2CWrByte(Numoff); //送數據       
  85.          I2CStop();
  86.          I2CStart();       
  87.         }
  88.         if(Wei==4)
  89.         {
  90.          I2CWrByte(0xc0); //設置 地址,
  91.          I2CWrByte(Numoff); //送數據
  92.          I2CStop();
  93.          I2CStart();
  94.          I2CWrByte(0xc1); //設置 地址,
  95.          I2CWrByte(Numoff); //送數據
  96.          I2CStop();
  97.          I2CStart();
  98.          I2CWrByte(0xc2); //設置 地址,
  99.          I2CWrByte(Numoff); //送數據
  100.          I2CStop();
  101.          I2CStart();
  102.          I2CWrByte(0xc3); //設置 地址,
  103.          I2CWrByte(Num[i]); //送數據       
  104.          I2CStop();
  105.          I2CStart();
  106.          I2CWrByte(0xc4); //設置 地址,
  107.          I2CWrByte(Numoff); //送數據       
  108.          I2CStop();
  109.          I2CStart();
  110.          I2CWrByte(0xc5); //設置 地址,
  111.          I2CWrByte(Numoff); //送數據       
  112.          I2CStop();
  113.          I2CStart();       
  114.         }
  115.         if(Wei==5)
  116.         {
  117.          I2CWrByte(0xc0); //設置 地址,
  118.          I2CWrByte(Numoff); //送數據
  119.          I2CStop();
  120.          I2CStart();
  121.          I2CWrByte(0xc1); //設置 地址,
  122.          I2CWrByte(Numoff); //送數據
  123.          I2CStop();
  124.          I2CStart();
  125.          I2CWrByte(0xc2); //設置 地址,
  126.          I2CWrByte(Numoff); //送數據
  127.          I2CStop();
  128.          I2CStart();
  129.          I2CWrByte(0xc3); //設置 地址,
  130.          I2CWrByte(Numoff); //送數據       
  131.          I2CStop();
  132.          I2CStart();
  133.          I2CWrByte(0xc4); //設置 地址,
  134.          I2CWrByte(Num[i]); //送數據       
  135.          I2CStop();
  136.          I2CStart();
  137.          I2CWrByte(0xc5); //設置 地址,
  138.          I2CWrByte(Numoff); //送數據       
  139.          I2CStop();
  140.          I2CStart();       
  141.         }
  142.         if(Wei==6)
  143.         {
  144.          I2CWrByte(0xc0); //設置 地址,
  145.          I2CWrByte(Numoff); //送數據
  146.          I2CStop();
  147.          I2CStart();
  148.          I2CWrByte(0xc1); //設置 地址,
  149.          I2CWrByte(Numoff); //送數據
  150.          I2CStop();
  151.          I2CStart();
  152.          I2CWrByte(0xc2); //設置 地址,
  153.          I2CWrByte(Numoff); //送數據
  154.          I2CStop();
  155.          I2CStart();
  156.          I2CWrByte(0xc3); //設置 地址,
  157.          I2CWrByte(Numoff); //送數據       
  158.          I2CStop();
  159.          I2CStart();
  160.          I2CWrByte(0xc4); //設置 地址,
  161.          I2CWrByte(Numoff); //送數據       
  162.          I2CStop();
  163.          I2CStart();
  164.          I2CWrByte(0xc5); //設置 地址,
  165.          I2CWrByte(Num[i]); //送數據       
  166.          I2CStop();
  167.          I2CStart();       
  168.         }       
  169. I2CWrByte(0x8f); //開顯示 ,最大亮度

  170. I2CStop();
復制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:404160 發表于 2022-9-6 17:17 | 只看該作者
可以用do。。。while循環或for循環語句簡化。
回復

使用道具 舉報

板凳
ID:624769 發表于 2022-9-8 00:07 | 只看該作者
要優化的話……
第一步就是 改成 地址+1 模式。
你還想優化么?
回復

使用道具 舉報

地板
ID:1010435 發表于 2022-9-23 15:54 | 只看該作者
閑來無事,優化了一下,現在好點了。

  1.         for(j=0;j<6;j++)
  2.         {
  3.                 if(Wei==j)
  4.                 {
  5.                  I2CWrByte(0xc0+j); //設置 地址,
  6.                  I2CWrByte(Num[i]); //送數據
  7.                  I2CStop();
  8.                  I2CStart();               
  9.                 }
  10.                 else
  11.                 {
  12.                  I2CWrByte(0xc0+j); //設置 地址,
  13.                  I2CWrByte(Numoff); //送數據
  14.                  I2CStop();
  15.                  I2CStart();                
  16.                 }

  17.         }
復制代碼
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品在线一区二区三区 | 福利一区视频 | 日韩色图视频 | 国产精品成人av | 最新中文字幕久久 | 日韩福利视频 | 亚洲一区国产精品 | 欧美精品一区二区三区在线播放 | 一级全黄视频 | 在线观看国产 | 91精品国产综合久久久久久漫画 | 狠狠操狠狠操 | 日韩欧美中文在线 | 亚洲精品一区二区三区在线 | 精品久久久一区二区 | 一级毛片视频在线观看 | 国产亚洲精品久久19p | 成年人在线视频 | 精品久久99 | 欧美日韩大陆 | 久久国产亚洲 | 欧美午夜剧场 | 91电影在线| 久久久观看 | 2018天天干天天操 | 免费观看黄a一级视频 | 九九精品视频在线 | 欧美中文在线 | 欧美精品在线免费观看 | 欧美在线高清 | 一区二区三区免费 | 成人伊人 | 欧美久久国产 | 女人牲交视频一级毛片 | 免费观看的av | 日韩在线免费视频 | 国产精品久久久久9999鸭 | 国产一区二区精华 | 中文字幕国产视频 | 成人激情视频在线播放 | 中文字幕在线视频观看 |