delay(30000);//延时程序 P1<<=1; //左移一位 该语句等效于 P1=P1<<1 P1|=0x01; //最后一位补1,该语句等效于 P1=P1|0x01 符号"|"表示"或"if(P1==0x7f) //检测是否移到最左端?"=="表示检测

51单片机是单片机接触最早的,下边这个程序希望能帮到你。(只有主函数,就不进行硬件什么定义以及头文件包含什么的了)void delay(int times){//延时函数,times控制延时时间 int i, j;for(i = 0; i < times; i++)

include void Delay(){ unsigned char i,j;for (i=0;i<255;i++)for(j=0;j<255;j++);} void main(){ unsigned char i;unsigned char temp;P1=0xff;//p1置1,熄灯// while(1){ temp=0x01

C语言的://8个发光二极管循环点亮 include include define uchar unsigned char sbit beep=P2^3;uchar i,j,m,n,k;void delay(uchar k){for(m=k;m>0;m--)for(n=125;n>0;n--);} v

用 C51 给你写一个吧:假设开关接到P3.0,8个 LED灯 接到P1.0~P1.7,低电平 点亮。ms延时 子程序 书上都有例子,我就不再写出来了。include include define key P3^0 void main(){ u

首先就是你要轮流点亮,就是将1循环一圈,因为你要全灭一次,所以用到CY。RG 00H SJMP START ORG 30H START:MOV A ,#00 ;//清空A寄存器 SETB C ;//将CY置1,然后带进位左移就会进入将A的b0 MAINLOOP: ;//

|P1口接8个发光二极管共阳 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;

51单片机设计跑马灯的程序用(c语言)编写

试验成功的程序:ORG 0000H MOV 30H, #0 MOV 31H, #0 M_LOOP:MOV R2, #8 DISP1:CALL DL CALL SHIFT2 DJNZ R2, DISP1 MOV R2, #8 DISP2:CALL DL CALL SHIFT1 DJNZ R2, DISP2

include "reg51.h"unsigned int YSJS=0;signed char LED=0XFF;void main(void){ TMOD |= 0X10; //定时器1工作于方式1,16位定时器 TH1 = 0XFE; //定时器1定时时间=500uS TL1 = 0X0C;ET1 = 1;

就是把speed的“--”变“++”,初值由“10”变“0”嘛,然后来回切换。define uchar unsigned char define uint unsigned int include sbit P10 = P1^0;sbit P11 = P1^1;sbit P12 = P1^2;sbit P13

for(i=0;i<23;i++){ P1=LEDA[i]; delay(); }

就改一下这一条 代替 第五条 uchar table[]={0xe7,0xdb,0xbd,0x7e,0xe7,0xdb,0xbd,0x7e};

我给你一个程序,单片机为STC51,晶振为12MHz。跑马灯采用查表法,定时用查询式定时器,时间为500ms;I/O口用25只引脚,P0,P1,P2都用8个,P3用P3.0,程序用C语言。为了取得一个较好的观赏效果,对你的要求作了少许

51单片机 跑马灯程序

} } //主程序 void main(){ uint s;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);

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数

用一个寄存器做变量就可以。假如按键是一个开个,接在P1.0,八个灯在P0,低电平灯亮 程序是这样的 MOV 30H ,#00 LOP :SETB P1.0 JNB P1.0, PRESS AJMP LOP PRESS:INC 30H MOV A,30H CJNE A,#9

return 0; //无键按下,返回0 } main(){ unsigned char key;while(1){ key=kbscan();switch(key){ case 0x11:P0=0xfe;break;case 0x12:P0=0xfd;break;case 0x14:P0=0xfb;break;case 0x18:P0=0xf7;

)\r2、按第一个键:原理就是按键中断,直接跳到中断程序里,中断程序就是显示12345678(程序里是二进制码,单片机只认识0和1)。\r3、数码管移动显示,其实就是data脚的数据给的不一样,这个地方注意延时,你可以尝试

P2 = led; //按键按下取反再赋给P2口 } } }

if (k) { while(P2_7); //没有按就循环,等待按下 for (a = 0; a < 600; a++); //延时消抖 while(P2_7); //没有按就循环 } else while(!P2_7); //按下就循环,等待松开 } void ma

在单片机编写走马灯程序中,怎样实现当按下一个键使八个灯全亮,当松开按键时又回到原来的亮灯的程序中。

答疑解难 跑马灯程序 ORG 0000H LJMP MAIN ORG 0100H MAIN: JB P0.7,MAIN ;等待开始键按下 LCALL YS ;按键延时 JB P0.7,MAIN MOV A,#7FH ;是开始键按下 则跑马灯开始

|P1口接8个发光二极管共阳 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;

/ /* 程序详细功能介绍:做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上,输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0亮,重复

AJMP START START:SETB C ;跑马灯 ,一直循环255次MOV R0,#0FFH MOV A,#0 JX1:RLC A MOV P1,A LCALL DELAY500MS DJNE R0,JX1 SETB C MOV R0,#8 MOV A,#0 JX:RLC A ;P1.0>>>P1.7依次亮1S MOV

include "reg51.h"define uchar unsigned char void delay05s(void){ unsigned char i,j,k;for(i=5;i>0;i--)for(j=200;j>0;j--)for(k=248;k>0;k--);} void main(void){ uchar b;const unsigned cha

请问如何用单片机编写跑马灯程序啊?

你首先要确定你的电路。选择什么单片机和数码管,8个按键最简单8个IO口控制。一般简单的是用三极管驱动数码管。如果你会C语言的话,很容易上手。自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个就可以类推)\r\n\r\n1、初始值为0:上电复位后,单片机驱动数码管显示0.(如果不会,百度里搜51控制数码管等关键字,特别多试验电路和程序。)\r\n2、按第一个键:原理就是按键中断,直接跳到中断程序里,中断程序就是显示12345678(程序里是二进制码,单片机只认识0和1)。\r\n3、数码管移动显示,其实就是data脚的数据给的不一样,这个地方注意延时,你可以尝试改变延时时间看看效果。\r\n4、同3;\r\n5、12345678和ABCDEFGH的二进制码不同而已;\r\n6、同5.\r\n7、数码管全亮就相当于给data脚全为高(或者为低),和电路有关。\r\n8、同7.\r\n9、点阵显示按键键号。(数码管有小数点,只是也是一个data脚而已)\r\n\r\n----------------------------------------------------------------------自己多去百度找找学学,对个技能还是有点用的。
比如你的8个灯连在 P0口,如果是阴极的 你只要先定义 sbit P0^0=LED0; .....一定定义下去 然后再定义一个按钮 比如P1.1 sbit P1^1=key; 代码里写 while(true){if(key==1){LED0=0;LED1=0;..//把你要亮的灯置0就行了。阳极的话置1}}
|P1口接8个发光二极管共阳 #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; delay(); for(i=1;i<8;i++) { a=temp<<i; b=temp>>(8-i); P1=a|b; delay(); } for(i=1;i<8;i++) { a=temp>>i; b=temp<<(8-i); P1=a|b; delay(); } } } 扩展资料: Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。 参考资料来源:百度百科-51单片机
答疑解难 跑马灯程序 ORG 0000H LJMP MAIN ORG 0100H MAIN: JB P0.7,MAIN ;等待开始键按下 LCALL YS ;按键延时 JB P0.7,MAIN MOV A,#7FH ;是开始键按下 则跑马灯开始运行 LL: MOV P1,A LCALL YS ;显示延时 RR A ;循环右移一位 JB P0.6, LL ;没有按下停止键 则继续跑马 LCALL YS ;按键延时 JB P0.6,LL ;按下停止键 则停止跑马;否则继续跑马 MOV A,#0FFH MOV P1,A SJMP MAIN ;转到程序开始处,等待开始键的按下 YS: MOV R7,#150 ;延时子程序 YL: MOV R6,#200 YY: NOP DJNZ R6,YY DJNZ R7,YL RET END 硬件接口电路如下: 哈哈 还满意吗 就请给俺选择(满意选项)吧
51单片机是单片机接触最早的,下边这个程序希望能帮到你。(只有主函数,就不进行硬件什么定义以及头文件包含什么的了) void delay(int times){//延时函数,times控制延时时间 int i, j; for(i = 0; i < times; i++) for(j = 0; j < 210; j++) ; } int main(void){ unsigned char data, i; while(1){ data = P1;//把开关值读回来 for(i = 0; i < 8; i++){ P0 = ~(0x01 << i); //某位为高电平某位对应的灯亮 delay(data);//把读取的开关值用来控制延时 } } }
给个你参考 ******* /* 实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令。 * 实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。 */ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上, *输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0亮,重复循环。 */ ORG 0000H LJMP START ORG 0030H START: MOV R2,#8 ;左移次数 MOV A,#0FEH ;A的初始值,即 P0.0的L0 点亮 SETB C LOOP: MOV P0,A LCALL DELAY RLC A ;左移流水灯(带进位的左移),即亮点向P0口的高位移动 DJNZ R2,LOOP MOV R2,#8 ;右移次数 LOOP1: RRC A ;右移流水灯 MOV P0,A LCALL DELAY DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END