找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6247|回复: 0
收起左侧

74HC4066+LM324+51单片机的可变量程数字电压表proteus仿真和源码

[复制链接]
ID:344395 发表于 2018-6-9 14:59 | 显示全部楼层 |阅读模式
原件:
stc89c52rc
四位共阴数码管
lm324
74hc4066
adc0809
原理图打包到附件

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
QQ截图20180609145136.png 0.png

74HC4066+LM324构成的ad ADC0808前置电路:
0.png

0.png

部分源代码:
  1. #include<reg52.h>
  2. unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  3. unsigned char dispbuf[4];
  4. unsigned int i;
  5. unsigned int j;
  6. unsigned int getdata;
  7. unsigned int temp;
  8. unsigned int temp1;
  9. unsigned char count;
  10. unsigned char d;
  11. sbit ST=P2^4;
  12. sbit OE=P2^5;
  13. sbit EOC=P2^6;
  14. sbit CLK=P2^7;
  15. sbit ADD_A=P3^4;  //Ñ¡ÔñADμÄêäèë¶Ë
  16. sbit ADD_B=P3^5;
  17. sbit ADD_C=P3^6;
  18. sbit D0=P2^0;  //êyÂë1üμÄλ¿ØÖƶË
  19. sbit D1=P2^1;
  20. sbit D2=P2^2;
  21. sbit D3=P2^3;
  22. sbit P17=P1^7;  //è·¶¨D¡êyμãμÄλÖÃ
  23. sbit s1=P3^2;
  24. sbit s2=P3^3;
  25. #define         _v0_5 {s1=1;s2=0;}
  26. #define _v10 {s1=0;s2=1;}


  27. unsigned char m;

  28. void TimeInitial();
  29. void Delay(unsigned int i);

  30. void TimeInitial()
  31. { TMOD=0x10;
  32. TH1=(65536-200)/256;
  33. TL1=(65536-200)%256;
  34. EA=1;
  35. ET1=1;
  36. TR1=1;
  37. }
  38. void Delay(unsigned int i)
  39. {
  40.   unsigned int j;
  41.   for(;i>0;i--)
  42.   {
  43.   for(j=0;j<125;j++)
  44.   {;}
  45.   }
  46. }

  47. void Display()

  48. {
  49. P1=dispbitcode[dispbuf[3]];

  50. D0=0;      
  51. D1=1;
  52. D2=1;
  53. D3=1;
  54. Delay(10);
  55. P1=0x00;

  56. P1=dispbitcode[dispbuf[2]];
  57. if(m==2)
  58. {
  59. P17=1;
  60. }
  61. D0=1;
  62. D1=0;
  63. D2=1;
  64. D3=1;
  65. Delay(10);
  66. P1=0x00;
  67. P1=dispbitcode[dispbuf[1]];
  68.   if(m==10)
  69. {
  70.         P17=1;
  71.   }
  72. D0=1;
  73. D1=1;
  74. D2=0;
  75. D3=1;
  76. Delay(10);
  77. P1=0x00;
  78. P1=dispbitcode[dispbuf[0]];
  79. D0=1;
  80. D1=1;
  81. D2=1;
  82. D3=0;
  83. Delay(10);
  84. P1=0x00;
  85. }
  86. void main()
  87. {
  88. TimeInitial();
  89. ADD_A=0;
  90. ADD_B=0;
  91. ADD_C=0;
  92. _v10;
  93. m=2;
  94. while(1)
  95. {                           


  96.         ST=0;
  97.         OE=0;
  98.         ST=1;
  99.         ST=0;
  100.         while(EOC==0);
  101.         OE=1;
  102.         getdata=P0;
  103.         OE=0;
  104.                  if ((s1==0) && (s2==1) && (getdata<6))
  105.         {        
  106.                 ADD_A=1;
  107.                 _v0_5;

  108.                 m=10;        
  109.         }
  110.         else if        ((s1==1)&&(s2==0) && (getdata>254))
  111.         {
  112.                 ADD_A=0;
  113.                 _v10;
  114.       
  115.                 m=2;
  116.         }


  117.         temp=(getdata*1.0/255)*500*m;
  118.         dispbuf[0]=temp%10;
  119.         dispbuf[1]=temp/10%10;
  120.         dispbuf[2]=temp/100%10;
  121.         dispbuf[3]=temp/1000;
  122.         Display();

  123. }
  124. }

  125. void t1(void) interrupt 3 using 0
  126. {
  127.   TH1=(65536-200)/256;
  128.   TL1=(65536-200)%256;
  129.   CLK=~CLK;
  130.   }
复制代码

全部资料51hei下载地址:
自动转换量程数字电压表.zip (177.91 KB, 下载次数: 67)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表