PCF8591模数转换及1602LCD显示应用程序.doc 立即下载
2024-12-13
约5.8千字
约7页
0
49KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

PCF8591模数转换及1602LCD显示应用程序.doc

PCF8591模数转换及1602LCD显示应用程序.doc

预览

免费试读已结束,剩余 2 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineDelay4us(){_nop_();_nop_();_nop_();_nop_();}

//引脚定义
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_EN=P2^2;

//延时子程序
voidDelayMS(intms){
	uchart;
	while(ms--)for(t=0;t<120;t++);
}

//LCD忙状态检测
bitLCD_Busy_Check(){
	bitResult;
	LCD_RS=0;LCD_RW=1;
	LCD_EN=1;Delay4us();Result=(bit)(P0&0x80);
	LCD_EN=0;
	returnResult;
}

//写LCD命令
voidLCD_Write_Command(ucharcmd){
//	while(LCD_Busy_Check());
	DelayMS(5);
	LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();
	P0=cmd;Delay4us();
	LCD_EN=1;Delay4us();LCD_EN=0;
}

//写LCD数据
voidLCD_Write_Data(uchardat){
//	while(LCD_Busy_Check());//LCD是否忙?
	DelayMS(5);
	LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;Delay4us();
	LCD_EN=1;Delay4us();LCD_EN=0;
}

//LCD初始化
voidLCD_Initialise()
{
	LCD_Write_Command(0x38);DelayMS(5);//设置16*2行显示,5*7点阵,8位数据接口
	LCD_Write_Command(0x0C);DelayMS(5);//开显示
	LCD_Write_Command(0x06);DelayMS(5);//地址指针加1,光标加1,整屏显示不移动
	LCD_Write_Command(0x01);DelayMS(5);//指针清零,显示清零
}

sbitSCL=P1^0;
sbitSDA=P1^1;
ucharRecv_Buffer[4];//数据接收缓冲(每通道1字节)
uintVoltage[]={'0','0','0'};//数据分解为电压x.xx
bitbdataIIC_ERROR;//设置I2C错误标志位
ucharLCD_Line_1[]={"1-.V2-.V"};
ucharLCD_Line_2[]={"3-.V4-.V"};

voidLCD_Set_Position(ucharpos){//设置LCD显示位置
	LCD_Write_Command(pos|0x80);
}

voidLCD_Display_A_Line(ucharLine_Addr,uchars[]){//显示一行
	uchari;
	LCD_Set_Position(Line_Addr);
	for(i=0;i<16;i++);LCD_Write_Data(s[i]);	
}

//将模数转换后的值分解存入缓冲
voidConvert_To_Voltage(ucharval){
	uchartmp;
	Voltage[2]=val/51+'0';//最大值为255,对应5伏电压,分度为255/5=51,一位整数
	tmp=val%51*10;
	Voltage[1]=tmp/51+'0';//第一位小数
	tmp=tmp%51+'0';
	Voltage[0]=tmp/51+'0';//第二位小数
}

//启动I2C总线
voidIIC_Start(){
	SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;
}

//停止I2C总线
voidIIC_Stop(){
	SDA=0;SCL=1;Delay4us();SDA=1;Delay4us();SCL=0;
}

//从机发送应答
voidSlave_Ark(){
	SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;
}

//从机发送非应答
voidSlave_NOArk(){
	SDA=1;SCL=1;Delay4us();SCL=0;SDA=0;
}

//发送一个字节
voidIIC_SendByte(ucharwd){
	uchari;
	for(i=0;i<8;i++)//循环移入8位
	
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

PCF8591模数转换及1602LCD显示应用程序

文档大小:49KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用