设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s 然后再1s时的定时器中断子程序中设置输出脚的电平交替即可
EA = 1;ET0 = 1;TR0 = 1;} void main(void){ InitTimer0();while(1)if(time==20) //中断20次,1s { time=0;LED=!LED; P1.0上的LED1s亮灭一次 } } void Timer0Interrupt(void) interrupt 1 { TH0
void t0isr() interrupt 1{TH0=(65536-5000)/256;TL0=(65536-5000)%256;number++;if(number>1)number=0;switch(number){case 0:P2=0x02;P0=distab[dat/10];break;case 1:P2=0x01;P0=distab[dat%10];break;
{ P1=0xff; //点亮P1口第0个引脚上的LED灯,0xff为二进制的11111111 delay(1000); //延时1秒 P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮
单片机间隔点亮一led灯的C语言程序
跑马灯。网上一大把。我就解释下间隔一秒的那个,时间常数。看你用的定时器方式。一般用方式1。若频率是24mhz,机器周期为0.5us。所以计数次数为1s/0.5us=200000次超过了范围。所以用循环。可以50000循环4次或其他次数。
delay(500);LED=0x00;} } if(K2==0){ delay(10);if(K2==0){ delay(500);LED=0x00;delay(500);LED=0xff;delay(500);LED=0x00;delay(500);LED=0xff;} } } } 大致程序如上,按实际需要修改。
以51位例,使用P1的八个IO口控制。先定义:sbit LED0=P1^0;sbit LED1=P1^1;以此类推,定义八个。然后在主循环中:LED0=0;延时一段时间;LED0=1;就可以看到闪烁了。
闪烁的话需要用到定时器,时间到了把当前P2对应的引脚取反一下就行了,比如当前P2.0 = 1; 定时器时间到了以后 ~P2.0 当然实际写程序的时候不能直接这么写,自己多复习下吧
SETB P0.1 ;关掉P0.1口LED灯 SJMP AJCX ;转移到按键查询程序 AJCL-3: ;按键处理程序 CALL XDYS ;调转消抖延时程序 JNB P1.2, $ ;查询P1.2等待 CLR P0.2 ;点燃P0.2口LED灯 CALL LDYS ;调亮灯延时 SETB
先写一个延时子函数delay,延时时间1秒。然后写LED=0;delay(1);LED=1;这样就可以做到一亮一灭,再把这段程序加入到循环中就可以,循环函数很简单不用再说了吧,如果还不懂回复我给你程序
1. 假设 单片机输出低电平(0) LED 亮;2. 假设晶振为12M,则计数器 计数一次则为1uS;3. 假设你说的LED是一排(8个)都接在单片机P0口;4. 假设你说的是8个都同时亮,同时灭;5. 假设你说的是 亮 1S 然后
八个led灯用P0口控制。led负极接单片机。怎样用定时器写出让led闪烁的?时间为一秒。急。求c语言程序。单
用个定时中断就可以啦。把定时器的寄存器设置好,中断标志置位后,将信号灯的信号取反就可以了。
P1=0xff; //点亮P1口第0个引脚上的LED灯,0xff为二进制的11111111 delay(1000); //延时1秒 P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮一
在无限循环中,不断检测K1和K2按键状态,以改变全局变量“freq”并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该
在上述代码中,我们首先将P1口设置为全灭状态,然后使用一个循环将P1口设置为全亮状态,并延时1秒钟。接着,我们将P1口设置为全灭状态,并再次延时1秒钟。这样,LED灯就会一亮一灭间隔1秒。需要注意的是,上述代码中的延
设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s 然后再1s时的定时器中断子程序中设置输出脚的电平交替即可
单片机中怎样中断控制led灯隔一秒闪烁一次,c语言的,麻烦高手贴个程序看一下,最好用定时器t0。
设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s 然后再1s时的定时器中断子程序中设置输出脚的电平交替即可
include
include
//将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮一盏LED灯,每隔1秒钟灯的状态会发生一次变化,即由点亮状态变为熄灭状态,再由熄灭状态变为点亮状态。
1. 假设 单片机输出低电平(0) LED 亮;2. 假设晶振为12M,则计数器 计数一次则为1uS;3. 假设你说的LED是一排(8个)都接在单片机P0口;4. 假设你说的是8个都同时亮,同时灭;5. 假设你说的是 亮 1S 然后
io8253c equ ioport + 282h ;counter 2 address io8253d equ ioport + 283h ;8253控制端 ts db 'press 1,lamb on once,press 2,lamb on twice,press 3 ,lamb on third,press q quit',0dh,0ah,'$'ts1 db
先写一个延时子函数delay,延时时间1秒。然后写LED=0;delay(1);LED=1;这样就可以做到一亮一灭,再把这段程序加入到循环中就可以,循环函数很简单不用再说了吧,如果还不懂回复我给你程序
求单片机控制LED灯1秒钟闪烁一次程序
while(1){ P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六
第一步:8个发光二极管同时亮并且闪烁2次,闪烁间隔为0.3秒。第二步:8个发光二极管一个一个亮,间隔时间为0.5秒。第三步:开始时,8个发光二极管全部熄灭,0.3秒后一个被点亮,间隔0 第一步:8个发光二极管同时亮并且闪烁2次,闪烁间
while(1){ P2=led_data;//默认第一位亮 if(key==0)Delay_ms(10);if(key==0){ while(!key);Delay_ms(500); //延时0.5s led_data=_crol_(led_data,1);//移位函数,使led_date向左循环移动1位 } }
1:设定一个变量i,可以从0到3循环的变化 2:检测一个经过消抖处理的按键,按一下,i+1 3:当i值为各个值时,执行相应的花样。流水灯参考程序 include include define uchar unsigned char uchar j,temp;void delay(un
uint num=0,i=0;uchar code LED[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void main(){ EA=1;ET0=1;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;P1=0;while(1){ if(nu
void main(){ while(1){ P2=0xfe; //第1个管亮 delay(500);P2=0xfd; //第2个管亮 delay(500);P2=0xfb; //依次类推 delay(500);P2=0xf7;delay(500);P2=0xef;delay(500);P2=0xdf;delay(500);P2=0x
画出一个仿真图,让p2口接8个LED发光二极管,并书写一道程序,让LED灯做亮灭闪烁每一秒闪烁一次
void main(void){ InitTimer0();while(1)if(time==20) //中断20次,1s { time=0;LED=!LED; P1.0上的LED1s亮灭一次 } } void Timer0Interrupt(void) interrupt 1 { TH0 = 0x3c;TL0 = 0xb0;time++;}
include
如果你LED的接口一个低电平,即0,灯就会亮,给一个高电平,1,就会灭。如果要一闪一闪的,只需给亮和灭的中间加延时,控制亮灭次数,可以使用一个循环。
设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s 然后再1s时的定时器中断子程序中设置输出脚的电平交替即可
在上述代码中,我们首先将P1口设置为全灭状态,然后使用一个循环将P1口设置为全亮状态,并延时1秒钟。接着,我们将P1口设置为全灭状态,并再次延时1秒钟。这样,LED灯就会一亮一灭间隔1秒。需要注意的是,上述代码中的延
loopwait3;输出延时循环,将闪烁两次 mov dx, IO8253B mov al, 0AAH outdx, al outdx, al ;再次给计数器1送入计数初值0AAAAH jmp zl LS: mov dx, IO8253D mov al, 0B0H out dx, al;定义控制字,使用计数
用8253怎样编程让led灯一秒闪一次
找厂家设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s 然后再1s时的定时器中断子程序中设置输出脚的电平交替即可
#include #define uchar unsigned char void delay(uchar a) { uchar i,j; for(i=0;i<a;i++) for(j=0;j<120;j++); } main() { while(1) { P2=0x00; delay(100); P2=0xff; delay(100); } }
#include #define uchar unsigned char #define uint unsigned int uint num=0,i=0; uchar code LED[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main() { EA=1; ET0=1; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; P1=0; while(1) { if(num==2) { num=0; P1=LED[i]; i++; if(i>7) i=0; } } } void time0() interrupt 1 { num++; TH0=(65536-50000)/256; TL0=(65536-50000)%256; }
设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s 然后再1s时的定时器中断子程序中设置输出脚的电平交替即可
1、同时去掉两个delay,会导致led引脚的电平持续在0、1之间变化,变化频率非常快,在MHz量级,导致的结果就是直接看不到灯闪烁,如果灯的初始状态是灭的,则灯会基本看不到亮度。 2、见上一条,见不到闪烁。 3、去掉第一个delay,实际灯会持续表现出led=1指令的状态,该状态与硬件中led灯的控制端是接在阴极还是阳极有关;类似地,去掉第二个delay,实际灯会持续表现出led=1指令的状态。 4、人眼能分辨的灯闪烁最快的情况应该在几十Hz左右,可以实际更改delay函数的值,进行测试;最慢闪烁速度,则取决于delay的最长延时时间,这里delay的参数num为16位,则当num取65535时,灯闪烁最慢,另外,还可以增大delay函数内部参数“y=110”的值,增加延时时间,降低闪烁速度。
include #define uchar unsigned char char code dx516[3] _at_ 0x003b; void main(void) { RCAP2H=0x10; RCAP2L=0x00; TR2=1; ET2=1; EA=1; while(1) { } } timer2() interrupt 5 { static uchar t; TF2=0; t++; if(t==30) { t=0; P1=~P1; } }
C语言实现LED灯闪烁控制配套51单片机开发板。 #include //包含单片机寄存器的头文件 /****************************************函数功能:延时一段时间 *****************************************/ void delay(void) //两个void意思分别为无需返回值,没有参数传递。 { unsigned int i; //定义无符号整数,最大取值范围65535。 for(i=0;i<20000;i++) //做20000次空循环。 ; //什么也不做,等待一个机器周期。 } /******************************************************* 函数功能:主函数 (C语言规定必须有也只能有1个主函数)。 ********************************************************/void main(void) { while(1) //无限循环。 { P0=0xfe; //P1=1111 1110B, P0.0输出低电平。 delay(); //延时一段时间。 P0=0xff; //P1=1111 1111B, P0.0输出高电平。 delay(); //延时一段时间。 } } 单片机驱动LED灯的源程序: #include //头文件。 #define uint unsigned int #define uchar unsigned char sbit LED1=P1^7; //位定义。 void delay_ms(uint);//mS级带参数延时函数。 void main() { while(1) { LED1=0; delay_ms(1000); LED1=1; delay_ms(1000); } } void delay_ms(uint z) //延时子程序 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } 扩展资料: 单片机应用分类: 通用型: 这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。 总线型: 这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。 另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。 控制型: 这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。 通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。 参考资料来源:百度百科-单片机
#include #define uchar unsigned char uchar times,cnt; uchar led[]={0x00,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff}; void t0isr() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; times++; if(times>=40) { times=0; P0=led[cnt]; cnt++; cnt%=11; } } main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; while(1); } //程序很简单,你自己加注释和完成其他工作吧。
应该是MOV P1,#0FFH 把,将P1口8位全置1(高电平),当P1口某位开关按下时为低电平。
设置一个delay_2s()就是: delay_2s() { for(i=0;i<200;i++) { for(j=0;j<200;j++) } } 具体要看你的晶振大小 然后 void main() { uchar temp = 0x01; while(1) { delay_2s(); P0 = temp delay_2s(); temp <<=1; i++; if(i>=7) { i = 0; temp = 0x01 } } } 很容易理解就是让0X01一直左移赋值给P0口然后循环
我再帮你补一课,看了你的标题,我写了一个用定时器0来控制一个LED灯第隔1秒钟亮灭一次的程序,希望对你有用,另外我也写了一个你说的那个程序,一起发上来吧 ****************这个是用定时器0控制一个灯的亮和灭****************************** #include #define uchar unsigned char #define uint unsigned int /**************************************/ uchar num; bit tt; sbit d=P1^0; /******************主程序入口********************/ void main() { TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TCON=0x10; EA=1; ET0=1; tt=255; while(1) { if(num==20) { tt=!tt; d=tt; num=0; } } } void timer() interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; num++; } ****************这个程序是逐个点亮的(思路:由256逐减1,值由LED灯显示)*********************** #include #define uchar unsigned char #define uint unsigned int /**************************************/ uchar num,tt; //bit tt; sbit d=P1^0; /******************主程序入口********************/ void main() { TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TCON=0x10; EA=1; ET0=1; tt=255; while(1) { if(num==20) { tt--; P1=tt; num=0; } } } void timer() interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; num++; }