实验一 按键实验.docx
《实验一 按键实验.docx》由会员分享,可在线阅读,更多相关《实验一 按键实验.docx(15页珍藏版)》请在冰豆网上搜索。
实验一按键实验
实验一LED灯及按键实验
一、实验目的
1、了解KEIL软件和STC下载软件的操作方法。
2、学习用KEIL软件编写程序和STC软件下载程序的操作。
3、掌握单片机I/O口的应用,并学会简单的流水灯程序的编写。
4、理解独立按键的控制原理,能用独立按键控制led的亮灭。
二、实验设备
1、单片机口袋机。
2、miniUSB口下载线。
三、实验内容
1、通过控制单片机I/O口的状态控制led灯的亮灭。
(LD0,LD1,LD2,LD3)
2、控制四个led灯循环点亮。
3、通过口袋机上的按键(K0~K3)控制四个led灯亮灭,亮灭的形式可以多样化。
四、实验原理
1、口袋机上的4个LED灯为共阳极的,实现LED流水灯时,单片机的I/O口可以控制LED灯的变化,本程序用到单片机的P3.7,P4.1,P4.2和P4.3口,分别对应口袋机的LD0,LD1,LD2,LD3。
现象为LED灯从右到左依次点亮并循环。
图1LED接口原理图图2LED原理图
下面是P3口和P4口的I/O口的工作类型设定:
2、按键(轻触开关)是一种广泛应用于各种电子设备的元件,比如我们最常用的电视机面板控制按钮,遥控器按钮。
其实就是一个常开的开关,按下后两个触点接触形成通路状态,松开时形成开路状态。
相关原理图如下:
图1按键原理图图2按键接线图
五、实验步骤
1、建立“TEST”文件夹,用于存放实验一的所有文件
先建立一个空文件夹,之后建工程的时候把工程文件放在里面,以避免和其他文件混合,例如在桌面创建了一个“TEST”的文件夹。
2、启动KeiluVision4
双击桌面上的KeiluVision4图标打开软件
3、点击“Project”选项,选择新建工程。
单击Project菜单,建立一个新工程。
在弹出的下拉菜单中选中NewuvisionProject选项。
4、给文件命名,例如“test”,将文件保存到“TEST”文件夹内
新建的工程的文件的名字比如为“test”后缀必须是.uvproj用户可根据需要随便命名,保存到刚才新建的文件夹“TEST”下
5、在该窗口选择CPU为“STCMCU”
在弹出来的对话框中选择STCMCUDatabase
6、选择单片机型号:
“STC15W4K32S4”
在弹出的对话框中可以看到里面全部都是STC的单片机,选择“STC15W4K32S4”单片机,右边栏是对这个单片机的基本说明,然后点击“确定”之后出现下图所示,Target就是刚才新建的工程
7、点击“Files”选项,选择“New”新建文本,单击保存按键,将保存的文件后缀改为“.c”文件,则默认为该文件为用C语言编写。
(若用到相对应的头文件,则需要新建后缀为“.h”的文件)
选择File--->new选项新建一个文件如果使用C语言编写,就加上.c的扩展名,如果使用汇编语言,就加上.asm的扩展名,之后选择File--->Save选项或者单击
按钮,保存到刚才创建的文件夹下,在弹出的对话框中填写文件名,可根据需要随便命名,注意在填写文件名时一定要加上文件的扩展名,填写好文件名之后单击“保存”按钮。
8、回到编辑界面,此时我们的工程目录下还是空的,没有程序文件,我们需要将程序文件添加到工程目录下,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,弹出如下图所示菜单。
9、然后单击“AddFilestoGroup‘SourceGroup1’…”,选择刚才保存的源文件test.c,单击“Add”按钮,添加完毕后单击“Close”按钮,关闭该窗口,文件已添加到工程当中,此时“SourceGroup”文件夹中多了一个子项“test.c”。
10、接下来还要设置一下,右键单击“Target1”,在弹出的快捷菜单中选择“OptionsforTarget‘Target1’”选项。
11、在弹出的“OptionsforTarget‘Target1’”对话框中有10个选项卡,选中其中的第三个选项卡“Output”,中间的“CreateHEXFile”是生成Hex文件选项,一定要选中,如果编译之后没有生成HEX文件,就是因为这个选项没有被选中。
默认是不选中的。
最后单击“确定”按钮。
12、编写并编译程序。
在相对应的.c文件或.h文件空白区编写或复制一个完整的C程序,然后选择菜单Project--->BuiltTarget选项,或者单击工具栏中的
按钮,开始编译程序。
注:
第一个:
它是编译当前界面所在的一个C文件
第二个:
联合编译整个工程,发生修改的文件重新编译,并生成可执行文件
第三个:
联合编译整个工程,所有文件都重新编译,并生成可执行文件
13、如果编译成功,开发环境下面会显示编译成功的信息,如果存在错误或警告,修改后再编译,直到通过为止。
14、下面是完成的主要程序代码:
#include"STC15Fxxxx.h"
sbitk0=P3^2;
sbitk1=P3^3;
voidDelay300ms()//@24.000MHz
{
unsignedchari,j,k;
_nop_();
_nop_();
i=28;
j=92;
k=196;
do
{
do
{
while(--k);
}while(--j);
}while(--i);
}
voidmain()
{
unsignedcharsta=0;
P3M1&=0x73;
P3M0|=0x80;
P4M1&=0xf1;
P4M0|=0x0e;
P32=1;
P33=1;
while
(1)
{
if(k0==0)
{
sta=1;
}
if(k1==0)
{
sta=2;
}
if(sta==1)
{
P37=0;
Delay300ms();
P41=0;
Delay300ms();
P42=0;
Delay300ms();
P43=0;
Delay300ms();
P37=1;
Delay300ms();
P41=1;
Delay300ms();
P42=1;
Delay300ms();
P43=1;
Delay300ms();
}
elseif(sta==2)
{
P43=0;
Delay300ms();
P42=0;
Delay300ms();
P41=0;
Delay300ms();
P37=0;
Delay300ms();
P37=1;
Delay300ms();
P41=1;
Delay300ms();
P42=1;
Delay300ms();
P43=1;
Delay300ms();
}
}
}
15、调试过程中出现了什么问题或困难以及如何解决的?
第一次做实验对于这些步骤并不熟悉,后来通过一边看指导书一边做实验逐渐熟悉了这些步骤;编译程序之后电脑显示程序有错误,通过吧自己敲的代码与指导书上的代码反复比对之后程序编译成功了。
16、有哪些问题或困难没有能够解决,需要留到下次课解决?
这节课第一次使用口袋机,对口袋机的使用方法和原理有了初步的了解,但是还是不够熟悉,需要多加练习。
对程序的掌握程度还是不够。
17、简单描述本次实验有什么收获和体会:
通过多次实验以及反复参考实验指导书,我初步掌握了解了KEIL软件和STC下载软件的操作方法,也学会了用KEIL软件编写程序,但是对于程序的了解度还是有所欠缺,通过反复对比才解决了问题。
这次实验对于我独立解决问题的能力是一个很好的提高,也让我明白了什么叫一分耕耘一分收获。
张岳