欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的數字電流表課程設計報告

  [復制鏈接]
跳轉到指定樓層
樓主
ID:268018 發表于 2017-12-27 21:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
學生姓名
*
班級學號
1506020134
專  業
測控
課程設計題目
基于單片機的數字電流表設計


組長簽字:

成績

日期

             2017年  月  日


課程設計任務書
學  院
自動化與電氣工程
專 業
測控技術與儀器
學生姓名
晁云瑞
班級學號
1506020134
課程設計題目
基于單片機的數字電流表設計

實踐教學要求與任務:
通過本課程設計使學生進一步鞏固《KeilC程序設計》的基本概念、理論、分析方法和實現方法;增強學生軟件編程實現能力和解決實際問題的能力。
1、熟悉所確定的題目從問題需求,數據結構,程序結構,難點及關鍵技術等方面進行分析,形成系統的設計方案;
2、根據方案設計硬件電路;
3、軟件編程并調試;
4、完成文檔整理,按照軟件工程的要求完成設計論文;
5、通過答辯的形式對程序的功能進行評價與驗收。


工作計劃與進度安排:

第18周(12月25日-12月31日):布置設計任務,查資料,完成總體設計框架,完善設計內容,系統調試,驗收答辯。



指導教師:

  2017年   月  日
專業負責人:

2017 年   月   日
學院教學副院長:

2017 年   月  日


一、設計題目:
基于單片機的數字電流表設計

二、設計要求:
  • 數字電流表在平常工作環境中能良好工作
  • 能測0——1000mA電流,至少能達1%的精度
  • 要求掌握I/V信號轉換,A/D轉換器的使用和數據采集系統的設計
  • 電流表能數字顯示,且由單片機處理采集數據并驅動LED顯示

目  錄


一、功能要求…………………………………………………………………5
二、原理及方案論證..………………………………………………………5
三、系統硬件電路的設計………………………………………………………9
四、系統程序的設計…………………………………………………………10
五、調試及設計結果………………………………………………………….19
參考文獻  …………………………………………………………………...20

一、功能要求
1、數字電流表在平常工作環境中能良好工作
2、能測0——1000mA電流,至少能達1%的精度
3、要求掌握I/V信號轉換,A/D轉換器的使用和數據采集系統的設計
4、電流表能數字顯示,且由單片機處理采集數據并驅動LED顯示
二、原理及方案論證
1、數字電流表工作原理
1.1采樣電阻網絡
原理如下圖所示,輸入被測電流通過量程轉換開關S1——S4,流經采樣電阻R1——R4,由歐姆定律可知:U=I*R,因而轉換輸出電壓為0V——0.1V的電壓,輸出電壓可再經后續放大電路放大處理。

  

1.2高共模抑制比放大電路
如下圖,由雙運放組成的同相輸入高共模抑制比放大電路,其閉環輸出可表示為:
為使共模輸入為0,可令R1/R2=R4/R3,此時電路的差動閉環增益為Kd=1+R1/R2, U0=Kd(U1-U2); 下圖即Kd=11,U0=11(U1-U2);


1.3通用A/D轉換器
ADC0832 是美國國家半導體公司生產的一種 8 位分辨率、雙通道 A/D 轉換芯片。由于它體積小,兼容性強,性價比高而深受單片機愛好者及企業歡迎,其目前已經有很高的普及率。
ADC0832 具有以下特點:  
◆ 8 位分辨率;  
◆ 雙通道 A/D轉換;
◆ 輸入輸出電平與 TTL/CMOS 相兼容;
◆ 5V 電源供電時輸入電壓在 0~5V 之間;
◆ 工作頻率為 250KHZ,轉換時間為 32μS;
◆ 一般功耗僅為 15mW;
◆ 8P、14P—DIP(雙列直插)、PICC 多種封裝;
◆ 商用級芯片溫寬為0°C to +70°C,工業級芯片溫寬為- 40°C to +85°C;
芯片接口說明
CS_      片選使能,低電平芯片使能。
CH0      模擬輸入通道 0,或作為 IN+/-使用。
CH1      模擬輸入通道 1,或作為 IN+/-使用。
GND      芯片參考 0 電位(地)。
DI        數據信號輸入,選擇通道控制。
DO       數據信號輸出,轉換數據輸出。
CLK      芯片時鐘輸入。
Vcc/REF   電源輸入及參考電壓輸入(復用)。
1.4 AT89C51單片機
      AT89C51是美國ATMEL 公司生產的低電壓,高性能CMOS 8 位單片機,片內含8k bytes 的可反復擦寫的只讀程序存 儲器(PEROM)和256 bytes 的隨機存取數據存儲器(RAM),器件采用ATMEL 公司的高密度、非易失性存儲技術生產, 與標準MCS-51 指令系統及8052 產品引腳兼容,片內置通用8 位 央處理器(CPU)和Flash 存儲單元,功能強大AT89C52 單片機適合于許多較為復雜控制應用場合。
   主要性能參數
   ·與MCS-51 產品指令和引腳完全兼容
   ·8k 字節可 擦寫Flash 閃速存儲器
   ·1000 次擦寫周期
   ·全靜態操作:0Hz-24MHz
   ·三級加密程序存儲器
   ·256 ×8 字節內部RAM
   ·32 個可編程I /O  口線
   ·3 個16 位定時/計數器
   ·8 個 斷源
   ·可編程串行UART 通道
   ·低功耗空閑和掉電模式
   功能特性概述
      AT89C51提供以下標準功能:8k 字節Flash 閃速存儲器,256 字節內部RAM,32 個I /O  口線,3 個16位定時/計數器,一個6 向量兩級 斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,AT89C52 可降至0Hz 的靜態邏輯操作,并支持兩種軟件可選的節電工作模式。空閑方式停止CPU 的工作,但允許RAM,定時/計數器,串行通信口及中斷系統繼續工作。掉電方式保存RAM 中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。
2、方案論證
      本設計采用精密采樣電阻(9歐、0.9歐、0.09歐、0.01歐),電阻精度可達0.1%可忽略;八位A/D精度為5/256(V);因而除去放大電路增益誤差及線性誤差,電流表精度約為(5/256)/11,約為1.7mA;對于1000mA的總量程精度可達0.1%,因而方案可達設計要求。

  • 系統硬件電路的設

本設計中用到AT89C52單片機、八位ADC AD0832、發光二極管、六位八段顯示數碼管LED,通用運放 UA741 、PNP管及必要的電阻、電容元件等。系統原理方框圖電路仿真簡圖如上圖。

系統方框圖
四、系統程序設計


程序流程圖如下
系統程序流程圖
單片機源程序如下:
  1. #include<reg52.h>//包含相應的頭文件
  2. #include<intrins.h>
  3. #include<math.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. uchar axs[6],azs[6],ac[10],dc[6];
  7. void ITOAZ(int num,uchar *p);         
  8. void ITOAX(int num,uchar *p);
  9. float U,U1;
  10. sbit CS=P3^4;//定義數模轉換器硬件對應引腳
  11. sbit CLK=P3^5;
  12. sbit DO=P3^6;
  13. sbit DI=P3^7;

  14. /******************讀寫AD0832函數****************/
  15. /************************************************/
  16. unsigned char ReadADC(unsigned char channel)
  17. {
  18. unsigned char j;
  19. unsigned char Temp=0;              
  20. DI=1;
  21. _nop_();
  22. _nop_();
  23. CS=0;//拉低CS端
  24. _nop_();
  25. _nop_();
  26. CLK=1;//拉高CLK端
  27. _nop_();
  28. _nop_();
  29. CLK=0;//拉低CLK端,形成下降沿1
  30. _nop_();
  31. _nop_();
  32. CLK=1;//拉高CLK端
  33. DI=(channel>>1)&0x1;
  34. _nop_();
  35. _nop_();
  36. CLK=0;//拉低CLK端,形成下降沿2
  37. _nop_();
  38. _nop_();
  39. CLK=1;//拉高CLK端
  40. DI=channel&0x1;
  41. _nop_();
  42. _nop_();
  43. CLK=0;//拉低CLK端,形成下降沿3
  44. DI=1;//控制命令結束
  45. _nop_();
  46. _nop_();
  47. for(j=0;j<8;j++)   //處理讀入8位數據
  48.    {
  49.     CLK=0;
  50.               _nop_();
  51.     Temp=(Temp<<1)|DO;
  52.     _nop_();
  53.     CLK=1;
  54.     }
  55.   CS=1;
  56.   CLK=0;
  57.   DI=1;
  58. return(Temp); //返回轉換值
  59. }
  60. /************************************************/
  61. /************************************************/

  62. /******************顯示轉換函數******************/
  63. /************************************************/
  64. //延時函數
  65. void delay(uint n)
  66. {
  67.               uint a;
  68.               uchar i;
  69.               for(a=n;a>0;a--)
  70.                             for(i=0;i<2;i++);
  71. }         
  72. //將浮點數轉成函數
  73. void ITOC(float f,uchar *c)
  74. {
  75.               float zs,xs;
  76.               int bxs,bzs,i,k=0;
  77.               xs=modf(f,&zs);         //分離整數部分與小數部分函數
  78.     if(P3==0XFE)
  79.     bxs=(int)((xs*100)+0.5);
  80.     else
  81.     bxs=(int)((xs*100)+0.5); //小數點后兩位有效數字
  82.               ITOAX(bxs,axs);      //把小數部分轉換成字符串存入axs數組
  83.               bzs=(int)zs;          //把整數部分轉成整型
  84.               ITOAZ(bzs,azs);      //把整數部分轉換成字符串存入azs數組
  85.     for (i=0;axs[i]!='s';i++)  //把最終結果存入c數組
  86.                             c[i]=axs[i];
  87.     c[i]='.';
  88.               for(k=0,i=i+1;azs[k]!='s';k++,i++)
  89.                    c[i]=azs[k];
  90.     if(U<0) c[i]='-';
  91.     else c[i]=0xff;
  92.               c[i+1]='s';
  93. }
  94. //將整型數轉換成對應的
  95. void ITOAZ(int num,uchar *p)         
  96. {
  97.               uchar w,i=0;
  98.     do
  99.               {
  100.                             w=num%10;    //將整型數各位分離,并轉換成對應的字符存入a中
  101.                             p[i]=w;           
  102.                             num=num/10;
  103.                             i++;
  104.               }while(num);
  105.     p[i]='s';
  106. }
  107. //將小數數部分轉換成對應的
  108. void ITOAX(int num,uchar *p)         
  109. {
  110.               uchar w,i=0;
  111.     do
  112.               {
  113.                             w=num%10;    //將整型數各位分離,并轉換成對應的字符存入a中
  114.                             p[i]=w;           
  115.                             num=num/10;
  116.                             i++;
  117.               }while(num);
  118.               while(i<2)
  119.               {p[i]=0;i++;}
  120.               p[i]='s';
  121.      w=p[i];
  122. }
  123. //顯示譯碼函數
  124. void decode(uchar *n,uchar *dn)
  125. {uchar i;
  126. for(i=0; n[i]!='s';i++)
  127.   {switch( n[i])
  128.    {case 0: dn[i]=0x3F;break;
  129.     case 1: dn[i]=0x06;break;
  130.     case 2: dn[i]=0x5B;break;
  131.     case 9: dn[i]=0x6F;break;
  132.     case 3: dn[i]=0x4F;break;
  133.     case 4: dn[i]=0x66;break;
  134.     case 5: dn[i]=0x6D;break;
  135.     case 6: dn[i]=0x7D;break;
  136.     case 7: dn[i]=0x07;break;
  137.     case 8: dn[i]=0x7F;break;
  138.     case 46: dn[i]=0x80;break;
  139.     case'-':dn[i]=0x40;break;
  140.     default:dn[i]=0x00;break;
  141.     }
  142.   }
  143.   dn[i]='s';
  144. }
  145. /************************************************/
  146. /************************************************/

  147. /********************主換函數********************/
  148. /************************************************/
  149. void main(void)
  150. {
  151. uchar i,j,P2_;
  152. float A;
  153. while(1)
  154. {
  155. U=ReadADC(0)/256.0;
  156. switch(P1)
  157. {case 0xfe:A=U*10*1.025;break;
  158. case 0xfd:A=U*100/1.09;break;
  159. ……………………
  160. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


  • 調試及設計結果
    • PROTUSE系統仿真結果
   系統仿真能正常運行,達設計所有指標,仿真部分電路如下:
PROTUSE系統仿真效果圖
2實際硬件制作結果
  根據電路圖自制電路,測試結果:能正常測量10——1000mA電流,達大部分設計要求。


參考文獻:

[1]  單片機原理與應用技術,清華大學出版社。

[2]  電子技術基礎(模擬部分、數字部分). 北京:高等教育出版社,2006.01

[3]  大學生電子設計與應用.北京:中國電力出版社,2007.03

完整的Word格式文檔51黑下載地址:
基于51單片機的數字電流表設計.doc (188 KB, 下載次數: 147)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:341424 發表于 2018-5-31 16:50 | 只看該作者
你那p0口接的是阻排嗎?
回復

使用道具 舉報

板凳
ID:348530 發表于 2018-6-10 23:37 來自觸屏版 | 只看該作者
守爐小童 發表于 2018-5-31 16:50
你那p0口接的是阻排嗎?

你好,請問一下那個AD轉化器件叫什么呀
回復

使用道具 舉報

地板
ID:348530 發表于 2018-6-10 23:39 來自觸屏版 | 只看該作者
你好,AD轉化器,adc0832和圖上的為什么不一樣呢?
回復

使用道具 舉報

5#
ID:346075 發表于 2018-6-11 16:49 | 只看該作者
有沒有壓縮包
回復

使用道具 舉報

6#
ID:351137 發表于 2018-6-13 15:28 來自觸屏版 | 只看該作者
我想知道放大電路和開關那的電阻值分別是多少?看不清楚,也不會算
回復

使用道具 舉報

7#
ID:351137 發表于 2018-6-13 15:29 來自觸屏版 | 只看該作者
笨笨啊 發表于 2018-6-10 23:37
你好,請問一下那個AD轉化器件叫什么呀

ADC0832
回復

使用道具 舉報

8#
ID:435005 發表于 2018-11-28 15:17 | 只看該作者
跪求貼主或者有附件的人能不能把附件郵箱發我!!謝謝!952648165@qq.com
回復

使用道具 舉報

9#
無效樓層,該帖已經被刪除
10#
ID:444822 發表于 2018-12-12 14:09 來自觸屏版 | 只看該作者
求完整代碼QQ379258257
回復

使用道具 舉報

11#
無效樓層,該帖已經被刪除
12#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表