单片机研究性学习报告Word下载.docx
- 文档编号:15842561
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:25
- 大小:380.60KB
单片机研究性学习报告Word下载.docx
《单片机研究性学习报告Word下载.docx》由会员分享,可在线阅读,更多相关《单片机研究性学习报告Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
1)自主学习AT89S52内部定时器/计数器的原理及应用
2)掌握使用单片机处理复杂逻辑的方法
3)掌握多位数码动态显示方法
4)掌握多个独立按键的读键和处理方法
1.2>
实现的功能:
用AT89S52单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时,秒计数加1开始计数。
显示00-00-00的时间,开始计时:
P1.0控制“秒”的调整,没按一次加1s:
P1.1控制“分”的调整,没按一次加1min:
P1.2控制“时”的调整,没按一次加1h。
计时满23-59-59时,返回00-00-00重新计时。
P1.3用作复位键,在计时过程中如果按下复位键,则返回00-00-00重新计时。
1.3>
硬件电路设计:
1.4>
程序设计:
1)程序流程图:
2)源程序:
S_SETBITP1.0;
数字钟秒控制位
M_SETBITP1.1;
分钟
H_SETBITP1.2;
小时
RESETBITP1.3;
复位
SECONDEQU30H
MINUTEEQU31H
HOUREQU32H
TCNTEQU34H
ORG0000H
SJMPSTART
ORG000BH
LJMPINT_T0
START:
MOVDPTR,#TABLE
MOVHOUR,#0;
初始化
MOVMINUTE,#0
MOVSECOND,#0
MOVTCNT,#0
MOVTMOD,#01H
MOVTH0,#60;
定时50ms
MOVTL0,#176
MOVIE,#82H
SETBTR0
A1:
LCALLDISPLAY;
判断是否有按键按下,按按键扫描
MOVP1,#0FFH
JNBS_SET,S1
JNBM_SET,S2
JNBH_SET,S3
JNBRESET,START
LJMPA1
S1:
LCALLDELAY;
延时消抖
JBS_SET,A1
INCSECOND;
秒加1
LCALLDISPLAY
MOVA,SECOND
CJNEA,#60,J0;
判断是否加到60
LJMPK1
S2:
LCALLDELAY
JBM_SET,A1
K1:
INCMINUTE;
分加1
MOVA,MINUTE
CJNEA,#60,J1;
MOVMINUTE,#0
LJMPK2
S3:
JBH_SET,A1
K2:
INCHOUR;
时加1
MOVA,HOUR
CJNEA,#24,J2;
判断是否加到24
MOVHOUR,#0
J0:
JBS_SET,A1;
判断按键是否抬起
SJMPJ0
J1:
SJMPJ1
J2:
SJMPJ2
INT_T0:
定时器中断服务程序,开始计时
INCTCNT
MOVA,TCNT
CJNEA,#20,RETUNE
INCSECOND
CJNEA,#60,RETUNE
INCMINUTE
INCHOUR
CJNEA,#24,RETUNE
RETUNE:
RETI
DISPLAY:
MOVA,SECOND;
显示程序,扫描,显示秒
MOVB,#10
DIVAB
CLRP3.6
MOVCA,@A+DPTR
MOVP0,A
SETBP3.6
MOVA,B
CLRP3.7
SETBP3.7
CLRP3.5
MOVP0,#40H;
显示分隔号
LCALLDELAY
SETBP3.5
MOVA,MINUTE;
显示分
CLRP3.3
SETBP3.3
CLRP3.4
SETBP3.4
CLRP3.2
SETBP3.2
MOVA,HOUR;
显示时
CLRP3.0
SETBP3.0
CLRP3.1
SETBP3.1
RET
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
DELAY:
MOVR6,#5
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
END
1.5>
系统仿真:
1)时钟仿真:
复位和初始:
秒加1:
分加1:
时加1:
1.6>
模块整体电路:
1.7>
PCB板:
1.8>
3D效果图:
附:
2>
基于DS12887的LCD数字时钟(C语言)
2.1>
源程序:
#include<
reg51.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharmiao,fen,shi,ri,zhou,yue,nian,time_flag,key_num;
sbitDS_cs=P2^7;
sbitDS_as=P2^3;
sbitDS_rw=P3^6;
sbitDS_ds=P3^7;
sbitLCD_rs=P2^0;
sbitLCD_en=P2^1;
sbitbeep=P2^2;
sbitkey1=P2^5;
sbitkey2=P2^6;
ucharcodetable1[]={"
20--"
};
ucharcodetable2[]={"
:
"
voiddelay(ucharz)
{
ucharx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voidDS_write(ucharadd,uchardate)
DS_as=1;
DS_ds=1;
DS_rw=1;
DS_cs=0;
P1=add;
DS_as=0;
DS_rw=0;
P1=date;
DS_cs=1;
ucharDS_read(ucharadd)
ucharDS_read_dat;
DS_ds=0;
P1=0xff;
DS_read_dat=P1;
return(DS_read_dat);
voidLCD_write_com(ucharcom)
LCD_rs=0;
LCD_en=0;
delay(5);
LCD_en=1;
P0=com;
voidLCD_write_data(uchardate)
LCD_rs=1;
P0=date;
voidDisplay_Btime(ucharadd,uchardate)
LCD_write_com(add);
;
LCD_write_data(date);
voidDisplay_BCDtime(ucharadd,uchardate)
uchargw,sw;
sw=date/10;
gw=date%10;
LCD_write_com(0x80+add);
LCD_write_data(0x30+sw);
LCD_write_data(0x30+gw);
voidBCD_time()
miao=DS_read(0x00);
Display_BCDtime(0x4a,miao);
fen=DS_read(0x02);
Display_BCDtime(0x47,fen);
shi=DS_read(0x04);
Display_BCDtime(0x44,shi);
ri=DS_read(0x07);
Display_BCDtime(0x0a,ri);
yue=DS_read(0x08);
Display_BCDtime(0x07,yue);
nian=DS_read(0x09);
Display_BCDtime(0x04,nian);
zhou=DS_read(0x06);
switch(zhou)
{
case1:
{
Display_Btime(0x80+0x0d,'
M'
);
Display_Btime(0x80+0x0e,'
O'
Display_Btime(0x80+0x0f,'
N'
}
break;
case2:
T'
U
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 研究性学习 报告