实验报告单片机.docx
《实验报告单片机.docx》由会员分享,可在线阅读,更多相关《实验报告单片机.docx(12页珍藏版)》请在冰点文库上搜索。
实验报告单片机
西南科技大学
学生实验报告
实验课程名称微机原理与接口技术
开课实验室微机原理与机电控制实验室
学院制造学院专业机械班级1303
学生姓名学号
开课时间2015至2016学年第2学期
总成绩
教师签名
制造科学与工程学院制
《I/O接口实验》实验报告
开课实验室:
微机原理与机电控制实验室2015年4月11日
学院
制造学院
年级、专业、班
机械1303
姓名
成绩
课程
名称
微机原理与接口技术
实验项目
名称
I/O接口实验
指导教师
李鹏
一、实验目的
1、了解单片机片内4个8位I/O端口的使用。
2、掌握I/O端口的应用及C51的编程方法。
3、熟悉C51编程中的一些相关语句。
二、实验内容
通过编程C51程序,实现上下来回循环点亮八个发光二极管,即在单片机上实现出流水灯。
实验线路及其连接如下图1-1。
图1-1发光二极管与P1口的连接电路
三、实验仪器设备
1.单片机实验板一台
2.计算机一台
四、实验步骤
1.检查实验板连线是否正确
2.用USB线连接单片机实验板和PC,利用USB接口对实验板供电
3.用keil软件编写并调试程序,在程序无误的时候编译成hex文件,使用串口线与电脑的串口相连,运行串口下载工具STC-ISP,下载程序到单片机中。
4.观察发光二极管的闪烁状态,是否与实验要求相符。
若不符,请修改程序,直到达到实验需求。
五、实验程序流程图
图1-2程序流程图
六、实验程序(源程序)
#include//52系列单片机头文件
#include//包含crol函数所在的头文件
#defineucharunsignedchar//宏定义
voiddelay()//延时函数
{uchari,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
voidmain()//主函数
{
uchari,temp;
while
(1)//主循环
{
temp=0xfe;//赋初值11111110
for(i=0;i<7;i++)//实现从上到下点亮二极管
{
P1=temp;//先点量第一个二极管
delay();//延时
temp=_crol_(temp,1);//temp中的数据循环左移1位
}
for(i=0;i<7;i++)//实现从下到上点亮二极管
{
P1=temp;//temp值送入P1口
delay();//延时
temp=_cror_(temp,1);//temp中的数据循环右移1位
}
}
}
七、实验结果记录及分析
实验结果:
看到单片机实验板上的8个LED灯成左右来回循环的流水灯显示,这也是本次实验所要得到的结果。
主要是通过移位函数来实现的,通过for循环,使得P1口的每位依次变为低电平,则相应的发光二极管点亮。
八、心得体会
通过这次实验,对KeilC51编程过程有了更深的认识和了解,通过流水的程序编写对于并行I/O端口有了更深的理解,基本上可以开始编写一些简单的程序了,之前没有系统的学习过C语言知识,还得花点时间去巩固学习一下,在刚开始编写程序的时候,不知道从何下手,不过可以先从读懂一些简单的程序内容做起,然后再很熟悉的情况下,再自己构思编写相应的程序。
此次编程遇到了一些问题,不过并没有急躁,而是在冷静中找出了错误。
有时候实现一种功能可以有不同的方式去实现,比如实现流水灯就有很多种方式,可以通过数组的字节操作来实现,将8只LED灯的点亮顺序定义为一个数组,再通过主程序函数来实现数组的内容,还可以通过移位运算符来实现。
《中断系统实验》实验报告
开课实验室:
微机原理与机电控制实验室2015年4月23日
学院
制造学院
年级、专业、班
机械1303
姓名
成绩
课程
名称
微机原理与接口技术
实验项目
名称
中断系统实验
指导教师
李鹏
一、实验目的
1、了解单片机的中断原理。
2、了解单片机响应中断的基本流程。
3、了解单片机的中断编程方法。
二、实验内容
利用实验板上的按键S12,实现单片机的外部中断INT0的触发。
中断触发后,点亮板上的8个LED(实验1中的LED),再次按下按键,再次产生中断时LED灭。
如此循环进行。
实验线路及连接如下。
图2-1中断实验图
三、实验仪器设备
1.单片机实验板一台
2.计算机一台
四、实验步骤
1.熟悉原理图,了解本实验的电路原理。
2.用USB线连接实验板与PC机,利用PC的USB接口给实验板供电
3.编写程序并检查无误,编译并下载到目标板运行实验程序
4.按下实验板上的S12,观察板上LED的亮灭情况是否符合实验要求,如不符合修改程序指导符合要求。
五、实验程序流程图
图2-2程序流程图
六、实验程序(源程序)
#include//包含头文件reg52.h
sbitanjian=P3^5;//定义位变量
voidmain()//主函数
{
EA=1;//总中断打开
EX0=1;//允许外部中断0中断
IT0=1;//选择外部中断0为跳沿触发方式
anjian=0;//使P3.5引脚低电平接通有效
P1=0;//P1口的8只LED全亮
while
(1);//循环
}
voidint0()interrupt0using0//外部中断0的中断服务函数
{
EX0=0;//禁止外部中断0中断
P1=~P1;//取P1得反,则P1口的8只LED全灭
EX0=1;//中断返回前,打开外部中断0中断
}
七、实验结果记录及分析
实验结果:
利用实验板上的按键S12,实现单片机的外部中断INT0触发。
中断触发后,点亮板上的8个LED,再次按下按键,再次产生中断时LED灭,如此循环进行。
分析:
通过矩阵键盘的连线图可知,将P3.5端口设置成低电平,当有按键按下时,相应的P3.2口变为低电平,此时触发中断INT0;再通过取反运算符使得当中断触发时,P1口循环高低电平,则当有按键按下时LED循环亮灭进行。
八、心得体会
通过这次实验,我对单片机的中断触发有了进一步的了解,看了书本的理论知识后与实践相结合,使得印象更加深刻。
不过程序编写的过程中也遇到了一些问题,比如按键按下后循环触发中断,如何使得LED灯亮灭循环,后来通过网上资料知道了可通过取反运算符(~)来实现,当看到这个的时候,一下子恍然大悟,顿时觉得这是如此的巧妙。
在后续的学习中,通过理论与实践相结合,要多思考,培养良好的主动思维习惯,多多练习编程才能熟能生巧。
《定时器/计数器实验》实验报告
开课实验室:
微机原理与机电控制实验室2015年5月23日
学院
制造学院
年级、专业、班
机械1303
姓名
成绩
课程
名称
微机原理与接口技术
实验项目
名称
定时器/计数器实验
指导教师
李鹏
一、实验目的
1、了解单片机的定时器/计数器的原理。
2、了解单片机定时器/计数器的作用。
3、了解单片机定时器/计数器的编程方法。
二、实验内容
利用实验板,编写STC89C52单片机的定时器/计数器程序,要求使用定时器T0,控制实验板上的LED以1S的固定时间闪烁(即1S亮,1S灭)。
实验线路及连接如下。
图3-1定时器控制LED闪烁原理图
三、实验仪器设备
1.单片机实验板一台
2.计算机一台
四、实验步骤
1.用USB线连接实验板与PC机,利用PC的USB接口给实验板供电
2.在Keil中输入程序并检查无误,编译并下载到实验板。
3.运行并观察实验板上的LED灯变化
4.如程序结果不对,检查程序并修改反复实验直到达到实验效果。
五、实验程序流程图
图3-2程序基本流程图
六、实验程序(源程序)
#include//包含头文件reg52.h
chari=100;//定义变量i,赋初值为100
voidmain()//主函数
{
TMOD=0x01;//设置定时器T0为方式1
TH0=(65536-10000)/256;//给T0装入初值
TL0=(65536-10000)%256;//给T0装入初值
P1=0x00;//P1口8只LED点亮
EA=1;//总中断允许
ET0=1;//定时器T0中断允许
TR0=1;//启动定时器T0
while
(1);//无穷循环,等待定时中断
}
voidT0_int(void)interrupt1
{
TH0=(65536-10000)/256;//给T0重装入初值
TL0=(65536-10000)%256;
i--;//循环次数减一
if(i<=0)
{
P1=~P1;//P1口按位取反
i=100;//重新设置循环次数
}
}
七、实验结果记录及分析
实验结果:
控制实验板上的LED以1S的固定时间闪烁(即1S亮,1S灭)。
分析:
LED以1S的固定时间闪烁,需要通过定时器进行定时,定时器计数时间小于1s,则可先定时10ms,然后再通过循环100次,先设定定时器的工作方式,再向定时器装入初值10000,P1口先设置成低电平,等待定时器中断10ms触发,循环100次后,P1口取反,则LED灯再熄灭,如此循环下去,从而得到实验现象。
八、心得体会
通过本次实验,对定时器的工作方式有了一定的了解,先看懂了书本上的内容,然后再试着尝试编程相应的代码,不断解决途中遇到的各种问题,最后得到实验所要求的效果,当调试成功的那一刻,很有成就感,对于实践性的操作有了更大的兴趣。
希望自己以后碰到一些问题能主动的思考,通过自身的努力能解决它,而不是一遇到不会的就去找答案,照抄已有的代码。
在今后的学习中,还得多多练习编程。