一.使用PCF8591获取光敏电阻阻值,但一直显示255不变化
1.代码:
unsigned char Pcf8591_Adc(unsigned char channel_num_control)
{
unsigned char temp;
IIC_Start(); //发送开启信号
IIC_SendByte(0x90); //选择PCF8591芯片
IIC_WaitAck(); //等待PCF8591反馈
IIC_SendByte(0x41); //选择通道
IIC_WaitAck(); //等待PCF8591反馈
IIC_Start(); //发送开启信号
IIC_SendByte(0x91); //
IIC_WaitAck(); //等待PCF8591反馈
temp = IIC_RecByte(); //接收数据
IIC_SendAck(1); //不应答
IIC_Stop(); //停止发送
return temp;
}
2.分析:问题存在于通道选择错误,光敏电阻与通道1相连
IIC_SendByte(0x43);//选择通道3
3.解决方案:改为0x41
二.DS18B20无法正常测温度
1.代码:
/*
程序说明: 单总线驱动程序
软件环境: Keil uVision 4.10
硬件环境: CT107单片机综合实训平台(外部晶振12MHz) STC89C52RC单片机
日 期: 2011-8-9
*/
#include "bsp_onewire.h"
//单总线延时函数
void Delay_OneWire(unsigned int t) //STC89C52RC
{
unsigned char i;
while(t--);
}
2.分析:程序是用STC89C52RC测试的,但蓝桥杯比赛用的是IAP15F2K61S2相当于STC15f2k60S2
运行速度快8-12倍说明,延时函数也要增加8-12倍
3.解决方案:
//单总线延时函数
void Delay_OneWire(unsigned int t) //STC89C52RC
{
unsigned char i;
while(t--)
for(i=0;i<8;i++);
}
三、明明单片机的RAM有256个字节的内存,但是120字节左右就报错
原因:在定义变量时keil会默认为data类型,但是这种读写类型只能访问前128个字节
解决方案:定义之前加上关键字idata
四、切换光标问题:
insert键
五、sprintf格式显示符问题:
对于浮点型,小数点前面限制的是显示位数(小数点也属于一位),小数点后限制的是小数位