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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1940|回復: 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();
復制代碼




回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩视频在线观看中文字幕 | 午夜视频导航 | www4虎| 免费h视频| 国产91久久精品一区二区 | 欧美成人精品 | 99热国产在线播放 | 精品欧美激情在线观看 | 在线观看免费av网 | 亚洲欧美综合 | 九九热在线视频 | 91精品麻豆日日躁夜夜躁 | 天天干.com| 国产精品久久久精品 | 日韩在线观看一区 | 伊人色综合久久久天天蜜桃 | 久久高清免费视频 | 久久成人高清视频 | 国内精品久久久久久久 | 国产精品福利视频 | 国产精品日韩高清伦字幕搜索 | 一区二区影院 | 青青草一区 | 国产精品欧美一区喷水 | 夜夜爽夜夜操 | 中文字幕韩在线第一页 | 中文字幕第二区 | 国产欧美一区二区三区日本久久久 | 日韩欧美亚洲 | 亚洲欧洲在线看 | 亚洲精品乱码久久久久久9色 | 在线高清免费观看视频 | 一区二区三区精品 | 日韩在线视频一区二区三区 | 久久大 | 偷拍自拍在线观看 | 日日干日日操 | 伊人伊人 | 亚洲第一视频网站 | 黄色一级视频免费 | 91综合在线观看 |