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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

C51單片機(jī)ADC0808多AD路采集 計(jì)算后顯示 代碼+Proteus仿真

[復(fù)制鏈接]
ID:767266 發(fā)表于 2020-6-15 15:56 | 顯示全部樓層 |閱讀模式
C51通過(guò)ADC0808采集多路 AD 值   后  計(jì)算  結(jié)果
最終在lcd 屏上顯示   通過(guò)按鍵切換 具體顯示的 變量是哪個(gè)

壓縮包里有 keil代碼工程 和 protues 工程
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png 51hei.png

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<stdio.h>
  4. #define uchar unsigned char
  5. uchar i,j,CH;
  6. sbit        EOC=P2^7;
  7. sbit        AE=P2^6;
  8. sbit        ST=P2^5;
  9. sbit        OE=P2^4;
  10. sbit        SWITCH=P3^3;
  11. sbit        ADDA=P2^0;
  12. sbit        ADDB=P2^1;
  13. sbit        ADDC=P2^2;
  14. sbit        RS=P3^0;
  15. sbit        LCDEN=P3^1;
  16. sbit        HLE=P3^5;
  17. sbit        HOE=P3^6;
  18. uchar        addata,f,KEY=0,ALERT,x,pro,y,z;
  19. uchar   lastKEY;
  20. uchar        code dis[]="Channel";
  21. uchar        code detalZ[]="IT      ";
  22. uchar        code disp1[]="OT     ";
  23. uchar        code disp2[]="ET    ";
  24. uchar        code disv1[]="YT   ";
  25. uchar        code disv2[]="QA    ";
  26. uchar        code result[]="result     ";

  27. unsigned int canshu_p = 2;
  28. unsigned int canshu_g = 9;
  29. //unsigned int CHA[6] ;
  30. unsigned int CHA[6] ;
  31. float  fenzi,fenmu;
  32. void delay()
  33. {
  34.         for(i=0;i<10;i++)
  35.                 for(j=0;j<100;j++);
  36. }
  37. void write_com(uchar com)
  38. {
  39. RS=0;
  40. delay();
  41. P1=com;
  42. delay();
  43. LCDEN=1;
  44. delay();
  45. LCDEN=0;
  46. delay();
  47. }
  48. void write_data(uchar dat)
  49. {
  50. RS=1;
  51. delay();
  52. P1=dat;
  53. delay();
  54. LCDEN=1;
  55. delay();
  56. LCDEN=0;
  57. delay();
  58. }

  59. void display()
  60. {                
  61.    
  62.     if(lastKEY!=KEY)
  63.     {
  64.         write_com(0x01);//清屏
  65.     lastKEY = KEY;
  66.     }

  67.    
  68.    
  69.    
  70.    
  71.         write_com(0x80);
  72.    
  73.             for(x=0;x<7;x++)
  74.         {
  75.                 write_data(dis[x]);
  76.         }
  77.    
  78.    
  79.         write_com(0x80+0x08);
  80.            
  81.         //write_data(KEY+0x30);
  82.     if(KEY==0){
  83.    
  84.              for(x=0;x<6;x++)
  85.         {
  86.                 write_data(detalZ[x]);
  87.         }   
  88.     }
  89.     if(KEY==1){
  90.            
  91.              for(x=0;x<2;x++)
  92.         {
  93.                 write_data(disp1[x]);
  94.         }   
  95.     }
  96.       if(KEY==2){
  97.                        
  98.              for(x=0;x<2;x++)
  99.         {
  100.                 write_data(disp2[x]);
  101.         }   
  102.     }  
  103.    
  104.         if(KEY==3){
  105.                
  106.              for(x=0;x<2;x++)
  107.         {
  108.                 write_data(disv1[x]);
  109.         }   
  110.     }
  111.         if(KEY==4){
  112.              for(x=0;x<2;x++)
  113.         {
  114.                 write_data(disv2[x]);
  115.         }   
  116.     }
  117.         
  118.        if(KEY==5){
  119.               
  120.              for(x=0;x<8;x++)
  121.         {
  122.                 write_data(result[x]);
  123.         }   
  124.     }
  125.    
  126.         write_com(0x80+0x47);
  127.         write_data(CHA[KEY]/100+0x30);
  128.         write_data(CHA[KEY]/10%10+0x30);
  129.         write_data(CHA[KEY]%10+0x30);
  130. }
  131. void init()
  132. {        HLE=0;
  133.         LCDEN=0;
  134.         write_com(0x38);//顯示設(shè)置
  135.         write_com(0x0c);//顯示開關(guān)
  136.         write_com(0x06);//屏幕不移動(dòng)
  137.         write_com(0x01);//清屏

  138.         write_com(0x80);
  139.         for(x=0;x<7;x++)
  140.         {
  141.                 write_data(dis[x]);
  142.         }

  143.          CH=0;
  144.          IT1=1;
  145.          EX1=1;
  146.          EA=1;

  147.          TMOD=0x01;
  148.          TH0=(65536-1250)/256;
  149.          TL0=(65536-1250)%256;
  150.          ET0=1;
  151.          TR0=1;
  152.          

  153. }
  154. void gettem(uchar x)
  155. {       
  156.         switch(x)
  157.         {
  158.                 case 0:{ADDA=0;ADDB=0;ADDC=0;break;}
  159.                 case 1:{ADDA=0;ADDB=0;ADDC=1;break;}
  160.                 case 2:{ADDA=0;ADDB=1;ADDC=0;break;}
  161.                 case 3:{ADDA=0;ADDB=1;ADDC=1;break;}
  162.                 case 4:{ADDA=1;ADDB=0;ADDC=0;break;}
  163. //                case 5:{ADDA=1;ADDB=0;ADDC=1;break;}
  164. //                case 6:{ADDA=1;ADDB=1;ADDC=0;break;}
  165. //                case 7:{ADDA=1;ADDB=1;ADDC=1;break;}
  166.         }
  167.         OE=0;
  168.         AE=1;
  169.         ST=1;
  170.         AE=0;
  171.         ST=0;
  172.         while(!EOC);
  173.         OE=1;
  174.         addata=P0;
  175.         CHA[x]=addata;
  176. }
  177. main()
  178. {
  179.         init();
  180.         display();
  181.         while(1)
  182.         {       
  183.                 ALERT=0xff;
  184.                 z=0x7f;
  185.                 for(y=0;y<8;y++)
  186.                 {
  187.                         if(CHA[y]>30)
  188.                                 ALERT=ALERT&z;
  189.                                 z=_cror_(z,1);
  190.                 }
  191.                 HLE=1;
  192.                 P1=ALERT;
  193.                 delay();
  194.                 HLE=0;

  195.      
  196.       
  197.               fenzi = (float)CHA[0];
  198.               fenmu=(float)CHA[1];

  199.         CHA[5] = (unsigned int)((fenzi/fenmu)*100);
  200.                 display();
  201.         }
  202.           

  203. }
  204. void X1_ISR(void) interrupt 2
  205. {
  206.         if(SWITCH==0)               
  207.           {               
  208.                           delay();
  209.                         if(SWITCH==0)
  210.                         {
  211.                                 KEY++;
  212.                        
  213.                         }

  214.                         if(KEY==6)
  215.                                 KEY=0;
  216.                        
  217.                 }
  218.        
  219. }
  220. void T0_ISR(void) interrupt 1
  221. {
  222.         TH0=(65536-1250)/256;
  223.         TL0=(65536-1250)%256;
  224.         CH++;
  225.         if(CH==5)
  226.                 CH=0;
  227.         gettem(CH);
  228. }
復(fù)制代碼
51hei.png

所有資料51hei提供下載:
多adc采集計(jì)算.zip (160.7 KB, 下載次數(shù): 109)

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:978036 發(fā)表于 2021-11-28 12:40 | 顯示全部樓層
通過(guò)按鍵切換 具體顯示的 變量是哪個(gè)???
回復(fù)

使用道具 舉報(bào)

ID:1075678 發(fā)表于 2023-5-16 15:42 | 顯示全部樓層
是只有顯示電壓的嗎?沒有其他電流或者電阻的嗎?
回復(fù)

使用道具 舉報(bào)

ID:1006306 發(fā)表于 2023-5-18 13:27 | 顯示全部樓層
還要單獨(dú)價(jià)格ADC芯片,直接上最新的STC8H系列,自帶10位或12位ADC
回復(fù)

使用道具 舉報(bào)

ID:1075678 發(fā)表于 2023-5-18 23:21 | 顯示全部樓層
Proteus的版本太高,打不開,有誰(shuí)可以幫忙截一個(gè)圖嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成年人网站国产 | 青青久在线视频 | 欧美精品在线一区 | 91视频网址| 国产精品一区二区久久 | 日韩在线中文字幕 | 日本在线精品视频 | hitomi一区二区三区精品 | 久久99精品视频 | 国产精品视频在线免费观看 | 欧美a区 | 成人一区二区电影 | 色视频网站 | 亚洲一区二区三区免费观看 | 麻豆av免费观看 | 韩日视频在线观看 | 99久久精品国产麻豆演员表 | 欧美午夜在线 | 久久精品色欧美aⅴ一区二区 | 天天综合91| 日韩精品在线观看一区二区三区 | 国产一区二区 | 久久久久国产一区二区三区 | 欧美精品在线免费观看 | 中文字幕亚洲无线 | 天天干天天爱天天操 | 日韩在线看片 | 在线一区视频 | 精品中文字幕久久 | 国内毛片毛片毛片毛片 | 成人免费黄色片 | 日韩色在线 | 色吧综合| 99国产精品一区二区三区 | 欧美一区二区三区精品免费 | 天天色天天色 | 国产精品1区2区 | 久久精品视频一区二区三区 | 午夜影视在线观看 | 久久亚洲精品国产精品紫薇 | 视频一区二区国产 |