1、单片机实验报告西南科技大学学 生 实 验 报 告实验课程名称 单片机原理及接口技术 开课实验室 CAD/CAM计算机实验室 学 院 制造学院 专业 成型 班级 学 生 姓 名 学 号 开 课 时 间 2012 至 2013 学年第 2 学期总 成 绩教师签名制造科学与工程学院制 I/O接口技术实验 实验报告 开课实验室: 2013 年 05月10日学院制造学院年级、专业、班 姓名 成绩课程名称单片机原理及接口技术实验项目名 称I/O接口技术实验指导教师李鹏一、实验目的1. 了解单片机片内4个8位I/O端口的使用。2. 掌握I/O端口的应用及C51的编程方法。3. 熟悉C51编程中的一些相关语句
2、二、实验内容通过编写C51程序,实现上下来回循环点亮八个发光二极管,即在单片机上显示实现出流水灯。三、实验仪器设备1. 单片机实验板 一台2. 联接数据线 一根3. 计算机 一台四、实验步骤1. 打开Keil 软件,新建一个工程2. 弹出对话框,新建一个文件夹,并保存3.选择单片机型号Atmel AT89C51-确定(OK)4.修改工程属性,点击快捷按钮将Xtal(MHz)24.0改为11.0592,然后选择Output,勾选上Create HEX File,点击ok确定5.新建程序文件,并保存为“.c”格式6.将文件添加到改工程中7.在该文本文件中编写程序8.编写完成后,进行编译程序。9.编
3、译无错误后,生成HEX文件10. 打开STC-ISP下载程序“STC-ISP.exe”选择对应的单片机型号(STC89C52RC)、打开(HEX)程序文件、对应的串行口编号,再选择下载程序,打开单片机上的开关以传输下载文件11观察单片机上的现象,并检查是否正确五、实验程序流程图六、实验程序(源程序) #include /*包含头文件reg51.h*/ #define uchar unsigned char /*宏定义无符号字符变量方便书写*/uchar tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xf7,0x
4、fb,0xfe;/*对称,左移点亮,右移点亮*/ void delay() /*延时函数*/ uchar i,j; for(i=0;i255;i+); for(j=0;j255;j+); void main( ) /*主程序*/ uchar i; while (1) for(i=0;i15;i+) P1=tabi; delay(); 七、实验结果记录及分析答:实验结果为看到芯片上的八个LED灯成左右来回循环的流水灯显示,这也正是这次实验所要得到的结果。主要通过编写程序来实现,通过数组的字节操作来实现的。将八只LED灯的点亮顺序定义为一个数组,再通过主程序函数来实现数组中的内容。八、心得体会答:
5、通过这次的实验,对C51程序的编写有了更深的认识和了解,基本上还是可以编写一些简单的实验内容了,也学着去读相关的程序,能读出一些简单的程序内容。与此同时,对单片机的4个I/O端口的使用和功能特点也有了更多的认识和了解,这样更加深了我们对单片机这门课程学习的内容的影响。这次实验遇到的问题主要还是对程序的编写,不过通过这次慢慢的学习和摸索,还是学到了不少,这次主要就是学到了通过数组来实现流水灯。 中断系统 实验报告 开课实验室: 2013年 5月23日学院制造学院年级、专业、班 姓名 成绩课程名称微机原理及接口技术实验项目名 称中断系统实验指导教师李鹏一、实验目的1. 了解单片机的中断原理。2.
6、了解单片机响应中断的基本流程。3. 了解单片机的中断编程方法。二、实验内容利用实验板上的按键S12,实现单片机的外部中断INT0的触发。中断触发后,点亮板上的8个LED(实验1中的LED),再次按下按键,再次产生中断时LED灭。如此循环进行。三、实验仪器设备1. 单片机实验板 一台2. 计算机 一台四、实验步骤1 熟悉原理图,了解本实验的电路原理。 3. 用USB线连接实验板与PC机,利用PC的USB接口给实验板供电4. 编写程序并检查无误,编译并下载到目标板运行实验程序 5. 按下实验板上的S12,观察板上LED的亮灭情况是否符合实验要求,如不符合修改程序指导符合要求。主要的操作步骤与上一个
7、I/O接口技术实验基本相同,唯一不一样的地方就是编写的程一样,要实现的内容不一样,单片机最终显示的结果不一样。五、实验程序流程图六、实验程序(源程序)#include /*包含头文件reg51.h*/sbit P3_7=P37; /*定义位变量*/void main() /*主函数*/ P3_7=0; /*使p3.7引脚低电平接通有效*/ EA =1; /*总中断允许*/ EX0=1; /*允许外部中断0中断*/ IT0=1; /*选择外部中断0为跳沿触发方式*/ P1=0; /*8只LED灯都亮*/ while(1); /*循环*/ void int0() interrupt 0 using
8、 0 /*外部中断0的中断服务函数,第一个0为终端号,第二个为0区工作寄存器区*/ EX0=0; /*禁止外部中断0中断*/ P1=P1; /*取P1得反,即8只LED灯全灭*/ EX0=1; /*中断返回前,打开外部中断0中断*/七、实验结果记录及分析答:这次实验的结果是实现了利用实验板上的按键S12,实现单片机的外部中断INT0的触发。中断触发后,点亮板上的8个LED,再次按下按键,再次产生中断时LED灭,如此循环进行。通过外部中断0(INT0)以及在P3.7端口引脚的RD的接通与断开来实现了8只LED灯的灭和亮并循环。八、心得体会答:这次实验室最后一个实验,我觉得也是我把编程和单片机学的较懂的一次实验,因为这次的实验编程自己确实花了很多时间去想,最终确实也没有独立完成,在我们小组成员的共同努力下,最终还是做出来了。这次遇到最大的问题是我们不知道程序中的“取反”应该怎样编程来实现,老师一句简单的取反,让我们绞尽脑汁也没想出来怎么用,我们想到的用IF函数,也想到用FOR循环,结果一句“P1=P1”,这样简单一句就实现了,不禁感叹程序的神奇。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1