基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx

上传人:b****4 文档编号:6337294 上传时间:2023-05-06 格式:DOCX 页数:25 大小:108.22KB
下载 相关 举报
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第1页
第1页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第2页
第2页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第3页
第3页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第4页
第4页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第5页
第5页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第6页
第6页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第7页
第7页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第8页
第8页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第9页
第9页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第10页
第10页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第11页
第11页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第12页
第12页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第13页
第13页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第14页
第14页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第15页
第15页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第16页
第16页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第17页
第17页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第18页
第18页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第19页
第19页 / 共25页
基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx

《基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx(25页珍藏版)》请在冰点文库上搜索。

基于AVR单片机的带密码显示的DS302仿真设计Word下载.docx

write_ds1302(0x80,miao);

write_ds1302(0x82,fen);

write_ds1302(0x84,si);

write_ds1302(0x86,ri);

write_ds1302(0x88,yue);

write_ds1302(0x8a,xq);

write_ds1302(0x8c,nian);

ucharchange(uchardat)//16-10

uchara,b;

a=dat/16;

a=10*a;

b=dat%16;

dat=a+b;

returndat;

ucharchange1(uchardat)//10-16

a=dat/10;

a=16*a;

b=dat%10;

voidshow_time()

//uchara,b;

miao=read_ds1302(0x81);

fen=read_ds1302(0x83);

si=read_ds1302(0x85);

ri=read_ds1302(0x87);

yue=read_ds1302(0x89);

xq=read_ds1302(0x8b);

nian=read_ds1302(0x8d);

miao=change(miao);

fen=change(fen);

si=change(si);

ri=change(ri);

yue=change(yue);

xq=change(xq);

nian=change(nian);

_1602dis_sfm(si,fen,miao);

_1602dis_nyrq(nian,yue,ri,xq);

voidmain()

DDRD&

=~BIT(PC0)&

~BIT(PC1)&

~BIT(PC2);

PORTD|=BIT(PC0)|BIT(PC1)|BIT(PC2);

DDRC=0XFF;

init1602();

delay1(20);

lcd_inputpassword();

while

(1)

{

password();

while(flag)

{

show_time();

keyboard();

}

/*********************1602_jp_sz.c**********************/

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

//功能:

1602显示时钟

//管脚配置:

PB为数据,PD3=RS,PD6=RW,PD7=E;

//k1=PA0,K2=PA1,K3=PA2;

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

//#pragmainterrupt_handlers_f_m:

9

#pragmadata:

code

constuchartable1[]="

20--"

;

constuchartable2[]="

:

"

signedcharsi,fen,miao,nian,yue,ri,xq;

ucharup,down;

voiddelay(uintx)

/*************lcd1602************************/

voidwrite1602_cm(ucharcm)

DDRB=0XFF;

DDRD|=BIT(PD3)|BIT(PD6)|BIT(PD7);

PORTD&

=~BIT(PD3);

//RS=0;

=~BIT(PD6);

//RW=0;

=~BIT(PD7);

//E=0;

delay

(1);

PORTB=cm;

PORTD|=BIT(PD7);

//E=1;

PORTD|=BIT(PD3);

//RS=1;

voidwrite1602_dat(uchardat)

PORTB=dat;

void_1602dis_2line(ucharaddr,uchardat)

ucharsi,ge;

si=dat/10;

ge=dat%10;

write1602_cm(0x80+0x40+addr);

write1602_dat(0x30+si);

write1602_dat(0x30+ge);

void_1602dis_1line(ucharaddr,uchardat)

write1602_cm(0x80+addr);

void_1602dis_sfm(uchars,ucharf,ucharm)

_1602dis_2line(3,s);

_1602dis_2line(6,f);

_1602dis_2line(9,m);

 

void_1602dis_nyrq(ucharn,uchary,ucharr,ucharq)

_1602dis_1line(4,n);

_1602dis_1line(7,y);

_1602dis_1line(10,r);

_1602dis_1line(13,q);

voidinit1602()

/*TCCR1B=0X04;

//256分频

TCNT1H=(65535-31250)/256;

TCNT1L=(65535-31250)%256;

//1s

TIMSK|=BIT

(2);

SREG|=BIT(7);

*/

write1602_cm(0x38);

write1602_cm(0x0C);

write1602_cm(0x06);

write1602_cm(0x01);

//si=9;

fen=3;

miao=23;

voidlcd_time_init()

uchari;

write1602_cm(0x80);

for(i=0;

i<

15;

i++)

write1602_dat(table1[i]);

delay(5);

write1602_cm(0x80+0X40);

11;

write1602_dat(table2[i]);

/************************1302_sz.c******************************/

/*******************ds1302*****************/

读取1302时钟

//管脚分配:

PC1=SCKPC0=I/OPC2=CE

1302.h"

voiddelay2(uintx)

voidwrite_dat(uchardat)

uchari,temp;

temp=dat;

for(i=8;

if(temp&

0x01)

IO_H;

else

IO_L;

temp=temp>

>

1;

//10011101

sclk_H;

sclk_L;

ucharread_dat()

DDRC&

=~BIT(PC0);

PORTC|=BIT(PC0);

{

if(PINC&

{

temp=temp|0x80;

sclk_L;

returntemp;

voidwrite_ds1302(ucharadd,uchardat)

CE_L;

sclk_L;

CE_H;

write_dat(add);

write_dat(dat);

//sclk_L;

ucharread_ds1302(ucharadd)

uchartemp;

temp=read_dat();

/*****************************keyboard.c**************************/

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

//独立键盘k1=PDOk2=PD1k3=PD2

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

#definek1PIND&

0x01

#definek2PIND&

0X02

#definek3PIND&

0X04

ucharnum;

voidK1()

if(~k1)

num++;

voidkeyboard()

write1602_cm(0x80+0x40+10);

write1602_cm(0x0f);

}while(~k1);

while(num==1)///////miao+-

K1();

while(~k1);

if(~k2)

miao++;

if(miao==60){miao=0;

while(~k2);

_1602dis_2line(9,miao);

if(~k3)

miao--;

if(miao==0xff){miao=59;

while(~k3);

while(num==2)//fen+-

write1602_cm(0x80+0x40+7);

fen++;

if(fen==60){fen=0;

_1602dis_2line(6,fen);

fen--;

if(fen==0xff){fen=59;

while(num==3)//////si+-

write1602_cm(0x80+0x40+4);

si++;

if(si==24){si=0;

_1602dis_2line(3,si);

si--;

if(si==0xff){si=23;

while(num==4)///xq+-

write1602_cm(0x80+14);

xq++;

if(xq==8){xq=1;

_1602dis_1line(13,xq);

xq--;

if(fen==0){fen=7;

while(num==5)////ri+-

write1602_cm(0x80+11);

////输入与改月相对应的日期,上限为31天

ri++;

if(ri==32){ri=1;

_1602dis_1line(10,ri);

ri--;

if(ri==0){ri=31;

while(num==6)/////yue

write1602_cm(0x80+8);

yue++;

if(yue==13){yue=1;

_1602dis_1line(7,yue);

yue--;

if(yue==0){yue=12;

while(num==7)///nian

write1602_cm(0x80+5);

nian++;

if(nian==100){yue=1;

_1602dis_1line(4,nian);

nian--;

if(nian==0){yue=99;

if(num==8)////break;

{

write1602_cm(0x0c);

num=0;

write_time();

/*************************jzkeyboard.c***************************/

uchardat;

voidtime(uintz)

ucharx,y;

for(x=z;

x>

x--)

for(y=110;

y>

y--);

voidjzkeyboard()

ucharnum3,num1,num2;

/**/

DDRA|=0xf0;

PORTA&

=0x0f;

DDRA&

=0xf0;

PORTA|=0x0f;

num3=0x0f&

PINA;

/**/

//time(500);

if(num3!

=0x0f)

DDRA|=0x0f;

PORTA|=0xf0;

num1=0xf0&

num2=num1|num3;

switch(num2)

case0xee:

dat=0;

break;

case0xde:

dat=1;

case0xbe:

dat=2;

case0x7e:

dat=3;

case0xed:

dat=4;

case0xdd:

dat=5;

case0xbd:

dat=6;

case0x7d:

dat=7;

case0xeb:

dat=8;

case0xdb:

dat=9;

//return(dat);

}while(PINA!

=0xf0);

//松手检测

/***************************password.c***********************/

uchari,p1,p2,p3,p4,p5,p6,flag;

flashucharpa[]="

Inputpassword!

flashucharer[]="

Error!

voiddengdai(uintx)

for(j=50000;

voidlcd_inputpassword()

16;

write1602_dat(pa[i]);

write1602_cm(0x80+0x40+5);

voiderror()

uchari;

write1602_dat(er[i]);

voidpassword()

if(PINA!

=0xf0)

i++;

jzkeyboard();

//PORTC=dat;

if(i==1)

{p1=dat;

write1602_cm(0x80+0x40+5);

write1602_dat('

*'

);

if(i==2)

{p2=dat;

write1602_cm(0x80+0x40+6);

if(i==3)

{p3=dat;

write1602_cm(0x80+0x40+7);

if(i==4)

{p4=dat;

write1602_cm(0x80+0x40+8);

if(i==5)

{p5=dat;

write1602_cm(0x80+0x40+9);

if(i==6)

{p6=dat;

write1602_cm(0x80+0x40+10);

if((p1==1)&

&

(p2==2)&

(p3==3)&

(p4==4)&

(p5==5)&

(p6==6))//检测密码

lcd_time_init();

flag=1;

p1=0;

p2=0;

p3=0;

p4=0;

p5=0;

p6=0;

i=0;

error();

write1602_dat('

'

dengdai(60);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2