第一篇:单片机万年历实训报告
单片机万年历实训报告
系
部:电气自动化系
班
级: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
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
L2 = 1;
while(Ms--)
DelayMs(1000);
{
L2 = 0;
for(i = 0;i < 114;i+
DelayMs(1000);+);} } }
四川电子机械职业技术学院
原理图
项目2 点亮一个LED,让它每隔一定时间循环左移(课使用delay函数进行延时)
设计思路:在项目1的的基础上,用dalay函数进行延时,用<<来表示左移,添加一个左移的函数。通俗一点的讲的话,就如天天天同一些人排队领东西,领完了返回队位继续排(当然一只是这几个人排)。
程序
#include } 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 { 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 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 单片机原理及应用实训报告 管及驱动电路的连接,从而构成一个完整的硬件电路。然后通过对单片机的ROM进行编程,实现对彩灯闪烁的控制。 二、定时器实现流水灯 题目:利用定时器/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯点亮,依次循环点亮。 原理图 程序代码 #include 50000)% 256;TH0 =(65536 单片机原理及应用实训报告 程序代码 #include 单片机原理及应用实训报告 实训总结 通过本次单片机实训使得我更深层次的学习单片机原理与应用技术这门专业课程,同时对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第四篇:单片机实训报告
第五篇:单片机实训报告