这个星期,我使用TLC2543这款芯片来读取输入的电压值,显示模块则是使用的LCD1602,程序不难,很适合初学者。

#include<reg51.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#define uint8_t unsigned char    //0-255
#define uint16_t unsigned int   //0-65535
#define uint32_t unsigned long     //0-4294967295
#define uchar unsigned char
#define u8 unsigned char
#define u16 uint16_t
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
ulong volt;//测量的电压值
/*AD转换芯片*/
sbit DOUT=P1^5; //数据输出
sbit DIN=P1^6;  //数据输入
sbit CS=P1^7;
sbit CLK=P3^6;
sbit EOC=P3^7;sbit rs = P2^0; //LCD1602 RS接口
sbit rw = P2^1;    //LCD1602 RW接口
sbit en = P2^2;    //LCD1602 EN接口      /*******************************************************************************
* 函 数 名         : delay
* 函数功能         : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(uint8_t i)     //延时函数   i=1时 延时10us
{while(i--);
}void delay_1s(uint8_t s)
{unsigned int i;unsigned char j; //定义两个循环变量i、jwhile(s--)for (i = 1000; i > 0; i--) //外层循环1000次for (j = 124; j > 0; j--) ; //内层循环124次
}/*******************************************************************************
* 函数功能         : 向TLC2543写命令及读转换后的数据,ad转换
*******************************************************************************/u16 read2543(u8 con_word)
{u16 ad=0,i;CLK=0;    //时钟首先置低CS=0;    //片选为0,芯片工作for(i=0;i<12;i++){if(DOUT) //首先读取TLC2543的1位数据ad=ad|0x01;DIN=(bit)(con_word&0x80); // 向TLC2543写1位数据CLK=1;   //时钟上升沿,TLC2543输出使能delay(3);CLK=0;   //时钟下降沿,TLC2543输入使能delay(3);con_word<<=1;ad<<=1;}CS=1;ad>>=1;volt=ad;//取走转换结果volt=volt*1.221;return(volt);
}/*******************************************************************************
* 函数功能         : LCD的显示
*******************************************************************************/void lcd_wcom(uint8_t com)  //LCD1602 写命令
{rs = 0;rw = 0;en = 0;P0 = com;delay(100);en = 1;delay(100);en = 0;
}void lcd_wdat(uint8_t dat) //LCD1602 写数据
{rs = 1;rw = 0;en = 0;P0 = dat;delay(100);en = 1;delay(100);en = 0;
}void lcd_init(void)    //LCD初始化
{lcd_wcom(0x38);lcd_wcom(0x0c);lcd_wcom(0x06);lcd_wcom(0x01);}/***********************************************************************
* 函数功能       :AD显示数值
*******************************************************************************/
void LCD_Display_AD(void)
{//  uint16_t ad_temp;
//  ad_temp=datapros();lcd_wcom(0x80+0x40);lcd_wdat('A');lcd_wdat('D');lcd_wdat(':');lcd_wdat((volt%10000000/1000000) +'0');//百万lcd_wdat((volt%1000000/100000) +'0');//十万lcd_wdat((volt%100000/10000) +'0');//万lcd_wdat((volt%10000/1000) +'0');//千lcd_wdat((volt%1000/100) +'0');//百lcd_wdat((volt%100/10) +'0');//十lcd_wdat((volt%10) +'0');//个}/**********************************************************/
//主程序
/**********************************************************/
void main()
{lcd_init(); //LCD初始化while(1){read2543();//调用2543驱动程序测量地址为0LCD_Display_AD();//调用显示程序    }
}


written by 亦舒斋
QQ:1464475872

使用TLC2543来读取电压相关推荐

  1. 通过PCF8591读取电压值(AD转换)

    通过PCF8591读取电压值(AD转换) A/D的主要指标 常用A/D器件 PCF8591 PCF8591的控制字节 A/D的主要指标 1.ADC的位数:n位ADC代表,2的n次方个刻度 2.基准源: ...

  2. (2)arduino读取电压相对值(模拟读取传感器数值)

    arduino读取电压相对值 准备工作 接线图 读取电压值代码 准备工作 需要准备的材料有:电位器一个.arduino uno单片机.杜邦线.面包板 接线图 电位器与滑动变阻器相似,若将其两端连接5V ...

  3. 全自动测试治具7寸触摸串口屏+电流读取+电压读取+称重模块

    使用: 1,HX711 100克称重模块 2,INA226电流传感器(也可以读取电压) 3,mega2560 模拟口直接读取电压 4,7寸触摸串口屏 本程序使用freerots作为框架取代定时器,与串 ...

  4. 树莓派python编程读取电压_《树莓派Python编程指南》——3.2 在结构体中存储值-阿里云开发者社区...

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第3章,第3.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  5. 通过一个端口读取多个按钮

    简 介: 利用单片机的ADC端口,可以读取多个按钮的状态.在设计过程中,需要综合考虑到按扭的个数与读取的可靠性,特别是对选择电阻的阻值进行优化,使得不同分压数值之间相差最大.如果按键面板需要通过长的引 ...

  6. 基于android7.1+msm8937读取ADC采样值

    基于android7.1+msm8937读取ADC采样值 读取给设备供电的电压,比如16V,通过监控ADC(Analog-to-Digital Conversion)值来知道电源波动情况和实际给设备供 ...

  7. modbus tcp主站和从站_【智】S7200PLC与台达变频器MODBUS轮询实时读取详解

    大家好,我是微控小智,今天又跟大家见面了.学习不是一蹴而就,需要坚持,做技术亦是如此,厚积才能博发. 上次分享的S7-200PLC与台达VFD_M变频器Modbus通讯案例程序,是采用SM0.5时钟脉 ...

  8. esp8266原理图_ESP8266_22基于自身ADC的电压采样

    这一节内容比较简单,就是电压采样,在传统设计中应用还是比较多的.首先看下支持ADC采样的管脚,找到你手里模块的原理图,我的如下所示: 如上所示,U1的2脚为ADC管脚,而且整个模块有且仅有这一个电压采 ...

  9. 【蓝桥杯单片机】实战训练:基于15单片机的距离测试及电压数据采集响应系统(超声波测距、上位机、DAC输出)

    实验开发板为CT107D蓝桥官方板,编译环境为MDK5 目录 概述: 1.单片机源代码: main.c IIC.c Keyboaed.c SMG.c Snoic.c Series_port.c Dat ...

最新文章

  1. 鲲鹏入晋 万里腾飞,鲲鹏应用创新大赛2021山西赛区邀你来战!
  2. 队列的基本操作_如果让你手写个栈和队列,你还会写吗?||CSDN博客精选
  3. openkm zip 导入乱码问题解决
  4. cmw500综合测试仪使用_山西优质三相直流电阻测试仪图片-南电合创
  5. linux系统硬件配置查看方法
  6. ARM Linux 3.x的设备树(Device Tree)
  7. 基于.NET平台的分层架构实战(一)——综述
  8. NOIP2018赛前停课集训记——最后的刷板子计划
  9. C语言 - 判断素数的函数
  10. 航空订票系统php,C++版数据结构航空订票系统源代码.doc
  11. 郝斌的数据结构学习笔记(1)概述,算法,指针的概念,结构体,线性结构,离散存储,链表
  12. html闹钟设置,设置闹钟标签.html
  13. mysql内连接去重复_MYSQL 内连接查询重复
  14. 二叉树的顺序存储和三种遍历(二)
  15. java.io.IOException: There appears to be a gap in the edit log. We expected txid ***, but got txid
  16. 《设计模式之禅》书评
  17. 错误1053: 服务没有及时响应启动或控制请求
  18. vc++6.0中文乱码的解决方法
  19. EasyUIcombobox回填
  20. 计算机应用中兴5G通讯是什么,中兴通讯自曝5G成绩单:承建全国三成以上5G网络...

热门文章

  1. sqlloader 导入数据的一点经验教训(最后附我的导入过程)
  2. 苹果计算机取消用户名和密码进入不,苹果电脑怎么设置不用密码开机
  3. 初生牛犊,希望早日变成大牛!
  4. QT 使用 QTcpSocket来检测 ip 设备的网络状态
  5. Linux kernel log与调试
  6. 使用 __breakpoint 实现软件中断
  7. mysql中的强制索引_你如何强制MySQL中的查询使用索引?
  8. 125页6万字智慧城市系统及智慧城市运营中心建设技术方案
  9. 双alpha可以结合吗_推文简评《和我的Alpha一起待产》:这本双A甜文有点意思
  10. Python实现元胞自动机——十字路口