7];LED6=0;break;case 0x7f:P0=table[8];LED7=0;break;default:break; //如果都没按下,直接跳出}//主循环中添加其他需要一直工作的程序}}//如果帮到你的话,点一个赞吧!硬件电路工程师-帝国卫兵Tt
void main() { while (1) { // 死循环 P1 = 0x55; // 将二进制01010101写入P1,点亮LED1、3、5、7 Delay(500); // 延迟0.5秒 P1 = 0xAA; // 将二进制10101010写入P1,点亮LED2、4、6、8 Delay(
假设P1口接8个LED灯,通过灌电流驱动(即0亮1灭)。编译器keil C代码如下:include
sbit k2=P1^0;define uint unsigned int define uchar unsigned char uchar keysign1=0,keysign2=0;void _delay_ms(unsigned char c) //延时1ms,误差 0us { unsigned char a,b;for(;c>0;c--)for(b=142
MOV R2, #8 LOOP: MOV P2,A LCALL D_1s RL A DJNZ R2, LOOP MOV A,#01111111B MOV R2, #8 LOOP1: MOV P2,A LCALL D_1s RR A DJNZ R2, LOOP1 MOV A,#01010101B MOV P2,A LCALL
include
需要一个STC89C54RD+的C语言编程程序,要求能实现8个LED灯 1357与2468交替亮
假设P0口接LED,高电平点亮 include 0;i--)for(j=110j>0;j--)for(k=125;k>0;k--);} void main()//主程序 { while(1){ P0=0X01; delayms(500);P0=0X04; delayms(500);P0=0X10; delayms(500);P0
有成就感啊。依次点亮的话可以用循环移位加延时的方法,同时亮只要相应位输出相应电平即可,闪亮的话只要同时亮与全灭间加个延时可以解决。当然也可以用定时中断来定时移位或闪亮,一定要自己想法写出来的才能有深刻的印象。
void main() { while (1) { // 死循环 P1 = 0x55; // 将二进制01010101写入P1,点亮LED1、3、5、7 Delay(500); // 延迟0.5秒 P1 = 0xAA; // 将二进制10101010写入P1,点亮LED2、4、6、8 Delay(50
在AT89S51单片机的P0.0端口接有1个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流下去。
ORG 0000H ; 试试 SJMP MAIN ORG 0040H MIAN:MOV A,#11111110B MOV R2, #8 LOOP: MOV P2,A LCALL D_1s RL A DJNZ R2, LOOP MOV A,#01111111B MOV R2, #8 LOOP1: MOV P2,A LCALL D_
用8050的三极管做开关电路,三极管的基极接p2.0,然后用集电极通过led接5v电源,发射极通过220欧姆电阻接地。执行setb p2.0 指令可以点亮led。方法2:是用p1.0直接驱动led,应该让led另一端通过220欧姆电阻接5v电源,执行c
单片机中LED灯,有八个LED灯,先从左向右亮,在从右向左亮,然后在先1357亮,在2468亮,求算法???
单片机驱动LED灯的源程序:include
设置芯片的时钟和计数器,以便实现时间控制。例如,可以使用定时器或延时函数来控制时间。在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或while语句来判断时间是否达到要求,然后控制LED灯的点亮和灭。在main
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay
1); // 左移一位,点亮下一位LED delay(55); } // 向右循环点亮LED for(i=0; i/ 右移一位,,点亮上一位LED delay(55); } }}// 延时函数,延时a毫秒void delay(uint a){ uint x,y; for(x=a;x>0
3.编写程序:使用单片机的编程软件(如Arduino IDE、Keil等),编写控制LED灯的程序。以下是一个简单的示例程序(以Arduino为例):// 定义LED灯连接的引脚 const int ledPin = 13;void setup() { // 将LED引脚设置为
单片机c语言编程点亮led灯
ORG 0000H ; 试试 SJMP MAIN ORG 0040H MIAN:MOV A,#11111110B MOV R2, #8 LOOP: MOV P2,A LCALL D_1s RL A DJNZ R2, LOOP MOV A,#01111111B MOV R2, #8 LOOP1: MOV P2,A LCALL D_
void main() { while (1) { // 死循环 P1 = 0x55; // 将二进制01010101写入P1,点亮LED1、3、5、7 Delay(500); // 延迟0.5秒 P1 = 0xAA; // 将二进制10101010写入P1,点亮LED2、4、6、8 Delay(50
include "REG52.H"// 显示花样流水灯编码 const unsigned char Expetr_ROM[] = { 0xFD, 0xF7, 0xDF, 0x7F, 0xFE, 0xFB, 0xEF, 0xBF } ;// 延时1ms void Delay_1ms(unsigned int Cnt){ unsigned int x
以51为例子,假如低电平灯亮#includesbitK1=P1^0//P^0接开关sbitLED=P1^1;//接LEDvoidmain(void){P1=oxff;//初始化P1while(1){LED=~K1;}}
用c语言编写代码,控制led灯1357 2468 循环灯亮
ORG 0000H ; 试试 SJMP MAIN ORG 0040H MIAN:MOV A,#11111110B MOV R2, #8 LOOP: MOV P2,A LCALL D_1s RL A DJNZ R2, LOOP MOV A,#01111111B MOV R2, #8 LOOP1: MOV P2,A LCALL D_
原因可能是连接的方法不太对,你可以参考下述连接方式,检查一下你的电路。方法1:用8050的三极管做开关电路,三极管的基极接p2.0,然后用集电极通过led接5v电源,发射极通过220欧姆电阻接地。执行setb p2.0 指令可以点亮led
在AT89S51单片机的P0.0端口接有1个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流下去。
P1 = 0xAA; // 将二进制10101010写入P1,点亮LED2、4、6、8 Delay(500); // 延迟0.5秒 } }
51单片机八个LED灯1357,2468交替点亮?
#include "REG52.H" // 显示花样流水灯编码 const unsigned char Expetr_ROM[] = { 0xFD, 0xF7, 0xDF, 0x7F, 0xFE, 0xFB, 0xEF, 0xBF } ; // 延时1ms void Delay_1ms(unsigned int Cnt) { unsigned int x, y; for(x = Cnt; x > 0; x--) for(y = 120; y > 0; y--); } int main(void) { unsigned char i; while(1) { for(i = 0; i < 8; i++) { P1 = Expetr_ROM[i]; Delay_1ms(500); } } }非常简单,线接错了,正常是12345678亮另一段也是12345678亮
可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。 具体实现方法可以参考如下程序: #include #include #define uint unsigned int#define uchar unsigned charvoid delay(uint a);void main(){ P1=0xfe; while(1) { // 向左循环点亮LED for(i=0; i0;x--) for(y=110;y>0;y--);}
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。 2、#include "reg51.h"首先写出单片机的头函数。 3、#include "intrins.h"输入位移函数。 4、unsigned int count=0,led;定义函数。 5、输入主函数,定义单片机的端口,写入延时函数。 6、中断跳转,使流水灯运行起来。
#include "REG52.H" // 显示花样流水灯编码 const unsigned char Expetr_ROM[] = { 0xFD, 0xF7, 0xDF, 0x7F, 0xFE, 0xFB, 0xEF, 0xBF } ; // 延时1ms void Delay_1ms(unsigned int Cnt) { unsigned int x, y; for(x = Cnt; x > 0; x--) for(y = 120; y > 0; y--); } int main(void) { unsigned char i; while(1) { for(i = 0; i < 8; i++) { P1 = Expetr_ROM[i]; Delay_1ms(500); } } }
最好还是自己写,有成就感啊。依次点亮的话可以用循环移位加延时的方法,同时亮只要相应位输出相应电平即可,闪亮的话只要同时亮与全灭间加个延时可以解决。当然也可以用定时中断来定时移位或闪亮,一定要自己想法写出来的才能有深刻的印象。
1、检查IO口定义有无错误; 2、检查设置的频率是否正确; 3、检查程序有没有正常运行,可以设置标志位来一个函数一个函数的排查;
只要你的晶振频率恒定,你就可以精确计时了,和单片机没多大关系。