单片机初学者实验指导书.docx
- 文档编号:27008072
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:51
- 大小:1.19MB
单片机初学者实验指导书.docx
《单片机初学者实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机初学者实验指导书.docx(51页珍藏版)》请在冰豆网上搜索。
单片机初学者实验指导书
实验一:
单片机调试软件安装和ISP下载软件的安装与下载
实验内容与要求:
1、学会USB取电线和串行口USB-232ISP线的物理连接。
2、USB转232串口(H340驱动)USB设备驱动程序安装,STC串口下载软件STC-ISPV38A的安装。
3、学会利用STC-ISPV38A下载软件将事先准备好的HEX文件烧写入STC89C52RC单片机芯片,观察实验结果。
4、撰写实验报告,并说明观察到的实验结果
实验讲义:
一、学会USB取电线和串行口USB-232ISP线的物理连接
1、将USB方口取电方口一头连接入实验班方口母座,另一头接电脑USB,见下图蓝方框
USB转232串口线,9芯一头接实验班RS232母座,另一头接电脑USB,见下图红色方框
二、USB转232串口(H340驱动)USB设备驱动程序安装
连接好以后。
会出现,下图安装提示
选择从列表或指定位置安装,选择下一步
会出现如下图提示
选择,在搜索中包括这个位置,点击浏览,会出现浏览文件窗口,如下图
点击右侧树形结构,将“+”展开,选择USB转串口线驱动文件夹下面的R340文件夹,点击确定。
下面将返回“找到新硬件向导”窗口如下图。
选择下一步。
USB转RS232驱动程序安装完成。
方口USB不需要安装驱动。
下面在桌面右键单击我的电脑,在弹出的菜单中,选择”管理”,如下图
在出现的计算机管理界面中,展开左侧的目录,选择,“系统工具”下面的“设备管理器”,在右侧窗口中,展开“端口”,出现USB-SERIAL(COM5),(注意COM5只是随机的,会根据你插入USB设备的情况而改变,也有可能是COM1COM3)
双击USB-SERIAL(COM5),出现下面“USB-SERIAL(COM5)属性”窗口
选侧“端口设置”,看到每秒位数为9600
(注USB-SERIAL(COM5)属性只做查看用,它提供了两个信息,通信口为COM5,每秒位数为9600,这在后面下载程序的时候需要用到)
三、学会利用STC-ISPV38A下载软件将事先准备好的HEX文件烧写入STC89C52RC单片机芯片
在文件夹中找到,并打开“stc-isp-v3.8a非安装版”文件夹
找到STC-ISPV38A,双击鼠标左键运行它。
出现下面窗口
在Step1中选择“STC89C52RC”,Step3中COM选择COM5,MaxBuad中选择“9600”
然后点击OpenFile/打开文件
然后找到“F:
\soft\软件安装\USB烧写芯片-笔记本电脑或无并口新买电脑使用\stc-isp-v3.8a非安装版\键盘数码管蜂鸣器测试程序”文件夹下面的4x4键盘扫描.hex文件夹,点击打开。
会返回如下窗口
点击Download/下载。
等待2-3秒钟后会出现如下窗口。
此时,需要按实验板上的POWER键,关闭电源,然后再打开电源。
(注:
只需要上电一次,上电后不要关闭电源)如下图
此时程序下载入单片机芯片成功。
可以观察实验结果。
实验要点:
注意COM口的选择,COM口根据不同电脑不同USB插孔将会变化,所以需要到设备管理器查看后再下载。
最后一步下载的时候,需要关闭电源再上电,这是STC单片机下载区别于并口AT89S52下载的特殊地方。
四、观察实验现象结果并记载入实验报告数据栏
实验二:
KeiluVision3C51调试环境介绍
实验内容与要求:
1、学会KeiluVision3C51调试环境的安装
2、学会使用KeiluVision3C51调试环境的使用
3、学会利用KeiluVision3C51把C语言源文件编译生成相应的HEX文件
实验讲义:
一、KeiluVision3C51调试环境的安装
KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用。
下面介绍KeilC51软件的安装方法:
(本软件只作为学习用途,版权归KEIL公司所有)
首先找到
点击KEILV805中文版。
在弹出的对话框选择
然后在
中选择运行。
在弹出的对话框中选择,next
在弹出的安装许可协议中选择,Iagree。
。
。
。
。
。
。
,然后鼠标点击NEXT,如下图
在安装路径上选择C:
\ProgramFiles\Keil,也可以利用Browse来选择其他安装目录,然后点击NEXT进入下一步
然后在安装信息上填写,姓名,公司名,和Email,填写完毕选择Next
然后进入软件安装。
(注:
想要进行软件注册详情请见下图,注册成功后可突破试用版代码2K的限制)
)
安装结束后会在桌面出现
,快捷方式,双击,启动KeiluVision3,调试环境。
二、KeiluVision3C51调试环境的使用
学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习KeilC51软件的基本使用方法和基本的调试技巧。
1)建立一个新工程
单击“工程”菜单,在弹出的下拉菜单中选中“N新建工程”选项
2)然后选择你要保存的路径,输入工程文件的名字,比如保存到F:
\卡卡1\目录里,,
工程文件的名字为卡卡1,点击保存。
3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keilc51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel的AT89S52来说明,如下图所示,选择AT89S52之后,右边栏是对这个单片机的基本的说明,然后点击”确定”.
之后出现一个复制标准8051开始代码并添加文件到工程里,我们选择否。
4)完成上一步骤后,屏幕如下图所示
到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。
5)在下图中,单击“文件”菜单,再在下拉菜单中单击“新建”选项
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“文件”,在下拉菜单中选中“另存为”选项单击,或者直接点击快捷工具保存
按钮,
屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。
这里保存为卡卡1.c文件,然后,单击“保存”按钮
6)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,弹出如下菜单
然后单击“AddFiletoGroup‘SourceGroup1’”屏幕如下图所示
选中卡卡1.c,然后单击“Add ”屏幕好下图所示。
注意到“SourceGroup1”文件夹中多了一个子项“卡卡1.c”了吗?
子项的多少与所增加的源程序的多少相同。
如图
7)现在,请输入如下的C语言源程序:
#include
voiddelaym(unsignedintt)
{
unsignedcharj;
while(t--)
{
for(j=0;j<125;j++);
}
}
unsignedchara[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
voidmain()
{
unsignedchari;
while
(1)
{
for(i=0;i<8;i++)
{
P0=a[i];
delaym(1000);
}
}
}
程序输入完毕后,如下图所示
8)在上图中,选择RebuildAllTargetFiles,入下图
最后发现编译成功。
0个错误和0个警告
9)单击“工程”菜单,再在下拉菜单中单击“
”在下图中,选择“目标”选项,晶振选择12.0M
然后选择“输出”选项卡,在“创建HEX文件”选项上打钩,使程序编译后产生HEX代码,供下载器软件使用。
把程序下载到AT89S52单片机中。
如下图
再进行重新
编译会发现,创建了一个叫卡卡1的HEX文件。
即“卡卡1.hex”
实验三:
PO口输出花样流水灯实验
实验内容
1、发光LED共阳极发光工作原理
2、学会利用PO口高低电平输出进行流水灯控制
3、学会编写延时子程序
4、利用KeiluVision3C51调试软件进行编译,并产生HEX文件,然后利用ISP软件下载入单片机芯片,验证实验结果
5、编出至少3种花样流水灯
实验讲义:
一、LED发光二极管工作原理
B=5V,即单片机P0.0口输出1。
B=0V,即单片机P0.0口输出0。
我们程序就是通过单片机P0口的输出来控制8路LED的亮灭。
二、根据PO口高低电平输出进行流水灯控制
实例一:
单显流水灯
状态
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P0(16进制)
全灭
1
1
1
1
1
1
1
1
FF
0
1
1
1
1
1
1
1
0
FE
1
1
1
1
1
1
1
0
1
FD
2
1
1
1
1
1
0
1
1
FB
3
1
1
1
1
0
1
1
1
F7
4
1
1
1
0
1
1
1
1
EF
5
1
1
0
1
1
1
1
1
DF
6
1
0
1
1
1
1
1
1
BF
7
0
1
1
1
1
1
1
1
7F
流水灯在二进制逻辑上是有规律的,但是在数学(简单加减乘除)上是没有规律的,因此要把无规律的FEFDFBF7EFDFBF7F变成有规律的数,我们将他们放在数组a[]里面,那么a[0]=0XFE,表示第一盏灯亮,a[1]=0XFD,表示第二盏灯亮。
。
。
。
。
。
。
依次类推。
实例二:
双流水灯
状态
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P0(16进制)
全灭
1
1
1
1
1
1
1
1
FF
0
1
1
1
1
1
1
0
0
FC
1
1
1
1
1
1
0
0
1
F9
2
1
1
1
1
0
0
1
1
F3
3
1
1
1
0
0
1
1
1
E7
4
1
1
0
0
1
1
1
1
CF
5
1
0
0
1
1
1
1
1
9F
6
0
0
1
1
1
1
1
1
3F
7
0
1
1
1
1
1
1
0
7E
三、延迟子程序的编写
由于发光二极管发光后需要让人眼(感受)见到光一段时间,人们才会觉得发出稳定的光。
我们就需要编写延迟程序来让每盏LED在亮以后保持1S,然后再换成第二盏等亮1S,然后一直下去。
带参数入口的延迟子程序编写,详情见注释
voiddelaym(unsignedintt)//延时子程序,入口参数ms,延迟时间=t*1ms,t=0~65535
{
unsignedcharj;//j=0~255
while(t--)//t的值等于while()下面{}的语句执行的次数
{
for(j=0;j<125;j++);//j进行的内部循环,j=j+1,每执行一次加1,大约消耗单片机处理时间
//8us,那么执行一次for(),注意for()后面加了分号。
大约消耗CPU8us*125=1000us=1ms
}
}
从上述的分析可以看出,delaym()就是一个带入口参数的t毫秒延迟子程序。
如果要延迟100毫秒,则调用delaym(100)就可以了。
四、利用KeiluVision3C51调试软件进行编译,并产生HEX文件,然后利用ISP软件下载入单片机芯片,验证实验结果。
流水灯程序清单:
#include
voiddelaym(unsignedintt)//延时子程序,入口参数ms,延迟时间=t*1ms,t=0~65535
{
unsignedcharj;//j=0~255
while(t--)
{
for(j=0;j<125;j++);//j进行的内部循环,1次延迟8us
}
}
unsignedchara[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水等8种花样
voidmain()
{
unsignedchari;
while
(1)
{
for(i=0;i<8;i++)
{
P0=a[i];
delaym(250);//调用延迟程序1000*1ms=1秒
}
}
}
五、编写新花样流水灯
0、中间2盏亮
1、中间4盏亮
2、中间6盏亮
3、8盏全部亮
4、右边6盏亮
5、右边4盏亮
6、右边2盏亮
7、全灭
实验四:
LED数码管驱动显示实验
实验内容:
1、八字段LED数码管驱动显示工作原理
2、74LS138三—八译码器工作原理及如何控制数码管工作原理
3、数码管动态显示工作原理分析与计算
4、数码管多种显示实验
实验讲义:
一、七字段数码管显示工作原理
共阴级接法
共阳级接法
共阳极接法字形表
字符
h(DP)
g
f
e
d
c
b
a
P0口
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P0(16进制)
全灭
1
1
1
1
1
1
1
1
FF
显示0
1
1
0
0
0
0
0
0
C0H
显示1
1
1
1
1
1
0
0
1
F9H
显示2
1
0
1
0
0
1
0
0
A4H
显示3
1
0
1
1
0
0
0
0
B0H
显示4
1
0
0
1
1
0
0
1
99H
显示5
1
0
0
1
0
0
1
0
92H
显示6
1
0
0
0
0
0
1
0
82H
显示7
1
1
1
1
1
0
0
0
F8H
显示8
1
0
0
0
0
0
0
0
80H
显示9
1
0
0
1
1
0
0
0
98H
详情分析可以启动51单片机工具箱软件,选择“数码管字形”生成选项进行字形分析。
二、74LS138三—八译码器工作原理及如何控制数码管工作原理
注:
上图是工程样品图。
实际修改后的电路板图将接入9012三极管的Y0-Y7顺序改为Y7-Y0
输入
3—8译码器输出
现象
P2口的值
P21
P21
P20
C
B
A
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
0x00
0
0
0
1
1
1
1
1
1
1
0
Y0对应的数码管亮
0x01
0
0
1
1
1
1
1
1
1
0
1
Y1对应的数码管亮
0x02
0
1
0
1
1
1
1
1
0
1
1
Y2对应的数码管亮
0x03
0
1
1
1
1
1
1
0
1
1
1
Y3对应的数码管亮
0x04
1
0
0
1
1
1
0
1
1
1
1
Y4对应的数码管亮
0x05
1
0
1
1
1
0
1
1
1
1
1
Y5对应的数码管亮
0x06
1
1
0
1
0
1
1
1
1
1
1
Y6对应的数码管亮
0x07
1
1
1
0
1
1
1
1
1
1
1
Y7对应的数码管亮
三、数码管驱动方式及动态显示工作原理分析与计算
1、人眼的视觉暂留现象
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
①静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S52单片机可用的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
2、数码管使用的电流与电压计算
电流:
静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA。
电压:
查引脚排布图,看一下每段的芯片数量是多少?
当红色时,使用1.9V乘以每段的芯片串联的个数;当绿色时,使用2.1V乘以每段的芯片串联的个数。
四、数码管显示实验
利用3-8译码器来选择需要显示(亮)哪个数码管,利用P0口来负责显示什么数字或符号
1、让Y0所对应的数码管显示“0”—“9”,间隔1秒
2、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔1秒
3、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔4毫秒,注意观察现象,和实验2有何区别
4、让Y0所对应的数码管显示“5”,停留1秒,再让Y1显示“5”,…………以此类推最后Y7显示“5”,移动字幕
5、在8个数码管上稳定显示“iloveyou”
6、数码管动态显示程序清单
#include
voiddelaym(unsignedintt)//延时子程序,入口参数ms,延迟时间=t*1ms,t=0~65535
{
unsignedcharj;//j=0~255
while(t--)
{
for(j=0;j<125;j++);//j进行的内部循环,1次延迟8us
}
}
//数码管显示程序
unsignedcharb[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//0-9,a-f显示的段码
voidmain()
{
unsignedinti,j;
while
(1)
{
for(j=0;j<16;j++)//为了循环显示数组b[9]里的9个数字0-9
{
for(i=0;i<8;i++)//为了让8个数码管轮流亮一遍过去
{
P0=b[j];
P2=0;
delaym(250);
}
}
}
}
实验五:
单片机定时器0-59马表实验
实验内容:
1.实验任务
如实验原理图所示,在AT89S52单片机的P0和P2端口分别接有两个共阳数码管,采用动态扫描方式。
2.电路原理图
略
3.系统板上硬件连线
4.程序设计内容
利用定时器方式1,16位定时器。
1)在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒个位到10的时候,个位清零,秒的十位加1,当秒计数达到60时,就自动返回到0,从新秒计数。
2)对于秒计数单元中的数据要把它十位数和个数分开。
3)在数码上显示,仍通过查段码表表的方式完成。
4)一秒时间的产生在这里我们采用定时器10ms*100的方法来完成。
5)源程序清单1(参考程序)
#include
sbitP1_1=P1^1;
unsignedchari,k,ge,shi;
unsignedchara[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsignedcharb[2];
voiddelaym(unsignedintt)//延时子程序,入口参数ms,延迟时间=t*1ms,t=0~65535
{
unsignedcharj;//j=0~255
while(t--)
{
for(j=0;j<125;j++);//j进行的内部循环,1次延迟8us
}
}
voidmain()
{
TMOD=0x01;
TH0=0xD8;
TL0=0xf0;
EA=1;
ET0=1;
//i=0;
//ge=0;
//shi=0;
TR0=1;
while
(1)
{
for(k=0;k<2;k++)
{
P0=b[k];
P2=k;
delaym(3);
}
}
}
time0_int(void)interrupt1//中断服务程序
{
TH0=0xD8;
TL0=0xF0;
i++;
if(i==100)
{
i=0;
ge++;
}
if(ge==10)
{
shi++;
ge=0;
}
if(shi==6)
{shi=0;
ge=0;
}
b[0]=a[shi];
b[1]=a[ge];
}
实验六:
篮球比赛24秒进攻时间到报警实验(加计数)
实验内容:
00-24秒表(利用定时器)
1.实验任务
如实验原理图所示,在AT89S52单片机的P0和P2端口分别接有两个共阳数码管,采
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 初学者 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)