电子万年历设计(8)

2020-04-17 20:17

clockinput(dat); crst=0;cclk=1;

}

//初始化ds18b20 void rst18b20(void) { dq=1; delay(8); dq=0; delay(80); dq=1; delay(35);

}

//read one char from ds18b20 uchar read18b20(void) { uchar i,dat=0; for(i=0;i<=7;i++) { dq=0; dat>>=1; dq=1; if(dq==1) dat|=0x80; delay(4);

}

return(dat);

}

//write one char to ds18b20 void write18b20(uchar dat)

31

31

{ uchar i; for(i=0;i<8;i++) { dq=0; dq=dat&0x01; delay(5); dq=1; dat>>=1;

}

}

//read temperature from ds18b20 unsigned int readtemperature(void) { unsigned int t=0;//16 bit uchar t0=0,t1=0; float temp=0;//32 bit rst18b20(); write18b20(0xcc); write18b20(0x44); rst18b20(); write18b20(0xcc); write18b20(0xbe); t0=read18b20(); t1=read18b20(); t=t1; t<<=8;

t=t|t0; // temp=t*0.0625; // t=temp*10+0.5;

32

32

return(t);

}

/*******************************************************/ /* 液晶程序*/

/*******************************************************/

/*************************串行发送一字节数据 ************************/ void SendByte(unsigned char dat) { unsigned char i;

for(i=0;i<8;i++)

{

CLK=0; if(dat&0x80) SID=1;

else

SID=0;

delay(10); CLK=1;

delay(10);

dat=dat<<1; } }

/*****************************写控制命令*********************************/ void SendCMD(unsigned char dat) { CS = 1;

SendByte(0xF8);//1111,1000 RW=0,RS=0同步标志 SendByte(dat&0xF0);//高四位

33

33

34

SendByte((dat&0x0F)<<4);//低四位 CS = 0;

delay(10);

}

/****************************

****************************/ void SendDat(unsigned char dat) { CS = 1;

SendByte(0xFA);//1111,1010 RW=0,RS=1 SendByte(dat&0xF0);//高四位 SendByte((dat&0x0F)<<4);//低四位 CS=0;

delay(10);

}

/***************写汉字到LCD指定的位置;x_add显示RAM的地址;dat1/dat2显示汉字编码**********/

void display(unsigned char add,unsigned char dat1,unsigned char dat2) {

SendCMD(add);//1xxx,xxxx 设定DDRAM 7位地址xxx,xxxx到地址计数器AC SendDat(dat1); SendDat(dat2); }

/*********************初始化************************/ void init_lcd(void) { delay(10);

SendCMD(0x30);//功能设置, 一次送8位数据,基本指令集

SendCMD(0x0C);//0000,1100 整体显示,游标off,游标位置off SendCMD(0x01);//0000,0001 清DDRAM

34

35

SendCMD(0x02);//0000,0010 DDRAM地址归位

SendCMD(0x80);//1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC //SendCMD(0x04);//点设定,显示字符/光标从左到右移位,DDRAM地址加一 //SendCMD(0x0F);//显示设定,开显示,显示光标,当前显示位反白闪动 // SendCMD(0x34);//功能设置,扩充指令集 // SendCMD(0x08);//进入睡眠模式 // SendCMD(0x0c);//脱离睡眠模式

SendCMD(0x81);//1000,0001 设定DDRAM 7位地址000,0001到地址计数器AC SendDat(0x33); SendDat(0x42); SendDat(0x43); SendDat(0x44); SendCMD(0x00);//while(1);

/*******************初始化显示*****************/

{

delay(10);

display(0x82,0xc4,0xea);//年 display(0x84,0xd4,0xc2);//月 display(0x86,0xc8,0xd5);//日 display(0x93,0xca,0xb1);//时 display(0x95,0xb7,0xd6);//分 display(0x97,0xc3,0xeb);//秒 display(0x90,0xd6,0xdc);//周 /* */

delay(10);

} }

void clear_screen(void) {

35


电子万年历设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:06步进指令上机操作方法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: