基于ADC0832的电位器数值显示

目录
一、前言
二、芯片介绍
1、adc0832
2、74hc245
三、硬件连接
四、软件代码
五、效果展示
六、代码链接
一、前言 通过adc0832对电位器进行检测根据电压的不同主控芯片计算出不同的数值,将所得数值进行数模转换显示在数码管上。电位器种类有很多,摇杆式电位器在可在遥控小车、遥控飞机等电子制作时进行使用,电位器数值显示是电位器使用的基础,后期可进行多电路的添加与应用。
二、芯片介绍 1、adc0832 引脚功能:
引脚编号 引脚功能 描述
1 cs- 低电平芯片使能端
2 ch0 模拟信号输入通道0
3 ch1 模拟信号输入通道1
4 gnd 低电平(地)
5 d1 数据信号输入,选择通道控制
6 d0 数据信号输入,转换数据输出
7 clk 时钟输入
8 vcc 高电平
2、74hc245 74hc245是方向可控的八路缓冲器,主要用于实现数据总线的双向异步通信。 74hc245是兼容ttl器件引脚的高速cmos总线收发器,典型的cmos型三态缓冲门电路,八路信号收发器,。由于单片机或cpu的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。74hc245通常在主控芯片的并行接口与外部受控设备的并行接口间添加。主要应用于大屏显示,以及其它的消费类电子产品中增加驱动。
引脚功能:
引脚编号 引脚编号 描述
1 dir 方向控制
2 a0 数据输入/输出
3 a1 数据输入/输出
4 a2 数据输入/输出
5 a3 数据输入/输出
6 a4 数据输入/输出
7 a5 数据输入/输出
8 a6 数据输入/输出
9 a7 数据输入/输出
10 gnd 逻辑地
11 b7 数据输入/输出
12 b6 数据输入/输出
13 b5 数据输入/输出
14 b4 数据输入/输出
15 b3 数据输入/输出
16 b2 数据输入/输出
17 b1 数据输入/输出
18 b0 数据输入/输出
19 oe- 输出使能
20 vcc 逻辑电源
dir=1,a-b;dir=0,b-a;
oe=0导通,oe=1关闭;
三、硬件连接 仿真图
p3口连接共阴极数码管的段码位;p20、p21、p22、p23为数码管的位选;
p10连接cs-;p11连接clk;p12连接dido;
四、软件代码 main主函数
进行定时器的初始化,adc0832的初始化,以及数码管段显示的使用。
void main(){ uchar ad1; uint vt1; uint while_times = 0; delayms(300); et0 = 1; tr0 = 1; et1 = 1; tr1 = 1; ea = 1; //打开总中断 clk = 0; //adc0832初始化 cs = 1; while(1) { digdisplay(); ad1 = get_ad_result1(); vt1= (500.0/256.0)*ad1; date[0] =smgduan[vt1/100];//千分位 date[1] =smgduan[vt1/10%10]; //百分位 date[2] =smgduan[vt1%10];//十分位 date[3] =smgduan[vt1];//个分位 }} 数码管位选函数。
通过switch语句进行位选,p3口为数码管段显示口;数码管显示使用的是数码管动态扫描。
void digdisplay(){ int i; for(i=0;i<8;i++) { switch(i) //位选,选择点亮的数码管, { case(0): qian=0;bai=1;shi=1; ge=1;break;//显示第0位 case(1): qian=1;bai=0;shi=1; ge=1;break;//显示第1位 case(2): qian=1;bai=1;shi=0; ge=1;break;//显示第2位 case(3): qian=1;bai=1;shi=1; ge=0;break;//显示第3位 } p3=date[i];//发送段码 delayms(1); //间隔一段时间扫描 p3=0x00;//消隐 }}  adc0832通道选择函数。
该芯片在上篇文章中有进行解释,这里不进行解释了。
uchar get_ad_result1() //包含11个clk下降沿 { uchar i, dat; cs = 1; //adc0832未工作时,cs端为高电平,此时芯片禁用 clk =1; cs = 0; dido = 1; clk = 0; clk = 1; //sclk第一个下降沿来到时,di = 1启动adc0832 dido = 1; clk = 0; clk = 1; //sclk第二个下降沿 dido = 0; clk = 0; clk = 1; //sclk第三个下降沿,发送1,0选择通道cho dido = 1; //释放总线 for(i = 0; i < 8; i++) //第4个下降沿到第11个下降沿 { clk = 0; //clk处于下降沿,每一个下降沿do端输入下一个 if(dido) dat |= 0x01; // dat = dat | 0x01,dat和0x01做“或”的运算,意思是最低位置1,其它位保持不变。 clk = 1; //clk处于上升沿 dat <<= 1; //数据左移 } return (dat); cs = 1; //adc0832停止工作} delay.c
根据需要进行调用。
/*------------------------------------------------ us延时函数 ------------------------------------------------*/void delayus2x(unsigned char t){ while(--t);}/*------------------------------------------------ ms延时函数------------------------------------------------*/void delayms(unsigned char t){ while(t--) { //大致延时1ms delayus2x(245); delayus2x(245); }} 五、效果展示 实物展示 https://live.csdn.net/v/217316
六、代码链接 欢迎留言评论分享自己的看法;关注公众号“小小创客者”回复“数码管显示电位器值”获得代码,如有错误欢迎指正。


大疆二代Mavic无人机是双版本,Zo变焦版和Pro版
汽车+5G市场风口,PCB产业面临重新洗牌
rk3566和晶晨s912参数对比
如何给功放机加功力?
简述Agilent安捷伦DSOX3104T数字示波器1GHz
基于ADC0832的电位器数值显示
奥地利微推出低功耗高分辨率磁旋转编码器AS5055
还敢网购手机吗?网购手机质量抽查 中兴HTC等被点名不合格
工业互联网的创新发展为现代化工业经济体系建设做铺垫
软银推出月租扫地机器人Whiz 是其尝试自救的一种方式
嵌入式新闻:CES 2022、量子安全和激光雷达
浅谈数据中心200G DAC高速线缆
Rocket Lake-S处理器曝光 支持20条PCIe 4.0
微控制器的工作原理和选择步骤
嵌入式操作系统存在差异吗
三元催化器的组成及结构图
浅谈防火桥架型号(2020版)
SV-704XT网络有源音柱
基于分时一相位控制串联谐振逆变器的研究
低功耗无线高清视频传输技术推出