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

QQ登錄

只需一步,快速開始

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

基于51單片機(jī)的模擬數(shù)據(jù)采集器仿真與程序

[復(fù)制鏈接]
ID:273800 發(fā)表于 2018-1-9 15:25 | 顯示全部樓層 |閱讀模式
模擬數(shù)據(jù)采集器仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png 0.png

單片機(jī)源程序如下:
  1. /*模擬數(shù)據(jù)采集器*/

  2. #include<reg51.h>
  3. #include<intrins.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define input P1
  7. #define TT P0
  8. #define         c  0.01 //設(shè)置一階慣性數(shù)字濾波值//
  9. sbit START=P3^4;
  10. sbit CLK=P3^5;
  11. sbit OE=P3^6;
  12. sbit EOC=P3^7;
  13. sbit E=P3^0;
  14. sbit AA=P3^1;
  15. sbit BB=P3^2;
  16. sbit CC=P3^3;
  17. sbit K1=P2^4;
  18. sbit K2=P2^5;
  19. sbit P07=P0^7;
  20. uchar t1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};           //數(shù)碼管0-9//
  21. uchar a,b;
  22. void delay1();

  23. void display(uint temp1);
  24. /*******延時(shí)1*******/
  25. void delay1(void)
  26. {
  27.   for(a=248;a>0;a--);
  28.     for(b=248;b>0;b--);
  29. }
  30. /*******延時(shí)2*******/
  31. void delay2()
  32. {
  33.   int i;
  34.   for(i=1000;i>0;i--);
  35. }
  36. /*void delay3()
  37. {
  38. int j;
  39. for(j=5000;j>0;j--);
  40. }
  41. /***延時(shí)3*****/

  42. /******A/D轉(zhuǎn)換程序*******/

  43. uchar AD()
  44. {

  45. uchar date;
  46. if(!EOC)
  47. {
  48. START=1;
  49. START=0;
  50. }
  51. while(!EOC);
  52. START=1;
  53. START=0;
  54. date=input;
  55. return date;
  56. }
  57. char date;
  58. char new_date;

  59. char filter()
  60. {
  61. char new_date;

  62. return 0.01*date+(1-0.01)*new_date;
  63. }

  64. /*******加地址,選擇模擬通道*******/
  65. void get_add(uchar add)
  66. {
  67.   CC=add/4;
  68.   BB=add%4/2;
  69.   AA=add%2;
  70.   delay2();
  71. }
  72. /*******動(dòng)態(tài)掃描程序*******/
  73. void display(uint temp1)
  74. {
  75.   uint aa,bb,cc,dd;

  76.   aa=temp1%10;
  77.   temp1/=10;
  78.   bb=temp1%10;
  79.   temp1/=10;
  80.   cc=temp1%10;
  81.   dd=temp1/10;

  82.   P2=0xf1;
  83.   P0=t1[dd];
  84.    delay2();
  85.                      

  86.   P2=0xf2;
  87.   P0=t1[cc];
  88.     delay2();
  89.    

  90.   P2=0xf4;
  91.   P0=t1[bb]&0X7F;
  92.    delay2();
  93.    

  94.   P2=0xf8;
  95.   P0=t1[aa];
  96.    delay2();
  97.    
  98. }
  99. /*******電壓顯示轉(zhuǎn)溫度顯示函數(shù)*******/
  100. void c_u(float aa)
  101. {
  102.    uchar i;
  103.   aa=aa*15.4*5*10/255;
  104.   for(i=0;i<10;i++)
  105.   display(aa);
  106. }
  107. /*******主程序*******/
  108. void main(void)
  109. {
  110.   uchar rr,tt;
  111.   bit  temp=0;                                       
  112.   TMOD=0x02;    //定時(shí)器0工作在2模式
  113.   TR0=1;// 定時(shí)器0啟動(dòng)控制位
  114.   ET0=1; //定時(shí)器0的中斷允許開關(guān)
  115.   IT0=1; //外部中斷0觸發(fā)方式選擇位,為1邊沿觸發(fā)
  116.   EX0=1;//允許外部中斷0申請(qǐng)中斷
  117.   EA=1;
  118.   tt=0;
  119.   while(1)
  120.   {
  121.    if(!K2)       
  122.    {  
  123.      while(!K2);
  124.          temp=~temp;
  125.          }
  126.   if(temp)
  127.   {
  128.     get_add(tt);
  129.         AD();
  130.         rr=input;
  131.         filter();//一階慣性數(shù)字濾波
  132.         c_u(rr);
  133.    if(!K1)       
  134.    {  
  135.      while(!K1);
  136.      tt++;
  137.      tt=tt%8;
  138.         }
  139.         }
  140.         if(!temp)
  141. ……………………

  142. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
模擬數(shù)據(jù)采集器.zip (87.13 KB, 下載次數(shù): 108)


評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1113966 發(fā)表于 2024-3-23 23:34 | 顯示全部樓層
請(qǐng)問下面那個(gè)計(jì)數(shù)器是用來干什么的
回復(fù)

使用道具 舉報(bào)

ID:1113966 發(fā)表于 2024-3-23 23:34 | 顯示全部樓層
樓主可以講解一下這個(gè)電路嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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