您现在的位置是:首页 > 行业发展
ADC应用实例---电压表
智慧创新站
2025-06-05【行业发展】277人已围观
简介大家好,前面和大家分享了好多关于ADC的知识,今天来看一个实例,尽管这次用的芯片已经基本上没人用了,但是这不影响我们学习!话不多说了,直接上代码。主函数include""definepulse0832()_nop_();_nop_();CLK_0832=1;_nop_();_nop_...
大家好,前面和大家分享了好多关于ADC的知识,今天来看一个实例,尽管这次用的芯片已经基本上没人用了,但是这不影响我们学习!话不多说了,直接上代码。
主函数include""
definepulse0832()_nop_();_nop_();CLK_0832=1;_nop_();_nop_();CLK_0832=0
//把模拟电压值转换成8位二进制数并返回
unsignedcharread0832()
{
unsignedchari,ch=0,ch1=0;
CS_0832=0;//片选,DO为高阻态
DI_0832=1;
//此处暂停T-SetUp:250ns(由pulse0832完成)
pulse0832();//第一个脉冲,起始位,DI置高
DI_0832=1;
pulse0832();//第二个脉冲,DI=1表示双通道单极性输入
DI_0832=1;
pulse0832();//第三个脉冲,DI=1表示选择通道1(CH2)
//51单片机为准双向IO口:应先写入1再读取
DI_0832=1;
//MSBFIRSTDATA
for(i=0;i8;++i){
pulse0832();
ch=1;
if(DO_0832==1)
ch|=0x01;
}
//MSBFIRST输出的最后一位与LSBFIRST输出的第一位是在
//同一个时钟下降沿之后,故此处先执行读取,后执行pulse
//LSBFIRSTDATA
for(i=0;i8;++i){
ch1=1;
if(DO_0832==1)
ch1|=0x80;
pulse0832();
}
CS_0832=1;//取消片选,一个转换周期结束
return(ch==ch1)?ch:0;//返回转换结果
}
LCD1602液晶驱动函数defineLCD_RS_0LCD_RS=0
defineLCD_RW_0LCD_RW=0
defineLCD_EN_0LCD_EN=0
include""
#defineDELAY_1602delayms(5)
voidwrite1602_com(unsignedcharcom)
{
LCD_RS_0;
LCD1602=com;
DELAY_1602;
LCD_EN_1;
DELAY_1602;
LCD_EN_0;
}
voidwrite1602_dat(unsignedchardat)
{
LCD_RS_1;
LCD1602=dat;
DELAY_1602;
LCD_EN_1;
DELAY_1602;
LCD_EN_0;
}
voidinit1602(void)
{
LCD_RW_0;
write1602_com(0x38);
write1602_com(0x0C);
write1602_com(0x06);
write1602_com(0x01);
最后再来一张图有问题欢迎大家一起讨论、一起学习
很赞哦!(31)