51流水灯实验

 

课程名称:_单片机原理与应用

 

姓    名:_赵存档       _ __

 

 

 

2015-- 2016   学年第  1 学期

 

 


 

实验项目( 一 ) — 预习报告

项目

名称

LED高低电平交替闪烁程序

实验

目的

要求

1. 正确安装keil软件

2. 在 Proteus 的环境下,设计硬件原理图;

3.在keil 集成环境下设计C语言程序;

4. 在 Proteus 的环境下,将硬件原理图与软件联接仿真运行。

实验

内容

原理

1、先正确安装keil c 以及 proteus 软件。

2、利用keil 编写c语言代码,在代码中,定义好要输出的管脚P2,定义一个delay()延迟函数,以及Led = ~LED的反相输出。

3、Proteus的仿真,单片机最小系统的构建:包括40号引脚电源VCC,20号引脚

接地GND,9号引脚复位RESET,18、19号引脚外接12MHZ的晶振以提供时钟频率;

4、8个LED灯的接法:VCC 5V供电的话,单片机的P2口置低电平LED才能亮。

5、代码中0x表示的是16进制。0x0f表示的是0000 1111,也就是说左边的4个LED灯会亮。

预习

过程

中的

疑问

疑问一:0x表示的是怎么?

疑问二:在keil c 中怎么定义指定的引脚号?

疑问三:怎么编写delay()延迟函数?

疑问四:在keil c 中怎么进行调试演练代码?

疑问五:  在仿真环境proteus中,怎么将keil c 中的代码与电路图结合,来进行仿真?

疑问六:发光LED二极管怎么辨别其正负?

疑问七:怎么才能知道给引脚置低电平LED灯亮还是不亮?

疑问八:单片机最小系统的电路图怎么画?

实验项目( 一 ) — 实验报告

 

项目

名称

LED高低电平交替闪烁程序

指导教师

高照玲

 

实验室

教室

实验日期

2015/10月

 

分组

情况

赵存档、张泽光

成    绩

 

实验步骤(算法、代码、方法)给出流程图

LED高低电平交替闪烁的KEIL C代码:

#include   <reg51.h>

#define LED P2

void delay(int   x);

void main()

{     

LED = 0x0f;

           while(1)

        {  

delay(10000);

          LED =   ~LED;

}

}

void delay(int   x)

{   

int i;

    for(i=0;i<x;i++);

}

 

    

Proteus仿真电路图:

    

电路图包括:单片机最小系统:复位以及晶振提供时钟频率,led灯。

 

实验结果(结论及

分析)

     经过调试以及分析可得出结论:通过编写Keil c代码设置晶振频率12MHZ

编译获得hex文件,在proteus中将hex文件加载进去,完成实验的结果。

通过实验可以明白单片机最小系统该怎么画:先是AT89C51单片机,晶振提供单片机运行的时钟周期,手动复位端。P2端口输出低电平与LED灯相连,使之被点亮。

 

 

 

 

成绩

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/zhaocundang/p/4885704.html

C51流水灯实验原理如下: 1. 硬件原理:使用C51单片机控制8个LED灯的亮灭,通过改变LED灯的亮灭顺序和时间间隔,实现流水灯效果。 2. 软件原理:使用C语言编写程序,通过控制端口的低电平来控制LED灯的亮灭。程序中使用定时器中断来控制LED灯的时间间隔,从而实现流水灯效果。 以下是C51流水灯实验的代码和原理图: ```c #include <reg52.h> //头文件 sbit LED1 = P1^0; //定义LED1 sbit LED2 = P1^1; //定义LED2 sbit LED3 = P1^2; //定义LED3 sbit LED4 = P1^3; //定义LED4 sbit LED5 = P1^4; //定义LED5 sbit LED6 = P1^5; //定义LED6 sbit LED7 = P1^6; //定义LED7 sbit LED8 = P1^7; //定义LED8 void main() { while(1) { LED1 = 0; //点亮LED1 LED2 = 1; //熄灭LED2 LED3 = 1; //熄灭LED3 LED4 = 1; //熄灭LED4 LED5 = 1; //熄灭LED5 LED6 = 1; //熄灭LED6 LED7 = 1; //熄灭LED7 LED8 = 1; //熄灭LED8 delay(500); //延时0.5秒 LED1 = 1; //熄灭LED1 LED2 = 0; //点亮LED2 LED3 = 1; //熄灭LED3 LED4 = 1; //熄灭LED4 LED5 = 1; //熄灭LED5 LED6 = 1; //熄灭LED6 LED7 = 1; //熄灭LED7 LED8 = 1; //熄灭LED8 delay(500); //延时0.5秒 LED1 = 1; //熄灭LED1 LED2 = 1; //熄灭LED2 LED3 = 0; //点亮LED3 LED4 = 1; //熄灭LED4 LED5 = 1; //熄灭LED5 LED6 = 1; //熄灭LED6 LED7 = 1; //熄灭LED7 LED8 = 1; //熄灭LED8 delay(500); //延时0.5秒 LED1 = 1; //熄灭LED1 LED2 = 1; //熄灭LED2 LED3 = 1; //熄灭LED3 LED4 = 0; //点亮LED4 LED5 = 1; //熄灭LED5 LED6 = 1; //熄灭LED6 LED7 = 1; //熄灭LED7 LED8 = 1; //熄灭LED8 delay(500); //延时0.5秒 LED1 = 1; //熄灭LED1 LED2 = 1; //熄灭LED2 LED3 = 1; //熄灭LED3 LED4 = 1; //熄灭LED4 LED5 = 0; //点亮LED5 LED6 = 1; //熄灭LED6 LED7 = 1; //熄灭LED7 LED8 = 1; //熄灭LED8 delay(500); //延时0.5秒 LED1 = 1; //熄灭LED1 LED2 = 1; //熄灭LED2 LED3 = 1; //熄灭LED3 LED4 = 1; //熄灭LED4 LED5 = 1; //熄灭LED5 LED6 = 0; //点亮LED6 LED7 = 1; //熄灭LED7 LED8 = 1; //熄灭LED8 delay(500); //延时0.5秒 LED1 = 1; //熄灭LED1 LED2 = 1; //熄灭LED2 LED3 = 1; //熄灭LED3 LED4 = 1; //熄灭LED4 LED5 = 1; //熄灭LED5 LED6 = 1; //熄灭LED6 LED7 = 0; //点亮LED7 LED8 = 1; //熄灭LED8 delay(500); //延时0.5秒 LED1 = 1; //熄灭LED1 LED2 = 1; //熄灭LED2 LED3 = 1; //熄灭LED3 LED4 = 1; //熄灭LED4 LED5 = 1; //熄灭LED5 LED6 = 1; //熄灭LED6 LED7 = 1; //熄灭LED7 LED8 = 0; //点亮LED8 delay(500); //延时0.5秒 } } void delay(unsigned int i) //延时函数 { unsigned int j, k; for(j=0; j<i; j++) for(k=0; k<125; k++); } ``` 原理图如下: ![C51流水灯实验原理图](https://img-blog.csdn.net/20180428154749694?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfY2hpbmFfYw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/85/format/webp)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值