MAIN:MOVA,#0FFH;设置左移初值 CLRC;C=0 MOVR2,#08H;设置左移次数 LOOP:RLCA;左移1位 MOVP2,A;输出到P2 CALLDELAY;延时 DJNZR2,LOOP;左移7次 MOVR2,#07H;LOOP1:RRCA;右移1位 MOVP2,A;输出到P2 CALLDELAY;
delay();P3=0x7f;//第八个灯亮 delay();} }
void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) //8个流水灯逐个闪动 { P1=~temp;delay(100); //调用延时函数 temp<<=1;} temp=0x80;for(i=0;i<8;i++) //8个流水
方法:1:设定一个变量i,可以从0到3循环的变化 2:检测一个经过消抖处理的按键,按一下,i+1 3:当i值为各个值时,执行相应的花样。流水灯参考程序 include include define uchar unsigned char uchar j,temp;void de
单片机怎么实现一个开关控制八个灯按一下亮一个按八下八个灯都亮汇编语言程序
答:include
int i = 8; //循环次数为8 void main(){ P1 = 0xff; //初始化LED,8个LED全灭,(假设低电平点亮)init_t0() ;while(1); //循环等待定时中断 } void init_t0() //定时器0初始化程序 { TMOD = 0x0
假设P1接8 个LED,高电平时LED点亮,主程序如下:void main(void){ uchar i;while(1){ for(i=0;i<7;i++){ P1=1<>i;delay_ms(500);} } }
P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay
用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)
用汇编语言让51单片机八个灯从左到右依次点亮且都不灭,每个灯亮的时间间隔0.5秒,然后全灭,再循环之前的步骤。参考如下:电路 代码 LED_COUNTDATA30H T0_COUNTDATA31H ORG0000HLJMPMAINORG000BHLJMPT0_INTORG0030HMAIN:
ORG 0000HLJMP MAINORG 0030HMAIN; MOV R2,#3LOOP: MOV A,#0FEH MOV R3,#8LOOP1: MOV P0,A LCALL DELAY CLR C RLC A DJNZ R3,LOOP1 MOV P0,#00H LCALL DELAY MOV P0,
while(1){ P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六
while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);P0=0xff;DelayMS(150);} }
单片机用汇编做一个控制8个LED灯泡从左到右依次点亮,最后全部亮,再全部熄灭后重复前面的过程
如果用单片机,用一组io口,比如51单片机的p0口,让其左位移或右位移,或者进行加减运算好了。另外可以直接拿计数器4017和555实现流水灯,在第9脚接个二极管到15脚,让其进行复位,这样也可以实现8个LED轮流循环
可以实现,首先随便连接一个I/O口,P1/P2/P0均可,然后赋予一初值,然后使用本征函数_cror_(循环变量,循环次数)循环右移,或者循环左移实现。左移只需改掉本征函数,同时亮灭可以先给全1,然后给全0,中间加延时,自
MAIN:MOV P1,#01111111B ;P1口低电平 对应灯亮 点亮P1.7对应的LED LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况 MOV P1,#10111111B LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况
uchar i,j;j=0x01;//假如高电平灯亮 while(1){ j=0x01;//假如高电平灯亮 for(i=0;i<8;i++){ P0=j;delay(1000);//逐个循环点亮 j<<=1;} j=0xfe;for(i=0;i<8;i++){ P0=j;delay(1000); //
设计8个LED灯从上到下依次点亮,然后从下到上依次点亮,
include
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
0x3f,0xcf,0xf3,0xfc,0xff,0xfc,0xf3,0xcf,0x3f,//两位一起移动 0xff,0xaa};//闪 unsigned int a;main(){ unsigned char i;while(1){ for(i=0;i<29;i++){ P1=xianshi[i];for(a=0;a<30000;
以51位例,使用P1的八个IO口控制。先定义:sbit LED0=P1^0;sbit LED1=P1^1;以此类推,定义八个。然后在主循环中:LED0=0;延时一段时间;LED0=1;就可以看到闪烁了。
请设计一个8个led同时全部闪烁的程序 include
1:设定一个变量i,可以从0到3循环的变化 2:检测一个经过消抖处理的按键,按一下,i+1 3:当i值为各个值时,执行相应的花样。流水灯参考程序 include include define uchar unsigned char uchar j,temp;void delay(un
CALL PRG2 ; 灭且静音 SJMP 0 ;--- PRG1:MOV P0, #0 ; 8个led灯亮 MOV R2, #200 LP1:CPL P1.0 ; 蜂鸣器响 DJNZ R6,DJNZ R7, $ - 2 DJNZ R2, LP1 MOV P0, #255 ; 8个led灯灭
求单片机设计8个led灯同时闪烁,并且led灯亮的时候控制蜂鸣器发生,led灯灭的时候关闭蜂鸣器的程序,谢谢
如何以零成本制作LED灯用单片机的编程也可以啊。。间隔时间用延迟程序做。需要程序吗?
一、AVR系列单片机开发板 本开发板可使用于多种型号的AVR单片机,本板主配ATmega16单片机。除了丰富的硬件资源外,还配有仿真器,可以很方便的调试硬件,大大减小调试周期。所有IO口全部引出,用户可以任意扩展功能。 二、AVR_PQ1A开发板实例程序(演示程序) ( 1 ) LED LED灯驱动程序,两种演示方式 ( 2 ) SMG 数码管驱动程序,循环滚动显示数字1-6 ( 3 ) 1602 1602液晶驱动程序,除正常显示ASCII码外,还教如何显示中文 ( 4 ) 12864 12864液晶驱动程序,显示汉字和图形。液晶为带字库的 ST7920控制器的液晶。 ( 5 ) SKEY 4个独立按键驱动程序,采用查询方式驱动 ( 6 ) SKEY_INT 利用按键产生外部中断,教你中断程序的编写 ( 7 ) MKEY 4x4矩阵按键驱动程序,教你如何扫描矩阵按键 ( 8 ) TIMER0INT 定时器0驱动程序,教你如何使用定时器 ( 9 ) AD Mega16自带的AD的驱动程序 ( 10 ) DA SPI接口的8位DA驱动程序,利用Mega16的硬SPI接口 ( 11 ) DS18B20 数字温度传感器驱动程序,教你如何显示小数 ( 12 ) TWI( IIC ) IIC接口数字电位器驱动程序,利用Mega16的硬件IIC接口 ( 13 ) BEEP 蜂鸣器唱歌程序,教你如何唱出好听的歌曲 ( 14 ) PWM Mega16的定时器1驱动程序,实现PWM输出功能 ( 15 ) RELAY 继电器驱动程序,利用Mega16的I/O口直接驱动继电器 ( 16 ) UART Mega16的异步串口驱动程序,教你如何实现串口通信 ( 17 ) RTC 时钟芯片驱动程序,可以显示和利用按键设定时间 ( 18 ) EEPROM Mega16的EEPROM驱动程序,读写内部EEPROM ( 19 ) PS2 标准PS2键盘驱动程序,教你如何读入扫描码并译成ASCII码 ( 20 ) USB USBD12固件程序,教你实现枚举过程和数据传输 ( 21 )uC/OS-II 移植好的操作系统,执行两个任务,编译后,占用Mega16的26%资源。
早上起来没有什么事,跟你写个简单的供您学习与参考吧,这个程序是对应某个按键按下,对应序列号的灯就亮起来,释放按键,则灯灭,都是低电平有效。至于其他功能,你可以自己扩展吧。我只写2个,8个太多了,懒的动了。 #include #include sbit KEY1 = P1^0; sbit KEY2 = P1^1; sbit LED1 = P2^0; sbit LED2 = P2^1; void main(void) { //有必要的话,这里先对单片机各类寄存器进行初始化,这里因为简单,未做相关初始化工作 for(;;) { if(KEY1==0)//如果按键1被按下 {LED1=0;}//开启LED1灯 else{LED1=1;}//否则关闭LED1等,以下雷同.... if(KEY2==0) {LED2=0;} else{LED2=1;} }//end main-for(;;) }//end main;
ORG 00H JMP MAIN ORG 30H MAIN: MOV A,#0FFH ;设置左移初值 CLR C ;C=0 MOV R2,#08H ;设置左移次数 LOOP: RLC A ;左移1位 MOV P2,A ;输出到P2 CALL DELAY ;延时 DJNZ R2,LOOP ;左移7次 MOV R2,#07H ; LOOP1: RRC A ;右移1位 MOV P2,A ;输出到P2 CALL DELAY ; DJNZ R2,LOOP1 ;右移7次 JMP MAIN DELAY: MOV R3,#20 ;延时0.2s D1: MOV R4,#20 D2: MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 DJNZ R3,D1 RET END