我建议你找到每个流水灯对应的I/O口,然后使用sbit 定义每个LED灯,用死办法运行。 LED灯量就是,led=0; 这样的死办法 那个0x80其实是第一个单片机引脚的硬件地址,你在reg51.h或者reg52.h 里面都可以找到,它使用的
请你参考:电路 代码 include
单片机控制led灯亮和灭,led灯初始状态从左到右两个灯间隔一个灯循环亮灭,然后从右到左循环亮灭,,当按下按键,led灯全亮,然后全灭。然后再恢复循环。二、实验过程 (一)实验项目的方案分析 1.设计原理 STC12C5A
具体来说,当按键闭合时,单片机将通过GPIO口输出低电平,使流水灯亮起;当按键断开时,单片机将通过GPIO口输出高电平,使流水灯熄灭。通过不断地检测按键的状态,单片机可以实现流水灯的切换效果。在实际应用中,为了提高流水
流水灯和扫描灯连在一起中断实现的方法如下:1、配置中断,根据使用的开发板或芯片的具体文档,配置中断,一般情况下,需要选择一个中断类型、一个中断优先级以及一个中断回调函数。2、初始化流水灯和扫描灯,初始化GPIO口,
Keil uVision4实例 51单片机控制流水灯效果,设计内容:宏定义、自定义函数、位移函数,循环。创建项目:51单片机控制流水灯效果。添加包含51头文件。包含移位标准库函数头文件。使用预处理指令,完成宏定义:用“uchar”替换unsi
1)P2口的8个脚对应8个LED;设D1灯对应高位,D8灯对应低位;2)P1口的P1.0脚对应XO按钮;P1.1脚对应X1按钮;3)开始时,显示第一种方式:向P2口写入a=01111111,延时0.5S,a 循环右移一位,再延时0.5S,如此
uvision用gpio按键中断控制流水灯亮
我们得出在不同LED小灯被点亮的时候,P1端口输出的状态程序流程图还是比较简单的,P1口在间隔一段时间之后,输出不同的值,然后返回到程序执行的起点,重新开始执行,这样就会循环往复不断地出现流水的效果。
单片机控制led灯亮和灭,led灯初始状态从左到右两个灯间隔一个灯循环亮灭,然后从右到左循环亮灭,,当按下按键,led灯全亮,然后全灭。然后再恢复循环。二、实验过程 (一)实验项目的方案分析 1.设计原理 STC12C5A
画法依旧不说,给出元件清单,其实都差不多,与上篇一致51单片机 电容 瓷片电容 晶振 红色二极管 电阻 电路图如图 程序清单 说明:流水灯的闪亮方法肯定不是唯一的,按照各种形式都可以写出所需的程序,这里只用了一个简单的
一、点亮一个LED灯 程序:MOV A,#00FEH MOV P1,A JMP $ END 图:二、点亮1、3、5、7LED灯 程序:MOV A,#00AAH MOV P1,A JMP $ END 图:三、尝试让一个LED灯闪烁 程序:STRAT:MOV A,#00FEH MOV P1,
【第一种】 #includereg51.h //延时 void delay() { int i; for(i=0;i=30000;i++); } void main() { char i; int m; m=0x80; delay(); for(i=0;i=7;i++) { P0=~m; m=m1; delay(); }
软件编程:点亮LED的艺术 流水灯的魅力在于其动态变化,而软件编程则是关键。这里,我们将采用位操作法,通过顺序控制P1口的位,实现LED的循环点亮。比如,首先让LED 7亮起,通过SETB P1.6指令,紧接着LED 8亮起,执行CL
单片机流水灯代码:#include
单片机led流水灯实验步骤
//工程不管哦亲//默认共阳极//头文件自己写//这是.c文件注意函数声明哦亲void GPIO_Init(void){ RCC->APB2ENR |=1<2; //打开时钟 GPIOA->CRL &=0x00000000; // GPIOA->CRL |=0x333333
首先要看下《STM32F10xxx参考手册CD00171190.pdf》里关于IO端口的介绍,第8章 通用和复用功能I/O(GPIO和AFIO)百为STM3210E-EVAL开发板上的CPU是STM32F103ZET6,有GPIOA~GPIOG七组IO,每组IO有16个引脚GPIO_Pin_0~
再次就是用到的函数:初始化GPIO、打开、关闭LED等。class LED_Class{ 这个代码是不是很简单,即使你不会C++,只要懂C语言,相信都能看懂。5、流水灯实现(main函数)用C++的思路和C语言类似,先初始化,然后再实现:int
stm32流水灯会先亮一下,就是先点亮LED灯使之发亮一会,进行延时,在熄灭LED灯,在进行延时。
使用GPIO功能前,首先要初始化系统,最简单的方法为:添加stm32f10x_rcc.c,打开stm32f10x_conf.h 在第41行将/* #include "stm32f10x_rcc.h""*/两边注释符去掉,在main函数中添加代码SystemInit();添加stm32f10x_
STM32对GPIO操作一般用库函数,我想知道怎样用位操作实现流水灯?谢谢了!
这个流水灯用的是单片机AT89S52作为控制器,发光二极管作为亮源;发光二极管的正极连接+5V供电(VCC),负极接着限流电阻,然后连接AT89S52的IO口;工作原理,当AT89S52的IO口置低时,发光二极管被点亮,如果按照流水的方式置IO口
单片机流水灯控制原理就是将多个LED灯珠连接到不同的单片机输出端上,编程使单片机的这些输出端逐个的输出信号点亮LED,在设置好各个LED的通电时间和通电间隔时间后,就可以看到这些LED灯珠此起彼伏的亮起,如同流水一样。
单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注
当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED灯发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。LED可以直接发出红、黄
单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口, 对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间
单片机LED流水灯的实验原理是怎样的?
单片机原理流水灯实验报告:本实验的目的是通过使用单片机,来实现流水灯的功能。实验中,使用了AT89C51单片机,通过设置定时器,实现了不同的流水灯灯序,并使用外部中断按键,来控制流水灯的开关。实验的结果表明,单片机通过定
单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注
单片机凭其体积小、功能强、低成本、应用方面广等优点,已经成为微电脑控制的主力军。可以说,控制系统与自动控制的核心就是单片机。最能体现单片村应用价值之一的就是如今花样百出的流水灯了。目前,国内外对于单片机流水灯
主要内容详细介绍的是使用单片机进行LED高低电平交替闪烁流水灯实验的详细资料说明。实验目的及要求 1. 正确安装keil软件 2. 在 Proteus 的环境下,设计硬件原理图; 3.在keil 集成环境下设计C语言程序; 4. 在 Proteus 的
单片机流水闪烁灯的实验目的
include
51单片机控制二极管延时点亮的实验原理是基于51单片机的内部计时器和IO口控制二极管的电流流动。具体步骤如下:将一个二极管连接到51单片机的IO口上,使得该IO口可以控制二极管的电流开关状态。使用51单片机的内部计时器来延时,计
1、电路有四个控制按键,四个灯,四个数码管;2、按键1,按下,,第一个数码管开始从0-9递增,同时第一个灯亮;3、按键2,按下,第二个数码管开始从0-9显示偶数,同时四个灯的偶数灯亮(即2、4个灯亮);4、按
单片机io开关量输入实验原理是连接外部开关、IO口初始化、程序循环、去抖动处理。1、连接外部开关:将外部开关和单片机的IO口相连,当外部开关打开时,IO口检测到高电平信号,反之则是低电平信号。2、IO口初始化:在代码中对
单片机实验报告南京理工大学紫金学院电光系一、实验目的1、学习I/O口的使用。2、学习延时子程序的编写和使用。3、掌握单片机编程器使用和芯片烧写方法。二、实验原理1.灯闪烁实验(1)在P1.0端口上接一个发光二极管L1,使L
单片机IO口控制实验
程序和电路都已经帮你弄好了,功能可以实现,如果觉得对你有用,请选最佳答案。用两个74hc138(三八译码器)一个74hc139(二四译码器)就可以实现,电路如图,成为如下:#include #include #define uchar unsigned char sbit ctrl1=P3^0; sbit ctrl2=P3^1; sbit ctrl3=P3^2; uchar t,i,g; void init() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器中断0 TR0=1; t=0; } void main() { init(); while(1) { ctrl1=1; ctrl2=0; ctrl3=1; P2=0X00; g=P2; for(i=0;i<8;i++) { P2=g; while(t!=20); t=0; g=g+1; } ctrl2=1; ctrl1=0; g=0x00; for(i=0;i<8;i++) { P2=(g+i<<3)+0x07; while(t!=20); t=0; } ctrl1=0; ctrl2=0; ctrl3=0; g=0x00; for(i=0;i<4;i++) { P2=(g+i<<6)+0x3f; while(t!=20); t=0; } } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t++; }12MHz应该是51单片机的晶振频率吧?12MHz经过51单片机12分频得到1MHz的时钟频率,最终执行一条指令1us。你这程序里R6,R7初始值都为0,所以一共就执行了5条指令,耗时5us。
ORG 0000H LJMP MAIN ORG 000BH T0MS EQU NOT 50000 ; 50 mS 晶振 12.000 MHz PJSBZ EQU 20H PJSBZY EQU 21H PST0: MOV TL0, #LOW T0MS ; T0 中断 MOV TH0, #HIGH T0MS SETB PJSBZ ; 50 mS 标志 DJNZ R6, PST02 MOV R6, #40 ; 50 mS * 40 = 2 S SETB PJSBZY ; 2 S 标志 PST02: RETI MAIN: MOV TMOD, #01H MOV IE, #82H ; 开 T0 中断 MOV SP, #30H MOV TL0, #LOW T0MS ; TO 50MS 中断 计时 0 MOV TH0, #HIGH T0MS SETB TR0 MOV R6, #40 ; 计时初值 MAIN1: MOV A, #7FH MAIN2: JNB PJSBZ, $ ; 50 mS CLR PJSBZ RR A ; 顺流 MOV P1, A JNB PJSBZY, MAIN2 ; 2 S CLR PJSBZY MAIN3: JNB PJSBZ, $ ; 50 mS CLR PJSBZ RL A ; 逆流 MOV P1, A JNB PJSBZY, MAIN3 ; 2 S CLR PJSBZY AJMP MAIN1 END
#include void delay(unsigned int i); main() //主函数 { P2=0x55; //P2口:0101 0101 从左到右:第一个口低电平,第二个口高电平。。。。 delay(600); //延时600,不延时你来不及看见灯亮 P2=0xaa; /*P2口输出端取反,1010 1010 高电平变低电平,低电平变高电平,(原来亮的关掉,原来不亮的亮)*/ delay(600); } void delay(unsigned int i) //这个是延时函数 { unsigned char j; for(i;i>0;i--) for(j=255;j>0;j--) ; } 这样应该明白了吧!不过你这个程序,按一下复位(或者打开一次电源)只亮一下。加个循环就可以不停的闪啦!
1.例子如下: GPIO_Write(GPIOC,DataBus); 或者不用库 GPIOC->ODR &= 0XFF00; GPIOC->ODR |= DataBus; 流水就简单了移位即可 不用写了吧 2. 先读出才知道状态啊,不读也可以啊 不要那么死 3.中断向量表 肯定是固定的 不然怎么知道是哪个中断。只是优先级可设置
用库时,这样 GPIO_SetBits(GPIOA,GPIO_Pin_0) \\PA0 = 1 GPIO_ResetBits(GPIOA,GPIO_Pin_0) \\PA0 = 0 是不是很简单,如果你还要更简单的用它,做成宏定义如下 #define PA0(a) if (a) \ GPIO_SetBits(GPIOA,GPIO_Pin_0);\ else \ GPIO_ResetBits(GPIOA,GPIO_Pin_0) 用的时候这样 PA0(1) //PA0 = 1 PA0(0) //PA0 = 0 如果你在上面再加个这样的宏定义 #define ON 0 #define OFF 1 用的时候这样 PA0(OFF) //PA0 = 1 PA0(ON) //PA0 = 0 你看这样的程序都直观!!! 再加个初始化 GPIOA口的代码 void LED_GPIO_Config(void) { /*定义一个GPIO_InitTypeDef类型的结构体*/ GPIO_InitTypeDef GPIO_InitStructure; /*开启GPIOC的外设时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); /*选择要控制的GPIOA引脚*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_4 | GPIO_Pin_5; /*设置引脚模式为通用推挽输出*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /*设置引脚速率为50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*调用库函数,初始化GPIOA*/ GPIO_Init(GPIOA, &GPIO_InitStructure); }
学习单片机的第一个程序就是流水灯实验学习单片机的第一个程序就是流水灯实验学习单片机的第一个程序就是流水灯实验学习单片机的第一个程序就是流水灯实验!!!!学习语言的输出学习语言的输出学习语言的输出学习语言的输出的第一个程序就是的第一个程序就是的第一个程序就是的第一个程序就是 hello word! 这都是一个过程这都是一个过程这都是一个过程这都是一个过程!!!! 我们知道单片机执行的机器语言我们知道单片机执行的机器语言我们知道单片机执行的机器语言我们知道单片机执行的机器语言!!!!汇编就是其执行的根本的语言汇编就是其执行的根本的语言汇编就是其执行的根本的语言汇编就是其执行的根本的语言,,,,任任任任何程序的编译最终还是要生成何程序的编译最终还是要生成何程序的编译最终还是要生成何程序的编译最终还是要生成HEX语言语言语言语言,,,,汇编语言汇编语言汇编语言汇编语言~~!!!! 来回显示来回显示来回显示来回显示,,,,并且显示时还会发出蜂咛声并且显示时还会发出蜂咛声并且显示时还会发出蜂咛声并且显示时还会发出蜂咛声!!!! P1口接八个发光二极管口接八个发光二极管口接八个发光二极管口接八个发光二极管,,,,P2.3接一个蜂咛器接一个蜂咛器接一个蜂咛器接一个蜂咛器!!!! 一一一一....汇编语言汇编语言汇编语言汇编语言 mov r7,#8 main:mov r0,#8 ;一个循环需要移动一个循环需要移动一个循环需要移动一个循环需要移动8位位位位 mov p1,#01111111b ;初始为初始为初始为初始为P0.7灯点亮灯点亮灯点亮灯点亮 loop: clr p2.3 acall ds1ms ;延时延时延时延时,,,,以便人眼可以观察到以便人眼可以观察到以便人眼可以观察到以便人眼可以观察到 setb p2.3 acall ds1ms mov a,p1 ;读读读读P0口当前显示的数据送到口当前显示的数据送到口当前显示的数据送到口当前显示的数据送到A rr a ;将将将将A中的数据循环右移中的数据循环右移中的数据循环右移中的数据循环右移1位位位位 mov p1,a ;再将再将再将再将A中右移过的数据送到中右移过的数据送到中右移过的数据送到中右移过的数据送到P0 djnz r0,loop djnz r7,main ;移动不够移动不够移动不够移动不够8位位位位,,,,跳到跳到跳到跳到LOOP处循环处循环处循环处循环, ljmp rel ;流动流动流动流动1遍跳转到遍跳转到遍跳转到遍跳转到MAIN处循环流处循环流处循环流处循环流。。。。 ;---显示延时显示延时显示延时显示延时---------- ds1ms: mov r1,#1 ds1lo: mov r2,#200 ds2lo: mov r3,#200 djnz r3,$ djnz r2,ds2lo djnz r1,ds1lo ret ;延时返回延时返回延时返回延时返回 rel:end 二二二二.C语言语言语言语言 #include unsigned char i; unsigned char temp; unsigned char a,b; void delay(void) //延时子程序延时子程序延时子程序延时子程序 { unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } void main(void) //主程序主程序主程序主程序 { while(1) //循环条件永远为真循环条件永远为真循环条件永远为真循环条件永远为真,,,,以下程序一直执行下去以下程序一直执行下去以下程序一直执行下去以下程序一直执行下去。。。。 { temp=0xfe; P1=temp; //直接对直接对直接对直接对I/O口口口口P1赋值赋值赋值赋值,,,,使使使使P1.0输出低点平输出低点平输出低点平输出低点平。。。。 delay(); //延时延时延时延时 for(i=1;i>(8-i); P1=a|b; delay(); } for(i=1;i>i; b=temp<<(8-i); P1=a|b; delay(); } } } 实验很简单实验很简单实验很简单实验很简单!!!!懂的朋友完全可以在此基础上开发懂的朋友完全可以在此基础上开发懂的朋友完全可以在此基础上开发懂的朋友完全可以在此基础上开发!!!!比如一个爱心的流比如一个爱心的流比如一个爱心的流比如一个爱心的流水灯水灯水灯水灯。。。。如果你看懂了这两个程序如果你看懂了这两个程序如果你看懂了这两个程序如果你看懂了这两个程序!!!!恭喜你恭喜你恭喜你恭喜你,,,,你已经入门你已经入门你已经入门你已经入门!!!!
#include voiddelay(void) { unsignedinti,j; for(i=0;i<200;i++) for(j=0;j<1000;j++) ; } voidmain(void) { while(1) { P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay(); P3=0xfb;//第三个灯亮 delay(); P3=0xf7;//第四个灯亮 delay(); P3=0xef;//第五个灯亮 delay(); P3=0xdf;//第六个灯亮 delay(); P3=0xbf;//第七个灯亮 delay(); P3=0x7f;//第八个灯亮 delay(); } } 扩展资料 单片机C语言16种方式流水灯 voidmain() { while(1) { P1=0xfe;//点亮第一个发光管 Delay(5000); P1=0xfd;//点亮第二个发光管 Delay(5000); P1=0xfb; Delay(5000); P1=0xf7; Delay(5000); P1=0xef; Delay(5000); P1=0xdf; Delay(5000); P1=0xbf; Delay(5000); P1=0x7f;//点亮第八个发光管 } }