资源简介
基于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
相关资源
- TPC-ZK系列USB学生实验指导书
- 触摸屏TPC7063E与S7 300 PLC之间MPI通信实
- 工程师开发高质量PCB设计指南
- 确保PCB设计成功,这几步不容忽视
- PCB高速设计信号完整性5个经验
- 高质量PCB设计中PCB图布线的部分要求
- 高质量 PCB 设计
- PowerPCB在PCB设计中的应用解析
- 高质量PCB设计应该注意事项盘点
- SourceInsight 4.0.0096破解
- 破解source insight4.00.0096
- SourceInsight 破解版3264
- source insight 3.5win10可以用
- SourceInsight 3.5安装包和序列号,win10可
- Source Insight 4.0.0080破解文件 替换lic
- Altium Designer dblib简易制作教程
- 如何在 Altium Designer 中快速进行差分对
- CATIA汽车曲面综合设计
- 基于89C51的智能台灯
- rdlc报表 完整
- Rancher 2.0 架构设计
- Beginning STM32: Developing with FreeRTOS libo
- stm32f103c8t6_sch.Lib
- Chameleon_2.3svn_r2466_trunk_pkg+wowpc;os x 10
- Win变色龙Chameleon Install 2281
- HPLC法测定地肤kochia scopariaL.Shard.中齐
- 九齐程序 ny Q-Code
- CoreUIVue是基于Bootstrap4的免费Vue管理模
- 通信原理第七版课后答案樊昌信.doc
- Borland Socket Server Fix2.0 D7
评论
共有 条评论