电子万年历的设计毕业论文 下载本文

湖北文理学院理工学院 附录1:程序

{ } }

void tempchange(void) //DS18B20开始获取温度并转换 {

dsreset(); delay(1);

tempwritebyte(0xcc); tempwritebyte(0x44); }

uint get_temp() //获取温度 {

uchar a,b; dsreset();

testb=dat&0x01; dat=dat>>1; if(testb)//写1 { } else { }

ds=0; //写0 i=8;while(i>0)i--; ds=1; i++;i++; ds=0; i++;i++; ds=1;

i=8;while(i>0)i--;

湖北文理学院理工学院 附录1:程序

delay(1);

tempwritebyte(0xcc); tempwritebyte(0xbe);

a=tempread(); //读高8位 b=tempread(); //读低8位 temp=b;

temp<<=8; //两个字节组合成1个字节 temp=temp|a; f_temp=temp*0.0625; temp=f_temp*10+0.5;

f_temp=f_temp+0.05; //温度在寄存器中为12位,分辨率为0.0625^ return temp; }

void display(uchar addr,uchar dat) {

write_com(0x80+0x40+addr); write_data(0x30+dat); delay(5); }

void dis_temp(uint t) {

uchar i; i=t/100; display(10,i); i=t0/10; display(11,i); i=t0; display(13,i); }

void init()//初始化程序

湖北文理学院理工学院 附录1:程序

{

uchar num; flag=1; lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<15;num++)

{ }

write_data(table[num]); delay(5);

write_com(0x80+0x40); for(num=0;num<8;num++)

{ }

write_data(table1[num]); delay(5);

write_com(0x80+0x40+10); for(num=0;num<6;num++) { } }

//地址、数据发送子程序

void write_1302( uchar addr,uchar dat ) {

write_data(table2[num]); delay(10);

湖北文理学院理工学院 附录1:程序

uchar i,temp;

CE=0; //CE 引脚为低, 数据传送中止 SCLK=0; //清零时钟总线

CE = 1; //CE 引脚为高,逻辑控制有效 //发送地址

for ( i=8; i>0; i-- ) //循环8次移位 {

SCLK = 0; temp = addr;

DIO = (bit)(temp&0x01); // addr >>= 1; // SCLK = 1; }

//发送数据

for ( i=8; i>0; i-- ) {

SCLK = 0; temp = dat;

DIO = (bit)(temp&0x01); dat >>= 1; SCLK = 1; }

CE = 0; }

//数据读取子程序

uchar Read1302 ( uchar addr ) {

unsigned char i,temp,dat1,dat2; CE=0; SCLK=0;

每次传输低字节 右移一位