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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14092|回復: 6
收起左側(cè)

數(shù)字電壓表課程設計試驗報告 帶源碼和仿真

[復制鏈接]
ID:137190 發(fā)表于 2016-9-9 19:54 | 顯示全部樓層 |閱讀模式
0.png
課程設計的全部內(nèi)容打包下載:
課程設計—數(shù)字電壓表.rar (528.24 KB, 下載次數(shù): 151)



所在院系

教育信息與技術學院

專業(yè)名稱

信息工程

班級

1002

題目

數(shù)字電壓表

指導教師

黎明

成員

孫斌 鄭兵 楊鑫

完成時間

17.1.4


一、設計任務及要求:
設計任務:
設計一個數(shù)字電壓表。
要    求:
1.0-5V輸入;
2.用4個數(shù)碼管顯示;有小數(shù)點的顯示;顯示小數(shù)后三位數(shù),如0.001;只顯示最后結果,不要顯示中間結果。
3. 要求精度達到1%,超出量程警告提示。
4. 可以多檔切換。

指導教師簽名:

   2017年1月3日      

二、指導教師評語:



指導教師簽名:

  2017年1月 3 日     

三、成績






                          驗收蓋章                 

2013年1月3 日

目錄



1 設計目的

2 設計思路

3 設計過程

3.1方案論證
3.2電路設計

3.2.1  硬件部分

(1)單片機控制模塊設計

(2)AD轉(zhuǎn)換模塊設計

(3)量程自動轉(zhuǎn)換模塊

(4)LED顯示模塊

(5)報警模塊

3.2.2  軟件部分

(1)主程序設計

(2)A/D轉(zhuǎn)換程序設計

4電路仿真與結果分析

4.1電路仿真
4.2結果分析

5設計體會

參考文獻            

附件

完整電路
源代碼





數(shù)字電壓表的設計

1 設計目的

(1)熟悉數(shù)字電壓表的基本工作原理和與一般的模擬電壓表相比,數(shù)字電壓表具有的優(yōu)點。

(2)掌握A/D 的使用和單片機整個開發(fā)過程。

(3)了解積分式和逐次逼近式AD轉(zhuǎn)換器各自的特點。

2 設計思路

利用AD轉(zhuǎn)換器對輸入電壓進行采集并傳輸給單片機,讓其進行數(shù)據(jù)的處理。通過單片機與數(shù)碼管的連接,最終顯示在數(shù)碼管上。并用軟件編程的方式檢測輸入信號的大小來實現(xiàn)數(shù)字電壓表的量程自動轉(zhuǎn)換功能。

3 設計過程

第一部分:單片機控制模塊。控制中心微控制器采用的是AT89C52 單片機,其對于多量程電路的測量有著不可比擬的性價比,而且操作簡單,特別是與ADC0808 構成的電壓采集電路,反映時間短,能夠有效地將模擬電壓數(shù)據(jù)在LED 上顯示出來。

第二部分:AD轉(zhuǎn)換模塊。A/D 轉(zhuǎn)換電路用來將量程轉(zhuǎn)換電路輸入的直流電壓信號轉(zhuǎn)成數(shù)字電壓信號,以供主控制器進行數(shù)據(jù)處理。采用一片ADC0808,它是采樣分辨率為8 位的、以逐次逼近原理進行模—數(shù)轉(zhuǎn)換的器件。

第三部分:量程自動轉(zhuǎn)換模塊。通過對輸入電壓的測量,利用軟件編程的方式來實現(xiàn)量程的自動轉(zhuǎn)換。

第四部分;LED顯示模塊。數(shù)碼管顯示電路以顯示4位的方式來顯示數(shù)字電壓表測量的直流電壓值。

第五部分:報警模塊。當輸入的直流電壓超過最大量程時,數(shù)字電壓表報警以示警告。

3.1方案論證

利用AD轉(zhuǎn)換器對輸入電壓進行采集并傳輸給單片機,讓其進行數(shù)據(jù)的處理。通過單片機與數(shù)碼管的連接,將輸入的直流電壓顯示在數(shù)碼管上。利用軟件編程的方式檢測輸入信號的大小來實現(xiàn)數(shù)字電壓表的量程自動轉(zhuǎn)換功能。在允許的誤差范圍內(nèi)實現(xiàn)了數(shù)字電壓表的設計要求,完成了數(shù)字電壓表的全部設計。

3.2電路設計

3.2.1  硬件部分

(1) 單片機控制模塊設計

單片機控制模塊的作用是為控制各單元電路的運行并完成數(shù)據(jù)的換算或處理,主要由單片機、時鐘電路、復位電路組成。

① 時鐘電路

單片機工作的時間基準是由時鐘電路提供的,在單片機的XTAL1和XYAL2兩個管腳接一只晶振及兩只電容就構成了單片機的時鐘電路,電路中電容器C1和C2對振蕩頻率有微調(diào)作用,通常取(30±10pF)石英晶體選擇11.0592MHz。時鐘電路如圖1所示。

1.003.jpg
圖1  時鐘電路

②  復位電路

單片機的RST管腳為主機提供了一個外部復位信號輸入口。復位信號是高電平有效,高電平有效的持續(xù)時間為2個機器周期以上。單片機的復位方式為上電復位方式。復位電路如圖2所示。

1.004.jpg
                      圖2  復位電路

(2)AD轉(zhuǎn)換模塊設計

逐次逼近型A/D轉(zhuǎn)換器ADC0808屬于直接型A/D轉(zhuǎn)換器,它能把輸入的模擬電壓直接轉(zhuǎn)換為輸出的數(shù)字代碼,而不需要經(jīng)過中間變量。

① ADC0808簡介

ADC0808精度為8位,CMOS器件,不僅包括一個8位的逐次逼近型的ADC部分,而且還提供一個8通道的模擬多路開關和通道尋址邏輯,因而有理由把它作為簡單的“數(shù)據(jù)采集系統(tǒng)”。利用它可直接輸入8個單端的模擬信號分時進行A/D轉(zhuǎn)換,在多點巡回檢測和過程控制、運動控制中應用十分廣泛。

②外部引腳圖及引腳功能

ADC0808的外部引腳如圖3所示。


1.005.jpg
圖3  ADC0808外部引腳圖

IN0~IN7:8路模擬量輸入。A、B、C:3位地址輸入,2個地址輸入端的不同組合選擇八路模擬量輸入。

ALE:地址鎖存啟動信號,在ALE的上升沿,將A、B、C上的通道地址鎖存到內(nèi)部的地址鎖存器。

D0~D7:八位數(shù)據(jù)輸出線,A/D轉(zhuǎn)換結果由這8根線傳送給單片機。

OE:允許輸出信號。當OE=1時,即為高電平,允許輸出鎖存器輸出數(shù)據(jù)。

START:啟動信號輸入端,START為正脈沖,其上升沿清除ADC0808的內(nèi)部的各寄存器,其下降沿啟動A/D開始轉(zhuǎn)換。

EOC:轉(zhuǎn)換完成信號,當EOC上升為高電平時,表明內(nèi)部A/D轉(zhuǎn)換已完成。

③AD轉(zhuǎn)換模塊設計

集成摸數(shù)轉(zhuǎn)換芯片ADC0808實現(xiàn)的A/D轉(zhuǎn)換電路如圖4所示,被測信號由ADC0808模擬輸入端輸入,完成A/D轉(zhuǎn)換后送入單片機,經(jīng)相應處理后送出顯示。

1.006.jpg
圖4  AD轉(zhuǎn)換電路

(3)量程自動轉(zhuǎn)換模塊

利用軟件編程的方式,通過對輸入電壓判斷其大小來確定電壓表的當前量程,進而實現(xiàn)電壓表的量程自動切換。量程自動轉(zhuǎn)換模塊如圖5所示。量程分為3個檔:當s1亮時為1V-5V;當s2亮時為0.1—1V;當s3亮時為0—0.1V。

1.007.jpg
圖5  量程自動轉(zhuǎn)換模塊

(4)LED顯示模塊

LED顯示模塊用來顯示數(shù)字電壓表測量的直流電壓值。LED顯示模塊如圖6所示。

1.008.jpg
圖6   LED顯示模塊

(5) 報警模塊

利用一個電壓比較器和一個蜂鳴器的連接來實現(xiàn)報警模塊的設計。當輸入的直流電壓大于最大量程(5V)時,蜂鳴器響起即報警。報警模塊如圖7所示。

   1.009.jpg
圖7   報警模塊

3.2.2  軟件部分

(1)主程序設計

1.010.jpg 主程序主要負責初始化工作:設置定時器、寄存器的初值,啟動A/D轉(zhuǎn)換,讀取轉(zhuǎn)換結果,處理量程轉(zhuǎn)換響應,控制液晶實時顯示等,主流程圖如圖8所示。

1.011.jpg
圖8 主程序流程圖

(2)A/D轉(zhuǎn)換程序設計

A/D轉(zhuǎn)換程序的功能是采集數(shù)據(jù),在整個系統(tǒng)設計中占有很高的地位。當系統(tǒng)設置好后,單片機掃描轉(zhuǎn)換結束管腳P3^2的輸入電平狀態(tài),當輸入為高電平則轉(zhuǎn)換完成,將轉(zhuǎn)換的數(shù)值轉(zhuǎn)換并顯示輸出。若輸入為低電平,則繼續(xù)掃描。AD轉(zhuǎn)換程序流程圖如圖9所示。

1.012.jpg

圖9  A/D轉(zhuǎn)換程序流程圖

程序如下:

              OE=0;

              ST=0;

              ST=1;

              ST=0;//啟動轉(zhuǎn)換

              while(EOC==0);    //等待轉(zhuǎn)換結果

              OE=1;   //允許輸出

              sum=data;

4電路仿真與結果分析

電路的仿真和結果分析

4.1電路仿真
輸入電壓為0.8V時的仿真電路如圖10所示
1.013.jpg
圖10    輸入電壓為0.8V時的仿真電路

4.2結果分析

(1)當輸入直流電壓(input)大于5V時,電壓表只能顯示5.000V的電壓,此時s1亮。電壓大于5V時數(shù)碼管顯示如圖11所示。

1.014.jpg
圖11   電壓大于5V時數(shù)碼管顯示

(2)當輸入直流電壓(input)在1V~5V時,s1亮。在誤差允許的范圍內(nèi)輸出相對精確的電壓值。電壓在1V~5V時數(shù)碼管顯示如圖12所示。

1.015.jpg
圖12電壓在1V~5V時數(shù)碼管顯示

(3) 當輸入直流電壓(input)在0.1V~1V時,s2亮。在誤差允許的范圍內(nèi)輸出相對精確的電壓值。電壓在0.1V~1V時數(shù)碼管顯示如圖13所示。

1.016.jpg
圖13 電壓在0.1V~1V時數(shù)碼管顯示

(4) 當輸入直流電壓(input)在0V~0.1V時,s3亮。在誤差允許的范圍內(nèi)輸出相對精確的電壓值。電壓在0V~0.1V時數(shù)碼管顯示如圖14所示。

1.017.jpg
圖14    電壓在0V~0.1V時數(shù)碼管顯示

5設計體會

通過這次對數(shù)字電壓表的設計與制作,我們了解了單片機整個開發(fā)過程,熟知和掌握了AT89C51,ADC0809,CD4066,運放等芯片的作用及其使用。雖然在制作過程中出現(xiàn)了問題,但是通過不斷實踐和查找資料,積極地思考問題、發(fā)現(xiàn)問題,最終解決了。無論從硬件還是軟件方面,都提高了我們的動手和動腦能力。整個過程中,不但擴展了我們的知識面,而且也不斷在挖掘我們的潛力,為我們今后的學習奠定扎實的基礎。也許在這幾天的制作中,我學的知識比課本上的還多、還難。在這次制作中,我更加看到了我對課本知識不熟,思想不夠開闊等不足的地方,希望在以后的學習與實踐中多看課本,多思考來彌補自己的不足。

參考文獻(至少5篇)

[1] 徐愛鈞.智能化測量控制儀表原理 [M].北京航空航天大學出版社.2004

[2] 吳金戌,沈慶陽,郭庭吉.8051單片機實踐與應用[M].北京清華大學出版社.2002

[3] 張毅剛,彭喜元,彭宇.《單片機原理及應用》第二版[M].北京高等教育出版社.2010.5

[4] 汪德彪.MCS-51單片機原理及接口技術[M]. 第1版.北京電子工業(yè)出版社.2003

[5] 沙占友.新型數(shù)字電壓表原理與應用[M].北京機械工業(yè)出版社.2006

附件完整電路
1.018.jpg


源代碼:

  1. #include
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. #define data P1
  5. sbit ST=P3^0;
  6. sbit OE=P3^1;
  7. sbit EOC=P3^2;
  8. sbit CLK=P3^3;
  9. sbit S1=P3^4;
  10. sbit S2=P3^5;
  11. sbit S3=P3^6;
  12. ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  13. ucharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xdf} ;
  14. uint sum;
  15. uchar getdata;
  16. uchar num[4];
  17. void delay(uint ms)
  18. {
  19. uchar i;
  20. while(ms--)
  21. for(i=0;i<120;i++);
  22. }

  23. void Display_Result()
  24. {
  25. P2=0xfe;//千位
  26. P0=table1[num[3]];
  27. delay(5);
  28. P2=0xfd;//百位
  29. P0=table[num[2]];
  30. delay(5);
  31. P2=0xfb;//十位
  32. P0=table[num[1]];
  33. delay(5);
  34. P2=0xf7;//個位
  35. P0=table[num[0]];
  36. delay(5);
  37. }
  38. void init()
  39. {
  40. EA=1;
  41. TMOD=0x01;
  42. TH0=(65536-150)/256;
  43. TL0=(65536-150)%256;
  44. ET0=1;
  45. TR0=1;
  46. S1=0;
  47. S2=0;
  48. S3=1;
  49. }

  50. void main()
  51. {
  52.   init();
  53.   while(1)
  54.               {
  55.                             OE=0;
  56.                             ST=0;
  57.                             ST=1;
  58.                             ST=0;//啟動轉(zhuǎn)換
  59.                             while(EOC==0);    //等待轉(zhuǎn)換結果
  60.                             OE=1;   //允許輸出
  61.                             sum=data;
  62.                             if(data<5)
  63.                             {
  64.                                S1=0;
  65.                                S2=0;
  66.                                S3=1;
  67.                                sum=sum*1.0/255*5000;
  68.                                num[0]=sum%10;
  69.                                num[1]=sum/10;
  70.                                num[2]=sum/100;
  71.                                num[3]=sum/1000;
  72.                                Display_Result();//顯示A/D轉(zhuǎn)換結果
  73.                             }
  74.                             else if (data<51)
  75.                             {
  76.                                S1=0;
  77.                                S2=1;
  78.                                S3=0;
  79.                                sum=sum*1.0/255*5000;
  80.                                num[0]=sum%10;
  81.                                num[1]=sum/10%10;
  82.                                num[2]=sum/100;
  83.                                num[3]=sum/1000;
  84.                                Display_Result();//顯示A/D轉(zhuǎn)換結果
  85.                             }
  86.                             else if (data<256)
  87.                             {
  88.                                S1=1;
  89.                                S2=0;
  90.                                S3=0;
  91.                                sum=sum*1.0/255*5000;
  92.                                num[0]=sum%10;
  93.                                num[1]=sum/10%10;
  94.                                num[2]=sum/100%10;
  95.                                num[3]=sum/1000;
  96.                                Display_Result();//顯示A/D轉(zhuǎn)換結果
  97.               }
  98.               }
  99. }
  100. void Timer0() interrupt 1
  101. {
  102. TH0=(65536-150)/256;
  103. TL0=(65536-150)%256;
  104. CLK=~CLK;//ADC0809時鐘信號
  105. }
復制代碼




評分

參與人數(shù) 1黑幣 +5 收起 理由
小末末 + 5 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:455208 發(fā)表于 2018-12-26 11:09 | 顯示全部樓層
謝謝樓主分享
回復

使用道具 舉報

ID:273035 發(fā)表于 2019-1-7 10:00 來自觸屏版 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:474876 發(fā)表于 2019-2-3 19:52 | 顯示全部樓層
太厲害了 老哥
回復

使用道具 舉報

ID:540911 發(fā)表于 2020-4-13 15:45 | 顯示全部樓層
如果是交流電壓也可以嗎
回復

使用道具 舉報

ID:1145258 發(fā)表于 2025-6-11 16:22 | 顯示全部樓層
感謝樓主分享,太厲害了
回復

使用道具 舉報

ID:1145258 發(fā)表于 2025-6-11 16:22 | 顯示全部樓層
雨落 發(fā)表于 2020-4-13 15:45
如果是交流電壓也可以嗎

沒什么不可以的
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99爱在线观看 | 成人综合视频在线观看 | 天堂精品视频 | 久久久综合 | 中文一区二区视频 | 黄色亚洲网站 | 亚洲电影一区二区三区 | 亚洲国产成人精品久久久国产成人一区 | 国产伦精品一区二区三区精品视频 | 香蕉久久a毛片 | 欧美在线日韩 | 精品国产一区二区久久 | 亚洲欧美在线一区 | 久久51 | 日韩一区二区三区四区五区六区 | 国产成人99久久亚洲综合精品 | 91av在线免费观看 | 日韩免费视频一区二区 | 亚洲在线免费观看 | 久久99深爱久久99精品 | 国产精品伦理一区 | 特级特黄特色的免费大片 | 免费精品在线视频 | 美人の美乳で授乳プレイ | 色橹橹欧美在线观看视频高清 | 国产精品日本一区二区在线播放 | 一区视频 | 久久国产精品视频免费看 | 免费的黄色片子 | 福利片在线 | 日韩精品久久久 | 国产精品一区二区不卡 | 不卡在线视频 | 亚洲免费三区 | 亚洲女优在线播放 | 国产激情一区二区三区 | 国产精品www | 欧美一区二区小视频 | 午夜视频在线观看网址 | 亚洲一区影院 | 一级看片免费视频囗交动图 |