标题: 关于ADC0809 AD转换器的proteus仿真小实验--数字电压表 [打印本页]

作者: abuMoo    时间: 2018-6-29 16:38
标题: 关于ADC0809 AD转换器的proteus仿真小实验--数字电压表
我用的是proteus8.1  这个软件有的时候很恶心 例如ADC0809仿真的时候会显示没有模型不能仿真  换成ADC0808还显示没有模型  迷醉
0808的元件点击TEXT打开编辑一下就行 我把图放在下面(因为0809我没找到,如果哪位老兄知道请指点我一下谢啦)  
实验:用单片机控制ADC0809进行数模转换,调节电位器,使数码管以十进制的方式动态显示经过A/D转换后的数字量。

程序
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit st=P3^0;
  5. sbit eoc=P3^2;
  6. sbit oe=P3^1;
  7. sbit clk=P3^3;
  8. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管 共阳(选CA)
  9. uchar date,qian,bai,shi,ge,AD0809;
  10. uint i,j;
  11. void delayms(uint x)//延时
  12. {
  13. for(i=x;i>0;i--)
  14. for(j=110;j>0;j--);
  15. }
  16. void display(uchar qian,uchar bai,uchar shi,uchar ge)//显示程序
  17. {
  18. qian=date/1000;
  19. bai=date%1000/100;
  20. shi=date%100/10;
  21. ge=date%10;
  22. P2=0xff;
  23. P0=table[qian];
  24. P2=0xef;
  25. delayms(50);

  26. P2=0xff;
  27. P0=table[bai];
  28. P2=0xdf;
  29. delayms(50);

  30. P2=0xff;
  31. P0=table[shi];
  32. P2=0xbf;
  33. delayms(50);

  34. P2=0xff;
  35. P0=table[ge];
  36. P2=0x7f;
  37. delayms(50);

  38. P2=0xff;
  39. }
  40. void timer0() interrupt 1//中断 0
  41. {
  42. TH0=(65536-2)/256;
  43. TL0=(65536-2)%256;
  44. clk=!clk;
  45. }
  46. void init()//初始化
  47. {
  48. TMOD=0X01;
  49. TH0=(65536-2)/256;
  50. TL0=(65536-2)%256;
  51. EA=1;
  52. ET0=1;
  53. TR0=1;//中断初始化
  54. clk=0;//时钟
  55. P1=0xff;
  56. P2=0xff;
  57. P0=0xff;
  58. }
  59. void main()
  60. {
  61. init();
  62. while(1)
  63. {
  64.   st=0;
  65.   st=1;//开启AD转换器
  66.   st=0;//停
  67.   while(!eoc);//等数据转完
  68.   oe=1;//允许数据输出
  69.   AD0809=P1;//AD转换器=P1;(读数)
  70.   oe=0;
  71.   date=AD0809;//date=AD转换后的值在数码管上显示
  72.   display(qian,bai,shi,ge);
  73. }
  74. }
复制代码


作者: pyzlh    时间: 2018-7-9 01:04
高啊?学习了
作者: 13780387330    时间: 2019-8-7 13:31
学习一下,准备弄一个这个




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1