单片机万年历实训报告

时间:2019-05-12 04:41:58下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《单片机万年历实训报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《单片机万年历实训报告》。

第一篇:单片机万年历实训报告

单片机万年历实训报告

部:电气自动化系

级:13电信2班

名:周祝福

指导老师:黄丽英、侯聪玲

实训时间:2015年1月19日~23日

用AT89C51与LCD1602设计 的可调式电子日历时钟

一、总体设计

1.1、设计目的

为巩固所学的单片机知识,把所学理论运用到实践中,用LCD1602与AT89C51 设计可调式电子日历时钟。

1.2、设计要求

(1)显示:年、月、日、时、分、秒和星期;

(2)设置年、月、日、时、分、秒和星期的初始状态;

(3)能够用4个按键调整日历时钟的年、月、日、时、分、秒和星期 ;

完成可调式电子日历时钟的硬件和软件的设计,包括单片机的相关内容;日历时钟模块的设计,液晶显示模块的设计,按键模块的设计。控制程序的编写等。

1.3、系统基本方案选择和论证

1.3.1、单片机芯片的选择方案

方案一:

采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容。方案二:

采用STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。但造价较高。1.3.2、显示模块选择方案和论证:

方案一:

采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用显示数字显得太浪费,且价格也相对较高。所以不用此种作为显示。方案二:

采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字所需要的个数偏多,功耗较大,显示出来的只是拼音,而不是汉字。所以也不用此种作为显示。方案三:

采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字符,且视觉效果较好,外形美观。LCD1602可实现显示2行十六个字符。1.3.4、电路设计最终方案决定

综上各方案所述,对此次作品的方案选定:采用80C51作为主控制系统; LCD1602液晶带汉字库显示屏作为显示部分。

二、硬件设计

2.1、电路设计模块图如图

AT89C51 块按键控制模LCD162

2.3、用proteus仿真软件仿真并抓图。

三、软件设计

3.1、画出各个函数流程图。

3.1.1、LCD1602液晶显示控制流程图如图

入口 对1602初始化写入显示设置命令 延时一段时间 检查忙标志 BF= 7>? 设置字符显示位置 延时一段时间 向1602中写入数据 LCD显示内容 返回主程序

是 3.1.2、调时函数控制流程如图

开始 控制键有效,调整年 控制键有效,调整月 等待按键程序 等待按键程序 加有效 减有效 加有效 减有效 年加 1 年减 1 月加 1 月减 1 控制键有效,调整日 控制键有效,调整星期 等待按键程序 等待按键程序 加有效 减有效 加有效 减有效 日加 1 日减 1 星期加 1 星期减 1 控制键有效,调整时 等待按键程序 加有效 时加 1 减有效 时减 1 控制键有效,调整分 等待按键程序 加有效 分加 1 减有效 分减 1 按键有效跳出调时程序,进入主循环

实训心得:通过为期一周的单片机实训,是我们对这门课有了许多新的了解,弥补了在课堂上学习的不足。相信这对我们以后的学习和工作都会有很大的帮助。我们一定要在最短的时间里对这些不足加以改正!在试训中有苦有甜,当我们为一个很难攻破的程序找出路时,心情烦躁,感觉自己很不可理喻,当程序一点一点编好后,自己从心底感觉到一点小小的安慰,看着自己的成果。感觉很欣慰。总而言之,单片机课程设计对于我们有很大的帮助,我们从中受益匪浅。

程序代码。

#include #define uchar unsigned char #define uint unsigned int

uchar a,count,S1num,xqnum;uchar yue,ri,shi,fen,miao;uint nian;

sbit lcdrs=P2^5;sbit lcdrw=P2^4;sbit lcden=P2^3;

sbit S1=P3^0;

//定义键--进入设置 sbit S2=P3^1;

//定义键--增大 sbit S3=P3^2;

//定义键--减小 sbit S4=P3^3;

//定义键--退出设置

uchar code table0[]=“2015-01-11 SUN”;uchar code table1[]=“00:00:00”;uchar code xingqi[][3]={“MON”,“TUE”,“WED”,“THU”,“FRI”,“SAT”,“SUN”};

void delay(uint z){ uint x,y;for(x=z;x>0;x--)

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

/************************************************** 1602液晶显示器模块

*************************************************/ void write_com(uchar com)

//液晶写指令 { lcdrw=0;lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}

void write_data(uchar dat)

//液晶写数据 { lcdrw=0;lcdrs=1;P0=dat;delay(5);lcden=1;delay(5);lcden=0;}

/******************************************** 年月日写入1602函数

********************************************/ void write_sfm(uchar add,uchar dat)

//写时分秒函数 { uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);} void write_yr(uchar add,uchar dat)

//写月日函数 { uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);} void write_nian(uchar add,uint dat)

//写年函数 { uint qian,bai,shi,ge;qian=dat/1000;bai=dat%1000/100;shi=dat%100/10;ge=dat%10;write_com(0x80+add);write_data(0x30+qian);write_data(0x30+bai);write_data(0x30+shi);write_data(0x30+ge);} /*************************************************** 1602初始化

***************************************************/ void init_lcd()

//液晶初始化 { lcden=0;

nian=2015;yue=1;ri=11;shi=0;

//初始shi、fen、miao fen=0;miao=0;

write_com(0x38);

//设置16x2显示,5x7点阵,8位数据口

write_com(0x0c);

//设置开显示,不显示光标

write_com(0x06);

//写一个字符后地址指针加1 write_com(0x01);

//显示清0,数据指针清0 }

void init()

//初始化函数 { init_lcd();

//液晶初始化

write_com(0x80);

//设置显示初始坐标

for(a=0;a<14;a++)

//显示年月日初始值

{

write_data(table0[a]);

delay(5);} write_com(0x80+0x40);

//设置显示初始坐标

for(a=0;a<8;a++)

//显示时分秒初始值

{

write_data(table1[a]);

delay(5);}

write_nian(0,nian);write_sfm(6,miao);

//分别将shi、fen、miao送去液晶显示

write_sfm(3,fen);write_sfm(0,shi);

count=0;xqnum=0;S1num=0;

//初始化全局变量count

TMOD=0x01;

//设置定时器0工作模式1 TH0=(65535-50000)/256;

//定时器装初始值

TL0=(65535-50000)%256;EA=1;

//开总中断

ET0=1;

//开定时器0中断

TR0=1;

//启动定时器0 }

/************************************************** 独立键盘

*************************************************/ void keyscan(){ if(S1==0){

delay(5);

//确认定义键被按下

if(S1==0)

{

S1num++;

//定义键S1按下次数记录

while(!S1);

//释放按键确认

if(S1num==1)//S1按下一次时

{

TR0=0;

//关闭定时器

write_com(0xc0+7);//光标定位到秒位置

write_com(0x0f);//光标闪烁

}

if(S1num==2)

//S1按下两次时

{

write_com(0xc0+4);//光标定位到分位置

}

if(S1num==3)

//S1按下三次时

{

write_com(0xc0+1);

//光标定位到时位置

}

if(S1num==4)

//S1按下四次时

{

write_com(0x80+13);

//光标定位到星期位置

}

if(S1num==5)

//S1按下五次时

{

write_com(0x80+9);

//光标定位到日位置

}

if(S1num==6)

//S1按下六次时

{

write_com(0x80+6);

//光标定位到月位置

}

if(S1num==7)

//S1按下七次时

{

write_com(0x80+3);

//光标定位到年位置

}

if(S1num==8)

//S1按下八次时

{

S1num=0;

//S1记录按键次数清零

TR0=1;

//开启定时器

write_com(0x0c);

//取消光标闪烁

} } } if(S1num!=0)

//只有定义键按下后S2、S3、S4才有效 { if(S2==0){

delay(5);

//防抖

if(S2==0)

//确认按键被按下

{

while(!S2);

//释放按键确认

if(S1num==1)//S1按下一次时

{

miao++;

//调整秒加1

if(miao==60)//满60清零

miao=0;

write_sfm(6,miao);

//每调节一次送液晶显示一次

write_com(0x80+0x40+6);

//显示位置重新回到调节处

}

if(S1num==2)

//S1按下两次时

{

fen++;

//调整分加1 if(fen==60)

fen=0;write_sfm(3,fen);write_com(0x80+0x40+3);} if(S1num==3)

//S1按下三次时 { shi++;

//调整时加1 if(shi==24)

shi=0;write_com(0x80+0x40);write_sfm(0,shi);} if(S1num==4)

{ xqnum++;if(xqnum==7)

xqnum=0;write_com(0x80+0x0b);for(a=0;a<3;a++){

write_data(xingqi[xqnum][a]);

delay(5);} } if(S1num==5)

{ ri++;if(yue==2){

if(nian%400==0)

{

if(ri==30)

{

ri=1;

}

}

if(nian%400!=0)

{

if(ri==29)

{

ri=1;

}

//星期加调整

//日加调整

} } else if(yue<=7){

if(yue%2==0&yue!=2)

{

if(ri==31)

{

ri=1;

}

}

else if(yue%2!=0&yue!=2)

{

if(ri==32)

{

ri=1;

}

} } else if(yue>=8){

if(yue%2==0)

{

if(ri==32)

{

ri=1;

}

}

else if(yue%2!=0)

{

if(ri==31)

{

ri=1;

}

} } write_yr(8,ri);} if(S1num==6)

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

yue=1;write_yr(5,yue);

//月加调整

}

if(S1num==7)

//年加调整

{

nian++;

if(nian==2019)

nian=2014;

write_nian(0,nian);

} } } if(S3==0){ delay(5);if(S3==0)

//确认按键被按下

{

while(!S3);

if(S1num==1)

{

miao--;

//调整秒减1

if(miao==-1)

//减到00后再减重新设置为59

miao=59;

write_sfm(6,miao);

write_com(0x80+0x40+6);

}

if(S1num==2)

{

fen--;

//调整分减1

if(fen==-1)

fen=59;

write_sfm(3,fen);

write_com(0x80+0x40+3);

}

if(S1num==3)

{

shi--;

//调整时减1

if(shi==-1)

shi=23;

write_sfm(0,shi);

write_com(0x80+0x40);

}

if(S1num==4)

{

xqnum--;

//调整星期减一

if(xqnum==-1)

xqnum=6;write_com(0x80+0x0b);for(a=0;a<3;a++){

write_data(xingqi[xqnum][a]);

delay(5);} } if(S1num==5)

//调整日 { ri--;

if(yue==2){

if(nian%400==0)

{

if(ri==0)

{

ri=29;

}

}

if(nian%400!=0)

{

if(ri==0)

{

ri=28;

}

} } else if(yue<=7)

{

if(yue%2==0&yue!=2)

{

if(ri==0)

{

ri=30;

}

}

else if(yue%2!=0&yue!=2)

{

if(ri==0)

{

ri=31;

}

}

}

else if(yue>=8)

{

if(yue%2==0)

{

if(ri==0)

{

ri=31;

}

}

else if(yue%2!=0)

{

if(ri==0)

{

ri=30;

}

}

}

write_yr(8,ri);

}

if(S1num==6)

{

yue--;

if(yue==0)

yue=12;

write_yr(5,yue);

}

if(S1num==7)

{

nian--;

if(nian==2013)

nian=2018;

write_nian(0,nian);

} } } if(S4==0)

{ delay(5);if(S4==0){

S1num=0;

TR0=1;

write_com(0x0c);

//调整月

//调整年

//退出设置、开启中断

}

} } }

/************************************************** 定时器0 *************************************************/ void timer0()interrupt 1

//定时器0中断服务程序 { TH0=(65535-50000)/256;

//重装定时器初始值

TL0=(65535-50000)%256;count++;

//中断次数累加

if(count==20)

//20次50毫秒即一秒

{

count=0;

miao++;

if(miao==60)

//秒加到60时分进位

{

miao=0;

fen++;

if(fen==60)

//分加到60时时进位

{

fen=0;

shi++;

if(shi==24)

//时加到24时清0

{

shi=0;

xqnum++;

ri++;

if(yue==2)

//如果是二月

{

if(nian%400==0)

//闰年判断

{

if(ri==30)

{

ri=1;

yue++;

write_yr(5,yue);

}

}

if(nian%400!=0)

//平年判断

{

if(ri==29)

{

ri=1;

yue++;

write_yr(5,yue);

}

}

}

else if(yue<=7&yue!=2)

//一月到七月

{

if(yue%2==0)//偶数月(除二月)

{

if(ri==31)

{

ri=1;

yue++;

}

}

else if(yue%2!=0)

//奇数月

{

if(ri==32)

{

ri=1;

yue++;

}

}

write_yr(5,yue);

}

else if(yue>=8)

//八月到12月

{

if(yue%2==0)//偶数月(除二月)

{

if(ri==32)

{

ri=1;

yue++;

if(yue==13)

//如果判断月份为12月,则加一后重新定义月份为1

{

yue=1;

nian++;

write_nian(0,nian);

}

write_yr(5,yue);

}

}

else if(yue%2!=0)

//奇数月

{

if(ri==31)

{

ri=1;

yue++;

write_yr(5,yue);

}

}

}

write_yr(8,ri);

if(xqnum==7)

//星期写入

xqnum=0;

write_com(0x80+0x0b);

for(a=0;a<3;a++)

{

write_data(xingqi[xqnum][a]);

delay(5);

}

}

write_sfm(0,shi);

//重新写入数据

}

write_sfm(3,fen);

//重新写入数据

}

write_sfm(6,miao);

//重新写入数据

} } /************************************************* 主函数

*************************************************/ void main(){ init();while(1){

keyscan();

//不停的检测按键是否被按下

} }

第二篇:万年历单片机课程设计报告

课程设计报告 任务和设计要求

首先要学会安装软件,要熟悉会使用。系统设计 系统框图 硬件设计 3.1 电路原理图

课程设计报告

课程设计报告

课程设计报告

3.2 主要单元电路

3.3 元件清单 软件设计 4.1 程序流程图

课程设计报告

4.2程序清单

TIME_WEEK DATA 52H TIME_YEAR DATA 5DH TIME_MONTH DATA 5EH TIME_DATA DATA 5FH YEARH DATA 36H YEAR DATA 35H MONTH DATA 34H DAY DATA 33H HOUR DATA 32H MINUTE DATA 31H SEC DATA 30H

课程设计报告

AAA BIT P3.0 BBB BIT P3.1 AA BIT P3.3 BB BIT P3.4 CC BIT P3.5 BL BIT P3.2 BZ1 BIT 21H.0 TIMES DATA

20H COM

DATA

P1 ORG

0000H LJMP

START ORG

0003H RETI ORG

000BH LJMP INTT0 ORG

0013H RETI ORG

001BH RETI ORG

0023H RETI START:

课程设计报告

MOV

R0,#30H MOV

R7,#9 CLEETE: MOV

@R0,#00H INC

R0 DJNZ

R7,CLEETE MOV

TIMES,#00H MOV

TMOD,#01H MOV

TL0,#0C0H MOV

TH0,#63H MOV

SEC,#0 MOV

MINUTE,#0H MOV

HOUR,#0H MOV

DAY,#01H MOV

MONTH,#01H MOV

YEAR,#01H MOV

YEARH,#20H SETB

EA SETB

ET0 SETB

TR0 MOV

R4,#19 START1:

课程设计报告

CALL

DISP JNB

AA,SETMM1 JMP

START1 SETMM1: CALL

SETMM JMP START1 SETMM: CALL

DISP CALL

DISP JB AA,SETMM0 SETMM2: JNB AA,SETMM3 CLR ET0 CLR TR0 MOV

SEC,#0 MOV

TIMES,#01H MOV

R0,#MINUTE SETMM4: NOP INC22: CALL

OFFL CALL

INC11

课程设计报告

CALL

DISP JB AA,INC22 CALL DISP JB AA,INC22 INC R0 MOV A,TIMES RL A MOV TIMES,A JNB

TIMES.5, SETMM4 SETMM12: JNB AA , SETMM11 SETMM0: SETB

TR0 SETB

ET0 RET SETMM11: CALL DISP JMP

SETMM12 SETMM3: CALL

DISP JMP

SETMM2 INC11:

课程设计报告

MOV

R3,#40 INC111: MOV A,@R0 JB

BB,INC17 ADD

A,#1 DA A CALL INC000 INC13: JNB BB , INC14 INC17: MOV

@R0,A CALL

DISP DJNZ R3,INC111 RET INC14: CALL

DISP JMP

INC13 OFFL: MOV

22H,@R0 MOV

R6,#10 OFF1: MOV

R7,#10

课程设计报告

OFF2: MOV

@ R0, # 0AAH CALL

DISP DJNZ R7 , OFF2 DJNZ R6 , OFF1 MOV

@ R0 , 22H RET INC000: JB

TIMES.0, INC001 JB

TIMES.1, INC002 JB

TIMES.2, INC003 JB

TIMES.3, INC004 JB

TIMES.4, INC005 JMP

INCOUT INC005: CJNE A, #99H, INCOUT MOV

A,#00H JMP

INCOUT INC004: CJNE A, # 13H, INCOUT MOV

A,#01H JMP

INCOUT

课程设计报告

INC003: CJNE A,# 32H ,INCOUT MOV

A,#01H JMP

INCOUT INC002: CJNE A,#24H,INCOUT MOV

A,#00H JMP

INCOUT INC001: CJNE A,# 60H , INCOUT MOV

A,#00H INCOUT: RET INTT0: PUSH

ACC PUSH

PSW ORL TL0,#0C0H MOV

TH0,#63H DJNZ R4 , CLKE111 JMP

LOOP11 CLKE111: JMP

CLKE

课程设计报告

LOOP11: MOV

R4,#19H MOV

A,SEC ADD

A,#1 DA A MOV

SEC,A CJNE A, #60H , CLKE99 MOV

SEC,#0 MOV

A,MINUTE ADD

A,#1 DA A MOV

MINUTE,A CLK0: CJNE A, # 60H, CLKE MOV

MINUTE,#0 MOV

A,HOUR ADD

A,#1 DA

A MOV

HOUR,A CJNE A, # 24H, CLKE MOV

HOUR,#0 MOV

A,DAY

课程设计报告

ADD

A,#1 DA A MOV

DAY,A MOV

A,MONTH INC

A MOVC A, @A + PC SJMP

CLK1 DB

31H,28H,31H DB

30H,31H,30H DB

31H,31H,30H DB

00H,00H,00H DB

00H,00H,00H DB

31H,30H,31H CLK1: CLR C SUBB A,DAY JNC

CLKE MOV

A,MONTH CJNE A,#2,CLK3 MOV

A,YEAR ANL A,#13H JNB

ACC.4,CLK2

课程设计报告

ADD

A,#2 CLK2: ANL A,#3 JNZ

CLK3 MOV

A,DAY XRL A,#29H JZ

CLKE CLK3: MOV

DAY,#1 MOV

A,MONTH ADD

A,#1 DA

A MOV

MONTH,A CJNE A,#13H,CLKE MOV

MONTH,#1 MOV

A,YEAR ADD

A,#1 DA

A MOV

YEAR,A CLKE99: CALL

CONVERT CLKE:

课程设计报告

POP

PSW POP

ACC RETI DISP: PUSH

PSW PUSH

ACC MOV

23H,R0 DISP99: MOV

R1,#40H MOV

R0,#30H MOV

R2,#9 DISP1: MOV A,@R0 ANL A,#0FH MOV @R1,A MOV A,@R0 SWAP A ANL A,#0FH INC R1 MOV @R1,A DJNZ R2,DISP2 CALL DISPLAY

课程设计报告

MOV R0,23H POP ACC POP PSW RET DISP2: INC R1 INC R0 JMP DISP1 DISPLAY: MOV R1,#40H MOV R5,#19 SETB AAA PLAY: SETB BBB NOP CLR BBB CLR AAA MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV COM,A CALL DL1MS

课程设计报告

MOV COM,#0FFH DJNZ R5,PLAY1 CLR BBB SETB AAA RET PLAY1: INC R1 JMP PLAY TAB: DB 0C0H,0F9H,0A4H, 0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0A3H,8EH,0ABH DL1MS: MOV 25H,R7 MOV 24H,R6 MOV R7,#20 DS1: MOV R6,#10 DJNZ R6,$ DJNZ R7,DS1 MOV R7,25H MOV R6,24H RET

课程设计报告

START_YEAR EQU 01 CONVERT_YEAR DATA 5CH CONVERT_MONTH DATA 38H CONVERT_DATE DATA 37H TEMP_BYTE1 DATA 57H TEMP_BYTE2 DATA 58H TEMP_BYTE3 DATA 59H TEMP_BYTE4 DATA 5AH TEMP_BYTE5 DATA 5BH CONVERT: MOV A, YEAR MOV TIME_YEAR,A MOV A,MONTH MOV TIME_MONTH,A MOV A,DAY MOV TIME_DATA,A MOV A,TIME_YEAR MOV B,#16 DIV AB MOV CONVERT_YEAR,B MOV B,#10 MUL AB

课程设计报告

ADD A,CONVERT_YEAR MOV CONVERT_YEAR,A MOV A,TIME_MONTH JNB ACC.4,CON_02 CLR ACC.4 ADD A,#10 CON_02:MOV CONVERT_MONTH,A MOV A,TIME_DATA MOV B,#16 DIV AB MOV CONVERT_DATE,B MOV B,#10 MUL AB ADD A,CONVERT_DATE MOV CONVERT_DATE,A MOV DPTR,#MONTH_DATA MOV A,CONVERT_YEAR CON_06:CLR C SUBB A,#START_YEAR MOV B,#3 MUL AB ADD A,DPL

课程设计报告

MOV DPL,A MOV A,B ADDC A,DPH MOV DPH,A MOV A, #2 MOVC A, @A+DPTR CLR ACC.7 MOV B, #32 DIV AB MOV TEMP_BYTE1,A MOV TEMP_BYTE2,B MOV TEMP_BYTE3,#0 MOV A,CONVERT_MONTH CJNE A,#10,CON_08 CON_08:JC CON_09 MOV TEMP_BYTE3,#1 CON_09:MOV A,CONVERT_YEAR ANL A,#03H JNZ CON_10 MOV A,CONVERT_MONTH LCALL GET_RUN_DAYS_LOW SJMP CON_12

课程设计报告

CON_10:MOV A,CONVERT_MONTH LCALL GET_DAYS_LOW CON_12:MOV B,CONVERT_DATE DEC B ADD A,B MOV TEMP_BYTE4,A JNC CON_14 INC TEMP_BYTE3 CON_14:MOV A,TEMP_BYTE1 LCALL GET_DAYS_LOW DEC A ADD A,TEMP_BYTE2 MOV TEMP_BYTE5,A MOV A,CONVERT_MONTH CJNE A,TEMP_BYTE1,CON_20 MOV A,CONVERT_DATE CJNE A,TEMP_BYTE2,CON_20 CON_20:JC CON_22 LJMP CON_60 CON_22:MOV A,CONVERT_YEAR JNZ CON_24 MOV A,#100

课程设计报告

CON_24:DEC A MOV CONVERT_YEAR,A MOV A,DPL CLR C SUBB A,#3 MOV DPL,A JNC CON_26 DEC DPH CON_26:MOV A,TEMP_BYTE5 CLR C SUBB A,TEMP_BYTE4 MOV TEMP_BYTE3,A MOV CONVERT_MONTH,#12 CLR F0 CLR A MOVC A,@A+DPTR ANL A,#0F0H SWAP A;MOV TEMP_BYTE4,A JZ CON_30 MOV A, #2 MOVC A , @A+DPTR

课程设计报告

MOV C, ACC.7 MOV A, #1 MOVC A, @A+DPTR RLC A SJMP CON_34 CON_30:MOV A, #1 MOVC A, @A+DPTR CON_34:MOV TEMP_BYTE5, A CON_40:MOV A, TEMP_BYTE5 RRC A MOV TEMP_BYTE5, A JC CON_42 MOV B, #29 SJMP CON_44 CON_42:MOV B, #30 CON_44:MOV A, TEMP_BYTE3 CLR C SUBB A, B JZ CON_46 JNC CON_50 CPL A INC A

课程设计报告

CON_46: INC A MOV B, #10 DIV AB SWAP A ORL A, B MOV CONVERT_DATE, A MOV A, CONVERT_MONTH MOV B, #10 DIV AB SWAP A ORL A, B MOV CONVERT_MONTH, A MOV A, CONVERT_YEAR MOV B, #10 DIV AB SWAP A ORL A, B MOV CONVERT_YEAR, A CALL WEEK RET CON_50:MOV TEMP_BYTE3, A JB F0, CON_52

课程设计报告

DEC CONVERT_MONTH CON_52:MOV A, CONVERT_MONTH CJNE A, TEMP_BYTE4, CON_54 CPL F0 CON_54:SJMP CON_40 CON_60:MOV A, TEMP_BYTE4 CLR C SUBB A, TEMP_BYTE5 MOV TEMP_BYTE4, A JNC CON_62 DEC TEMP_BYTE3 CON_62:MOV CONVERT_MONTH, #1 CLR A MOVC A, @A+DPTR MOV TEMP_BYTE5, A ANL A, #0F0H SWAP A XCH A, TEMP_BYTE5 CLR F0 ANL A, #0FH MOV TEMP_BYTE1, A MOV A, #1

课程设计报告

MOVC A, @A+DPTR MOV TEMP_BYTE2, A ANL A, #0F0H ORL A, TEMP_BYTE1 SWAP A MOV TEMP_BYTE1, A MOV A, #2 MOVC A, @A+DPTR MOV C, ACC.7 MOV A, TEMP_BYTE2 ANL A, # 0FH SWAP A MOV ACC.3, C MOV TEMP_BYTE2, A CON_70:MOV A, TEMP_BYTE2 RLC A MOV TEMP_BYTE2, A MOV A, TEMP_BYTE1 RLC A MOV TEMP_BYTE1, A JC CON_72 MOV B, #29

课程设计报告

SJMP CON_74 CON_72:MOV B, #30 CON_74:MOV A, TEMP_BYTE4 CLR C SUBB A,B JNC CON_78 MOV B, A MOV A, TEMP_BYTE3 JZ CON_76 DEC TEMP_BYTE3 MOV TEMP_BYTE4, B SJMP CON_80 CON_76:MOV A, TEMP_BYTE4 LJMP CON_46

CON_78:MOV TEMP_BYTE4, A CON_80:MOV A, CONVERT_MONTH CJNE A, TEMP_BYTE5, CON_82 CPL F0 JNB F0, CON_82 SJMP CON_70 CON_82:INC CONVERT_MONTH SJMP CON_70

课程设计报告

GET_DAYS_LOW: MOVC A, @A+PC RET DB 0,31,59,90,120,151,181,212,243,17,48,78 GET_RUN_DAYS_LOW: MOVC A, @A+PC RET DB 0,31,60,91,121,152,182,213,244,18,49,79 MONTH_DATA:

DB 04DH,04AH,0B8H;2001 DB 00DH,04AH,04CH;2002 DB 00DH,0A5H,041H;2003 DB 025H,0AAH,0B6H;2004 DB 005H,06AH,049H;2005 DB 07AH,0ADH,0BDH;2006 DB 002H,05DH,052H;2007 DB 009H,02DH,047H;2008 DB 05CH,095H,0BAH;2009 DB 00AH,095H,04EH;2010 DB 00BH,04AH,043H;2011

课程设计报告

DB 04BH,055H,037H;2012 DB 00AH,0D5H,04AH;2013 DB 095H,05AH,0BFH;2014 DB 004H,0BAH,053H;2015 DB 00AH,05BH,048H;2016 DB 065H,02BH,0BCH;2017 DB 005H,02BH,050H;2018 DB 00AH,093H,045H;2019 DB 047H,04AH,0B9H;2020 DB 006H,0AAH,04CH;2021 DB 00AH,0D5H,041H;2022 DB 024H,0DAH,0B6H;2023 DB 004H,0B6H,04AH;2024 DB 069H,057H,03DH;2025 DB 00AH,04EH,051H;2026 DB 00DH,026H,046H;2027 DB 05EH,093H,03AH;2028 DB 00DH,053H,04DH;2029 DB 005H,0AAH,043H;2030 DB 036H,0B5H,037H;2031 DB 009H,06DH,04BH;2032 DB 0B4H,0AEH,0BFH;2033

课程设计报告

DB 004H,0ADH,053H;2034 DB 00AH,04DH,048H;2035 DB 06DH,025H,0BCH;2036 DB 00DH,025H,04FH;2037 DB 00DH,052H,044H;2038 DB 05DH,0AAH,038H;2039 DB 00BH,05AH,04CH;2040 DB 005H,06DH,041H;2041 DB 024H,0ADH,0B6H;2042 DB 004H,09BH,04AH;2043 DB 07AH,04BH,0BEH;2044 DB 00AH,04BH,051H;2045 DB 00AH,0A5H,046H;2046 DB 05BH,052H,0BAH;2047 DB 006H,0D2H,04EH;2048 DB 00AH,0DAH,042H;2049 DB 035H,05BH,037H;2050 DB 009H,037H,04BH;2051 DB 084H,097H,0C1H;2052 DB 004H,097H,053H;2053 DB 006H,04BH,048H;2054 DB 066H,0A5H,03CH;2055

课程设计报告

DB 00EH,0A5H,04FH;2056 DB 006H,0B2H,044H;2057 DB 04AH,0B6H,038H;2058 DB 00AH,0AEH,04CH;2059 DB 009H,02EH,042H;2060 DB 03CH,097H,035H;2061 DB 00CH,096H,049H;2062 DB 07DH,04AH,0BDH;2063 DB 00DH,04AH,051H;2064 DB 00DH,0A5H,045H;2065 DB 055H,0AAH,0BAH;2066 DB 005H,06AH,04EH;2067 DB 00AH,06DH,043H;2068 DB 045H,02EH,0B7H;2069 DB 005H ,02DH, 04BH;2070 DB 08AH, 095H, 0BFH;2071 DB 00AH, 095H, 053H;2072 DB 00BH, 04AH, 047H;2073 DB 06BH, 055H, 03BH;2074 DB 00AH, 0D5H, 04FH;2075 DB 005H, 05AH, 045H;2076 DB 04AH, 05DH, 038H;2077

课程设计报告

DB 00AH, 05BH, 04CH;2078 DB 005H, 02BH, 042H;2079 DB 03AH, 093H, 0B6H;2080 DB 006H, 093H, 049H;2081 DB 077H, 029H, 0BDH;2082 DB 006H, 0AAH, 051H;2083 DB 00AH, 0D5H, 046H;2084 DB 054H, 0DAH, 0BAH;2085 DB 004H, 0B6H, 04EH;2086 DB 00AH, 057H, 043H;2087 DB 045H, 027H, 038H;2088 DB 00DH, 026H, 04AH;2089 DB 08EH, 093H, 03EH;2090 DB 00DH, 052H, 052H;2091 DB 00DH, 0AAH, 047H;2092 DB 066H, 0B5H, 03BH;2093 DB 005H, 06DH, 04FH;2094 DB 004H, 0AEH, 045H;2095 DB 04AH, 04EH, 0B9H;2096 DB 00AH, 04DH, 04CH;2097 DB 00DH, 015H, 041H;2098 DB 02DH, 092H, 0B5H;2090

课程设计报告

DB 00DH, 053H, 049H;2100 TIME_WEEK1 DATA 52H WEEK: MOV A, TIME_YEAR MOV B, #16 DIV AB MOV TEMP_BYTE1, B MOV B, #10 MUL AB ADD A, TEMP_BYTE1 MOV TEMP_BYTE1, A MOV A, TIME_MONTH JB ACC.7, GETW02 MOV A, #100 ADD A, TEMP_BYTE1 MOV TEMP_BYTE1, A MOV A, TIME_MONTH CLR ACC.7 GETW02: JNB ACC.4, GETW04 ADD A , #10 CLR ACC.4 GETW04: MOV TEMP_BYTE2,A

课程设计报告

MOV A, TIME_DATA MOV B, #16 DIV AB MOV TEMP_BYTE3, B MOV B, #10 MUL AB ADD A, TEMP_BYTE3 MOV TEMP_BYTE3, A MOV A ,TEMP_BYTE1 ANL A, #03H JNZ GETW10 MOV A, TEMP_BYTE2 CJNE A, #3,GETW06 GETW06: JNC GETW10 DEC TEMP_BYTE3 GETW10: MOV A,TEMP_BYTE2 LCALL GET_CORRECT ADD A, TEMP_BYTE1 MOV B, #7 DIV AB

MOV A, TEMP_BYTE1

课程设计报告

ANL A, #0FCH RR A RR A ADD A, B ADD A, TEMP_BYTE3 MOV B, #7 DIV AB MOV A, B CJNE A, #0,OUTOUT MOV B, #8 OUTOUT: MOV TIME_WEEK, B RET GET_CORRECT: MOVC A, @A+PC RET DB 0,3,3,6,1,4,6,2,5,0,3,5 END 系统仿真及调试

课程设计报告 仿真结果及分析

课程设计报告

上图为运行时的显示,左边两个数码管显示器显示的是年、月、日,中间的显示的是时、分、秒,右边显示的是农历日期以及星期。若想要调试时间,可通过右下方两个并联开关调试,左边开关调试数码管显示位置,右边的调试增1。此刻是2013年11月29日下午15:02,星期五,时间准确。训练体会

在整个单片机课程设计中,想要做出这个完整的设计过程,必须突破几个难点:

1、元件得找准却,6路驱动可以用74LS244代替。

2、连线不能连错,对应的输入输出端标上序号。

3、程序代码不能敲错。

4、由于单管显示的星期数不稳定,可以采用双管显示。参考文献:单片机课程设计指导。

第三篇:单片机实训报告范文

四川电子机械职业技术学院

单片机原理及应用

实 训报告1

班级:应电14.2班 姓名:刘华利 学号:140302058 指导教师:向兵

四川电子机械职业技术学院

摘要:

《单片机应用系统设计项目化教程》这本书根据教育部新的教学改革要求和企业岗位技能需求,以高技能应用型人才专业能力培养为目标,结合作者多年的教学经验与课程改革成果进行编写。全书通过6个典型项目任务,着重介绍单片机基本原理及应用系统的设计方法与技巧,包括流水灯控制系统设计、简易数字时钟设计、数字电压表设计、低频信号发生器设计、数据存储及回放系统设计和窗帘智能控制系统设计等。本书采用“理实一体、项目化教学”模式进行内容编排,将单片机原理及应用系统设计的相关知识点融入项目中进行讲解,易教易学,效果良好。

目录

摘要········································ 2 目录········································ 2 实训名称···································· 3 实训地点···································· 3 实训时间···································· 3 实训目的···································· 3 实训项目···································· 3 项目1·······································3 项目2·······································4 项目3·······································5 项目4·······································6 实训总结····································· 7

四川电子机械职业技术学院

实训名称:单片机原理及应用 实训地点:行政楼523 实训时间:2016.6.27—6.30 实训目的:1、2、3、4、5、6、7、掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。

掌握C的基本概念和基础知识。

通过训练能够读懂较为复杂的C语言源程序并具备基本C语言程序设计的能力。

熟练掌握各种常用类的定义继承文件的应用,为更好的理解面向对象打下更好的基础。

掌握面向对象的基本原理,提高学生综合程序设计的能力。

培养自己独立解决问题,找资料的能力。同学之间相互帮助、相互交流、相互合作的团队精神。

通过实训检查自己学习上的不足,达到熟练掌握C语言的基本知识和技能。

实训项目: 项目1 点亮一个LED,每隔一定时间循环熄灭、点亮…

设计思路:端口送高电平,led熄灭,延时1s,端口送低电平,led点亮,延时1s,就这样一直循环。

程序

#include } typedef unsigned char UINT8;void main(void)typedef unsigned int UINT16;{ void DelayMs(UINT16 Ms)while(1){ { UINT8 i;

L2 = 1;

while(Ms--)

DelayMs(1000);

{

L2 = 0;

for(i = 0;i < 114;i+

DelayMs(1000);+);} } }

四川电子机械职业技术学院

原理图

项目2 点亮一个LED,让它每隔一定时间循环左移(课使用delay函数进行延时)

设计思路:在项目1的的基础上,用dalay函数进行延时,用<<来表示左移,添加一个左移的函数。通俗一点的讲的话,就如天天天同一些人排队领东西,领完了返回队位继续排(当然一只是这几个人排)。

程序

#include void delay(unsigned int z){ unsigned intj,i;for(i=0;i

}

while(1){

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

delay(100);

LED=(LED<<1)|0x01;P3=LED;} }

四川电子机械职业技术学院

原理图

项目3 将任务二中delay延时改用定时器延时,且延时一秒

设计思路:在项目2的的基础上,用定时器来进行延时,首先设置定时器工作方式 也就是TMOD,在设置TH0/1,TL0/1的初值,也就是定时时间的设置,然后设置中断允许,并开中断。用中断来控制。

程序

#include char j=0,i=0;void main(){ TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1);} void T0_time()interrupt 1

{ TH0=(65536-50000)/256;TL0=(65536-50000)%256;j++;if(j==5){

j=0;

P1=~(0x01<

if(++i==8)i=0;

} }

四川电子机械职业技术学院

原理图

项目4 四位数码管并排显示,从左到右依次为分、秒十位、秒各位、0.1秒,相当于移动可计时9分59.9秒,使用一个按键,当按键第一次按下,启动秒表,第二次按下,停止,第三次按下,清零。(数码管可选共阴极、共阳极,至于对应数字的段选可参考教材)

设计思路:用delay函数来进行延时,用内部中断来控制T1,用外部中断来实现计数、暂停、清零这三个功能。

程序

#include #define uint unsigned int #define uchar unsigned char sbitdp=P0^7;uchar code Tab[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};ucharxiao,miao,fen;uchart,swnum=0;void delay(uint z){

uintx,y;

for(x=100;x>0;x--)

for(y=z;y>0;y--);}

void dihplay(){

P1=0xfd;

四川电子机械职业技术学院

P0=Tab[xiao%10];

delay(1);

} void display(){

P1=0xfb;P0=Tab[miao/10];delay(1);

P1=0xfe;P0=Tab[miao%10];dp=0;delay(1);}

void dimplay(){

P1=0xf7;P0=Tab[fen%10];dp=0;delay(1);}

void main(){

EA = 1;EX0 = 1;IT0 = 1;

ET0=1;TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=0;xiao=0;miao=0;fen=0;

while(1)

{

display();delay(1);dimplay();delay(1);dihplay();delay(1);

} }

void timer0()interrupt 1 {

xiao++;

if(xiao==10)

{

xiao=0;miao++;

if(miao==59)

{ miao=0;

fen++;

if(fen==10)

{ fen=0;

}

}

} }

void ex0_int0()interrupt 0 { swnum++;if(swnum == 1){

TR0= 1;} if(swnum == 2){

TR0 = 0;} if(swnum == 3){

xiao = 0;

miao = 0;

fen = 0;

swnum=0;} }

四川电子机械职业技术学院

原理图

实训总结:

通过今次单片机实训,使我对单片机的认识有了更深刻的理解。系统以51单片机为核心部件,利用C语言编程,通过对led灯控制到用数码管实现秒表功能、中断控制功能,能实现本设计题目的基本要求和发挥部分。由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。

踉踉跄跄地忙碌了一周,我的程序终于编译成功。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

但在这次实训中同时使我对C语言有了更深的认识。当我第一次接触C语言就感觉很难,特别是今次实训要用到C语言,尽管困难重重,可我们还是克服了。这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。

这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。希望这次的经历能让我在以后学习中激励我继续进步。

第四篇:单片机实训报告

单片机原理及应用

实训报告

班级: 学号: 姓名: 指导教师: 实训总成绩:

一、节日彩灯设计

题目:8位逻辑电平模块上的LED小灯从左向右呈现“鞭甩”的实验现象,状态间隔为0.25秒;按键1开始,按键2结束。

原理图

程序代码:

#include #define uchar unsigned char uchar tab[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};sbit S1=P1^4;sbit S2=P1^7;unsigned char i,j;delay(unsigned int x){ for(j=0;j

单片机原理及应用实训报告

管及驱动电路的连接,从而构成一个完整的硬件电路。然后通过对单片机的ROM进行编程,实现对彩灯闪烁的控制。

二、定时器实现流水灯

题目:利用定时器/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯点亮,依次循环点亮。

原理图

程序代码

#include #include int lamp = 0xfe;int cnt = 0;main(){P2 = 0xfe;TMOD = 0x01;TL0 =(6553650000)/ 256;TR0 = 1;ET0 = 1;

50000)% 256;TH0 =(65536

单片机原理及应用实训报告

程序代码

#include unsigned char seg[]={0xf9,0xa4,0xb0,0x99,0x92};unsigned char i,j;sbit P1_7=P1^7;delay(unsigned int x){ for(j=0;j

单片机原理及应用实训报告

实训总结

通过本次单片机实训使得我更深层次的学习单片机原理与应用技术这门专业课程,同时对KEIL软件进行复习。这次实训是我看到了我最薄弱的一点那就是编程,对于编程有很大的困难。对以往学习过的编程知识没有好好掌握,特别是编程这方便的知识很薄弱。学习过的知识在实际应用中仿佛是冰山一角,完全不够用,需要通过查阅很多资料才能解决到碰到的相关问题。而且实训中出现的问题都是实际应用出比较典型的问题。这次实训还让我深刻的体会了结构化程序设计的优势,让我懂得当我们要进行一个复杂的程序设计时应该先将其分解为多个不同的功能模块再分别编程实现,这样做不仅降低了编程的难度,也容易让编程者思路更加清晰,避免出现不必要的错误。在做仿真时,仿真图正确也不一定就是说明一定正确。

第五篇:单片机实训报告

目录

一 方案设计说明:............................................................................................2 二 硬件设计说明:............................................................................................4

(一)电路图:..........................................................................................4(二)单片机AT89S51的I/O口分配使用情况........................................4

(三)元器件的参数及规格:....................................................................5 三 软件设计说明:............................................................................................6

(一)软件设计思路及流程图:................................................................6

(二)程序的总体框架结构说明:............................................................8

(三)重要程序段的功能,作用及思路简介:........................................8 四 制作调试说明:..........................................................................................13

(一)程序调试过程:..............................................................................13

(二)硬件调试:......................................................................................13 五 电路实拍:.....................................................................................................14 六 总结心得体会:..........................................................................................15 七 参考文献:.....................................................................................................16

一 方案设计说明:

设计方案之前,得先分解设计任务。本次的设计任务是篮球记分牌,据常识,篮球记分牌应有分别给两队加分,减分,能交换显示分数。在进行设计之前,应自己提出几个问题,待问题回答之后。基本功、的设计方案就出来了。在设计之前我提出了一下几个问题:

a:硬件部分如何控制给A对B对加分,场地交换的时候又是如何实现分数显示交换的?应该如何连接硬件,在硬件上设置控制端,控制端与单片机各引脚之间的连。

b:单片机只有一个CPU,如何实现即要扫描按键,又要显示比分。数码管工作的本质是将要显示的数据的字型码送给他,如何采集到变化的分数送给数码管。用查表吗?

c:加分与倒计时在程序中最本质的东西是什么,如何用程序来说明这样的事件,各事件之间又是如何联系的。

虽然这些问题看似很普通,似乎在设计过程中都要面对这样的问题,何不事先就解决这些问题呢,在逐一回答这些问题的同时,该任务的设计方案已见雏形。以下就是该方案的详细内容以及我问题的答案。

系统原理图如下图一所示:

LED数码显示管外部按键AT89S51驱动电路 3

二 硬件设计说明:

(一)电路图:

(二)单片机AT89S51的I/O口分配使用情况

图中P3.0,P3.1,P3.2,P3.3分别是加一分、加两分、加三分、减一分。P3.4与P3.5口是外部中断,其中断服务程序的功能是实现比分交换的切换显示和加分减分切换。电路中选择共阳极的数码管,可以省去输入端的驱动电路,使电路更简洁。P0口作为字形码的输出口,与数码管的八只管教相连。

(三)元器件的参数及规格:

主要元器件有单片机芯片AT89S51,共阳极数码管,9012PNP三极管。其中单片机承载程序,实现电路功能,三极管起开关及驱动数码管显示作用。数码管显示比分。

三 软件设计说明:

程序的总体思路是主程序一直在扫描按键,比分显示,比分交换,加减分队伍切换都在中断服务程序中完成。其具体内容如下所示。

(一)软件设计思路及流程图:

中断程序流程图(如:图一)

程序初始化,给存储器赋初值按键扫描程序,扫描到由按键控制的中断就执行其对应程序外部中断1,加减外部中断0,A、B分队伍切换中断程序两队比分切换图一

按键扫描程序流程图(如:图二)按键扫描入口,检测软件标志位F0,为1调用分数显示程序程序,为0调用加减分切换程序,同时扫描按键是扫描P3.0,并去抖,是否有键按下加一分否是扫描P3.1,并去抖,是否有键按下加两分否是扫描P3.2,并去抖,是否有键按下加三分否是扫描P3.3,并去抖,是否有按键按下减一分否按键扫描程序结束图二

分数显示程序流程图(如:图三)

将A对B对的分数首先进行BCD码转换,再保存到相对应的寄存器中把各分数分别赋给寄存器A,查表送往要显示的数码管由P2口的位状态控制子程序调用结束,返回主程序,RET 图三

其中时间显示的子程序流程图与分数的大同小异,此处就不再一一列出。

(二)程序的总体框架结构说明:

程序包含按键扫描程序,不断地扫描按键,一旦有控制中断的按键按下,就执行中断程序,交换比分。中断服务程序,INT_0交换A对与B对的总分,INT_1改变软件标志位就可以切换加减分队伍,同时扫描按键。

(三)重要程序段的功能,作用及思路简介:

按键扫描程序是本程序中最重要的程序段,其连接了所有的子程序,子程序的调用都是在其中完成。下面就对该程序段的功能,作用及编写思路做详细说明。各部分关键程序 按键控制程序

org 0060h ajcx: jnb p3.0,s0

jnb p3.1,s1

jnb p3.2,s2

jnb p3.3,s3

jnb p3.4,s4

jnb p3.5,sz5

ljmp ajcx sz5: ljmp s5 s0:

lcall del

jb p3.0,s01

ljmp ajcx s01: jnb p1.0,s02

mov a,30h

inc a

mov 30h,a

ljmp tzcx s02: mov a,31h

inc a

mov 31h,a

ljmp tzcx s1:

lcall del

jb p3.1,s11

ljmp ajcx s11: jnb p1.0,s12

mov a,30h

add a,#02h

mov 30h,a

ljmp tzcx s12: mov a,31h

add a,#02h

mov 31h,a

ljmp tzcx s2:

lcall del

jb p3.2,s21

ljmp ajcx s21: jnb p1.0,s22

mov a,30h

add a,#03h

mov 30h,a

ljmp tzcx s22: mov a,31h

add a,#03h

mov 31h,a

ljmp tzcx s3:

lcall del

jb p3.3,s31

ljmp ajcx s31: jnb p1.0,s32

mov a,30h

dec a

mov 30h,a

ljmp tzcx s32: mov a,31h

dec a

mov 31h,a

ljmp tzcx s4:

lcall del

jb p3.4,s41

ljmp ajcx s41: push 30h

push 31h

pop 30h

pop 31h

lcall jscx

ljmp ajcx s5:

lcall del

jb p3.5,s51

ljmp ajcx s51: cpl p1.0

cpl p1.1

ljmp ajcx 加分程序: org 0120h tzcx: lcall jscx

ljmp ajcx org 0130h del: mov tl1,#00h

mov th1,#0bh

setb tr1

jnb tf1,$

mov tl1,#00h

mov th1,#0bh

clr tf1

ret 加减分队伍切换程序: org 0150h

dscx: mov th0,#0fch

mov tl0,#18h

mov a,r2

rl a

mov r2,a

cjne r2,#11h,d1

mov r1,#32h

lcall jscx

reti d1:

cjne r2,#22h,d2

mov r1,#33h

lcall jscx

reti d2:

cjne r2,#44h,d3

mov r1,#34h

lcall jscx

reti d3:

mov r1,#35h

lcall jscx

reti 比分切换程序: org 0190h jscx: mov a,30h

mov b,#0ah

div ab

mov 33h,b

mov 32h,a

mov a,31h

mov b,#0ah

div ab

mov 35h,b

mov 34h,a

mov p2,r2

mov dptr,#tab

mov a,@r1

movc a,@a+dptr

mov p0,a

ret

org 0220h tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h

db 80h,90h end 12

四 制作调试说明:

(一)程序调试过程:

程序调试我花了两天的时间,此程序虽然不复杂,由于我平时学习的不够深入,也没用心学。对于我这样的基础来说调试过程真的很痛苦。刚开始调试时程序有两处让我感觉很乱,按键扫描程序中的中断程序如何调用。当寄存A对或B对的分数累加到99的时候,就清零,但还没有累加到99的时候,程序应该跳往何处执行,我最初的是跳了继续累加。在仿真中的现象就是分数一直显示99,加不了。我真的是太大意了,调试的时候不踏实。

(二)硬件调试:

此次的硬件焊接很成功,电路布局很清晰,虽然在调试时也发现错误,但用万用表很容易就检测出来了,其中有几根线的皮包线熔了,肉眼看不到。重新整理电路后,功能明显成功。至此,本次的单片机课程设计圆满结束。

五 电路实拍: 电路板正面:

电路板背面:

六 总结心得体会:

通过这一次的单片机实训,让我对单片机这一门知识有了更深的认识,更锻炼了我独立解决问题独立思考的能力,在电路设计和程序设计的过程中我们遇到了很多问题和困难,但通过大家的讨论和老师的指点之后,一切的问题都一一被解决,但单片机的学习并不是那么的简单,在最后也是最关键的程序调试的过程中,我们又遇到了很多更难的更棘手的问题,电路焊接完好也会出现诸多类似于不实现功能或是出现混乱显示的情况,真的很让人头疼,但,大家都还是咬牙坚持了下来,最后很多电路虽然依旧还是没能实现功能,但我们努力顽强克服重重困难的精神,是大家有目共睹的,就算是失败了,也依旧是很值得的一次经历.,与此同时,也有很多同学试验成功,看着大家脸上洋溢的笑容,大家无论失败成功都从这次的实训中学到了很多很多的东西

七 参考文献: 胡健

主编 《单片机原理及接口技术》

张大明 主编 《单片机控制实训指导及综合应用实例》李勋、林广艳《单片机微型计算机大学读本》

机械工程出版社 机械工业出版社

北京航空航天大学出版社16

下载单片机万年历实训报告word格式文档
下载单片机万年历实训报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    单片机实训报告

    沧州职业技术学院单片机实训报告 原理图 沧州职业技术学院单片机实训报告 双位数码管显示控制程序及说明 START: MOV R0,#0 ;清零 MOV DPTR,#TABLE ;指定查表起始地址 LO......

    单片机实训报告样本(★)

    实训报告实训题目:_ 专业:_ 班级:姓名:指导教师:2实训目的: 掌握汇编语言程序设计和调试方法,熟悉键盘操作。掌握RAM中的数据操作。 熟悉MCS-51指令系统,掌握程序设计方法。掌握简单的......

    单片机实训

    单片机应用课程设计教学大纲 开课学院:机电工程学院 适用专业:电子科学与技术 课程编号:2009404 课程英文名称:Single-chip Microcomputer Application System Design 实验课程......

    单片机应用实训报告

    青岛大学软件技术学院 单片机应用实训报告 姓 名 xx 专 业 xxxxxxx 班 级 xxxxxxxxxxxxxxxxxxxx 指导教师 xxxxxxxxxxxxxxx 2014 年 1月16日 目录 1实训目的……………......

    51单片机实训报告

    “51单片机”精简开发板的组装及调试实训报告 为期一周的单片机实习已经结束了。通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用......

    单片机数字钟实训报告

    单片机数字钟实训报告 学院:电子工程学院 专业:机电一体化 班级: 姓名: 手机号: 一、任务及要求 用51单片机设计时、分、秒计时器,具体要求如下。 1、具有时、分、秒计时功能和8......

    单片机课程设计-电子万年历

    单片机及接口技术综合实验 ——————电子万年日历系统 一、题目:电子实时时钟/万年日历系统 二、功能要求:1. 基本要求: ⑴ 显示准确的北京时间(时、分、秒),可用24小时制式; ⑵......

    单片机实训题目

    电气1001班综合实训任务(单片机控制系统运行与维护) 第1题 模拟交通灯 任务要求:1、主干道绿灯40秒,支干道绿灯20秒,黄灯都是5秒; 2、要求用定时器实现定时时间; 3、要求显示器同步......