找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16427|回复: 16
打印 上一主题 下一主题
收起左侧

51单片机+ADC0808电压采集proteus仿真及源程序

  [复制链接]
跳转到指定楼层
楼主

一个用51单片机和ADC0808做的电压采集的proteus仿真,上面是仿真原理图

源程序:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<stdio.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. sbit CLK=P2^0;
  7. sbit ST=P2^1;
  8. sbit EOC=P2^2;
  9. sbit OE=P2^3;
  10. sbit ADDA=P2^5;
  11. sbit ADDB=P2^6;
  12. sbit ADDC=P2^7;
  13. sbit X1=P3^4;
  14. sbit X2=P3^5;
  15. sbit X3=P3^6;
  16. sbit P07=P0^7;
  17. sbit LED=P3^7;
  18. uint temp;
  19. uchar getdata;
  20. uchar b;
  21. uchar s;
  22. uchar g;
  23. uchar code table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  24. void delayus(uchar us){
  25.         uchar i;
  26.         while(us--)
  27.         for(i=0;i<120;i++)       
  28.         ;
  29. }
  30. void init(){
  31.         TMOD=0x21;
  32.         TH0=(65536-200)/256;
  33.         TL0=(65536-200)%256;
  34.         TH1=0XFD;
  35.         TL1=0XFD;
  36.         PCON=0X00;
  37.         SCON=0X50;
  38.         ES=1;
  39.         ET0=1;
  40.         EA=1;
  41.         TR1=1;
  42.         TR0=1;
  43. }
  44. void timer0()interrupt 1
  45. {        TH0=(65535-200)/256;
  46.         TL0=(65535-200)%256;
  47.         CLK=~CLK;
  48. }

  49. void disp(){
  50.                 X1=1;
  51.                 X2=0;
  52.                 X3=0;
  53.                 P0=table[b];
  54.                 P07=0;
  55.                 X1=1;
  56.                 X2=0;
  57.                 X3=0;
  58.                 delayus(5);
  59.                 P0=0XFF;
  60.        
  61.                 P0=table[s];
  62.                 X1=0;
  63.                 X2=1;
  64.                 X3=0;
  65.                 delayus(5);
  66.                 P0=0XFF;

  67.                 P0=table[g];
  68.                 X1=0;
  69.                 X2=0;
  70.                 X3=1;
  71.                 delayus(5);
  72.                 P0=0XFF;
  73. }
  74. void adda(uchar z,uchar x,uchar c){
  75.         ADDA=z;
  76.         ADDB=x;
  77.         ADDC=c;

  78. }
  79. void send(uchar x){
  80.         EA=0;
  81.         SBUF=x;
  82.         while(TI==0);
  83.         TI=0;
  84.         EA=1;
  85. }
  86. void main(){
  87.         P1=0XFF;
  88.         init();
  89.         LED=0;
  90.         P2=0XFF;
  91.         adda(0,0,1);
  92.         while(1){
  93.         ST=0;
  94.         OE=0;
  95.         ST=1;
  96.         ST=0;
  97.         while(EOC==0);
  98.         OE=1;
  99.         getdata=P1;
  100.         send(getdata);
  101.         OE=0;
  102.         temp=getdata*1.0/255*500;
  103.         b=temp/100;
  104.         s=temp/10%10;
  105.         g=temp%10;
  106.         disp();
  107.         }
  108. }
  109. void ser()interrupt 4
  110. {       
  111.         if(RI==1){
  112.         RI=0;
  113.         if(SBUF=='A'){
  114.         LED=~LED;
  115.         }
  116. }
  117. }
复制代码


51单片机 ADC0808电压采集.zip

39.12 KB, 下载次数: 428, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:191207 发表于 2017-4-19 14:41 | 只看该作者
我来学习学习
回复

使用道具 举报

板凳
ID:200620 发表于 2017-5-15 09:37 | 只看该作者
来学习啦
回复

使用道具 举报

地板
ID:200620 发表于 2017-5-15 09:38 | 只看该作者
来学习啦,嘿嘿
回复

使用道具 举报

5#
ID:209880 发表于 2017-6-10 16:27 | 只看该作者
你好 可以留个QQ请教问题吗
回复

使用道具 举报

6#
ID:218476 发表于 2017-7-10 13:25 | 只看该作者
学习学习
回复

使用道具 举报

7#
ID:218954 发表于 2017-7-12 10:34 | 只看该作者
学习学习
回复

使用道具 举报

8#
ID:207702 发表于 2017-7-12 12:24 来自手机 | 只看该作者
正是我想要的
回复

使用道具 举报

9#
ID:195740 发表于 2017-12-28 17:18 | 只看该作者
学习学习~
回复

使用道具 举报

10#
ID:184938 发表于 2018-1-8 10:44 | 只看该作者
过来看看
回复

使用道具 举报

11#
ID:304817 发表于 2018-4-10 09:46 | 只看该作者
很好,只是仿真中只有一个volts的值
回复

使用道具 举报

12#
ID:315233 发表于 2018-4-24 13:41 | 只看该作者
学习学习
回复

使用道具 举报

13#
ID:315604 发表于 2018-4-24 19:03 | 只看该作者
学习学习!
回复

使用道具 举报

14#
ID:442274 发表于 2018-12-23 18:46 | 只看该作者
好东西啊 学些学习
回复

使用道具 举报

15#
ID:615298 发表于 2019-9-23 16:58 | 只看该作者
支持支持
回复

使用道具 举报

16#
ID:619680 发表于 2019-10-6 10:15 | 只看该作者
想学习
回复

使用道具 举报

17#
ID:736542 发表于 2020-4-23 22:57 | 只看该作者
#include "at89x51.h"
#define uchar unsigned char
#define uint unsigned int
uint a_100;
uchar bai,shi,ge;
sbit RS=P3^0;
sbit RW=P3^1;
sbit E=P3^5;
sbit P17=P1^7;
sbit P27=P2^7;
sbit start=P3^6;
sbit OE=P3^7;
sbit EOC=P3^2;
sbit P20=P2^0;
uchar code disp[]={"welcome to use"};
delay ()
{
uchar i,j;
for (i=0;i<5;i++)
for (j=0;j<50;j++);
}
wr_order (uchar h)
{
E=0;
RS=0;
RW=0;
P1=h;
E=1;
E=0;
}
wr_data (uchar h)
{
E=0;
RS=1;
RW=0;
P1=h;
E=1;
E=0;
}
busy ()
{
flag:
E=0;
RS=0;
RW=1;
P1=0xff;
E=1;
if (P17==0)
  return;
else goto flag;
}
LCD_start()
{
busy ();
wr_order (0x01);
busy ();
wr_order (0x0c);
busy ();
wr_order (0x38);
}
wlcome ()
{
uchar i;
busy ();
wr_order (0x00+0x80);
for (i=0;i<50;i++)
  {
   busy ();
   wr_data (disp[i]);
   if (disp[i]=='\0')
   break;
  }

}
BCD_data()
{
uchar j;
a_100=a_100*100;
a_100=a_100/51;
j=a_100/100;
bai=j+48;
j=a_100%100/10;
shi=j+48;
j=a_100%10;
ge= j+48;
}
uchar BCD ()
{
uchar ad;

OE=1;
start=1;
start=0;
start=1;
while(EOC);
OE=0;
ad=P0;
OE=1;
delay ();
return ad;
}
xianshi ()
{
busy ();
wr_order (0x40+0x80);
busy ();
wr_data (bai);
busy ();
wr_data ('.');
busy ();
wr_data (shi);
busy ();
wr_data (ge);
busy ();
wr_data ('v');
}
main ()
{

LCD_start ();
wlcome ();
while(1)
  {
   a_100=BCD ();
   BCD_data ();
   xianshi ();
   
  }
}

数值不匹配
请问我那出错了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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