找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

Proteus仿真使用52單片機與ad0808進行ADC采集與顯示

[復(fù)制鏈接]
ID:728344 發(fā)表于 2020-4-15 17:02 | 顯示全部樓層 |閱讀模式
如題,附件自取
KZECC7JM@B_@%HZ})%5JI[7.png

單片機源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char  
  3. #define uint unsigned int
  4. #define ulong unsigned long
  5. #define p0 P0
  6. #define p3 P3

  7. sbit en=P1^0;
  8. sbit rs=P1^2;
  9. sbit rw=P1^1;

  10. sbit adda=P1^3;
  11. sbit addb=P1^4;
  12. sbit addc=P1^5;
  13. sbit ale=P1^6;/*選擇通道*/

  14. sbit start=P1^7;/*上升ad沿復(fù)位,下降沿ad開始轉(zhuǎn)換模數(shù)*/
  15. sbit eoc=P3^0;        /*為1時就可以取數(shù)據(jù)了(硬件自己干的)*/
  16. sbit oe=P3^1;        /*為0 ad輸出高阻態(tài),為1 ad向單片機輸數(shù)據(jù)(你要做的)*/

  17. uint  vm0;
  18. uchar v,v_2,v_1,v_0;

  19.   
  20. char cont[]={'0','1','2','3','4','5','6','7','8','9'};

  21. void init();
  22. void init2();
  23. void delay(uint z);
  24. void delay1(uint m);
  25. void write_com(uchar com);
  26. void write_data(uchar date);
  27. void LCD_set_xy( unsigned char x, unsigned char y );

  28. void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data1)
  29. {
  30.   LCD_set_xy( X, Y );
  31.   write_data( data1);
  32.   
  33. }

  34. void LCD_set_xy( unsigned char x, unsigned char y )
  35. {
  36.     unsigned char address;
  37.     if (y == 0) address = 0x80 + x;
  38.     else   address = 0xc0 + x;
  39.     write_com( address);
  40. }

  41. void write_string(unsigned char X,unsigned char Y,unsigned char *s)
  42. {
  43.     LCD_set_xy( X, Y );   
  44.     while (*s)  
  45.     {
  46.       write_data( *s );
  47.       s ++;
  48.     }
  49.       
  50. }

  51. void main()
  52. {
  53. init();
  54. init2();
  55. delay(100);
  56. while(1)
  57. {
  58. start=0;
  59. start=1;
  60. oe=0;
  61. start=0;
  62. while(eoc==1);
  63. oe=1;                          
  64. v=p0;
  65. oe=0;
  66. if(v>50)
  67. {
  68. vm0=((uint)v*196)/100;
  69. }
  70. else
  71. {
  72.   vm0=(uint)v*2;
  73. }
  74. v_2=(vm0/100)%10;
  75. v_1=(vm0%100)/10;
  76. v_0=vm0%10;

  77. write_string(0,0,"U:");
  78. LCD_write_char(2,0,v_2+'0');
  79. LCD_write_char(3,0,'.');
  80. LCD_write_char(4,0,v_1+'0');
  81. LCD_write_char(5,0,v_0+'0');
  82. write_string(6,0,"v");


  83. }

  84. }

  85. void init()
  86. {
  87. en=0;
  88. rw=0;
  89. write_com(0x38);
  90. write_com(0x0c);
  91. write_com(0x06);
  92. write_com(0x01);
  93. }

  94. void init2()
  95. {
  96.   adda=0;
  97.   addb=0;
  98.   addc=0;
  99.   ale=0;
  100.   delay(10);
  101.   ale=1;
  102.   delay(10);
  103.   ale=0;
  104. }


  105. void delay(uint z)
  106. {
  107. uchar x,y;
  108. for (x=z;x>0;x--)
  109. for (y=10;y>0;y--);
  110. }


  111. void write_com(uchar com)
  112. {
  113. rs=0;
  114. ……………………

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

所有資料51hei提供下載:

adc0808簡單的實驗(用lcd1602顯示電壓)有仿真和程序.rar (41.13 KB, 下載次數(shù): 75)

回復(fù)

使用道具 舉報

ID:215822 發(fā)表于 2020-5-14 09:12 | 顯示全部樓層
附件中的ad.dsn文件用proteus 8打不開呢
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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