资源简介
基于51单片机的电流电压采集程序,有串口通信和led显示,自己编写,完全可以使用
代码片段和文件信息
# 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; //打开中时器
}
void UART_Putch(unsigned char dat) //输出一个字符
{
SBUF=dat; //把数据送给sbuf缓存器中
while(TI!=1);//发送标志位 TI如果发送了为1,没发送为0,没发送等待,到了退出循环
TI=0; //到了,TI清为0
}
unsigned int read_tlc2543(unsigned char M)//M 为十六进制;
{
unsigned char ictrl_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 ij;
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_();
_nop_();
P2=cmd ;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_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_();
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);
delay (1);
lcd_wcmd (0x06);
delay (1);
lcd_wcmd (0x01);
delay (1);
}
void lcd_dis(unsigned char poseunsigned char *dis)
{
unsigned char i;
//lcd_init ();
delay (10);
lcd_pos (pose);
for(i=0;i<4;i++)
{
lcd_wdat(dis[i]+0x30);
}
}
void convert(unsigned int aunsigned char *dis1)//电流
{
unsigned int tempb;
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)
dis1[2]=(unsigned char)b;
else
dis1[2]=0;
b=temp%10;
if(b!=0)
dis1[3]=(unsigned char)b;
else
dis1[3]=0;
}
void main ()
{
init();
lcd_init ();
read_tlc2543(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-07-13 14:12 基于51单片机电流电压采集\
文件 13958 2013-07-13 14:12 基于51单片机电流电压采集\0713
文件 19873 2013-07-13 14:12 基于51单片机电流电压采集\0713.M51
文件 1080 2013-07-13 14:12 基于51单片机电流电压采集\0713.Opt
文件 852 2013-07-13 14:12 基于51单片机电流电压采集\0713.plg
文件 2046 2013-07-13 14:12 基于51单片机电流电压采集\0713.Uv2
文件 0 2013-07-13 14:03 基于51单片机电流电压采集\0713_Uv2.Bak
目录 0 2013-07-13 14:01 基于51单片机电流电压采集\src\
文件 4526 2013-07-13 14:12 基于51单片机电流电压采集\src\Text2.c
文件 5115 2002-04-16 15:32 基于51单片机电流电压采集\STARTUP.A51
文件 11750 2013-07-13 14:12 基于51单片机电流电压采集\STARTUP.lst
文件 810 2013-07-13 14:12 基于51单片机电流电压采集\STARTUP.obj
文件 10839 2013-07-13 14:12 基于51单片机电流电压采集\Text2.lst
文件 15076 2013-07-13 14:12 基于51单片机电流电压采集\Text2.obj
相关资源
- 千锋2018elasticsearch笔记.docx
- mac iphone ipad 维文字体
- Logic in Computer Science英文原版课后习题
- Qt全局热键 QtGlobalShortcut文档
- Pulse Sensor 驱动程序
- EchartsDemo
- SMPP短信客户端,可直接用于你的应用
- 银行家算法课程设计报告
- uclinux详细的中文学习资料
- dsPIC30F 在无传感器BLDC 控制中的应用
- Think Cell Key 序列号 有效期至2019-01-1
- 串口调试助手2.3
- pkcs7的标准文档
- 标准计算器及科学计算器源代码
- qt 5.9.1 调用周立功CAN卡第三方库
- windows下搭建socks5服务器
- [官方]Intel 8086 完整指令编码参考大全
- bdcom 博达交换机路由器密码恢复
- 使用Qt实现可编辑的画图程序
- AutoCAD.NET开发教程
- DLX流水线实验报告.docx
- JS实现心电图功能
- rac详细脚本
- CentOS-6.8-x86_64
- 金融BCG:IT治理与平衡记分卡 PPT
- 织梦仿站教程初、中、高级视频,百
- netcat-win32
- SpringBoot+WebSocket--亲测可用
-
shock_opman.xm
l - CSharp英文背单词源代码
评论
共有 条评论