超详细TL测电压实例说明带电路图.doc
- 文档编号:2612168
- 上传时间:2022-11-03
- 格式:DOC
- 页数:5
- 大小:271.50KB
超详细TL测电压实例说明带电路图.doc
《超详细TL测电压实例说明带电路图.doc》由会员分享,可在线阅读,更多相关《超详细TL测电压实例说明带电路图.doc(5页珍藏版)》请在冰豆网上搜索。
3、超详细TL2543测电压实例说明(带电路图)
By即墨天2
一、电路图
//--------------------------------------------------------------
//读2543AD转换程序
//--------------------------------------------------------------
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitTlc_Sdo=P1^0;//2543输出
sbitTlc_Sdi=P1^1;//2543输入
sbitTlc_Cs=P1^2;//2543片选
sbitTlc_Clk=P1^3;//2543时钟
sbitTlc_Eoc=P1^4;
ucharcodeLCD_DSY1[]={"2543A/DResult:
"};//第一行显示的字符
ucharLCD_DSY2[]={"0.00V"};//第二行显示结果
//--------------------------------------------------------------
//读2543AD转换值子程序,输入参数:
Port通道号,输出参数:
AD转换值
//--------------------------------------------------------------
uintread_2543(ucharport)
{
uintAd_Result=0;//用于存放采集的AD转换值
uchari;
Tlc_Clk=0;
Tlc_Cs=0;
port<<=4;//选择数据长度为12位,高位在前
for(i=0;i<12;i++)
{
Ad_Result<<=1;
if(Tlc_Sdo)Ad_Result|=0x01;
//Tlc_Sdi=(bit)(port&0x80);
port<<=1;
Tlc_Sdi=CY;//CY为程序状态字进位标志位
Tlc_Clk=1;//时钟上升沿
Tlc_Clk=0;
}
Tlc_Cs=1;
return(Ad_Result);
}
voidmain()
{
uintTmp;
Initialize_LCD1602();
LCD1602_Display(0,0,LCD_DSY1);//显示第一行的字符
read_2543(0);//启动AD转换,选中通道0,转换结果无意义。
while
(1)
{
while(!
Tlc_Eoc);//等待AD转换结束
Tmp=read_2543(0)*500.0/4095; //读取0通道AD转换结果*500.0/4095为电压值
LCD_DSY2[6] =Tmp/100%10+'0';//百位
LCD_DSY2[8] =Tmp%100/10+'0';//十位
LCD_DSY2[9] =Tmp%10+'0';//个位
LCD1602_Display(0,1,LCD_DSY2);
}
}
附件一
//--------------------------------------------------------------
//LCD1602显示驱动程序
//--------------------------------------------------------------
//--------------------------------------------------------------
//1602液晶的驱动程序调用前请按接线自行更改液晶接口的位定义;
//在主程序中输入:
Initialize_LCD1602();进行1602液晶的初始化
//显示需调用函数:
LCD1602_Display(x,y,z)
//其中x为字符的列位置,取值范围0-32,y为字符的行位置,取值范围为
//0——第一行,1——第二行;z为待显示的字符串数组名
//--------------------------------------------------------------
#defineucharunsignedchar
#defineuintunsignedint
sbitRS=P2^0;//液晶数据/命令选择端
sbitRW=P2^1;//液晶读写选择端
sbitEN=P2^2; //液晶使能信号
//-----------------------------------------------------
//延时
//-----------------------------------------------------
voidLCD1602_DelayMS(uintms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
//-----------------------------------------------------
//忙检查
//------------------------------------------------------
ucharLCD1602_Busy_Check()
{
ucharLCD_Status;
RS=0;
RW=1;
EN=1;
LCD1602_DelayMS
(1);
LCD_Status=P0;
EN=0;
returnLCD_Status;
}
//-------------------------------------------------
//写LCD命令
//-------------------------------------------------
voidLCD1602_Write_Cmd(ucharcmd)
{
while((LCD1602_Busy_Check()&0x80)==0x80);//忙等待
RS=0;
RW=0;
EN=0;
P0=cmd;
EN=1;
LCD1602_DelayMS
(1);
EN=0;
}
//-------------------------------------------------------------
//发送数据
//-------------------------------------------------------------
voidLCD1602_Write_Data(uchardat)
{
while((LCD1602_Busy_Check()&0x80)==0x80);//忙等待
RS=1;
RW=0;
EN=0;
P0=dat;
EN=1;
LCD1602_DelayMS
(1);
EN=0;
}
//------------------------------------------------------------
//LCD初始化
//-----------------------------------------------------------
voidInitialize_LCD1602()
{
LCD1602_Write_Cmd(0x38);//显示模式设置
LCD1602_DelayMS
(1);
LCD1602_Write_Cmd(0x01);//显示清屏
LCD1602_DelayMS
(1);
LCD1602_Write_Cmd(0x0C);//开显示,不显示光标
LCD1602_DelayMS
(1);
LCD1602_Write_Cmd(0x06);//屏幕不动,读或写一个字符后地址指针加一
LCD1602_DelayMS
(1);
}
//---------------------------------------------------------
//显示字符串
//---------------------------------------------------------
voidLCD1602_Display(ucharx,uchary,uchar*str)
{
uchari=0;
if(y==0)LCD1602_Write_Cmd(0x80|x);
if(y==1)LCD1602_Write_Cmd(0xC0|x);//设置显示起始位置
for(i=0;i<16;i++)
{
LCD1602_Write_Data(str[i]);
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 详细 TL 电压 实例 说明 电路图