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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機電容測量儀代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:370972 發表于 2018-7-13 15:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
具體見附件,有代碼。

單片機源程序如下:
  1. #include "delay.h"
  2. #include "GPIO.h"
  3. #include "config.h"
  4. #include "lcd_12864.h"
  5. #include "display.h"

  6. sbit key0=P1^0;
  7. sbit key1=P1^1;
  8. sbit key2=P1^2;

  9. sbit big_case=P1^5;
  10. sbit small_case=P1^6;


  11. long int freq,n,cap;
  12. //uchar n;
  13. uchar lcd_i;
  14. uint count_t0,s;
  15. uchar keystate='A';

  16. uchar code dis1[]={"<-電容測量儀->"};
  17. uchar code dis2[]={"頻率:         Hz"};
  18. uchar code dis3[]={"電容:          F"};
  19. uchar code dis4[]={"檔位:"};

  20. uchar code dis_auto[]={"自動擋"};
  21. uchar code dis_big[]={"大量程"};
  22. uchar code dis_small[]={"小量程"};


  23. //端口初始化
  24. void        GPIO_config(void)
  25. {
  26.         GPIO_InitTypeDef        GPIO_InitStructure;
  27.         GPIO_InitStructure.Pin  = GPIO_Pin_All;               
  28.         GPIO_InitStructure.Mode = GPIO_PullUp;               
  29.         GPIO_Inilize(GPIO_P0,&GPIO_InitStructure);
  30. //        GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);
  31.         GPIO_Inilize(GPIO_P2,&GPIO_InitStructure);
  32. //        GPIO_Inilize(GPIO_P3,&GPIO_InitStructure);
  33. }

  34. //定時器0初始化
  35. void Timer0Init(void)                //1毫秒@11.0592MHz--16位自動重裝
  36. {
  37.         AUXR |= 0x80;                //定時器時鐘1T模式
  38.         TMOD &= 0xF0;                //設置定時器模式
  39.         TL0 = 0xCD;                //設置定時初值
  40.         TH0 = 0xD4;                //設置定時初值
  41.         TF0 = 0;                //清除TF0標志
  42.         TR0 = 1;                //定時器0開始計時
  43.        
  44.         ET0=1;
  45.         EA=1;
  46. }

  47. //外部中斷0初始化
  48. void exint0_init()
  49. {
  50.         INT0=1;
  51.         IT0=1;//設置INT0中斷類型(1:僅下降沿;0:上升沿和下降沿)
  52.         EX0=1;//使能INT0
  53. }

  54. void main()
  55. {
  56.        
  57.         GPIO_config();//端口初始化
  58.         lcd_init();//液晶初始化
  59.         Timer0Init();//定時器0初始化
  60.         exint0_init();//外部中斷初始化
  61.        
  62.         //顯示測量變量及檔位
  63.         lcd_dis_str(0,0,dis1);
  64.         lcd_dis_str(1,0,dis2);
  65.         lcd_dis_str(2,0,dis3);
  66.         lcd_dis_str(3,0,dis4);
  67.        
  68.        
  69.        
  70.         while(1)
  71.         {
  72.                 dis_freq(freq);
  73.                 switch(keystate)
  74.                 {
  75.                        
  76.                         //默認自動擋---------------------------------------------
  77.                         case 'A':
  78.                                 lcd_dis_str(3,5,dis_auto);//顯示自動擋
  79.                                
  80.                                 if(freq>40000)
  81.                                 {
  82.                                         big_case=1;
  83.                                         small_case=0;
  84.                                         cap = 1430000000 / (3* (freq+1));//計算電容值
  85.                                 }
  86.                                 else
  87.                                 {
  88.                                         big_case=0;
  89.                                         small_case=1;
  90.                                         cap = 1430000000 / (20001* freq)-27;//計算電容值
  91.                                 }
  92.                                 dis_cap(cap);//顯示電容值
  93.                                
  94.                                 if(key1==0)//key1按下切換到大量程
  95.                                 {
  96.                                         delay_ms(5);
  97.                                         if(key1==0)
  98.                                         {
  99.                                                 keystate='B';
  100.                                                 while(!key1);
  101.                                         }
  102.                                 }
  103.                                
  104.                                 if(key2==0)//key2按下切換到小量程
  105.                                 {
  106.                                         delay_ms(5);
  107.                                         if(key2==0)
  108.                                         {
  109.                                                 keystate='C';
  110.                                                 while(!key2);
  111.                                         }
  112.                                 }
  113.                                 break;
  114.                                
  115.                                
  116.                         //大量程檔位---------------------------------------------------
  117.                         case 'B':
  118.                                
  119.                                 big_case=1;
  120.                                 small_case=0;
  121.                        
  122.                                 cap = 1430000000 / (3* (freq+1));//計算電容值
  123.                                 dis_cap(cap);//顯示電容值
  124.                                 lcd_dis_str(3,5,dis_big);//顯示大量程
  125.                        
  126.                                 if(key0==0)//key0按下切換到自動擋
  127.                                 {
  128.                                         delay_ms(5);
  129.                                         if(key0==0)
  130.                                         {
  131.                                                 keystate='A';
  132.                                                 while(!key0);
  133.                                         }
  134.                                 }
  135.                                
  136.                                 if(key2==0)//key2按下切換到小量程
  137.                                 {
  138.                                         delay_ms(key2==0);
  139.                                         if(key2==0)
  140.                                         {
  141.                                                 keystate='C';
  142.                                                 while(!key2);
  143.                                         }
  144.                                 }
  145.                                 break;
  146.                                
  147.                                
  148.                         //小量程檔位---------------------------------------------
  149.                         case 'C':
  150.                                
  151.                                 big_case=0;
  152.                                 small_case=1;
  153.                                
  154.                                 cap = 1430000000 / (20001* freq)-27;//計算電容值
  155.                                 dis_cap(cap);//顯示電容值
  156.                        
  157.                                 lcd_dis_str(3,5,dis_small);//顯示小檔位
  158.                        
  159.                                 if(key0==0)//key0按下切換到自動擋
  160.                                 {
  161.                                         delay_ms(5);
  162.                                         if(key0==0)
  163.                                         {
  164.                                                 keystate='A';
  165.                                                 while(!key0);
  166.                                         }
  167.                                 }
  168.        
  169.                                 if(key1==0)//key1按下切換到大量程
  170.                                 {
  171.                                         delay_ms(5);
  172.                                         if(key1==0)
  173.                                         {
  174.                                                 keystate='B';
  175.                                                 while(!key1);
  176.                                         }
  177.                                 }
  178.                                 break;
  179.                         }
  180.                        
  181. ……………………

  182. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
電容測量儀2.0.zip (110.95 KB, 下載次數: 59)



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

使用道具 舉報

沙發
ID:383112 發表于 2019-12-29 14:35 | 只看該作者
你好,這各測量電容范圍是多少呢
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久综合桃花 | 久久新视频 | 亚洲精品在线免费看 | 国产精品99久久久久久www | 日韩精品在线观看一区二区三区 | 中文字幕一区二区三区四区 | 亚洲在线免费观看 | 亚洲va欧美va天堂v国产综合 | 成人黄色网址大全 | 国产一区二区三区四区在线观看 | 色综合天天天天做夜夜夜夜做 | 色秀网站 | 久草视频在线播放 | 亚洲视频在线看 | 国产成人99久久亚洲综合精品 | 91精品一区二区三区久久久久 | 久久精品国产一区二区电影 | 欧美日韩一区二区三区四区 | 福利网址 | 精品国产成人 | 视频一区二区中文字幕 | 五月精品视频 | 免费成人在线网站 | 欧美美女爱爱视频 | 亚洲国产激情 | 午夜99 | 日韩一级免费电影 | 国产精品区一区二区三区 | 成人免费在线观看视频 | 婷婷在线网站 | 91免费在线视频 | 老熟女毛片 | 一区二区三区回区在观看免费视频 | 色偷偷噜噜噜亚洲男人 | 日韩精品一区二区三区中文字幕 | 久久综合九九 | 欧美日韩亚洲在线 | 一级免费看片 | 免费久久久久久 | 日本中文在线视频 | 久久精品二区 |