CNT5EQU 0X12;旋转5状态计数 KEY_1ST== FLAG.0;第一次按下标志位 T1F== FLAG.1;1中断标志位,1中断置反一次 T2F== FLAG.2;2中断标志位 L2F== FLAG.3;LIGHT2中断标志位 T20F== FLAG.4;20中断标志位 L8F=
仿真电路如下:C 语言程序可见:http://hi.baidu.com/do_sermon/item/f8812371c31434590d0a0791 注意两者接口不同。
你把八个LED,都反过来,公共端,接在电源上,就可以了。正确电路,可见:http://zhidao.baidu.com/question/591052586.html --- 按照楼主的电路,如下程序即可:ORG 0000H JMP MAIN ORG 000BH JMP T0_I
89c51的晶振是12mhz的话,定时器T0工作在方式1,最长可以定时65.536ms,无法满足题意以100ms为循环,不可编程,只能用方式一定时50ms然后循环10次,而不是100ms循环五次!如果没猜错的话,题目要求的晶振应该是6mhz,好
AJMP MAIN ORG 0030H MAIN: MOV R0,#8 MOV A,#0FEH P_0: MOV P0,A ACALL DLY200 RL A DJNZ R0,P_0 MOV P0,#0FFH MOV R0,#8 MOV A,#0FEH P_1: MOV P1,A ACALL DLY200 RL A DJNZ R0,P_1 MO
帮我修改一下89c51控制旋转LED的汇编程序
C语言实现LED灯闪烁控制配套51单片机开发板。include //包含单片机寄存器的头文件 /***函数功能:延时一段时间 / void delay(void) //两个void意思分别为无需返回值,没有参数传递。{ unsigned int i; //定义
51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:include
如果电路是P1口控制LED,高电平灯亮:include "reg52.h"define uchar unsigned char void delay(void ){ uchar i,y;for(i=100;i>0;i--){ y=200;while(y--);} } void main(void){ uchar i;uchar var=0x01
简单点的,用表格,事先计算好,放到ROM中,用的时候逐行编译输出就可以。复杂点的,开一个缓冲区,用循环程序,根据花样的不同,每次填充一行,并输出,然后再计算一下行。除非表格太大,不建议这样用。define len
你的led灯是共阳的,从你给的条件可以判断。p1=0xfe,即最低位为‘0’,故点亮的是p1.0引脚所对应的led灯,也就是你所谓的c0。所以你的程序没有问题啊。
include "reg51.h" // 包含头文件 define uchar unsigned char void delay02s(void) // 延时0.2s子程序 { unsigned char i,j,k;for ( i=2;i>0;i-- )for (j=200;j>0;j-- )for (k=250
while(k2==0);led=(led>>1)|0x80;if(led==0xff)led=0x7f;} } } }
求用C语言编程实现51单片机的LED灯移动
按键按一次LED灯灭,在按一次按键LED灯亮。程序如下:/ include "REG52.H"sbit LED1_01 = P1^1; //LED灯 sbit KEY0_01 = P1^2; //按键 void Delay_1ms(unsigned int Time){ unsigned int x, y;f
include#defineucharunsignedcharuchartimes,led;sbitkey1=P1^0;sbitkey2=P1^1;voidt0isr()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;times++;}voidrolled(){P0=led;led=(led>>1)|0x80;if(led==
在无限循环中,不断检测K1和K2按键状态,以改变全局变量“freq”并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该
说明:单片机控制LED灯间隔时间闪烁 所用程序很简单,实际情况可作相应变化,也有多种方式实现。proteus电路图 所需元件清单:(分别是) 51单片机 电容 瓷片电容(也可用普通电容) 晶振 红色二极管 电阻 (tip:没有给高电
for(i=0;i<20000;i++) //做20000次空循环。; //什么也不做,等待一个机器周期。} / 函数功能:主函数 (C语言规定必须有也只能有1个主函数)。/void main(void){ while(1) //无限循环。{ P0=0xfe;
用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!
用汇编编程如下:ORG 0000H LJMP MAIN MAIN:ORG 0100H MOV A ,#80H ; 高电平亮灯。如低电平亮灯,改成#7FH ;;正向循环 ZXH :MOV P0 , A RR A LCALL S50MS ; 延时50MS
while(ms--){ for(i=0;i<120;t++){ ; } }}void main(){ unsigned char i=0,j=0; PData=0x00;//全灭状态 for (i=8;i>0;i--){//控制常亮的位置,先从最高位开始,依次循环到最低
可以实现,首先随便连接一个I/O口,P1/P2/P0均可,然后赋予一初值,然后使用本征函数_cror_(循环变量,循环次数)循环右移,或者循环左移实现。左移只需改掉本征函数,同时亮灭可以先给全1,然后给全0,中间加延时,自
delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }
1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。2、具体实现方法可以参考如下程序:
单片机C语言如何实现8个LED流水灯来回流动?
uchar temp,i;定义无字符型全局变量temp,i。void delay(unsigned int z)//延时程序,大概延时1ms。{ unsigned int x ,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} uchar code table[]={ 0x3f,0x06,0x5b
1){ display(a/2);//显示计数值,以十分之一秒为单位 } } void timer0(void)interrupt 1//中断子程序 { TH0=(655536-50000)/256;TL0=(655536-50000)%256;a++;if(a==1980)a=0;//1980次是99秒 }
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;//第三
LED = 0; //关闭LED灯 while(1){ if(K1 == 0) // K1按下,增加频率 { while(K1 == 0); // 等待按键释放 freq += 20;if(freq > 100) freq = 100; // 频率上限100Hz } else if(K2 == 0
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,
电路图 如下:include
case 0: D1 = 1; D2 = 0; D3 = 0; D4 = 0; break; // 显示千位 case 1: D1 = 0; D2 = 1; D3 = 0; D4 = 0; break; // 显示百位 case 2: D1 = 0; D2 = 0; D3 = 1; D4
单片机led显示c程序
给LED编个数组,控制IO口,或者直接控制IO口,不过要看显示的28要多大,会占用比较多的IO口,道理和矩阵键盘差不多。 例程: #include//单片机头文件void delay1ms(unsigned int ms);//延时ms函数声明(可根据实际情况更改)unsigned char code led0[]={};//字码表,你自己把你要显示的字码放进去就可以了void main(){ unsigned char w,i; while(1) { //显示0 w=0x01; //行变量为第一行 for(i=0;i<8;i++) { P1=w; //行数据送P1口 P0=led0[i]; delayms(1); //列数据送P0口 w<<=1; //向下移动一行 } }}void delay1ms(unsigned int ms){ unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<110;j++)}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类单片机既是通用型又是总线型,还可以作工控用。 参考资料来源:百度百科-单片机
8个LED灯怎么可能显示出电子时钟! 8个数码管还差不多。
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类单片机既是通用型又是总线型,还可以作工控用。 参考资料来源:百度百科-单片机
ORG 00H AJMP MAIN ORG 13H AJMP EX1INT ORG 0030H MAIN: MOV P1,#0 SETB EA SETB EX1 SETB IT1 MAIN1: MOV P1,A AJMP MAIN1 EX1INT: INC A CJNE A,#0,RTI MOV A,#0 RTI: RETI END
程序思想如下 可以想象成一个整数000每次加1后显示一次知道999后溢出跳回起点继续,程序如下 ORG 0000H AJMP START START: MOV 30H,#00H ;数码管显示初值 MOV 31H,#00H MOV 40H,#00H ;显示增量 MOV 41H,#01H STL1: ACALL LED ;LED显示 ACALL DELAY0.5S ACALL BCDADD MOV A,30H ANL A,#0F0H JNZ START ;判断是不是超过999 AJMP STL1 BCDADD: CLR C MOV A,31H ADDC A,41H DA A MOV 31H,A MOV A,30H ADDC A,40H DA A MOV 30H,A RET LED: MOV A,30H ANL A,#0FH MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A MOV A,31H ANL A,#0F0H SWAP A MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A MOV A,31H ANL A,#0FH MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,A RET DELAY0.5S: MOV R6,#200 SL1: MOV R5,#250 SL2: NOP DJNZ R5,SL2 DJNZ R6,SL1 RET TAB: DB 0C0H ;0 DB 0F9H ;1 DB 0A4H ;2 DB 0B0H ;3 DB 099H ;4 DB 092H ;5 DB 082H ;6 DB 0F8H ;7 DB 080H ;8 DB 090H ;9 DB 088H ;A DB 083H ;B DB 0C6H ;C DB 0A1H ;D DB 086H ;E DB 08EH ;F END PS1:延迟0.5秒的晶振是3.57MHZ PS2:希望我的LED显示代码没写错,我是认为你是0-7接的A-DP PS3:百度的显示格式真恶心 将就着看吧 程序倒是应该没有什么错误 P4:程序已经修改 重新拷贝一下吧