一、实验目的:通过所学汇编语言和C语言知识,熟悉并掌握单片机综合仿真实验仪的使用方法,学会使用Keil uVision2编写程序。
二、实验器材:单片机综合仿真实验仪、AT89C51、计算机、导线。
三、实验功能:利用定时计数器T0工作方式1,实现定时50ms,中断20次,实现精确定时1秒以控制8个LED指示灯从左到右间隔1秒时间循环移动,当LED指示灯移动次数到32次时,8个LED指示灯停止循环移动,蜂鸣器响1秒后停止声音提示;又接着控制8个LED指示灯从右到左间隔1秒时间循环移动,依此类推。
四、实验要求:只能利用单片机的4个P1口控制74HC138译码器以及蜂鸣器来实现上述功能,并对程序进行注解; 注明:刚开始时,最左边的LED指示灯点亮,画出电路图。
五、计算定时/计数器的初值X
(2^16-X)*1=50000,X=15536D=03CB0H.
低8位送给TL0,高8位送给TH0,即(TL0)=0B0H,(TH0)=03CH
六、实验原理图:
七、实验参考程序:
#include <REG51.H>
bit direct=1,speak=0,counter=0;
int i=0,j=0,k=0,p=0,m,n;
sbit P13=P1^3; //定义P1.3引脚
main() //主函数
{
TMOD=0x01; //T0计数方式1
TL0=0xb0; //定时50ms
TH0=0x3c;
EA=1; //开T0中断
ET0=1;
TR0=1; //启动T0
while(1) //等待中断
{
while(speak)
{
P13=~P13; //输出取反
for(m=0;m<2;m++)
for(n=0;n<2;n++);
}
if(counter)
{
counter=0;
TR0=1;
if(direct&&!speak)
{
P1=i;
i++;
if(i==8)
{
j++;
if(j==4)
{
j=0;direct=0;speak=1;
}
else
i=0;
}
}
else if(!direct&&!speak)
{
i--; //循环右移
P1=i;
if(i==0)
{
j++; //循环左移
if(j==4) //移动周期
{
j=0;direct=1;speak=1;
}
else
i=8;
}
}
}
}
}
void time0(void) interrupt 1 //T0中断服务函数
{
TR0=0; //重启动
TL0=0xb0; //重装初值
TH0=0x3c;
if(speak)
{
++p;
if(p==20) //蜂鸣器响应时间
{
p=0;
speak=0;
}
}
else
++k;
if(k==20) //LED灯间隔1秒移动
{
k=0;
counter=1;
}
else
TR0=1;
}
八、实验总结:通过这次实训,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。尤其是观察、分析和解决问题的实际工作能力。它的一个重要功能,在于运用学习成果,检验学习成果。
第二篇:单片机实训报告4个8×8LED点阵显示
第一天:
我们来到实训室,根据老师发下来的项目实训资料来完成单片机控制4个8×8LED显示实训。我们认真阅读实训内容,打开电脑,打开单片机系统,打开proteu软件,放置以及排序芯片,电阻、译码器、单片机控制的4个8×8LED点阵显示屏。
第二天:
对做好的硬件连接之后,检查所连接好的线是否正确。根据任意编程进行点阵显示,排查连接的是否有错误。
第三天:
分别打开EAT589、字模软件,在EAT598软件上进行编程的时候分清子程序码,使用字模软件的横向取模,取汉字的A51格式。
第四天:
打开软件,在软件上进行汇编语言程序设计,设计出了汉字显示,学习和熟悉单片机的指令程序。 第五天:
根据之前所设计的汉字显示来修改,直到完成汉字的切换以及汉字的滚动效果。然后根据自己的兴趣完成自己的作品。
实训结果:
硬件连接完成,可以实现之后的汉字显示汉字切换以及汉字滚动,认真仔细的接好硬件连接,注意在字模上的取模,经过系列的汇编语言程序设计正常运行
体会:
通过这一周的实训,我们很好的完成了单片机的实训,收获了许多单片机的知识。完成了单片机控制4个8×8点阵显示汉字、切换以及滚动汉字。在这次的单片机实训中,了解单片机的用途,译码器原理,掌握单片机的编译程序和装载并进行运行,学习硬件和软件的基本操作,熟悉运行结果及检查进行实践。
ORG 0000H
LJMP MAIN
ORG 0040H
MAIN:MOV SP,#5FH
MOV DPTR,#TAB
MOV R1,#0
LCALL LA
LJMP MAIN
LA:
MOV R0,#00H
MOV R2,#0
MOV R4,#32
LB:
MOV P1,R0;行
MOV A,R2
MOVC A,@A+DPTR
MOV P0,A
INC R2
MOV A,R2
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC R2
INC R0
DJNZ R4,LB
MOV R5,#8
DJNZ R5,LA
RET
DELAY: MOV R6,#20
D1:
D2:
MOV R7,#30 DJNZ R7,$ DJNZ R6,D1 RET
TAB:
DB 04H,20H,04H,20H,0FFH,0FEH,04H,20H,00H,00H,7CH,0F8H,44H,88H,44H,0F8H DB 44H,88H,7CH,88H,44H,0F8H,44H,88H,7DH,08H,45H,08H,42H,28H,04H,10H
END
实训步骤:
1. 硬件连接
2. 检查连线是或否正确
3. 根据编程进行点阵显示
4. 打开软件进行设计汉字的显示
5. 分清程序各码进行编译程序并运行
6. 自己的趣味设计