缘由https://ask.csdn.net/questions/7958899
简易数字电压表:
①电路如图所示,要求在液晶屏第一行按"U=1.23V"的格式实时显示滑动头端的电压,请编程实现。
②调整滑动变阻器滑动头,查看并记录当滑动头分别处于10%,50%和100%位置时液晶屏上的显示值;
③*在以上任务成功的基础上,仿照1602的驱动程序,把MAX1241驱动程序做成单独一个文件,以便移植。

程序不会设计了,请帮帮忙吧。




cpp
#include "reg52.h"
sbit UT=P2^0;
sbit SK=P2^1;
sbit CS=P2^2;
unsigned int SJ=0;
void Du_MAX1241()
{
unsigned char cs=12;
unsigned int zh=2048;
SJ=SK=CS=0;SK=1;SK=0;
xf:if(cs--)
{
SK=1;//高电平读取数据
// SJ<<=1;SJ+=UT;
SJ+=UT*zh;
SK=0;
zh/=2;
goto xf;
}
CS=1;
}
void main()
{//缘由https://ask.csdn.net/questions/7956154/54223199
unsigned char jz=0,sj[]={" "},ys=0,du=0;
LCD1602ChuShiHua();
Xie_String("voltage:",0,0);Xie_String("HJ7447",4,1);
while(1)
{
if(++ys==0)if(++du==0){
SJ*=0.05/41*1000;if(SJ>45)++SJ;
sj[0]=SJ/10000+'0';
sj[1]=SJ/1000%10+'0';
sj[2]=SJ/100%10+'0';
sj[3]=SJ/10%10+'0';
sj[4]=SJ%10+'0';
Xie_String(sj,8,0);
Du_MAX1241();
}
}
}

缘由/ask.csdn.net/questions/7980528 烟雾报警 发光二极管 程序-编程语言-CSDN问答 http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=228934


单片机对ADC0832 的控制原理
正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示起始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,其功能详见官方资料。

如资料 所示,当此2 位数据为"1"、"0"时,只对CH0 进行单通道转换。当2位数据为"1"、"1"时,只对CH1进行单通道转换。当2 位数据为"0"、"0"时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为"0"、"1"时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出转换数据最低位DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。
作为单通道模拟信号输入时ADC0832的输入电压是0~5V,且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。
cpp
#include "reg52.h"
sbit clk=P1^0;
sbit dio=P1^1;
sbit cs =P1^2;
unsigned char ADC0832QD()
{
unsigned char sj=0,sj1=0,mc=16;
dio=cs=1;clk=0;cs=0;clk=1;//第一脉冲
dio=1;clk=0;clk=1;clk=0;//第二脉冲
clk=1;clk=dio=0;//第三脉冲选择单通道0转换
zh:if(mc--)
{
clk=1;
if(mc>7){sj|=dio;sj<<=1;}
else {sj1|=dio;sj1>>=1;}
clk=0;goto zh;
}
cs=1;
return sj;
}
void main()
{
unsigned char sy=0,my=0,zhi=0;
while(1)
{
if(++sy==0)if(++my==0)zhi=ADC0832QD();
}
}
cpp
#include "reg52.h"
sbit clk=P1^0;
sbit dio=P1^1;
sbit cs =P1^2;
unsigned char ADC0832QD()
{
unsigned char sj=0,sj1=0,mc=6;
dio=cs=1;++mc;clk=0;++mc;cs=0;++mc;clk=1;++mc;//第一脉冲
dio=1;++mc;clk=0;++mc;clk=1;++mc;clk=0;++mc;//第二脉冲
clk=dio=1;++mc;clk=0;++mc;//第三脉冲选择单通道0转换
zh:if(mc--)
{
clk=1;
if(mc>7){sj|=dio;sj<<=1;}
else {sj1|=dio;sj1>>=1;}
clk=0;goto zh;
}
cs=1;
return sj;
}
void main()
{
unsigned char sy=0,my=0,zhi=0;
while(1)
{
if(++sy==0)if(++my==0)zhi=ADC0832QD();
}
}

cpp
unsigned char ADC0832QD(unsigned char x,unsigned char t)
{
unsigned char sj=0,js=0,mc=0;
dio=clk=cs=1;++mc;//初始化
clk=0;++mc;cs=0;++mc;clk=1;++mc;//第一脉冲
dio=x;++mc;clk=0;++mc;clk=1;++mc;//第二脉冲
dio=t;++mc;clk=0;++mc;dio=clk=1;mc+=0;//第三脉冲选择单通道0/1转换
zh:if(mc--)
{
clk=0;
sj|=dio;sj<<=1;
clk=1;
goto zh;
}
cs=1;
return sj;
}
unsigned char ADC0832QD(unsigned char x,unsigned char t)
{
unsigned char sj=0,sf=0,mc=0,fs=1;
dio=clk=cs=1;++mc;//初始化
clk=0;++mc;cs=0;++mc;clk=1;++mc;//第一脉冲
dio=x;++mc;clk=0;++mc;clk=1;++mc;//第二脉冲
dio=t;++mc;clk=0;++mc;dio=clk=1;mc+=7;//第三脉冲选择单通道0/1转换
zh:if(mc--)
{
clk=0;
if(mc>7){sj|=dio;sj<<=1;}
else{sf+=dio*fs;fs*=2;}
clk=1;
goto zh;
}
cs=1;
return (sf>=sj?sj:0);
}

「善現!云何菩薩摩訶薩為與世間作所趣故,發趣無上正等菩提?
善現!諸菩薩摩訶薩希求無上正等菩提,修諸菩薩摩訶薩行,欲以
四攝事攝一切有情,所謂布施、愛語、利行、同事。欲為有情宣說
開示色以虛空為所趣,受、想、行、識亦以虛空為所趣,如是乃至
一切智以虛空為所趣,道相智、一切相智亦以虛空為所趣。欲為有
情宣說開示未來色趣空故無所從來,過去色趣空故無所至去,現在
色趣空故亦無所住;未來受、想、行、識趣空故無所從來,過去
受、想、行、識趣空故無所至去,現在受、想、行、識趣空故亦無
所住。如是乃至未來一切智趣空故無所從來,過去一切智趣空故無
所至去,現在一切智趣空故亦無所住;未來道相智、一切相智趣空
故無所從來,過去道相智、一切相智趣空故無所至去,現在道相
智、一切相智趣空故亦無所住。欲為有情宣說開示色非趣非不趣。
何以故?以色性空,空中無趣無不趣故。受、想、行、識亦非趣非
不趣。何以故?以受、想、行、識性空,空中無趣無不趣故。如是
乃至一切智非趣非不趣。何以故?以一切智性空,空中無趣無不趣
故。道相智、一切相智亦非趣非不趣。何以故?以道相智、一切相
智性空,空中無趣無不趣故。善現!是為菩薩摩訶薩為與世間作所
趣故,發趣無上正等菩提。
大般若波羅蜜多經卷第四百四十五