电流采样c语言程序,基于51单片机电流电压采集

电流采样c语⾔程序,基于51单⽚机电流电压采集
# include
# include
sbit rs=P0^7;
sbit rw=P0^6;
sbit ep=P0^5;
unsigned char dis1[4];
unsigned char dis2[4];
unsigned char chv=0x00;
unsigned char cha=0x70;
//unsigned char chv;
unsigned int date_v=0;
unsigned int date_a=0;
sbit EOC=P1^0;
sbit CS=P1^4;
sbit IO_CLK=P1^1;
sbit DAT_IN=P1^2;
sbit DAT_OUT=P1^3;
void init() //初始化uart
{
TMOD=0X20;  //定时器1定时器⽅式  ⼯作模式2,可⾃动重载的8位计数器常把定时/计数器1以模式2作为串⾏⼝波特率发⽣器SCON=0XD0; //选择⼯作模式1使能接收允许发送,允许接收
EA=1; //开总中断
ES=1;  //打开串⼝中断
ET1=0;  //打开定时器中断
PCON=0X00; //8位⾃动重载,波特率加倍
TH1=0Xfd;  //⽤22.1184 mhz波特率
TL1=0Xfd;
TR1=1; //打开中时器
}
vselvoid UART_Putch(unsigned char dat)  //输出⼀个字符
{
SBUF=dat; //把数据送给sbuf缓存器中
TI=0;  //到了,TI清为0
}
调浆桶
unsigned int read_tlc2543(unsigned char M)//M 为⼗六进制;{
unsigned char i,ctrl_word;
unsigned int ad_result=0;
DAT_OUT=1;
ctrl_word=M;
CS=1;
IO_CLK=0;
CS=0;
for(i=0;i<8;i++)
{
DAT_IN=ctrl_word&0x80;
ctrl_word=ctrl_word<<1;
IO_CLK=1;
ad_result=ad_result<<1;
if(DAT_OUT)
ad_result=ad_result+1;
IO_CLK=0;
}
for(i=8;i<12;i++)
{
IO_CLK=1;
ad_result=ad_result<<1;
if(DAT_OUT)
ad_result=ad_result+1;
IO_CLK=0;
}
CS=1;
return ad_result;
}
void delay (int m)
unsigned char i,j;
for (i=0;i
for (j=0;j<253;j++);
}
bit lcd_bz()
{
bit result;
rs=0;          // 读忙信号
rw=1;
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P2&0x80);
ep=0;
return result;
}
void lcd_wcmd (unsigned char cmd) {
while (lcd_bz());
rs=0;
rw=0;
ep=0;
_nop_();1 63
_nop_();
P2=cmd ;
_nop_();
_nop_();大鼠灌胃
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
ep=0;
}
void lcd_pos (unsigned char pos) {
lcd_wcmd (pos|0x80);
}
void lcd_wdat (unsigned char dat) {
while (lcd_bz());
rs=1;
rw=0;
ep=0;
_nop_();
_nop_();
aoi测试
P2=dat ;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
void lcd_init ()
{
lcd_wcmd (0x38);
delay (1);
lcd_wcmd (0x0c);
lcd_wcmd (0x06);
delay (1);
lcd_wcmd (0x01);
delay (1);
}
void lcd_dis(unsigned char pose,unsigned char *dis)
{
unsigned char i;
//lcd_init ();
delay (10);
lcd_pos (pose);
for(i=0;i<4;i++)
AR空间定位{
lcd_wdat(dis[i]+0x30);
}
}
void convert(unsigned int  a,unsigned char *dis1)//电流{
unsigned int temp,b;
b=a/1000;
if(b!=0)
dis1[0]=(unsigned char)b;
else
dis1[0]=0;
temp=a%1000;
b=temp/100;
if(b!=0)
dis1[1]=(unsigned char)b;
else
dis1[1]=0;
temp=temp%100;
b=temp/10;
if(b!=0)

本文发布于:2024-09-22 15:26:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/177704.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模式   允许   接收   采样   打开   发送   采集   送给
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议