刘涛论文最新 (修复的) 下载本文

内容发布更新时间 : 2024/5/1 4:59:28星期一 下面是文章的全部内容请认真阅读。

天津职业技术师范大学2011届本科生毕业设计

write_add(0x99); for(k=0;k<=9;k++) {

write_data(love[k]+0x30); delay(); } if(fu==1) {

write_add(0x9a);write_data('-'); //write_data(' '); delay(); } } } else if(yes==1) error(); else if(yes==2) out(); }

/**********************清除键*****************************/ void clear(void) { //uchar k;

while(((~P2) & 0xf0)!=0); /*

write_add(0x80); for(k=0;k<=15;k++) { delay(); write_data(' '); }

41

天津职业技术师范大学2011届本科生毕业设计

write_add(0x98); for(k=0;k<=15;k++) { delay(); write_data(' '); } */ lcm_clr(); rrr=0xff;

kind=yes=position1=position2=0; ///////////清运算类型标志 fu=pfu=0;

data1=data2=0; ///////////清数据 data3=0; write_add(0x83); }

void prodis(void) { rrr++; if(rrr==16) {rrr=0x00;} delay();

while(((~P3) & 0xf0)!=0); }

void delay(void) { uchar m;

for(m=200;m>0;m--) {;} }

void error(void) {

uchar derror[16]={' ',' ',' ','E','R','R','O','R','!','!','!',' ',' ',' ',' ',' '}; uchar k; write_add(0x98);

42

天津职业技术师范大学2011届本科生毕业设计

for(k=0;k<=15;k++) {

write_data(derror[k]); delay(); } }

void out(void) { uchar k;

uchar dout[16]={' ',' ',' ','O','U','T',' ','O','F',' ','R','A','N','G','E',' '}; write_add(0x98); for(k=0;k<=15;k++) {

write_data(dout[k]); delay(); } }

void xian(void) { uchar k;

uchar dout[16]={'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-'}; write_add(0x88); for(k=0;k<=15;k++) {

write_data(dout[k]); delay(); } }

unsigned long shi(uchar n) { int m=1; while(n!=0) { m=m*10;

43

天津职业技术师范大学2011届本科生毕业设计

n--; } return(m); }

//DS1302时钟芯片驱动程序 //常用时钟数据读取 void read_clockS(void){ }

//调时用加1程序

void Set_time(unsigned char sel){ //根据选择调整的相应项目加1并写入DS1302 signed char address,item; signed char max,mini; lcm_w_test(0,0x9a); lcm_w_word(\调整\

//if(sel==6) {lcm_w_word(\秒钟\ //秒7 if(sel==5) {lcm_w_word(\分钟\max=59;mini=0;} //分钟6

if(sel==4) {lcm_w_word(\小时\max=23;mini=0;} //小时5

if(sel==3) {lcm_w_word(\星期\ //星期4 if(sel==2) {lcm_w_word(\日期\ //日3 if(sel==1) {lcm_w_word(\月份\ //月2 if(sel==0) {lcm_w_word(\年份\ //年1 //读取1302某地址上的数值转换成10进制赋给item

item=((read_clock(address+1))/16)*10 + (read_clock(address+1)); if(KEY_2 == 0){ item++;//数加 1

44

ss = read_clock(0x81);//读取秒数据 mm = read_clock(0x83);//读取分钟数据 hh = read_clock(0x85);//小时 dd = read_clock(0x87);//日 mo = read_clock(0x89);//月 xq = read_clock(0x8b);//星期 yy = read_clock(0x8d);//年

天津职业技术师范大学2011届本科生毕业设计

}

if(KEY_4 == 0){ item--;//数减 1 }

if(item>max) item=mini;//查看数值有效范围 if(item

write_clock(address,(item/10)*16+item);//转换成16进制写入1302 write_clock(0x8e,0x80);//写保护,禁止写操作 updata (); //刷新数据 lcm_w_mm();//刷新 分 }

//设置1302的初始时间(自动初始化)

void Init_1302(void){//-设置1302的初始时间(2009年1月1日00时00分00秒星期一)

}

//DS1302写数据(底层协议)

45

unsigned char f;

if(read_clock(0xc1) != 0xaa){ }

write_clock(0x8e,0x00);//允许写操作 write_clock(0x8c,0x09);//年 write_clock(0x8a,0x01);//星期 write_clock(0x88,0x01);//月 write_clock(0x86,0x01);//日 write_clock(0x84,0x00);//小时 write_clock(0x82,0x00);//分钟 write_clock(0x80,0x00);//秒 write_clock(0x90,0xa5);//充电

write_clock(0xc0,0xaa);//写入初始化标志RAM(第00个RAM位置) for(f=0;f<60;f=f+2){//清除闹钟RAM位为0 }

write_clock(0x8e,0x80);//禁止写操作

write_clock(0xc2+f,0x00);