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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22170|回復: 42
收起左側

單片機+ADC0832簡易數字電壓表proteus仿真與程序源碼(帶詳細注釋)

  [復制鏈接]
ID:348504 發表于 2018-6-9 23:25 | 顯示全部樓層 |閱讀模式
給大家分享一個用ADC0832模數轉換芯片設計的電壓表設計,內含protues電路圖和帶有注釋的keil工程文件

ADC0832電壓表仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png 0.png

單片機電壓表源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char
  5.         
  6. sbit CS =P3^4;              //片選使能端
  7. sbit DI =P1^1;               //數據信號輸入端,選擇通道控制(SIG/DIF和ODD/EVEN)
  8. sbit DO =P1^1;             //數據輸出端
  9. sbit CLK =P1^0;           //時鐘脈沖

  10. sbit S_1 = P2^3;
  11. sbit S_2 = P2^4;
  12. sbit S_3 = P2^5;
  13. sbit S_4 = P2^6;

  14. unsigned char wd[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //不帶小數點的段選碼
  15. unsigned char yd[]={0x40,0x79,0x024,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//帶小數點的段選碼

  16. // ===========延時子程序=================
  17. void delay_ms(unsigned int x)
  18. {
  19.         unsigned int i,j;
  20.         for(i=0;i<x;i++)
  21.              for(j=0;j<123;j++);              //延時1ms
  22. }
  23. /*=============讀ADC0832函數=============*/
  24. /*=============采集并返回=================*/
  25. unsigned int Adc0832(unsigned char channel)  //AD轉換,返回結果
  26. {
  27.     uchar i=0;   
  28.                 uchar j;
  29.                 uint dat=0;            //正向輸入數據
  30.                 uchar ndat=0;       //反向輸入數據
  31. //****************初始化操作**************
  32.                 if(channel==0)channel=2;     //10B對應SGL/DIF=1,ODD/EVEN=0
  33.                 if(channel==1)channel=3;     //11B對應SGL/DIF=1,ODD/EVEN=1
  34. //****************寫操作,將通道數據寫入ADC0832**************
  35.            DI=1; _nop_();_nop_();     //發起始位,固定為1(1位)
  36.                  CS=0;_nop_();_nop_();     //拉低CS端,讓ADC0832使能
  37.                  CLK=1;_nop_();_nop_();   //拉高CLK端,DI端的數據移入ADC0832內部的多路移位寄存器
  38.                  CLK=0;_nop_();_nop_();    //拉低CLK端,形成下降沿1,第一個周期開始
  39.                  CLK=1;    //拉高CLK端,在第一個時鐘周期內,DI為高電平,表示啟動位
  40.                                          //緊接著輸入兩位配置位進行通道選擇
  41.                         DI=channel&0x1;_nop_();_nop_(); //假設選取通道0,則10&01=0,即SGL/DIF=0,為差分輸入(2位)
  42.                         CLK=0;_nop_();_nop_();    //拉低CLK端,形成下降沿2,第二個周期開始
  43.                         CLK=1;                                //拉高CLK端
  44.                         DI=(channel>>1)&0x1;_nop_();_nop_();  //假設選取通道0,則01&01=1,ODD/EVEN=1,表示通道0
  45.             CLK=0;                                 //拉低CLK端,形成下降沿3
  46.                         DI=1;_nop_();_nop_();        //控制命令結束
  47.                         dat=0;
  48.                 //*************讀操作,將AD轉換的數從DO口輸出****************
  49.                         for(i=0;i<8;i++)   //每一個CLK下降沿輸出一位數,先輸出高位
  50.                         {
  51.                                  dat|=DO;    //收數據,“|”位或,如果2位中有一位為1,則結果為1,否則為0
  52.                                  CLK=1;_nop_();_nop_();
  53.                                  CLK=0;_nop_();_nop_();      //形成一次時鐘脈沖
  54.                                  dat<<=1;
  55.                                  if(i==7)dat|=DO;
  56.                         }
  57.                         
  58.                         for(i=0;i<8;i++)  //每一個CLK下降沿輸出一位數,先輸出低位
  59.                         {
  60.                                  j=0;
  61.                                  j=j|DO;    //收數據
  62.                                  CLK=1;_nop_();_nop_();
  63.                                  CLK=0;_nop_();_nop_();    //形成一次時鐘脈沖
  64.                                  j=j<<7;
  65.                                  ndat=ndat|j;
  66.                                  if(i<7)ndat>>=1;
  67.                         }
  68. //*********************結束AD轉換,并返回轉換的數***********************
  69.                         CS=1;     //拉低CS端
  70.                         CLK=0;   //拉低CLK端
  71.                         DO=1;     //拉高數據端,回到初始狀態
  72.                         dat<<=8;
  73.                         dat|=ndat;
  74.                         return(dat);            //返回數據
  75.                         }
  76. //============數碼管顯示函數==========================
  77.         void display(uchar p)                  //數碼管顯示函數
  78.         {
  79.         uchar S1,S2,S3;

  80.         S1=p/51;                       //個位
  81.         S2=(p*10/51)%10;        //十分位
  82.         S3=(p*100/51)%10;      //百分位
  83.                
  84.         //個位
  85.         S_1 = 1;                 //第一個數碼管
  86.         S_2 = 0;
  87.         S_3 = 0;
  88.         S_4= 0;
  89.         P0=yd[S1];             //選取帶有小數點的段選碼
  90.         delay_ms(5);               //延時
  91.         S_1 = 0;                        //消隱
  92.                
  93.   //十分位
  94.         S_1 = 0;
  95.         S_2 = 1;                   //取第二個數碼管
  96.         S_3= 0;
  97.         S_4= 0;
  98.         P0=wd[S2];              //選取不帶有小數點的段選碼
  99.   delay_ms(5);
  100.         S_2 = 0;                    //消隱
  101.         
  102.   //百分位
  103.         S_1 = 0;
  104.         S_2 = 0;
  105.         S_3= 1;                      //取第三個數碼管
  106.         S_4= 0;
  107.         P0=wd[S3];                //選取不帶有小數點的段選碼
  108.         delay_ms(5);  
  109.   S_3= 0;                       //消隱
  110.         }
  111. //===========主函數================
  112.         int main(void)
  113. {
  114.         while(1)                    //無限循環
  115.         display(Adc0832(0));//數碼管顯示
  116. //Adc0832(0):選擇通道0,單端模式
  117. //調用Adc0832(0),SIG/DIF=0,ODD/EVEN=1,表示工作在差分輸入方式,且CH0為-,CH1為+
  118. ……………………

  119. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
Keil代碼與Proteus8.8仿真下載:
基于ADC0832簡易數字電壓表.zip (64.85 KB, 下載次數: 1077)
回復

使用道具 舉報

ID:262 發表于 2022-9-20 03:43 | 顯示全部樓層
634658537 發表于 2022-9-19 15:53
仿真圖打不開,沒用的

用Proteus8.8才能打開,親測  看動圖
51hei.gif
回復

使用道具 舉報

ID:384707 發表于 2018-8-13 18:07 | 顯示全部樓層
感謝分享!!
回復

使用道具 舉報

ID:391034 發表于 2018-8-29 08:57 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:415754 發表于 2018-10-26 12:56 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:415754 發表于 2018-10-26 12:56 | 顯示全部樓層
很棒的帖子
回復

使用道具 舉報

ID:255380 發表于 2018-12-16 17:48 | 顯示全部樓層
仿真文件損壞了,或者是我的版本太低打不開,再發個低版本的好嗎樓主
回復

使用道具 舉報

ID:255380 發表于 2018-12-16 18:08 | 顯示全部樓層
P0不需要上拉電阻嗎
回復

使用道具 舉報

ID:446454 發表于 2018-12-19 12:58 | 顯示全部樓層
只能顯示內部電壓,不能測量外電壓
回復

使用道具 舉報

ID:453260 發表于 2018-12-27 21:17 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:273035 發表于 2019-1-7 10:00 來自手機 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:519276 發表于 2019-4-23 09:41 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:532577 發表于 2019-5-10 15:49 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:556758 發表于 2019-6-6 20:45 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:568114 發表于 2019-6-20 17:18 | 顯示全部樓層
下載了打不開呢?
回復

使用道具 舉報

ID:282095 發表于 2019-6-20 22:45 | 顯示全部樓層
好資源值得點贊
回復

使用道具 舉報

ID:582170 發表于 2019-7-12 15:44 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:570366 發表于 2019-7-13 16:04 | 顯示全部樓層
請問一下這是0~5的量程么
回復

使用道具 舉報

ID:581629 發表于 2019-7-31 10:07 | 顯示全部樓層
真棒,proteus打不開,文件大小和貼的圖都不對等,咋辦呀
回復

使用道具 舉報

ID:348634 發表于 2019-8-8 00:05 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:623610 發表于 2019-10-29 13:26 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:645734 發表于 2019-11-20 14:30 | 顯示全部樓層
感謝大佬分享
回復

使用道具 舉報

ID:648592 發表于 2019-11-26 20:56 | 顯示全部樓層
最后得到16位二進制數?
回復

使用道具 舉報

ID:653693 發表于 2019-12-5 10:16 來自手機 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:416053 發表于 2019-12-21 17:53 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:611334 發表于 2020-1-7 10:19 | 顯示全部樓層

感謝分享
回復

使用道具 舉報

ID:682441 發表于 2020-4-15 19:13 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:482466 發表于 2020-4-28 01:31 | 顯示全部樓層
感謝分享!!
回復

使用道具 舉報

ID:748376 發表于 2020-5-10 18:23 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:750218 發表于 2020-5-12 19:11 | 顯示全部樓層
垃圾
回復

使用道具 舉報

ID:737928 發表于 2020-5-14 23:06 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:600952 發表于 2020-5-14 23:47 來自手機 | 顯示全部樓層
想問一下ADC0832速度怎么樣,可以做數字示波器嗎
回復

使用道具 舉報

ID:754594 發表于 2020-5-18 15:32 | 顯示全部樓層
你好,如果要進行超值預警,那應該怎么做了?
回復

使用道具 舉報

ID:770302 發表于 2020-6-5 13:58 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:771319 發表于 2020-6-6 17:31 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:776534 發表于 2020-6-11 18:46 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:780215 發表于 2020-6-15 18:08 | 顯示全部樓層
為什么我的下載打不開仿真?
回復

使用道具 舉報

ID:789552 發表于 2020-6-26 00:24 | 顯示全部樓層
仿真圖打不開啊
回復

使用道具 舉報

ID:794680 發表于 2020-7-2 12:12 | 顯示全部樓層
都是c沒有asm
回復

使用道具 舉報

ID:801063 發表于 2020-7-10 15:53 | 顯示全部樓層
大佬們,保留兩位整數,一位小數的怎么改
回復

使用道具 舉報

ID:622274 發表于 2022-9-19 15:53 | 顯示全部樓層
仿真圖打不開,沒用的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 777777777亚洲妇女| 黄网免费看 | 国产成人精品免费视频 | 一区二区三区四区在线免费观看 | 亚洲小视频在线播放 | 91九色婷婷| 久久久精品在线 | 黄色一级免费观看 | 中文字幕视频在线观看免费 | 性生生活大片免费看视频 | 久久视频一区 | 精品国产久| 亚洲精品成人 | 2018中文字幕第一页 | 亚洲福利网 | 久草.com| 一区二区三区四区av | 国产高清免费在线 | 亚洲视频在线一区 | 国产偷录视频叫床高潮对白 | 一区日韩| 欧美亚洲国产日韩 | 国产情侣啪啪 | 久久综合伊人一区二区三 | 久久中文视频 | 日韩aⅴ视频 | 亚洲免费在线观看 | 久久国产成人午夜av影院武则天 | 精品国产一区二区在线 | 免费国产视频 | 成人欧美一区二区三区黑人孕妇 | av一二三区 | 精品欧美色视频网站在线观看 | 日本综合在线观看 | 成人免费视频观看视频 | 久久国色| 久久久久久国产免费视网址 | 免费成人高清在线视频 | 日本不卡一二三 | 成人黄色电影在线播放 | 国产免费拔擦拔擦8x高清 |