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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機Proteus仿真TLC1543/tlc1549三檔電流表測量源程序

[復制鏈接]
跳轉到指定樓層
樓主
三檔電流表測量,可以測量三種不同擋位電流,電流最小擋位時,需要進行放大電路放大。TLC1543/tlc1549進行AD采集
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg52.h>
  2. #include"lcd.h"
  3. #include "TLC1543.h"
  4. #include "TLC1549.h"
  5. #include <string.h>


  6. sbit         key1 = P1^3;        //對應按鍵,低電平有效  
  7. sbit         key2 = P1^4;        //對應按鍵,低電平有效
  8. sbit         key3 = P1^5;        //對應按鍵,低電平有效

  9. //--定義全局變量--//
  10. unsigned int dianya;
  11. unsigned int ad;
  12. unsigned char a;


  13. unsigned char code kaiji1[14] = "Welcome to use";
  14. unsigned char code kaiji2[12] = "this product";
  15. unsigned char code kaiji3[13] = "Please select";
  16. unsigned char code dis1[16] = "LiangCheng0.002A";
  17. unsigned char code dis2[16] = "LiangCheng:0.02A";
  18. unsigned char code dis3[16] = "LiangCheng: 0.2A";

  19. /*******************************************************************************
  20. * 函 數 名         : Delay10ms
  21. * 函數功能                   : 延時函數,延時10ms
  22. * 輸    入         : 無
  23. * 輸    出         : 無
  24. *******************************************************************************/

  25. void Delay10ms(unsigned int c)   //誤差 0us
  26. {
  27.     unsigned char a, b;

  28.         //--c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了--//
  29.     for (;c>0;c--)
  30.         {
  31.                 for (b=38;b>0;b--)
  32.                 {
  33.                         for (a=130;a>0;a--);
  34.                 }
  35.            
  36.         }      
  37. }

  38. /*******************************************************************************
  39. * 函數名         : main
  40. * 函數功能                   : 主函數
  41. * 輸入           : 無
  42. * 輸出                  : 無
  43. *******************************************************************************/

  44. void main()
  45. {         

  46.         unsigned char i;

  47.         LcdInit();                         //初始化LCD1602
  48.     LcdWriteCom(0x80);        //寫地址 80表示初始地址
  49.         for(i=0; i<14; i++)
  50.         {
  51.                 LcdWriteData(kaiji1[i]);
  52.         }
  53.                 LcdWriteCom(0xc0);        //寫地址 c0表示初始地址
  54.         for(i=0; i<12; i++)
  55.         {
  56.                 LcdWriteData(kaiji2[i]);
  57.         }
  58.         Delay10ms(80);
  59.         LcdWriteCom(0x01);  //清屏
  60.         while(1)
  61.           {
  62.          
  63.           
  64.                                         ad=ReadADC_TLC1543(0);                                        //啟動AD轉換

  65.         if(key1==0)
  66.                 {
  67.                        
  68.                     LcdWriteCom(0x80);        //寫地址 80表示初始地址
  69.                           for(i=0; i<16; i++)
  70.                         {
  71.                                 LcdWriteData(dis1[i]);
  72.                         }
  73.             dianya=ad*0.44432;          //放大1000倍,為了取小數點后兩位
  74.                         dianya*100;
  75.                    LcdWriteCom(0xc0+2);        //寫地址 80表示初始地址
  76.                 LcdWriteData('0'+dianya%10000/1000);               
  77.                
  78.                 LcdWriteData('0'+dianya%1000/100);
  79.                 LcdWriteData('0'+dianya%100/10);
  80.                         LcdWriteData('.');
  81.                 LcdWriteData('0'+dianya%10);
  82.                 LcdWriteData('m');
  83.                         LcdWriteData('A');
  84.                 }
  85.                
  86.                
  87.                


  88.                  else if(key2 ==0)
  89.                 {
  90.          
  91.                     LcdWriteCom(0x80);        //寫地址 80表示初始地址
  92.                         for(i=0; i<16; i++)
  93.                         {
  94.                                 LcdWriteData(dis2[i]);
  95.                         }
  96.                  dianya=(ad*5*10)/1023;          //放大10倍,為了取小數點后1位
  97.                         dianya=dianya*100;
  98.                    LcdWriteCom(0xc0+2);        //寫地址 80表示初始地址               
  99.                 LcdWriteData('0'+dianya%10000/1000);
  100.                 LcdWriteData('0'+dianya%1000/100);
  101.                 LcdWriteData('0'+dianya%100/10);
  102.                 LcdWriteData('.');
  103.                 LcdWriteData('0'+dianya%10);
  104.                 LcdWriteData('m');
  105.                         LcdWriteData('A');
  106.                 }

  107.                  else if(key3 ==0)
  108.                 {
  109.                        
  110.                     LcdWriteCom(0x80);        //寫地址 80表示初始地址
  111.                         for(i=0; i<16; i++)
  112.                         {
  113.                                 LcdWriteData(dis3[i]);
  114.                         }
  115.                                  dianya=(ad*5*10)/1023;          //放大10倍,為了取小數點后1位
  116.                         dianya=dianya*100;
  117.                    LcdWriteCom(0xc0+2);        //寫地址 80表示初始地址               
  118.                 LcdWriteData('0'+dianya%10000/1000);
  119.                 LcdWriteData('0'+dianya%1000/100);
  120.                 LcdWriteData('0'+dianya%100/10);
  121.                 LcdWriteData('.');
  122.                 LcdWriteData('0'+dianya%10);
  123.                 LcdWriteData('m');
  124.                         LcdWriteData('A');
  125.                 }
  126.                          else
  127.                          {
  128.                           LcdWriteCom(0x01);  //清屏
  129.                            LcdWriteCom(0x80);        //寫地址 80表示初始地址
  130.                                 for(i=0; i<13; i++)
  131.                                 {
  132.                                         LcdWriteData(kaiji3[i]);
  133.                                 }
  134.                                 Delay10ms(50);
  135.                                 LcdWriteCom(0x01);  //清屏
  136.                          }
  137.                 Delay10ms(1);
  138.           }
  139.         }
復制代碼

Proteus8.8仿真Keil代碼51hei附件下載:
三量程電流表.rar (124.18 KB, 下載次數: 65)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:102963 發表于 2021-11-19 09:42 | 只看該作者
被測電流從哪里看,或者從哪里輸入?沒看懂!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产91一区二区三区 | 久久成人精品视频 | 97精品视频在线观看 | 久久久国产一区二区三区四区小说 | www.操.com| 国产我和子的乱视频网站 | 亚洲综合色站 | 91av视频在线观看 | 欧美一级免费看 | 久久精品| 国产精品一区二区三区在线播放 | 99热精品国产 | 色视频一区二区 | 亚洲在线 | aaa一区| 一级a爱片性色毛片免费 | 午夜影晥 | 成人精品毛片 | 亚洲精品久久嫩草网站秘色 | 久久福利网站 | 久久99精品久久久久 | 九九视频在线观看视频6 | 日韩一| 欧美成年人视频在线观看 | 国产精品久久久久久久久久三级 | 精品欧美激情精品一区 | 国产一区二区三区视频 | 精品一区二区三 | 亚洲精品电影网在线观看 | 日韩三级 | 在线观看第一页 | 成人在线观看免费视频 | 国产精品久久久久久久免费大片 | 久久只有精品 | 欧美日韩不卡合集视频 | 国产在线精品一区二区三区 | 国产精品乱码一区二三区小蝌蚪 | 天天操网| 亚洲精品1区2区3区 91免费看片 | 国产成人精品一区二区三 | 色欧美片视频在线观看 |