找回密码
 立即注册

QQ登录

只需一步,快速开始

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

一款单片机+TLC2543数字电压表仿真+源程序

[复制链接]
跳转到指定楼层
楼主
一款简单编写的数字电压表,可供参考
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)



单片机源程序如下:
  1. #include <stc12c5a60s2.h>
  2. #include <intrins.h>
  3. #include "lcd1602.h"
  4. #include "AD_2543.h"

  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. /*---------------------------------------
  8. AD芯片采集定义I/O口
  9. -----------------------------------------  */
  10. sbit dout=P1^0;
  11. sbit din=P1^1;
  12. sbit cs=P1^2;
  13. sbit clk=P1^3;

  14. uchar dat2[]={"TL2543 ADC"};  
  15. uchar dat3[]={"Voltage="};
  16. uchar tab[] = {'0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9'};

  17. uint  ad;
  18. uint  Ad_value;

  19. /*--------------------------------------------------
  20. 函数名:read
  21. 输入参数:void
  22. 功能:          进行AD采集并把采集的数据传输给单片机
  23. ---------------------------------------------------*/
  24. void delay(uchar N)
  25. {
  26.         while(N--);
  27. }
  28. uint AD_2543(uchar CON_WORD)
  29. {
  30.         uchar i;
  31.         clk=0;
  32.         cs=0;
  33.         CON_WORD<<=4;
  34.         for(i=0;i<12;i++)
  35.         {
  36.                 if(dout==1)
  37.                         Ad_value|=0x01;
  38.                 if(CON_WORD&0x80)
  39.                         din=1;
  40.                 else
  41.                         din=0;
  42.                 clk=1;
  43.                 delay(10);
  44.                 clk=0;
  45.                 delay(10);
  46.                 CON_WORD<<=1;
  47.                 Ad_value<<=1;
  48.         }
  49.         cs=1;
  50.         Ad_value>>=1;
  51.         return Ad_value;
  52. }

  53. ///**********************************************
  54. //函数名:display()
  55. //参数:  无
  56. //功能:  时钟显示函数
  57. //**********************************************/
  58. void display1()       
  59. {
  60.     uchar  m0=0,m1=0,m2=0,m3=0;       
  61.         ad=(Ad_value/4.095)*5;

  62.         m0=ad/1000;
  63.         m1=ad%1000/100;
  64.         m2=ad%1000%100/10;
  65.         m3=ad%10;
  66.         lcd_write_string(0,0,dat2);        //整数显示部分
  67.     lcd_write_string(1,0,dat3);        //整数显示部分
  68.         lcd_write_char(1,8, tab[m0]);
  69.         lcd_write_char(1,10, tab[m1]);
  70.         lcd_write_char(1,9, '.' );
  71.         lcd_write_char(1,11, tab[m2]);          //小数显示部分
  72.         lcd_write_char(1,12, tab[m3]);
  73.         lcd_write_char(1,13, 'V');
  74. }
复制代码

所有资料51hei提供下载:
电压表.rar (135.49 KB, 下载次数: 43)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:303735 发表于 2019-4-3 15:51 | 只看该作者
仿真怎么没显示呢,把HEX文件加载进去就是不显示数字。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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