欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
ADC0832轉換5V電壓表源程序
[打印本頁]
作者:
lx5204441
時間:
2018-7-25 20:28
標題:
ADC0832轉換5V電壓表源程序
QQ圖片20180725202557.png
(9.77 KB, 下載次數(shù): 31)
下載附件
5V電壓表
2018-7-25 20:26 上傳
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
sbit CS = P1^0;
sbit CLK = P1^1;
sbit DI = P1^2;
sbit DO = P1^2;
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
uchar Result_ADC0832=0;
uchar Display_Buffer [2][16] ={
{"Current Voltage:"},
{"(CH)= 0.00V"}
};
uchar Get_Value_ADC0832();
void Refesh_Disp_Buffer();
void LCD_Busy_Check();
void LCD_Write_Command(uchar cmd);
void Write_LCD_Data(uchar dat);
void Initialize_LCD1602();
void LCD_Display(uchar str[]);
void DelayMS(uint X);
uchar Read_State();
void main()
{
uchar j;
Initialize_LCD1602();
while(1)
{
for(j=0;j<2;j++)
{
Get_Value_ADC0832();
Refesh_Disp_Buffer();
if(j==0)
{
LCD_Write_Command(0x80);
LCD_Display(Display_Buffer[j]);
}
else
{
LCD_Write_Command(0xC0);
LCD_Display(Display_Buffer[j]);
}
}
}
}
uchar Get_Value_ADC0832()
{
uchar i,dat1=0,dat2=0;
CS=0; _nop_(); _nop_();
CLK=0; _nop_(); _nop_();
DI=1; _nop_(); _nop_();
CLK=1; _nop_(); _nop_();
CLK=0; DI=1; _nop_(); _nop_();
CLK=1; _nop_(); _nop_();
CLK=0; DI=1; _nop_(); _nop_();
CLK=1; DI=0; _nop_(); _nop_();
CLK=0; DI=1; _nop_(); _nop_();
for(i=0;i<8;i++)
{
CLK=1; _nop_(); _nop_();
CLK=0; _nop_(); _nop_();
dat1=dat1<<1|DO;
}
for(i=0;i<8;i++)
{
dat2=dat2|((uchar)(DO)<<i);
CLK=1; _nop_(); _nop_();
CLK=0; _nop_(); _nop_();
}
CS=1;
DI=1;
return Result_ADC0832=(dat1==dat2)?dat1:0;
}
void Refesh_Disp_Buffer()
{
uint t=Result_ADC0832*500.0/255;
if(t==1) t==0;
Display_Buffer[1][7] = t/100+'0';
Display_Buffer[1][9] =t%100/10+'0';
Display_Buffer[1][10] = t%100/10+'0';
}
void DelayMS(uint X)
{
uchar i;
while(X--) for(i=0;i<120;i++);
}
uchar Read_State()
{
uchar state;
RS=0;
RW=1;
E=1;
DelayMS(1);
state=P0;
E=0;
DelayMS(1);
return state;
}
void LCD_Busy_Check()
{
while(Read_State()& 0x80!=0x80);
DelayMS(1);
}
void LCD_Write_Command(uchar cmd)
{
LCD_Busy_Check();
RS=0;
RW=0;
E=0;
P0=cmd;
E=1;
DelayMS(1);
E=0;
}
void Write_LCD_Data(uchar dat)
{
LCD_Busy_Check();
RS=1;
RW=0;
E=0;
P0=dat;
E=1;
DelayMS(1);
E=0;
}
void Initialize_LCD1602()
{
LCD_Write_Command(0x38);DelayMS(1);
LCD_Write_Command(0x0C);DelayMS(1);
LCD_Write_Command(0x06);DelayMS(1);
LCD_Write_Command(0x01);DelayMS(1);
}
void LCD_Display(uchar *str)
{
uchar k;
for(k=0;k<strlen(str);k++)
{
Write_LCD_Data(str[k]);
DelayMS(2);
}
}
復制代碼
作者:
s360221867
時間:
2018-9-17 19:21
怎么 出不來結果呢 只是5V不動
作者:
zimo123
時間:
2018-9-23 17:10
第81行的t==0不知道啥意思。第83、84修改成這樣精度可以高一點 Display_Buffer[1][9] =t/10%10+'0';
Display_Buffer[1][10] = t%10+'0';
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1