人人范文网 范文大全

单片机实验二实验报告

发布时间:2020-03-02 01:21:50 来源:范文大全 收藏本文 下载本文 手机版

实验报告

课程名称:微机原理与接口技术

指导老师:李素敏

学生姓名:

学号:

专业: 自动化

日期:2014-04-10 地点:理工楼603

实验二

1.实验目的和要求

① 掌握keil软件和STC-ISP 软件的使用方法 ② 熟悉发光管的工作原理 ③ 通过编程体验发光管的延时闪烁及移位等功能

2.主要仪器设备

PC机

单片机学习开发套件(型号:89C52RC)

3.实验内容

①实验内容1:第一个发光管以间隔200ms闪烁

源程序:

#include #define uint unsigned int

//宏定义

main() {

while(1) { P1=0xfe; delay(200); P1=0xff; delay(200); } } void delay(uint z) //延时函数,z的取值为这个函数的延时ms数 {

uint x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--);

一台一件

}

实验结果说明:要使发光管闪烁,只需设置合适的时间延时即可。

②实验内容2 : 8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。

源程序:

#include

#include //后面要用到它里面的_crol_(k,l)函数 //这个函数的意思是把一个字符变量k 循环左移l 位 #define uint unsigned int

//宏定义

unsigned char a,b,k,j;

//定义五个字符变量 sbit beep=P2^3; // 定义蜂鸣器的接口

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数 {

uint x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--); }

void main() {

k=0xfe; //先给k一个初值11111110等待移位 while(1) {

delay500ms();

beep=0; //打开蜂鸣器

delay500ms(); //让它响500ms

beep=1; //关闭蜂鸣器

j=_crol_(k,1); //把k循环左移一位

k=j; //把移完的值再送给k

P1=j; //同时把值送到P1口点亮发光二极管 } //再次循环 }

实验结果说明:在此程序中用到了_crol_(k,l)函数,此函数的功能在于循环移位,在每次发光管闪烁相应时间后左移一位,把移完的值再送到P口,点亮对应的发光管。这样循环往复,达到发光管流动的效果。

③实验内容3 :用8个发光管演示出8位二进制数累加过程,即用8个二极管表示8个二进制位(亮为1,灭为0),依次以二进制形式显示0,1,2,……255。

源程序: #include

#include //包含有左右循环移位子函数的库 #define uint unsigned int

//宏定义 #define uchar unsigned char //宏定义

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数, {

uint x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--); } void main()

//主函数 {

} uchar a; while(1)

//大循环 {

} a++; P1=~a; delay(200);

实验结果说明:在此定义一个无符号字符变量a,a的值进行累加,但是由于表示的二进制数要求亮为1,灭为0,与发光管的0亮1灭正好相反,所以将a的计数取反并设置相应延时,重复此过程就得到了在发光管上显示八位二进制数的累加过程。

④实验内容4 :间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。

源程序:

#include //52单片机头文件

#include //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数 {

uint x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--); } void main() //主函数 { uchar a,i,j; while(1) //大循环

} {

} a=0xfe; //赋初值

for(j=0;j

} {

P1=a; //点亮小灯

delay(300); //延时300毫秒

a=_crol_(a,1); //将a变量循环左移一位

} a=_crol_(a,j); //补齐,方便下面的左移一位 P1=0xff; //全部关闭

a=a

4.心得体会:此次实验中练习较多的就是闪烁和移位,在编程过程中,设置闪烁的时间必须达到人眼正常观察的要求,这就需要计算合适的闪烁时间,不停的尝试,最终选择适宜观察的时间间隔。发光管的循环移位时调用_crol_(k,l)函数

可以大大简化编程的行数。所以熟悉单片机的函数库,可以方便我们编程。所以在以后的实验中还得继续学习这个函数库,从而更轻松的完成实验内容。

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验二实验报告
《单片机实验二实验报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档