感悟网 导航

51单片机流水灯用C语言编写的设计程序??? 51单片机流水灯用C语言编写的设计程序是什么?

作者&投稿:文聂 (若有异议请与网页底部的电邮联系)
51单片机c语言编写流水灯程序?~

51单片机的定时器估计是所有MCU里面最简单的定时器了,所涉及到的寄存器不多,就那么几个,如TMOD(模式寄存器),TCON(控制寄存器),具体内容你可以去查看51的DATA SHEET。
在使用的时候,先设置定时器模式,再设置控制寄存器,这些设置都是按照自己的需要来定。
例如你这个功能,4S的定时,你可以这么设置。
/**********************************************************
定时器初始化函数,50mS定时,为什么是50mS不是4S?因为定时器为16位定时模式,最大定时时间为65.535mS,以50mS方便计算

***********************************************************/
void Timer_Init( void )
{
TMOD = 0x01;//定时器0 ,工作方式1,十六位定时模式

TH0 = ( 65536 - 50000 ) / 256; //高八位数据

TL0 = ( 65536 - 50000 ) % 256;//低八位数据 定时时间大概为50mS,具体视晶振频率而定

EA = 1;//因为你要用到中断,所以打开总中断

ET0 = 1;//运行定时器0的中断

TR0 = 1;//定时器0开始计数,当你需要让它停止计数的时候让它等于0就可以了

}
void main()
{
Timer_Init();//调用定时器初始化函数
while(1)
{
//你的程序

}

}
//再写个中断服务函数
void Timer0( void ) interrupt 1
{
static unsigned char count = 0;//该变量用来计50mS的个数,当count = 8时,为4S
TH0 = ( 65536 - 50000 ) / 256; //再给定时器赋初值,否则将改变为复位值
TL0 = ( 65536 - 50000 ) % 256;//
count++;

if( count == 8 )

{
count = 0;

//4S到了,该干嘛干嘛去

}

}

#include
#include
#define uchar unsigned char
void delay(void)
{
uchar i,j;
for(i=0;i<150;i++)
for(j=0;j<240;j++);
}
main()
{
uchar led,i,j;
while(1)
{
for(i=0;i<8;i++)
{
led=0xfe<<i;
for(j=0;j<8-i;j++)
{
P0=led;
led=_crol_(led,1);
delay();
}
}
}
}

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint z);

main()
{
uchar aa;
while(1)
{
aa=0xfe;
P1=aa;
delay(100);
while(1)
{
aa=_crol_(aa,1);
P1=aa;
delay(100);
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

其实很简单
就是用_cror_()函数或者 _crol_()函数,第一个是右移第二个是左移

/*********************************************************************************************
程序名:    8路流水灯 
编写时间:  2009年5月13日
硬件支持:  STC12C4052AD 外部12MHZ晶振
接口说明:  8个LED彩灯接P1口
修改日志:  
  NO.1-2009年5月14日 在程序前面加入参数定义项 
/*********************************************************************************************
说明:
根据参数设置产生流水LED效果。

/*********************************************************************************************/

#include <REG51.h> //51头文件

/*********************************************************************************************/

#define DY_PORT P1 //设置LED连接的I/O组
#define DY_SPEED 100 //设置每一个明亮级的停留时间(值域:0~65535)

/*********************************************************************************************

bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED
#define [代替名] [原名] //用代替名代替原名(可以方便修改常改或调试的值)例:#define LED P1
sbit [自定义名] = [系统位名] ; //自定义系统位名。例:sbit Add_Key = P3 ^ 1;
unsigned char [自定义名] ; //定义一个0~255的整数变量.例:unsigned char a;
unsigned int [自定义名] ; //定义一个0~65535的整数变量

/*********************************************************************************************/
void delay (unsigned int a){ // 1ms延时程序
unsigned int i;
while( --a != 0){
for(i = 0; i < 600; i++);//STC单片机在外部晶振为12MHz时i值上限为600
} //AT89C51单片机在外部晶振为12MHz时i值上限为125
}
/*********************************************************************************************/
void main(void){
unsigned int i;
unsigned int temp;
while(1){
temp=0x01;
for(i=0;i<8;i++){ //8个流水灯逐个闪动
DY_PORT=~temp;
delay(DY_SPEED); //调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++){ //8个流水灯反向逐个闪动
DY_PORT=~temp;
delay(DY_SPEED); //调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++){ //8个流水灯依次全部点亮
DY_PORT=temp;
delay(DY_SPEED); //调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++){ //8个流水灯依次反向全部点亮
DY_PORT=temp;
delay(DY_SPEED); //调用延时函数
temp>>=1;
}
}
}
/*********************************************************************************************/

《51单片机16个灯流水循环,C语言》
答:代码已修改,并仿真通过。include<reg51.h> //包含单片机寄存器的头文件#include "intrins.h"#define uchar unsigned char#define uint unsigned int sbit CLK=P1^0; sbit IN =P1^1;//uchar code a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uint code w[]={0xfffe,0xfffd,...

《如何用c语言编写流水灯?》
答:C语言流水灯程序是学习的基础,一定要搞懂!给你发两个!\x0d\x0a(一)\x0d\x0a#include //51系列单片机定义文件\x0d\x0a#define uchar unsigned char //定义无符号字符\x0d\x0a#define uint unsigned int //定义无符号整数\x0d\x0avoid delay(uint); //声明延时函数\x0d\...

《单片机流水灯怎么实现的?》
答:单片机流水灯的定义 单片机流水灯是一种常见的电子装置,通过单片机控制多个LED灯以一定的顺序逐个亮起,形成流水般的效果。其原理是通过编写程序来控制单片机的输出端口,从而控制LED灯的亮灭状态。在实际应用中,可以使用不同的单片机型号和开发环境来实现流水灯功能,具体的实现方法会因硬件环境和软件工具的...

《用c语言编写流水灯。》
答:C语言流水灯程序是学习的基础,一定要搞懂!给你发两个!(一)include<reg51.h> //51系列单片机定义文件 define uchar unsigned char //定义无符号字符 define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(){ uint i;uchar temp;while(1){ temp=0x...

《51单片机用P0和P1口控制16路彩灯做流水灯,用C语言怎么写,我只会单...》
答:你可以使用 第一:全局变量,如果P1工作,P0 停止,...或者:定义P0口的同时,定义P1口,比方说原来是P0=255;delay();P0=128;delay();...改成P0 =255;P1=255;delay();P0=128:P1=255;delay();...我没有51的开发板,只是用软件仿真了,这个程序仅供参考 include<reg52.h> include<intrins.h> ...

《很简的51单片机C语言流水灯程序》
答:1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:include<reg51.h> //51单片机头文件#include <intrins.h> //包含有左右循环移位子函数的库#define uint unsigned int //宏定义#define uchar unsigned char //宏定义sbit beep=P2^3;void delay(uint z) //延时函数,z...

《51单片机用C语言如何写四个数码管的流水灯程序?》
答:/ 文件名 : 流水灯.c 描述 : 该程序实现LED的流水灯显示。该程序用于学习 LED流水灯 的控制方法。本例中是调用的 intrins.h 中的函数实现的循环移位。创建人 : 东流,2009年8月27日 版本号 : 1.0 / include<reg52.h> include<intrins.h> define uchar unsigned char define uint...

《51单片机流水灯程序》
答:程序如下,仿真见附件。有问题请追问。#include <AT89X51.h>#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小...

《51单片机c语言编写流水灯程序?》
答:51单片机的定时器估计是所有MCU里面最简单的定时器了,所涉及到的寄存器不多,就那么几个,如TMOD(模式寄存器),TCON(控制寄存器),具体内容你可以去查看51的DATA SHEET。在使用的时候,先设置定时器模式,再设置控制寄存器,这些设置都是按照自己的需要来定。例如你这个功能,4S的定时,你可以这么设置...

《谁能帮我写一个循环流水灯的c语言编程》
答:include<reg51.h> //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint); //声明延时函数void main(){ uint i; uchar temp; while(1) { temp=0x01; for(i=0;i<8;i++) //8个流水灯逐个闪动 ...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网