EN=0;
LCDdat=dat; delay(1); EN=1; delay(1); EN=0; }
void Display(unsigned char Row,unsigned char Col,unsigned char *Character)//显示位置控制 {
switch(Row) {
case 1: Row=0x80;break; case 2: Row=0x90;break; case 3: Row=0x88;break; case 4: Row=0x98;break; default: Row=0x80; }
LCDwrite(Row+Col,0);
while(*Character!='\\0') //将字符逐一送入 {
delay(10);
LCDwrite(*Character,1); Character++; } }
void delay(unsigned int count)//一个延时函数 {
unsigned char i,x; while(count--) {
for(i=0;i<10;i++) for(x=0;x<10;x++); } }
DS18B20 .c
#include \#include \#include \
#define DS18B20out PI_ODR_ODR4 #define DS18B20in PI_IDR_IDR4
void DS18B20IO(unsigned char x); void delay1(unsigned int count); bool DS18B20init();
unsigned int DS18B20Read();
void DS18B20Write(unsigned char data); bool DS18B20init() {
unsigned char x;
//DS18B20初始化函数
DS18B20IO(1); //引脚切换到输出状态 //DS18B20out=1; //delay1(1700); DS18B20out=0; delay1(1700); DS18B20out=1; DS18B20IO(0); delay1(65); x=PI_IDR_IDR4; while(!PI_IDR_IDR4); return (bool)x; }
void DS18B20Write(unsigned char data) {
unsigned char mask; DS18B20IO(1);
for(mask=0x01;mask!=0;mask<<=1) {
DS18B20out=0; delay1(10); if((mask&data)) DS18B20out=1; else
DS18B20out=0; delay1(100); DS18B20out=1; } }
unsigned int DS18B20Read() {
unsigned int mask,data; unsigned char x=0;
for(mask=1;mask!=0;mask<<=1) {
//引脚为高电平输出
//延时大约600us,此句可以省略 //引脚切换到低电平输出 //延时大约600us
//引脚切换到高电平输出
//引脚状态切换为输入状态侦听数据 //延时约30us
//保存引脚的电平状态 //等待低电平结束
//返回数据,0或1 //写命令函数,先从低位开始写 //读数据函数,先从低位开始读。 DS18B20IO(1); DS18B20out=0; delay1(10); DS18B20out=1; DS18B20IO(0); delay1(10); x=PI_IDR_IDR4; if(x)
data|=mask; else
data&=~mask; delay1(150); }
return data; }
void DS18B20IO(unsigned char x) {
if(x) {
PI_DDR_DDR4=1; PI_CR1_C14=1; PI_CR2_C24=0; } else {
PI_DDR_DDR4=0; PI_CR1_C14=1; PI_CR2_C24=0; } }
void delay1(unsigned int count) {
do{}while(count--); }
//引脚输入和输出切换函数。//延时函数,