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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2565|回復(fù): 2
收起左側(cè)

基于51單片機(jī)的ADC0832數(shù)字電壓表程序Proteus仿真,可調(diào)

[復(fù)制鏈接]
ID:679189 發(fā)表于 2022-5-3 00:46 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png

單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>

  3. sbit CS=P3^5;
  4. sbit CLK=P3^3;
  5. sbit DI=P3^4;
  6. sbit DO=P3^4;
  7. sbit dot=P0^5;                //小數(shù)點(diǎn)

  8. unsigned char dat=0x00;
  9. unsigned char nums[]={0x00,0x00,0x00,0x00};
  10. unsigned char channel;                //轉(zhuǎn)換通道
  11. unsigned char LEDS[]={0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xB8,0x20,0x28};                //共陽4位數(shù)碼管段碼,字符顯示從'0'到'9'

  12. unsigned char ADC0832(unsigned char channel)                //模數(shù)轉(zhuǎn)換
  13. {
  14.         unsigned char i;
  15.         unsigned char x=0x00;
  16.         unsigned char y=0x00;
  17.        
  18.         CLK=0;                //初始化
  19.         DI=1;
  20.         _nop_();
  21.         CS=0;
  22.         _nop_();
  23.         CLK=1;
  24.         _nop_();
  25.        
  26.         if(channel==0x00)                //通道選擇
  27.         {                //通道0
  28.                 CLK=0;
  29.                 DI=1;
  30.                 _nop_();
  31.                 CLK=1;
  32.                 _nop_();
  33.                 CLK=0;
  34.                 DI=0;
  35.                 _nop_();
  36.                 CLK=1;
  37.                 _nop_();
  38.         }
  39.         else                //通道1
  40.         {
  41.                 CLK=0;
  42.                 DI=1;
  43.                 _nop_();
  44.                 CLK=1;
  45.                 _nop_();
  46.                 CLK=0;
  47.                 DI=1;
  48.                 _nop_();
  49.                 CLK=1;
  50.                 _nop_();
  51.         }
  52.        
  53.         CLK=0;
  54.         DI=1;
  55.         for(i=0;i<8;i++)                //讀取ADC0832輸出的前8位數(shù)據(jù)
  56.         {
  57.                 x<<=1;
  58.                 _nop_();
  59.                 CLK=1;
  60.                 _nop_();
  61.                 CLK=0;
  62.                 if(DO==1)
  63.                 {
  64.                         x|=0x01;
  65.                 }
  66.                 else
  67.                 {
  68.                         x|=0x00;
  69.                 }
  70.         }
  71.         for(i=0;i<8;i++)                //讀取ADC0832輸出的后8位數(shù)據(jù)
  72.         {
  73.                 y>>=1;
  74.                 if(DO==1)
  75.                 {
  76.                         y|=0x80;
  77.                 }
  78.                 else
  79.                 {
  80.                         y|=0x00;
  81.                 }
  82.                 _nop_();
  83.                 CLK=1;
  84.                 _nop_();
  85.                 CLK=0;
  86.         }
  87.         if(x==y)                //校驗(yàn),比較前8位與后8位的值
  88.         {
  89.                 dat=x;
  90.         }
  91.         _nop_();
  92.         CS=1;                //釋放ADC0832
  93.         DO=1;
  94.         CLK=1;
  95.         return dat;
  96. }

  97. void Convert(unsigned char dat0)                //數(shù)據(jù)處理
  98. {
  99.         unsigned int x;
  100.         x=dat0*0.0196*100*5;
  101.         nums[0]=x/1000;
  102.         nums[1]=x%1000/100;
  103.         nums[2]=x%1000%100/10;
  104.         nums[3]=x%1000%100%10;
  105. }

  106. void Delay()                //數(shù)碼管顯示
  107. {
  108.         unsigned char i,j;
  109.         for(i=0;i<1;i++)
  110.         {
  111.                 for(j=0;j<121;j++);
  112.         }
  113. }

  114. void Display()
  115. {
  116.         P0=LEDS[nums[0]];
  117.         P2=0xFE;
  118.         Delay();
  119.         P2=0xFF;
  120.        
  121.         P0=LEDS[nums[1]];
  122.         dot=0;
  123.         P2=0xFD;
  124.         Delay();
  125.         P2=0xFF;
  126.        
  127.         P0=LEDS[nums[2]];
  128.         P2=0xFB;
  129.         Delay();
  130.         P2=0xFF;
  131.        
  132.         P0=LEDS[nums[3]];
  133.         P2=0xF7;
  134.         Delay();
  135.         P2=0xFF;
  136. }

  137. void main()
  138. {
  139.         while(1)
  140.         {
  141.                 dat=ADC0832(channel);
  142.                 Convert(dat);
  143.                 Display();
  144.         }
  145. }
復(fù)制代碼

Proteus8.8仿真下載:
51數(shù)字電壓表.7z (25.35 KB, 下載次數(shù): 77)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1025148 發(fā)表于 2022-5-9 18:02 | 顯示全部樓層
可以做基于tlc1549的嗎
回復(fù)

使用道具 舉報(bào)

ID:1025148 發(fā)表于 2022-5-9 18:03 | 顯示全部樓層
基于tlc1549可以嗎
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表