单片机实验指导书自编 (1).doc

上传人:壹****1 文档编号:562868680 上传时间:2023-06-14 格式:DOC 页数:73 大小:14.38MB
返回 下载 相关 举报
单片机实验指导书自编 (1).doc_第1页
第1页 / 共73页
单片机实验指导书自编 (1).doc_第2页
第2页 / 共73页
单片机实验指导书自编 (1).doc_第3页
第3页 / 共73页
单片机实验指导书自编 (1).doc_第4页
第4页 / 共73页
单片机实验指导书自编 (1).doc_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《单片机实验指导书自编 (1).doc》由会员分享,可在线阅读,更多相关《单片机实验指导书自编 (1).doc(73页珍藏版)》请在金锄头文库上搜索。

1、单片机原理及应用实验讲义-王中心 自用实验一:单片机开发系统的使用学时分配: 2课时实验属性:验证必开一、教学目的和要求1让学生了解单片机开发系统的构成;2学会keil软件的使用;3掌握基本的源程序编辑,编译及下载调试的方法;4编程实现P1口闪灯及蜂鸣器发声。二、教学过程1介绍单片机开发系统的构成。Step1:实验箱功能模块介绍。Step2:仿真器介绍。Step3:计算机在单片机开发系统中的作用介绍。2开发软件keil的使用和仿真器连接设置Keil是一个应用很好的单片机应用系统开发软件,借助keil可以进行源程序的编辑、编译、下载、调试及仿真,也可以连接具体仿真器进行硬件仿真。首先打开安装好的

2、Keil软件,然后点击Project选择下拉菜单中的New Project(新建项目),在弹出的窗口中选择新建项目的保存路径,任意输入一个文件名然后点击保存,然后在弹出的窗口选择Atmel(点击Atmel前面的小+即可),选择单片机型号为AT89S52(单击AT89S52即可),然后点击确定,在弹出的窗口点击否,然后单击左边窗口中Target1前面的小+号,再用鼠标右击Source Group1,在弹出的窗口中点击Add Files to Group “Source Group1”, 在弹出的窗口中选择文件类型为All files,再选择已经保存好的源程序文件(如没有源程序文件,可以点击新建按

3、钮,编辑一个源程序文件,保存),然后单击需要添加的程序再点击Add程序就添加成功了,再点击Close关闭即可,再单击Source Group1前面的小+号,程序就在新建项目中了双击程序打开即可,然后点击Project选择下拉菜单中的Options for Target “Target 1”,在弹出的窗口中进行设置,Xtal(晶振)设置为24,在output选项卡选中生成hex文件选项,再点击Debug,再点击右边的Use前面的小圆圈,再点击Settings,在弹出的窗口中选择Port(通讯口)为COM3,Baudrate(波特率)为115200,再点击OK点击确定即设置完成,最后编译运行程序,

4、如果没有出错提示,则生成相应hex文件,点击debug session 即可进行调试运行程序。3源程序编辑,编译及下载调试的过程具体过程参考附录一4实验具体要求:编程实现P1.5口闪灯三、参考电路:四、参考程序:/* 工程名称:led_shan功能描述:使用单片机的P1.5口做输出口,使该位发光二极管闪烁。硬件连接: 用8位排线将J8与J13连接维护记录: 2011-8-22*/#include reg51.h /包含头文件sbit led=P15; /表示用led等效于P15, P10就是指头文件里定义的P1寄存器的第5BIT#define uchar unsigned char#defin

5、e uint unsigned int/*/延时函数/*delay(uint time) /int型数据为16位,所以最大值为65535 uint i,j; /定义变量i,j,用于循环语句 for(i=0;itime;i+) /for循环,循环50*time次 for(j=0;j50;j+); /for循环,循环50次 /*/主函数/*void main() /主函数 while(1) /进入while死循环 led=led; /led电平取反来控制LED亮灭 delay(5000); /延时,修改延时即可修改闪烁频率 五、思考?1P1.5输出为方波,如果改变延迟时间,接P1.5到蜂鸣器或者继

6、电器,有何现象?2结合以上代码,写出能输出不同频率方波的函数。参考代码如下:/*延时x毫秒*/void delay(unsigned char x) /设晶体振荡器的频率11.0592MHz unsigned char k; while(x-) /延时大约x毫秒 for(k=0;k125;k+)void speaker(unsigned char k,unsigned char m)unsigned char cnt;for(cnt=0;cnt=k;cnt+) /k控制时间led=led; /产生方波delay(m); /改变m延时值可产生不同频率的声音 void speaker1(void)

7、unsigned char cnt;for(cnt=0;cnt=150;cnt+)led=led; /产生方波delay(4); /改变延时值可产生不同频率的声音 以下为两种声音完整程序:P1.0接sounder。#includevoid delay(unsigned char);sbit P1_0=P10;void main(void)while(1)unsigned char m,n;for(m=0;m120;m+)P1_0=P1_0;delay(10);for(n=0;n72;n+)P1_0=P1_0;delay(6);/ delay functionvoid delay(unsigne

8、d char x)unsigned char k;while(x-)for(k=0;k25;k+)实验二 查表、延时程序设计学时分配: 2课时实验属性:验证必开一、教学目的和要求1进一步学习keil的使用; 2了解模块化程序设计思想学会keil软件的使用,掌握函数的定义和调用方法;3学习用keilc进行查表的方法;4通过查表实现花样流水灯。二、教学过程1模块化程序设计设计介绍,函数的调用和定义。上一实验的例子中有用到函数,其实一直出现在例子中的 main()也算是一个函数,只不过它比较特殊,编译时以它做为程序的开始段。有了函数 C 语言就有了模块化的优 点,一般功能较多的程序,会在编写程序时把

9、每项单独的功能分成数个子程序模块,每个子 程序就能用函数来实现。函数还能被反复的调用,因此一些常用的函数能做成函数库 以供在编写程序时直接调用,从而更好的实现模块化的设计,大大提高编程工作的效率。 函数定义:通常 C 语言的编译器会自带标准的函数库,这些都是一些常用的函数,Keil uv 中也不 例外。标准函数已由编译器软件商编写定义,使用者直接调用就能了,而无需定义。但是 标准的函数不足以满足使用者的特殊要求,因此 C 语言允许使用者根据需要编写特定功能的 函数,要调用它必须要先对其进行定义。定义的模式如下:函数类型 函数名称(形式参数表)函数体函数类型是说明所定义函数返回值的类型。返回值其

10、实就是一个变量,只要按变量类型来定义函数类型就行了。如函数不需要返回值函数类型能写作“void”表示该函数没 有返回值。注意的是函数体返回值的类型一定要和函数类型一致,不然会造成错误。函数名称的定义在遵循 C 语言变量命名规则的同时,不能在同一程序中定义同名的函数这将会造成 编译错误(同一程序中是允许有同名变量的,因为变量有全局和局部变量之分)。形式参数 是指调用函数时要传入到函数体内参与运算的变量,它能有一个、几个或没有,当不需要 形式参数也就是无参函数,括号内能为空或写入“void”表示,但括号不能少。函数体中 能包含有局部变量的定义和程序语句,如函数要返回运算值则要使用 return 语

11、句进行返 回。在函数的号中也能什么也不写,这就成了空函数,在一个程序项目中能写一些 空函数,在以后的修改和升级中能方便的在这些空函数中进行功能扩充。函数的调用:函数定义好以后,要被其它函数调用了才能被执行。C 语言的函数是能相互调用的, 但在调用函数前,必须对函数的类型进行说明,就算是标准库函数也不例外。标准库函数的 说明会被按功能分别写在不一样的头文件中,使用时只要在文件最前面用#include 预处理语 句引入相应的头文件。如前面一直有使用的 printf 函数说明就是放在文件名为 stdio.h 的 头文件中。调用就是指一个函数体中引用另一个已定义的函数来实现所需要的功能,这个时候函 数

12、体称为主调用函数,函数体中所引用的函数称为被调用函数。一个函数体中能调用数个 其它的函数,这些被调用的函数同样也能调用其它函数,也能嵌套调用。笔者本人认为 主函数只是相对于被调用函数而言。在 c51 语言中有一个函数是不能被其它函数所调用的, 它就是 main 主函数。调用函数的一般形式如下:函数名 (实际参数表) “函数名”就是指被调用的函数。实际参数表能为零或多个参数,多个参数时要用逗号隔开,每个参数的类型、位置应与函数定义时所的形式参数一一对应,它的作用就是把参 数传到被调用函数中的形式参数,如果类型不对应就会产生一些错误。调用的函数是无参函 数时不写参数,但不能省后面的括号。在以前的一些例子我们也能看不一样的调用方式:1函数语句如 printf (Hello World!n); 这是在 我们的第一个程序中出现的,它以 HelloWorld!n为参数调用 printf 这个库函数。在这里函数调用被看作了一条语句。2函数参数 “函数参数”这种方式是指被调用函数的返回值当作另一个被调用函数的实际参数,如 temp=StrToInt(CharB(16);CharB 的返回值作为 StrToInt 函数的实际参数传递。3函数表达式而

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号