基于51单片机电子万年历课程设计论文内容摘要:
ad_byte() { RST=1。 for(i=8。 i0。 i) { ACC7=IO。 SCLK=1。 SCLK=0。 ACC=ACC1。 } return(ACC)。 } void write_1302(uchar add,uchar dat) { RST=0。 SCLK=0。 RST=1。 write_byte(add)。 write_byte(dat)。 SCLK=1。 RST=0。 } uchar read_1302(uchar add) { uchar temp。 RST=0。 SCLK=0。 RST=1。 write_byte(add)。 temp=read_byte()。 SCLK=1。 RST=0。 return(temp)。 } /*进制转换, BCD 转十进制 */ uchar BCD_Decimal(uchar bcd) { uchar Decimal。 Decimal=bcd4。 return(Decimal=Decimal*10+(bcdamp。 0x0F))。 } /* ds1302 初始化 */ void ds1302_init() { RST=0。 SCLK=0。 write_1302(0x8e,0x00)。 write_1302(0x8e,0x80)。 } /* 向液晶 写入年月日时分秒及星期 */ void write_sfm(uchar add,uchar dat) { uchar shi,ge。 ge=dat%10。 shi=dat/10。 write_(0x80+0x40+add)。 write_date(0x30+shi)。 write_date(0x30+ge)。 } void write_nyr(uchar add,uchar dat) { uchar shi,ge。 ge=dat%10。 shi=dat/10。 write_(0x80+add)。 write_date(0x30+shi)。 write_date(0x30+ge)。 } void write_week(uchar week) { write_(0x80+0x0c)。 switch(week) { case 1:write_date(39。 M39。 )。 write_date(39。 O39。 )。 write_date(39。 N39。 )。 break。 case 2:write_date(39。 T39。 )。 write_date(39。 U39。 )。 write_date(39。 E39。 )。 break。 case 3:write_date(39。 W39。 )。 write_date(39。 E39。 )。 write_date(39。 D39。 )。 break。 case 4:write_date(39。 T39。 )。 write_date(39。 H39。 )。 write_date(39。 U39。 )。 break。 case 5:write_date(39。 F39。 )。 write_date(39。 R39。 )。 write_date(39。 I39。 )。 break。 case 6:write_date(39。 S39。 )。 write_date(39。 A39。 )。 write_date(39。 T39。 )。 break。 case 7:write_date(39。 S39。 )。 write_date(39。 U39。 )。 write_date(39。 N39。 )。 break。 } } void keyscan() { uchar temp。 if(s1==0) { delay(5)。 if(s1==0) { while(!s1)。 flag++。 } if(flag==1) //分 { write_(0x80+0x40+4)。 write_(0x0f)。 temp=(fen)/10*16+(fen)%10。 write_1302(0x8e,0x00)。 write_1302(0x82,0x80|temp)。 write_1302(0x8e,0x80)。 } if(flag==2) //时 { write_(0x80+0x40+1)。 } if(flag==3) //星期 { write_(0x80+12)。 } if(flag==4) //日 { write_(0x80+9)。 } if(flag==5) //月 { write_(0x80+6)。 } if(flag==6) //年 { write_(0x80+3)。 } if(flag==7) { write_(0x80+0x40+10)。 } if(flag==8) { flag=0。 write_(0x0c)。 } } if(flag!=0) { if(s2==0) { delay(5)。 if(s2==0) { while(!s2)。 if(flag==1) { fen++。 if(fen==60) fen=0。 write_sfm(4,fen)。 temp=(fen)/10*16+(fen)%10。 write_1302(0x8e,0x00)。 write_1302(0x82,temp)。 write_1302(0x8e,0x80)。 write_(0x80+0x40+4)。 } if(flag==2) { shi++。 if(shi==24) shi=0。 write_sfm(1,shi)。 temp=(shi)/10*16+(shi)%10。 write_1302(0x8e,0x00)。 write_1302(0x84,temp)。基于51单片机电子万年历课程设计论文
相关推荐
BH AJMP T1INT ORG 0040H MAIN: MOV R1,30。 初设抢答时间为 30s MOV R2,60。 初设答题时间为 60s MOV TMOD,11H。 设置未定时器 /模式 1 MOV TH0,0F0H MOV TL0,0FFH。 越高发声频率越高 ,越尖 MOV TH1,3CH MOV TL1,0B0H。 50ms 为一次溢出中断 SETB EA SETB ET0
RES2 R? RES2 D? LED S? SWPB U? GND R? RES2 D? LED R? RES2 D? LED R? RES2 S? SWPB U? GND R? RES2 S? SWPB U? GND R? RES2 R? RES2 D? LED D? LED R? RES2 S? SWPB U? GND R? RES2 S? SWPB U? GND R? RES2 D?
方法 施工测量放线 ⑴ 施工测量基本要求 A、 西夏建材城生活区 1 30住宅楼定位依据: 西夏建材城生活区 工程总体规划图,北京路、规划道路永久性定位 B、根据工程特点及<建筑工程施工测量规程> DBI01- 21- 95, 2 条,此工程设置精度等级为二级,测角中误差177。 12,边长相对误差 1/15000。 C、根据施工组织设计中进度控制测量工作进度,明确对工程服务
开机时的界面。 当在输入数字时,不小心输入数字错误,可以按下菜单键“ F”,返回到初始将要输入数字的状态。 本机设置了密码保护功能, 当输入三次密码不正确后,密码锁锁死,不能再开锁,同时蜂鸣器发出响声警告。 只有在复位情况下或断电关机后重新开机才可以输入密码、开锁或设置密码。 当输入密码错误的时,显示出密码错误提示, 发光二极管亮,蜂鸣器发出长警告声,系统自动返回输入密码状态后,红色发光二极管灭
程;栏目 3 品牌风格诠释。 ) → 公告栏:展示学校的最新活动与通告。 → 新闻动态:展示学校的学校新闻与国内外同行咨询等。 → 项目培训:主要概括学校的培训服务与培训科目以及优惠套餐。 → 招生简章:主要展示学校的招生情况与历来招生的生源、招生对象等等。 → 课程安排: 主要概述学校的课程安排流程与课程优惠价格套餐等等。 → 教学资料:展示教
30pF 之间,对外接电容的值没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。 由于单片机要进行串行通信,为了获得准确的波特率,选择晶振的频率为 12MHz。 图 时钟电路 10 LCD1602 的 结构及工作原理 LCD1602 可以显示 2 行 16 个字符,有 8 位数据总线 D0D7,和 RS、 R/W、EN 三个控制端口,工作电压为 5V