找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5749|回复: 7
收起左侧

串联分压式电阻测量设计与制作(单片机源代码+Proteus仿真)

[复制链接]
ID:318056 发表于 2019-1-12 13:23 | 显示全部楼层 |阅读模式
本设计分为三个简单模块,ad 、单片机最小系统,及显示器。程序及仿真可以下载附件

制作出来的实物图如下:
0.jpg

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

proteus仿真

proteus仿真


引脚连接及建议:
CLOCK--------P3.0
START---------P3.3
EOC ----------P3.7
OE ------------P3.6
单片机为AT89C51
Ad为ADC0809或者0808
其区别为0809的out1-out8对应单片机的p1.0-p1.7
        0808d的out1-out8对应单片机的p1.7-p1.0
显示器为lcd1602
由于仿真原件库的问题,仿真使用的0808,显示器使用的LM016L。
实物使用的0809及1602

关于如何用keil创建工程和生成hex文件,以及proteus如何下载hex文件到单片机,百度有详细步骤。

单片机源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define ufloat unsigned float
  5. uchar code table[]="THE RES:";
  6. sbit lcdrs=P2^0;
  7. sbit lcdrw=P2^1;
  8. sbit lcden=P2^2;
  9. sbit OE=P3^6;
  10. sbit EOC=P3^7;
  11. sbit CLOCK=P3^0;
  12. sbit ST=P3^3;
  13. unsigned char dat[]="00.000k";
  14. unsigned int tmp;
  15. float mo;
  16. unsigned char adc;
  17. uchar  num;
  18. void delay(uint z)//延时2ms
  19. {  
  20.     uint x,y;
  21.     for (x=z;x>0;x--)
  22.     for (y=110;y>0;y--);
  23. }
  24. void write_com(uchar com)//写命令
  25. {  
  26.     lcdrw=0; //低电平为写
  27.     lcdrs=0;//低电平为命令选择
  28.     P0=com;
  29.     delay(5) ;
  30.         lcden=1;
  31.         delay(5) ;
  32.         lcden=0;
  33. }

  34. void write_data(uchar date)//写数据
  35. {
  36.     lcdrw=0;//低电平为写
  37.     lcdrs=1;//高电平为数据选择
  38.     P0=date;
  39.         delay(5);
  40.         lcden=1;
  41.         delay(5);
  42.         lcden=0;
  43. }
  44. void init()//初始化
  45. {
  46.     lcdrw=0;
  47.     lcden=0;
  48.     write_com(0x38) ;//设置 16X2显示,5X7点阵/ /8位数据接口
  49.     write_com(0x0e) ;// 设置为只显示字符,不显示动
  50.     write_com(0x06) ;//写一个字符后地址指针加1
  51.         write_com(0x01);
  52. }
  53. void main()
  54. {
  55.     init() ;//初始化
  56.         EA=1;
  57.         ET0=1;
  58.         TMOD=0x02;
  59.         TL0=206;
  60.         TL0=206;
  61.         TR0=1;
  62.         while(1)
  63.         {        ST=0;
  64.                 ST=1;
  65.                 ST=0;
  66.                 while(!EOC);            
  67.                 OE=1;
  68.                 adc=P1;
  69.                 tmp=(255000/adc)-1000;
  70.                 tmp=10*tmp;
  71.                 dat[0]=tmp/100000       +'0';
  72.                 dat[1]=tmp/10000%10                +'0';
  73.                 dat[3]=tmp/1000%10            +'0';
  74.                 dat[4]=tmp/100%10                +'0';
  75.                 dat[5]=tmp/10%10                +'0';
  76.         write_com (0x80) ;//从液晶第一行第列开始写数据
  77.         for (num=0; num<9; num++)
  78.     {  
  79.             write_data(table[num]) ;
  80.         delay(5) ;
  81.     }
  82.     write_com(0x80+0x40) ;//从液晶第二行第一列开始写数据
  83.         for (num=0;num<7;num++)
  84.     {  
  85.             write_data(dat[num]) ;
  86.         delay(5);
  87.     }
  88.         }
  89. }
  90.   void timer0(void) interrupt 1
  91. {
  92.         CLOCK=~CLOCK;
  93. }
复制代码
0.png

所有资料51hei提供下载:
分压式电阻测量.zip (83.16 KB, 下载次数: 130)

评分

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

查看全部评分

回复

使用道具 举报

ID:438360 发表于 2019-1-13 18:07 | 显示全部楼层
proteus没有源文件啊
回复

使用道具 举报

ID:438360 发表于 2019-1-13 18:08 | 显示全部楼层
仿真没有工程文件啊
回复

使用道具 举报

ID:318056 发表于 2019-1-16 15:57 | 显示全部楼层
aahh3316841 发表于 2019-1-13 18:08
仿真没有工程文件啊

hex文件需要自己下到单片机里。
双击仿真的单片机,在中间有个黄色文件夹,点开,然后加入程序文件夹的hex文件
回复

使用道具 举报

ID:318056 发表于 2019-1-16 16:00 | 显示全部楼层
aahh3316841 发表于 2019-1-13 18:08
仿真没有工程文件啊

hex文件需要自己下到单片机里
回复

使用道具 举报

ID:407026 发表于 2019-7-13 10:01 | 显示全部楼层
量程怎么改呢
回复

使用道具 举报

ID:517951 发表于 2019-12-13 15:09 | 显示全部楼层
抽空研究研究
回复

使用道具 举报

ID:606493 发表于 2020-7-18 11:03 | 显示全部楼层
我把R1和R2的阻值都改成了100Ω,但是LCD显示的测量值还是1.007K
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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