这里我们利用Proteus绘制单片机流水灯的电路图,keil c51编写流水灯的程序。仿真既可以帮助我们学习,也可以检验电路是否合理。防止电路已经焊接完成,但设计不合理的情况。我们打开Proteus软件,点击左边菜单栏的P按钮 然后再搜索框

unsigned long dispalyCount;unsigned int mCount;unsigned char table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};void display(unsigned long displaydata){

void Init_GPIO( )//端口引脚初始化,关闭所有指示灯 { LED1_OFF( ) ;LED12_OFF( ) ;} void Delay_ms( u16 dat ) //延时函数 { u16 i, j;for(i = dat; i>0; i--){ for (j=300; j>0; j

include "reg51.h"unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED灯的花样数据 void delay(unsigned char time){ //延时函数 unsigned int j=15000;for(;time>0;time--)for(;j>0;j--);} void m

led8 = 0;//点亮剩余的灯 //省略……while(1);}

这个流水灯程序最好用数组定义8个状态的灯,这样用for循环就可以实现了。简洁明了,易读性强,也容易理解。include define uchar unsigned char code uchar ledtab[10]= { 0xff,0xe7,0xc3,0x81,0x00,//

51单片机八个灯的流水灯代码:1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;

51单片机流水灯程序

这个流水灯程序最好用数组定义8个状态的灯,这样用for循环就可以实现了。简洁明了,易读性强,也容易理解。include define uchar unsigned char code uchar ledtab[10]= { 0xff,0xe7,0xc3,0x81,0x00,//

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个流水

//点亮剩余的灯 //省略……while(1);}

单片机型号应该是stc89C51,既然是用STC单片机,你这是要用开发板吧,那买开发板时应该有原理图的,看原理图,可知道8个LED灯接在哪个并行口了,才好写程序的。下面给你一个仿真图,P0口接8个LED流水灯。

求一份stc51单片机流水灯的程序和电路图!谢谢大佬们了!

这里我们利用Proteus绘制单片机流水灯的电路图,keil c51编写流水灯的程序。仿真既可以帮助我们学习,也可以检验电路是否合理。防止电路已经焊接完成,但设计不合理的情况。我们打开Proteus软件,点击左边菜单栏的P按钮 然后再搜索框

include include //sbit LED1=P1^1;//sfr LED2=P2;unsigned char a;unsigned int b;unsigned int c;unsigned int d;void delay(int z);void main(){ while(1){ for(a=0x01;a!=0x0

看看这个,用51单片机做的 //P2.0、P2.1、P2.2三个口分别接黄红绿三个信号灯,每隔59秒红灯和绿灯轮流亮和暗,//第60秒黄灯持续亮一秒,此时其他灯不亮。include define uchar unsigned char sbit yellow

proteus电路图 画法依旧不说,给出元件清单,其实都差不多,与上篇一致51单片机 电容 瓷片电容 晶振 红色二极管 电阻 电路图如图 程序清单 说明:流水灯的闪亮方法肯定不是唯一的,按照各种形式都可以写出所需的程序,这里只用

51单片机流水灯的程序加电路图

sbit led1 = P2^0;sbit led2 = P2^1;sbit led3 = P2^2;sbit led4 = P2^3;sbit led5 = P2^4;sbit led6 = P2^5;sbit led7 = P2^6;sbit led8 = P2^7;void main(){ int i,j;//点亮第一个灯

可以通过将单片机的输出引脚连接到一个适当大小的电阻上,然后将电阻的另一端连接到VCC引脚,从而实现从单片机输出5V电压。3、通过单片机的PWM引脚和滤波电路输出:51单片机的PWM引脚可以输出一个脉冲宽度可调的信号。

工具:STC系列51单片机、串口转换器(USB转TTL 或232转TTL)材料:实验板一块(可以买现成的,也可以买面包板自己搭建),电阻、LED灯 若干,5V电源等。以下程序可以直接用Keil C 直接编译执行。//可以通过左移函数_crol_

我们打开Proteus软件,点击左边菜单栏的P按钮 然后再搜索框里输入80c51,选择第一个就是80c51单片机 同理,我们在搜索框里面输入led 找到Optoelectronics,然后再里面选择LED-RED 红色的led,当然其他颜色也可以 点击鼠标右键可以

1、首先要设计电路图,利用proteus软件进行电路图的设计。所需元器件:AT89C51单片机1个。LED-RED8个。电源VCC1个。2、使用keil4软件进行流水灯程序的编辑。3、方法一编写程序采用的是左移函数(_crol_(a,b))和右移函

51单片机流水灯5v怎么画

单片机型号应该是stc89C51,既然是用STC单片机,你这是要用开发板吧,那买开发板时应该有原理图的,看原理图,可知道8个LED灯接在哪个并行口了,才好写程序的。下面给你一个仿真图,P0口接8个LED流水灯。
流水灯还要什么电路图?阴极随便接2 个IO口,阳极串一小电阻(320~510)到+5V 。 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV R0,#8 MOV A,#0FEH DISP: MOV P0,A ACALL DLY200 RL A DJNZ R0,DISP MOV R0,#8 MOV P0,#0FFH DISP1: MOV P1,A ACALL DLY200 RL A DJNZ R0,DISP1 MOV R0,#8 MOV P1,#0FFH AJMP DISP DLY200: ;延时200us,误差 0us MOV R7,#04H DL1: MOV R6,#74H DL0: MOV R5,#0D6H DJNZ R5,$ DJNZ R6,DL0 DJNZ R7,DL1 NOP RET END
给你这个双向流水灯C语言程序,经过调试成功的,按程序的内容配置硬件即可。 #include void delay(unsigned int i); char led; main() { unsigned char i; while(1) { led=0xfe; for(i=0; i<8; i++) { P2=led; delay(500); led=led<<1; led=led|0x01; if(led==0x7f) break; } for(i=0; i<8; i++) { P2=led; delay(500); led=led>>1; led=led|0x01; if(led==0x80); } } } void delay(unsigned int i) { unsigned char j; for(i; i>0; i--) for(j=255; j>0;j--); }
你认真分析原理图啊,上面明显接成共阳的了。 1、51单片机上电时,端口都是高电平的,只有运行程序,电平才可能产生变化。复位时,端口也是高电平。 2、你这仿真图中,LED正端都接到电源了,负端接单片机IO,根据二极管正向导通原理,此时负端肯定要为低电平,二极管才导通,才会亮。 所以,你要点亮哪个LED,你就要让那个IO口输出0。 0xfe,二进制为1111 1110,正好是P0.0输出0,其它都为高,所以P0.0那个灯就亮。 你要是输出0x01,二进制为0000 0001,可以看到,除了P0.0高电平,其它都是低电平。那么,P0.0那个灯肯定是不会亮的,而其它几个灯肯定都会亮。 你要是想输出1,灯亮,你就要把二极管换一种接法。 这样说,你明白嘛?
流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下: ORG 0000H ;复位启动AJMP START ;ORG 001BH ;T1中断AJMP T1INT ; ;定义变量========================YSJS EQU 30H;延时计数器LED EQU 31H;LED控制缓冲器 ;主程序==========================START: MOV LED,#0FEH ;初始化数据MOV YSJS,#0 ;MOV TMOD,#10H ;定时器1工作于方式1,16位定时器MOV TL1,#0B0H ;设置定时初值MOV TH1,#3CH ;定时时间=50mSSETB ET1 ;使能定时器1中断SETB TR1 ;启动定时器1SETB EA ;开总中断 MOV P1,LED ;初始化流水灯LOOP: JMP LOOP ;循环等待中断T1INT: PUSH PSW ;定时器1中断程序PUSH ACC ;保护现场MOV TH1,#3CH ;定时时间=50mSMOV TL1,#0B0H ;INC YSJS ; PUSH ACC ;保护ACCMOV A,YSJI ;CJNE A,#2,QT1 ;50mS*2=100mSMOV P1,LED ;MOV A,LED ;RL A ;累加器A的值循环左移1位MOV LED,A ;MOV YSJS,#0 ;QT1: POP ACC ;恢复现场POP PSW ;RETI ;返回主程序END ;汇编程序结束 扩展资料: 实现流水灯的三个方法: 第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。 第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。 第三种,库函数实现流水灯。利用左移函数进行。
程序如下,仿真见附件。有问题请追问。#include #define uchar unsigned char#define uint unsigned intbit flag_1s=0;uchar code tab[8]={1,2,4,8,16,32,64,128};//[第1小题用这个表]//uchar code tab[8]={0x05,0x0a,0x50,0xa0,0xaa,0x55,0xff,0x00};//[第2小题用这个表]void InitTimer1(void){ TMOD = 0x10; TH1 = 0x3C; TL1 = 0x0B0; EA = 1; ET1 = 1; TR1 = 1;}void main(void){ static uchar j; InitTimer1();P0=0;P1=0;P2=0;P3=0;flag_1s=1;while(1){if(flag_1s==1){flag_1s=0;P2=tab[j];j++;if(j>=8) j=0;}}}void Timer1Interrupt(void) interrupt 3{ static uchar i; TH1 = 0x3C; TL1 = 0x0B0; //add your code here! i++; if(i>=20)//50ms*20=1000ms { i=0; flag_1s=1; }}