生产实习.docx
《生产实习.docx》由会员分享,可在线阅读,更多相关《生产实习.docx(17页珍藏版)》请在冰豆网上搜索。
生产实习
实习报告
实习人员:
刘琦、王兴龙、靳晨霖
一、任务及要求
设计:
基于MCU的数字时钟
要求:
1)硬件电路自己设计;
2)8个数码管显示时间日、分钟、秒;即最小刻度为1s
3)4个按键:
分别接rst、P1.0、P1.1、P1.2;依次为复位键、位选件、加一键、减一件。
按rst件是电路板恢复初始状态,按P1.0对依次对分、时、日进行调整,按P1.1键对时间加一,按P1.2对时间减一。
4)结合按键程序,综合。
二、软件设计思路
数字时钟是利用单片机内部的定时器进行计时和按键调整来实现的,它的处理过程如下:
首先设定单片机内部的一个定时器/计数器工作于定时方式,再初始化,显示初始化数字。
显示数字与时间调整分两步进行。
三、流程图
N
N
N
Y
禁止T1,清零
Y
显示时t4
Y
显示时t3
N
N
显示时t2
N
N
Y
N
Y
Y
Y
Y
N
INT0程序:
显示初始设置时间
四、硬件原理
基于MCU的数字跑表有显示分钟、秒、毫秒以及通过相应按键显示5个运动时间。
数字跑表的硬件电路包括时钟电路、复位电路、按键电路以及数码管显示电路。
五、硬件电路说明
1、复位电路
上电时,RST为低电平,电路启动,当系统出现紊乱时需要复位,则可按复位键复位。
按复位键,使RST输入高电平,重启系统。
2、时钟电路
数字钟实际上是一个对标准频率进行计数的计数电路。
振荡器是数字钟的核心,其作用是产生一个标准频率信号,它保证了时钟走时的准确和稳定。
本次设计采用12分频的晶振作为时钟电路,单片机的机器周期为1μs。
3、按键电路
按键电路具有设定、修改时间的功能。
按键电路中,K1、K2、K3分别接单片机的P1.0、P1.1、P1.2口,数码管段选为P0,P2.0-P2.7为片选。
其中K1为调整位,K2为加一,K3减一。
4、显示电路
动态显示是多个数码管,交替显示,利用人的视觉暂留作用使人看到多个数码管同时显示。
因为防止在P2口输出功率太高,所以在P2口接电阻接三极管基极。
在编程时,需要输出段选和位选信号,位选信号选中其中一个数码管,然后输出段码,使该数码管显示所需要的内容,延时一段时间后,再选中另一个数码管,再输出对应的段码,如此高速交替。
各个位的延时时间长短是非常重要的,如果延时时间长,则会出现闪烁现象;如果延时时间太短,则会出现显示暗且有重影。
这就需要进行对程序的调试,使实验进一步完美。
仿真电路图:
六、元件清单表原理图
元件
型号
数量
单片机
AT89S52
1
电阻
100Ω
8
电阻
10kΩ
4
电阻
220Ω
8
电容
27μF
1
电容
27pF
2
三极管
NPN
8
晶振
12MHz
1
电源
5V
1
共阴极数码管
8
按键
4
电烙铁
1
导线
N
N
Y
禁止T1,清零
N
七、程序
ORG0000H
LJMPSTART
ORG000BH
LJMPINIT0
ORG0100H
START:
MOVR0,#30H;主程序开始
MOVR2,#16
INIT:
MOV@R0,#00H
INCR0
DJNZR2,INIT
MOVTMOD,#01H;选择定时器/计数器T0的方式1
MOVTL0,#LOW(65536-50000)
MOVTH0,#HIGH(65536-50000);高位赋初值
SETBEA
SETBET0
SETBTR0
START1:
LCALLSCAN
LCALLKEYSCAN
SJMPSTART1
DL1MS:
MOVR6,#14H;延时1子程序,1ms
DL1:
MOVR7,#19H
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
DL20MS:
ACALLSCAN;延时20ms子程序
ACALLSCAN
ACALLSCAN
RET
;数码管显示程序开始
SCAN:
MOVA,3AH;3A存时间秒
MOVB,#0AH
DIVAB;时间秒的十位送给A,时间秒的个位送B
MOV31H,A;时间秒要显示的十位
MOV30H,B;时间秒要显示的个位
MOVA,3BH;3B存时间分
MOVB,#0AH
DIVAB;时间分的十位送给A,时间分的个位送B
MOV33H,A;时间分要显示的十位送地址
MOV32H,B;时间分要显示的个位送地址
MOVA,3CH;3C存时间时
MOVB,#0AH
DIVAB;时间时的十位送给A,时间时的个位送B
MOV35H,A;时间时显示的十位送地址
MOV34H,B;时间时要显示的个位送地址
MOVA,3DH;3D存时间日
MOVB,#0AH
DIVAB;时间日的十位送给A,时间时的个位送B
MOV37H,A;时间日显示的十位送地址
MOV36H,B;时间日要显示的个位送地址
MOVR1,#30H
MOVR5,#01111111B
MOVR3,#08H
SCAN1:
MOVA,R5;数码管的显示程序
MOVP2,A
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR;对字段表取值显示
MOVP0,A
LCALLDL1MS
INCR1
MOVA,R5
RRA
MOVR5,A
DJNZR3,SCAN1
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H;"0~9"
INIT0:
PUSHACC
PUSHPSW
MOVTL0,#LOW(65536-50000)
MOVTH0,#HIGH(65536-50000);高位赋初值
SETBTR0
INC38H
MOVA,38H
CJNEA,#20,OUTT0;50ms是否到20次,没有到就继续执行50ms的延时
MOV38H,#00
INC3AH
MOVA,3AH
CJNEA,#3CH,OUTT0;一秒的延时是否计到60次,没有就继续执行
MOV3AH,#00
INC3BH
MOVA,3BH
CJNEA,#3CH,OUTT0
MOV3BH,#00
INC3CH
MOVA,3CH
CJNEA,#18H,OUTT0;60分钟的延时是否计到24次,没有就继续执行程序
MOV3CH,#00
INC3DH
MOVA,3DH
CJNEA,#31,OUTT0;30天是否到30次,没有到就继续执行延时
MOV3DH,#00
OUTT0:
SETBET0;启动定时器T0
POPPSW
POPACC
RETI
KEYSCAN:
CLREA;关闭中断请求
JNBP1.0,KEYSCAN0;P1.0有按键按下则跳转到子程序
JNBP1.1,KEYSCAN1;P1.1有按键按下则跳转到子程序
JNBP1.2,KEYSCAN2;P1.2有按键按下则跳转到子程序
KEYOUT:
SETBEA
RET
KEYSCAN0:
LCALLDL20MS;20ms的延时消抖
JBP1.0,KEYOUT
;松手跳转
WAIT0:
JNBP1.0,WAIT0;判断按键是否松手,不松手就往下执行程序
INC39H
MOVR4,39H
CLRET0
CLRTR0
CJNER4,#04H,KEYOUT;按下第一、二、三次对时、分、日选定,不等跳转
MOV39H,#00H
SETBET0
SETBTR0
SJMPKEYOUT
KEYSCAN1:
LCALLDL20MS;按键加一的程序
JBP1.1,KEYOUT
WAIT1:
JNBP1.1,WAIT1
CJNER4,#01H,KSCAN11;如果功能键按下则对时加一调整,
INC3BH
MOVA,3BH
CJNEA,#3CH,KEYOUT;如果加到60则清零
MOV3BH,#00
SJMPKEYOUT
KSCAN11:
CJNER4,#02H,KSCAN12;如果功能键按下则对时加一调整,
INC3CH;如果功能键是按下第二次则对时进行加一调整
MOVA,3CH
CJNEA,#18H,KEYOUT
MOV3CH,#00
SJMPKEYOUT
KSCAN12:
INC3DH;如果功能键是按下第二次则对时进行加一调整
MOVA,3DH
CJNEA,#31,KEYOUT
MOV3DH,#00
SJMPKEYOUT
KEYSCAN2:
LCALLDL20MS;延时消抖程序
JBP1.2,KEYOUT
WAIT2:
JNBP1.2,WAIT2;判断是否放开按键
CJNER4,#01H,KSCAN21;如果功能键是按下第一次对时进行减一
DEC3BH
MOVA,3BH
CJNEA,#0FFH,KEYOUT
MOV3BH,#3BH
SJMPKEYOUT
KSCAN21:
CJNER4,#02H,KSCAN22;如果功能键是按下第一次对时进行减一
DEC3CH;如果功能键是按下第二次则对分进行减一
MOVA,3CH
CJNEA,#0FFH,KEYOUT
MOV3CH,#17H
SJMPK1
KSCAN22:
DEC3DH;如果功能键是按下第二次则对分进行减一
MOVA,3DH
CJNEA,#0FFH,K1
MOV3DH,#1EH
K1:
SETBEA
RET
END
八、调试过程
在电脑上仿真并且焊好板了以后,进入调试阶段
硬件调试:
1.先是检查原件是否损坏,和数值是否正确;
2.检查焊接处是否有焊连、虚焊现象;
3.检查焊好的原件是否短路;
软件调试
1.在检查完硬件后,给单片机写入程序。
2.调整扫描时间,消除暗影。
3.再检查蜂鸣器和LED是否工作。
4.经过调试,要求的功能能全部实现,并且时间精度很高,误差在要求精度内。
九、测试结果
根据程序的设计,可以通过三个按键K1、K2、K3对数码管的显示(即时间)进行调试,8个数码管显示日、时、分钟、秒;即最小刻度为1s;4个按键:
初始显示时间,按K1键选择调整时间,按一下调整分,停止计时,按两下调整时,按三下调整日,按四下跳出调整,继续计时;按K2键加一,按K2键减一。
按复位键显示初始时间。
精度满足要求。
测试结果如下图所示:
一十、收获
通过这次的生产实习,使我们巩固和加深对单片机基本知识的理解,学会查寻资料、方案设计、方案比较,以及电路设计,还了解了AT89S52单片机,更熟练地掌握了PROTEL仿真软件以及一些相应软件的使用。
除此之外,我们对汇编语言有了更深一步的了解,进一步提高我们综合运用所学知识的能力,提高了分析解决实际问题的能力。
我们先是在电脑上画图,仿真。
购得了器件之后,首先按照原理图在面包板上布置电阻,电容,数码管,单片机等器件,紧接着就是焊接,由于数码管不是整体的那种,得一个个的焊接,线非常多,所以我们焊完以后还检查了是否有短路的地方。
在设计过程中有一些着急,因为没有一个完整的设计思路,后来在网上查找相关的资料后,才制定了设计方案。
在调试过程中,我们也遇到了失败,比如数码管用着用着就坏了,就必须得换,或者是哪儿短路了。
通过这次实习,我们又重新复习了一遍单片机,并亲手实践板的制作过程,还学习了新的一些知识,这对我们将来的学习和工作很有帮助。