单片机控制发光二极管实验报告

  • 格式:pdf
  • 大小:233.06 KB
  • 文档页数:13

单片机控制发光二极管实验报告

发光二极管 广东石油化工学院单片机实验一实验报告 实验报告

实验一 发光二极管实验

学院: 电信学院 专业:

班级 学生

学号:

实验时间 一、实验目的

1、掌握AT89C51 单片机IO 口的输入输出。 2、掌握用查表方式实现AT89C51 单片机IO 口的控制。

3、练习单片机简单延时子程序的编写。

4、熟练运用Proteus 设计、仿真AT89C51 系统。 二、实验内容 1、编写延时子程序,延时时间为0.1S。

代码: void delay(){

int i, j;

for (i = 0; i 100; i++) for (j = 0; j 125; j++);

}

2、见图一。通过AT89C51 单片机控制8 个发光

二极管发光,实现亮点以由上到下循环移动,间

隔时间为0.1S。 代码:

#includereg51.h #includeintrins.h

void delay(){

int i, j; for(i = 0; i 100; i++)

for(j = 0; j 125; j++); }

void main(){

P1 = 0xFE; while(1){

P1 (转载于:www.xiElw.coM 写论文 网:单片机控制发光二极管实验报告)= _crol_(P1,1);

delay();

} }

运行结果截图: 图一

3、见图一。通过AT89C51 单片机控制8 个发光

二极管发光,循环实现亮点由上到下移动1 次(间

隔时间为0.2S),由下到上移动1 次(间隔时间为 0.2S),闪烁1

次(即先全亮0.1S,再全灭0.1S)。 代码:

#includereg51.h #define uchar unsigned char

#define uint unsigned int

void delay(){ uint i, j;

for (i = 0; i 100; i++){ for (j = 0; j 128; j++){

//delay 100ms, do nothing.

} }

} void shangXia(){

uchar k;

P1 = 0xFE; for (k = 0; k 8; k++){

delay(); P1 = _crol_(P1,1);

}

}

void xiaShang(){

uchar k; P1 = 0x7F;

for (k = 0; k 8; k++){ delay();

P1 = _crol_(P1,-1);

} }

void main(){ while(1){

shangXia();

xiaShang(); }

} 截图与题一相同,增加由下至上。 4、见图一。用数组方式实

现题3 。

代码: #includereg51.h

#define uchar unsigned char #define uint unsigned int

uint light[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

void delay(){

uint i, j;

for (i = 0; i 100; i++){ for (j = 0; j 128; j++){

//delay 100ms, do nothing. }

}

} void shangXiaUseArry(){

uchar i; for (i = 0; i 8; i++){

delay();

P1 = light[i]; }

} void xiaShangUseArry(){

char i;

for (i = 7; i -1; i--){ delay();

P1 = light[i]; }

}

void main(){

while(1){

shangXiaUseArry(); xiaShangUseArry();

} }

效果截图与题一相同。

5、见图二。P2 口作为输入口,接8 只开关。P1 口做为输出口,接8 只发光二极管,通过设置8只拨动开关的状态控制8 只发光

二极管的亮灭。(自己画硬件连线图,程序流程图如下) 图二

代码:

#includereg51.h void main(){

while(1){ P1 = P2;

}

} 仿真截图:

6、用蜂鸣器发出固定电话回音声音。见图三。 固定电话回音声音:450Hz,通1秒断4秒。

代码:

#includereg51.h

#define uchar unsigned char

#define uint unsigned int void delay_1ms(){

篇二:单片机原理与应用技术实验报告(实验项目:发光二极管闪烁)

***数学计算机科学系实验报告

专业: 计算机科学与技术 班级: 实验课程:单片机原理与应用技术 姓名:学号: 实验室:硬件实验室 同组同学:实

验时间: 2013年3月20日指导教师签字:成绩: 实验项目:发光二极管闪烁

一 实验目的和要求

1.使用单片机的P1.5口做输出口,使该位发光二极管闪烁。 2.掌握单片机使用。

二 实验环境 PC机一台,实验仪器一套

三 实验步骤及实验记录

1.在pc机上,打开Keil C。 2.在Keil C中,新建一个工程文件,点击“Project-New Project?”

菜单。 3. 选择工程文件要存放的路径 ,输入工程文件名 LED, 最后

单击保存。

4. 在弹出的对话框中选择 CPU 厂商及型号。

5. 选择好 Atmel 公司的 89c51 后 , 单击确定。

6. 在接着出现的对话框中选择“是”。 7. 新建一个 C51 文件 , 点击file菜单下的NEW,或单击左

上角的 New File快捷键。 8. 保存新建的文件,单击SAVE。

9. 在出现的对话框中输入保存文件名MAIN.C,再单击“保存”。

10. 保存好后把此文件加入到工程中方法如下 : 用鼠标在 Source Group1 上单击右键 , 然后再单击 Add Files to

Group ‘Source Group 1'。 11. 选择要加入的文件 , 找到 MAIN.C 后 , 单击 Add, 然后单击 Close。

12. 在编辑框里输入代码如下:

#include reg51.h //包含头文件 sbit led=P1; //表示用led等效于P1, P1 就是指头文件里定义

的P1寄存器的第5BIT #define uchar unsigned char

#define 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);//延时,修改延时即可修改闪烁频率

}

} 13.单击 快捷键或单击Project/Rebuild all the files, 如果在错

误与警告处看到 0 Error(s) 表示编译通过 。 14. 单击Options for Target, 单击 Output, 选中 Create HEX Fi。

再单击“确定”,再次编译产生HEX文件。

15.STC-ISP 软件烧写程序,步骤如下: 步骤1、选择单片机型号STC12C5A60S2。

步骤2、打开程序文件(后缀为.HEX 的文件)。 在相应工程下找到待下载的HEX文件,点击打开即可。

步骤3、选择串行口COM3。

步骤4、用USB线连接电脑和主板,将主板和核心板上的电源都关闭,点击“Download下载”,打开核心板上的电源开关(注

意不是主板上的电源开关),等待完成下载。 16.在单片机上, 用1位杜邦线将J8_5与J13_1连接。

17.打开单片机电源开关,观察现象。

四 实验结果与分析

发光二极管闪烁

篇三:单片机实验报告 实验一I /O口输出实验—LED

流水灯实验报告 一、 实验要求

利用单片机及8个发光二极管等器件,构成一个流水灯单片机

系统。 二、 实验目的

1、掌握单片机最小系统的构成; 2、掌握I/O口的使用及驱动能力的概念; 3、熟悉移位指令和

软件延时程序。

三、 实验电路及连线 注意事项: (1)实验箱上各模块是独立供电,实验时需要用

到的模块都要给它提供电源,即+5V接口都要接到电源模块的+ 5V电源接口,GND接口可以不用接(默认实验箱上的GND网络都接

在一起了),千万不要把+5V接口接到GND接口上,短路烧坏保

险管。 (2)硬件连接表都是按照C语言编写的仿真工程连接硬件,适用于AT89S52、ATmega16、PIC16F877A单片机,若做实验

时用到汇编工程,请参照汇编工程里面的仿真电路连接硬件。 四、 实验说明

1、主要知识点概述: