电子日历毕业设计论文(5)

2020-02-22 11:01

附 录 _asm(\

rjia_key(Write_day,Read_day,8,1); _asm(\} }

if (ID3==0) //日的减 { delay(4); if(ID3==0) { while(!ID3); _asm(\

rjia_key(Write_day,Read_day,8,0); _asm(\} }

break;

case 5: if(ID2==0) //月的加 {

delay(4); if(ID2==0)

{ while(!ID2); _asm(\

yjia_key(Write_month ,Read_month,5,1); _asm(\} }

if(ID3==0) //月的减 {

delay(4); if(ID3==0) { while(!ID3); _asm(\

yjia_key(Write_month ,Read_month,5,0); _asm(\} }

break;

case 6:if(ID2==0) //年的加 { delay(4); if(ID2==0)

{ while(!ID2); _asm(\

njia_key(Write_year,Read_year,2,1); _asm(\}

18

附 录 }

if(ID3==0) //年的减 {

delay(4); if(ID3==0) { while(!ID3); _asm(\

njia_key(Write_year,Read_year,2,0); _asm(\} } break; } }

while(lshi==1); _asm(\return(n); return(n); }

void Write_ds1302(uchar addr,uchar dat) {

uchar i ;

PC_DDR |=0xFF; PC_CR1 |=0xFF; PC_CR2 |=0X00;

ce = 0; //先复位

sclk = 0; //清零,保持io口的低电平,以待数据的写入 ce = 1; //置1,开始写数据 //发送地址

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

dio= addr&0x01; //将一位bcd码的数据送给io口 addr=addr >>1; //右移一位

sclk =1; //产生上升沿,发送数据 sclk =0; }

//发送数据

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

dio= dat&0x01; //将一位bcd码的地址数据送给io口 dat =dat>>1;

sclk=1; //产生上升沿,发送数据 delay(1); sclk=0;}

19

附 录 ce = 0; }

//读操作//

Read_ds1302(uchar addr) {

uchar i; uchar k; uchar dat; da_od=0; da_CR1=0; da_CR2=0; ce=0; sclk=0; ce=1;

//发送地址

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

sclk=0; delay(10); if(addr&0x01) {dio=1; }

else dio=0; addr>>=1; sclk=1; delay(2); }

da_od=0; da_CR1=0; da_CR2=0; //读取数据//

for(k=0;k<8;k++) { dat>>=1; sclk=1; delay(2); sclk=0; delay(2); if(id==0) {

dat&=0x7f; }

else dat |= 0x80 ; }

sclk=1;

20

附 录 ce=0;

return(dat); }

//IO口的初始化// void GPIO_Init(void) {

PC_DDR |=0X0F; PC_CR1 |=0X0F; PC_CR2 |=0X00; PG_DDR |=0X00; PG_CR1 |=0X03; PG_CR2 |=0X00; PD_DDR |=0X1C; PD_CR1 |=0X0F; EXTI_CR1|=0X00; ITC_SPR2|=0X30; PD_CR2 |=0X40; PA_DDR |=0XFF; PA_CR1 |=0XFF; PA_CR2 |=0X00; PB_DDR |=0XFF; PB_CR1 |=0XFF; PB_CR2 |=0X00; }

//延时函数// void delay(uint n) {

uint x,y;

for(x=n;x>0;x--) for(y=110;y>0;y--); }

//1602写命令函//

void lcd_wcom(uchar com) {

rs=0; //选择指令寄存器 rw=0; //选择写

PB=com; //把命令字送入PB

delay(5); //延时一小会儿,让1602准备接收数据

en=1; //使能线电平变化,命令送入1602的8位数据口 en=0; }

//1602写数据函数 //

void lcd_wdat(uchar dat) {

21

附 录

rs=1; //选择数据寄存器 rw=0; //选择写

PB=dat; //把要显示的数据送入P2

delay(5); //延时一小会儿,让1602准备接收数据

en=1; //使能线电平变化,数据送入1602的8位数据? en=0; }

//1602初始化函数// void lcd_init(void) {

uchar a,k;

delay(15); //等待电源稳定

lcd_wcom(0x38); //8位数据,双列,5*7字形 lcd_wcom(0x0c); //开启显示屏,关光标,光标不闪烁

lcd_wcom(0x06); //显示地址递增,即写一个数据后显示位置右移一位 lcd_wcom(0x01); //清屏 /////////显示第一行///////// lcd_wcom(0x80); for(a=0;a<15;a++) {

lcd_wdat(table[a]); delay(5); }

/////////显示第二行///////// lcd_wcom(0x80+0x40); for(k=0;k<8;k++)

{ lcd_wdat(table1[k]); delay(5); } }

///年月日时分秒输入的子函数// //秒分的加减子函数//输入//

void jia_key(uchar rd,uchar wd,uchar fd,uchar fen) {u1=Read_ds1302(wd); _asm(\

u1=((u1&0x70)>>4)*10+(u1&0x0F); if(fen==1) { u1++; if(u1==60) { u1=0; } } else { u1--;

22


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

下一篇:电气安全管理规程 机械工业部(86)机生字76号

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

马上注册会员

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