‘壹’ 如何用一个STC单片机做一个跑马灯,菜鸟一只,最好用详细的过程
# include <reg52.h>
# include <intrins.h> //循环左移右移函数
void delay1ms(unsigned int i)
{
unsigned char j;
while (i--)
{
for (j=0; j<115; ++j) //1ms基准延时程序
{
;
}
}
}
void main()
{
P0 = 0XFE; // P0灯
while (1)
{
P0 = _crol_(P0,1); // P0左移1位
delay1ms(100);
}
}
自己根据你的板子 改下参数
‘贰’ 单片机跑马灯课程设计从开始到结尾到底该怎么做!!!!!急
import java.applet.Applet;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
public class Welcome extends Applet {
int pos = 0;
Image graph;
int w=0;
String str = "热烈欢迎2009届新生入学";
Font f = new Font("黑体", Font.BOLD, 20);
Color c=new Color(0,255,255);
public Welcome(){
FontMetrics fm = getFontMetrics(f);
w = fm.stringWidth(str);
pos=w;
}
public void paint(Graphics g) {
g.setFont(f);
g.setColor(c);
g.drawString(str, pos-w, 40);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
pos = pos + 5;
if (pos-w > getWidth())
pos = w;
repaint();
}
}
‘叁’ 单片机跑马灯程序 汇编语言编写,很简单
程序1:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#5FH
LOOP:
MOVA,P2
MOVB,A
MOVP0,A
MOVP1,#0FFH
LOOP1:
LCALLDELAY
MOVC,P1.7
MOVA,P0
RLCA
MOVP0,A
MOVA,P1
RLCA
MOVP1,A
MOVA,P2
CJNEA,B,LOOP
SJMPLOOP1
DELAY:
MOVR2,#60
DELAY1:
MOVR3,#250
DJNZR3,$
DJNZR2,DELAY1
RET
END
程序2:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#5FH
JNBP2.0,LOOP1;
JNBP2.1,LOOP2;
SJMPMAIN
LOOP1:
MOVP0,#0FEH
MOVP1,#0FFH
LOOP11:
MOVC,P1.7
MOVA,P0
RLCA
MOVP0,A
MOVA,P1
RLCA
MOVP1,A
JNBP2.1,LOOP2
SJMPLOOP11
LOOP2:
MOVP0,#0FCH
MOVP1,#0FFH
LOOP21:
MOVC,P1.7
MOVA,P0
RLCA
MOVP0,A
MOVA,P1
RLCA
MOVP1,A
JNBP2.0,LOOP1
SJMPLOOP21
DELAY:
MOVR2,#60
DELAY1:
MOVR3,#250
DJNZR3,$
DJNZR2,DELAY1
RET
END
‘肆’ 单片机跑马灯程序
CSEG AT 0000H
LJMP START
CSEG AT 401BH
LJMP INT
CSEG AT 4100H
START: MOV A,#01H
MOV R1,#03H
MOV R0,#5H
MOV TMOD,#10H
MOV TL1,#57H
MOV TH1,#9EH
ORL IE,#88H
SETB TR1
LOOP1: CJNE R0,#00,DISP
MOV R0,#5H
INC R1
CJNE R1,#27H,LOOP2
MOV R1,#03H
LOOP2: MOV A,R1
MOVC A,@A+PC
JMP DISP
DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH
DB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH
DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH
DB 0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H
DISP: MOV P1,A
JMP LOOP1
INT: CLR TR1
DEC R0
MOV TL1,#57H
MOV TH1,#9EH
SETB TR1
RETI
END
‘伍’ 51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下,好了可以加分
程序1:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
LOOP:
MOV A,P2
MOV B,A
MOV P0,A
MOV P1,#0FFH
LOOP1:
LCALL DELAY
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
MOV A,P2
CJNE A,B,LOOP
SJMP LOOP1
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
程序2:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
JNB P2.0,LOOP1 ;
JNB P2.1,LOOP2 ;
SJMP MAIN
LOOP1:
MOV P0,#0FEH
MOV P1,#0FFH
LOOP11:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.1,LOOP2
SJMP LOOP11
LOOP2:
MOV P0,#0FCH
MOV P1,#0FFH
LOOP21:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.0,LOOP1
SJMP LOOP21
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
‘陆’ 单片机跑马灯汇编程序详细解释
ORG
0000H
SJMP
START
ORG
0030H
START:
MOV
A,
#0FEH
;
先让第一个发光二极管点亮
LOOP:
MOV
P1,
A
;
从P1口输出到发光二极管
MOV
R1,
#100
;
延时0.5秒
DEL1:
MOV
R2,
#200
DEL2:
MOV
R3,
#7
DEL3:
DJNZ
R3,
DEL3
DJNZ
R2,
DEL2
DJNZ
R1,
DEL1
RL
A
;
左移一位,点亮下一个发光二极管
LJMP
LOOP
END
这个是我写的跑马灯程序,没有左右振荡,自己参考参考加上去吧
‘柒’ 51单片机16位跑马灯程序设计
#include <REG52.H>
unsigned char RunMode;
//**********************************System Fuction*************************************************
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
unsigned char code LEDDisplayCode[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, //0~7
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
void Display(unsigned char Value)
{
P3 = LEDDisplayCode[Value];
}
void LEDFlash(unsigned char Count)
{
unsigned char i;
bit Flag;
for(i = 0; i<Count;i++)
{
Flag = !Flag;
if(Flag)
Display(RunMode);
else
Display(0x10);
Delay1ms(100);
}
Display(RunMode);
}
‘捌’ 51单片机设计跑马灯的程序用(c语言)编写
|P1口接8个发光二极管共阳
#include <AT89X51.H>
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();
}
}
}
(8)单片机课程设计跑马灯扩展阅读:
Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。
‘玖’ 单片机 跑马灯 代码详解
ORG
0000H
;开机上电主程序入口
AJMP
START
;系统一进来就转到主程序
ORG
0030H
;主程序地址
START:
MOV
A,
#0FFH
;主程序开始,A中初始化成全1
CLR
C
;c清零
MOV
R2,
#08H
;R2左转循环计数器
LOOP:
RLC
A
<<C+A+C<<带进位循环左移,A中的内容在8此循环中从0位到7位依次变0
MOV
P2,
A
;送到P2,使P2从0位到7位依次点亮LED
CALL
DELAY
;单片机运行很快,为了能看到灯的变化,必须延迟,把速度降下来
DJNZ
R2,
LOOP
;R2每次减1后判断是否=0,8次后=0程序才会下行,否则会跳回LOOP
MOV
R2,#07H
;R2右转循环计数器
LOOP1:
RRC
A
>>C+A+C>>带进位循环右移,A中的内容在8此循环中从7位到0位依次变0
MOV
P2,
A
;送到P2,使P2从7位到0位依次点亮LED
CALL
DELAY
;和上个循环一样,延时
DJNZ
R2,
LOOP1
;R2每次减1后判断是否=0,7次后=0程序才会下行,否则会跳回LOOP1
JMP
START
;跳回程序起始位置重复下一个循环
DELAY:
MOV
R3,
#20;延时子程序,这个应该不用解释了吧
D1:
MOV
R4,
#200
D2:
MOV
R5,
#248
DJNZ
R5,
$
DJNZ
R4,
D2
RET
END