重拾单片机 第一天 LED灯

由图知道 低电平 亮,高电平 灭

控制第一个 LED1 亮灭程序代码,如下

 1 #include<reg52.h>
 2 #define uchar8 unsigned char
 3 #define uint16 unsigned int
 4 sbit      LED1=P1^0;
 5 /*****************************/
 6 // 函数名称: DelayMS( )
 7 // 函数功能: 延时
 8 // 入口函数: 延时毫秒
 9 // 出口函数: 无
10 /*********                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             *******************/
11 void DelayMS(uint16 val)
12 {
13        uint16  i,j;
14        for(i=0;i<val;i++)
15            for(j=0;j<113;j++);
16
17 }
18
19 void main()
20 {
21
22    while(1)
23    {
24       LED1=0;
25       DelayMS(1000);
26       LED1=1;
27       DelayMS(1000);
28
29    }
30
31 }

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

流水灯程序代码:

 1 #include<reg52.h>
 2 #include<intrins.h>
 3 #define uchar8 unsigned char
 4 #define uint16 unsigned int
 5 #define     LED  P1
 6 /*****************************/
 7 // 函数名称: DelayMS( )
 8 // 函数功能: 延时
 9 // 入口函数: 延时毫秒
10 // 出口函数: 无
11 /*********                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             *******************/
12 void DelayMS(uint16 val)
13 {
14        uint16  i,j;
15        for( i=0;i<val;i++)
16            for(j=0;j<113;j++);
17
18 }
19
20 void main()
21 {
22
23     int i;
24
25   while(1)
26   {
27     LED=0xff  ;       //  这里端口全被设置为 1111 1111 ,相当于 全灭
28
29    for(i=0;i<8;i++)
30    {
31
32       LED=LED<<1;    // 选择了左移循环
33       DelayMS(1000);
34
35    }
36
37   }
38
39 }
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
               
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 0
1 1 1 1 1 0 0 0
1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

实验板现象:

1号灯亮

1、2亮

1、2、3亮

1、2、3、4亮

。。。。。。

1、2、3。。。。。8 全部亮

——————————————————————————————————————————————————————————————————————————————————————————————

跑马灯程序代码:

 1 #include<reg52.h>
 2 #include<intrins.h>
 3 #define uchar8 unsigned char
 4 #define uint16 unsigned int
 5 #define     LED  P1
 6 /*****************************/
 7 // 函数名称: DelayMS( )
 8 // 函数功能: 延时
 9 // 入口函数: 延时毫秒
10 // 出口函数: 无
11 /*********                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             *******************/
12 void DelayMS(uint16 val)
13 {
14        uint16  i,j;
15        for( i=0;i<val;i++)
16            for(j=0;j<113;j++);
17
18 }
19
20 void main()
21 {
22
23     LED =0xfe;
24
25   while(1)
26   {
27     LED=_crol_(LED,1);
28        DelayMS(1000);
29
30   }
31
32 }

只有一个LED灯 亮。

时间: 2024-10-12 12:54:19

重拾单片机 第一天 LED灯的相关文章

(二)重拾单片机 第一天 LED灯

由图知道 低电平 亮,高电平 灭 控制第一个 LED1 亮灭程序代码,如下 #include<reg52.h> #define uchar8 unsigned char #define uint16 unsigned int sbit LED1=P1^0; /*****************************/ // 函数名称: DelayMS( ) // 函数功能: 延时 // 入口函数: 延时毫秒 // 出口函数: 无 /********* *******************/

51单片机第一弹---流水灯

转行搞硬件..acm算是走到头了,毕竟电子是自己专业的特色.. 初撸单片机,买的板子是STC89C52(某宝58大洋淘来的..) 郭天祥新概念的那本书(好像有点不配套不过凑活着弄了也..) 说一下容易犯的错误吧. 1.串口驱动搞了1个多小时..一直安装不上,后来跟着教程做的 2.书上写的控制LED端口的是P1 ,但实际上买的这快板子是P2 ,最开始搞了半天老是点不亮灯,后来一想会不会端口错了,换成0试试?换了不行,又换了2..亮了(这是个问题,以后要找学长问问,怎么根据开发板看出来每个模块的端口

重拾单片机 第三天 中断讲解(一)

52单片机: 中断源: INTO0--外部中断0,由P3.2端口线引入,低电平或下降沿引起. INTO1--外部中断1,有P3.3端口线引入,低电平或下降沿引起. T0--定时器/计数器0中断,由T0计数器计满回零引起. T1--定时器/计数器1中断,由T1计数器计满回零引起. T2--定时器/计数器2中断,由T2计数器计满回零引起. TI/RI--串口中断,串行端口完成一帧字符发送/接收后引起. 单片机在使用中断功能时,通常需要设置两个与中断有关的寄存器: ①中断允许寄存器IE ②中断优先级寄

重拾单片机 第二天 数码管的使用 (动态扫描数码管)

我们要实现的功能是什么呢? 从 第一个数码管扫描 1 到第二个数码管 2 ,第三个数码管 3,.......一直到 第8个数码管 显示8 1 /*--------------www.szjcdz.cn-------------------- 2 名称:数码管动态扫描 3 编写:shenhui 4 日期:2015.10.28 5 内容:数码管动态扫描 6 ------------------------------------------------*/ 7 #include<reg52.h>

重拾单片机 第二天 数码管的使用 ( 按下加按键,数值增加直到最大值,按减按键,数值减小,直到最小值 )

1. 1 /*--------------www.szjcdz.cn-------------------- 2 名称:2按键加减操作 3 编写:szjcdz 4 日期:2010.9 5 内容:按下加按键,数值增加直到最大值,按减按键,数值减小,直到最小值 6 ------------------------------------------------*/ 7 #include<reg52.h> 8 #define uchar8 unsigned char 9 #define uint16

[51单片机学习笔记ONE]-----LED灯的多种使用方法

一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间间隔1s 3 实验时间: 2014年12月2日 4 ******************************************************/ 5 6 #include <reg51.h> 7 8 void delay(unsigned char a); 9 10 void m

起航,第一个程序——还是LED灯

如同学基本语言一样,helloworld是很多语言的第一个程序.在嵌入式开发中,点亮LED灯也是各种架构和开发板的第一个程序,其中很多东西是和单片机例如stm32是类似的,只是,现在我们没有了库函数,我们要自己完成一些东西. 先说启动文件,st官方已结给我们做好了,但是jz2440开发板没有统一的启动文件,需要自己编写,那么,基础的arm汇编就得有所熟悉,在之后的学习中,遇到一个指令就学习一个. (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串1.0组成的机器码,可以由CPU读取执行.

1.2.第一个实验——点亮LED灯

1.2.第一个实验--点亮LED灯 预备知识: (1)位.字节.IO端口.IO口 字节是内存管理的最小单位,一个字节是八位,每一位可以存放一个二进制位(0或者1).一个IO端口包括一组IO口,一般一组是八个,一个端口就是一组IO引脚.一个IO口对应一个二进制位,一个IO端口对应一个字节. (2)二进制和十六进制的转换 一个十六进制位等于四个二进制位,比如0xff对应二进制是1111 1111 实验目的:点亮八颗LED灯 实验过程分析: (1)八颗LED分别由八位二进制位来控制,二进制位是1时LE

51单片机led灯控制

关于内容理解: 先读懂51单片机的实验原理图,然后再着手编程. 由图可知 1,led灯接的是单片机的P0口,意味着我们只能用P0口来编程. 2,led灯是共阳极,当给低电平时led灯才会亮,(单片机灌电流能力较强,输出电流较弱,所以一般用共阳极) 3,led所在的P0口是读io口,故使用时用一个变量来做中介 实验效果 实现跑马灯效果,P0^0->P0^7口依次亮且每次只亮一个灯,然后P0^7->P0^0. 实验代码 #include <reg52.h> //此文件中定义了51的一些