#include<reg51h>
#include<intrinsh>
#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 <AT89X51h>
#define uchar unsigned char
#define uint unsigned int
bit flag_1s=0;
uchar code tab[8]={1,2,4,8,16,32,64,128};//[第1小题用这个表]
//uchar code tab[8]={0x05,0,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)//50ms20=1000ms
{
i=0;
flag_1s=1;
}
}
#include<reg52h>
#include <intrinsh>
void main()
{
unsigned int x,y;
P1=0xfe;
while(1)
{
P1=_crol_(P1,1);
for(x=500;x>0;x--)
for(y=113;y>0;y--);
}
}
P1接二极管(低电平有效)每隔x毫秒流动一下(可改变x的值)
震荡周期为110592MHz
把上面的P1=0xfe;改为P1=0x01;!!!
高电平也许要用上拉电阻!!
#include<reg52h>
#include<intrinsh>
#define uint unsigned int
#define uchar unsigned char
sbit key=P0^1; //用的时候需加上拉电阻
uint t;
void Delay_ms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void Led_F() //从上往下流动
{
uchar a=0xfc; //a=11111100
while(t) //当按了一下按键流水灯开始
{
P1=a;
Delay_ms(500);
a=_crol_(a,2); //a数据位向左移两位11111100->11110011
if(t==2) //如果是第二次按下按键则回到初始状态
{
t=0;
P1=0xff;
break;
}
}
}
void Key_T() //键盘检测
{
if(key==0)
{
Delay_ms(50);
if(key==0)
{
t++;
}
}
}
void main()
{
while(1)
{
Key_T();
Led_F();
}
}
以上就是关于51单片机流水灯用C语言编写的设计程序是什么全部的内容,包括:51单片机流水灯用C语言编写的设计程序是什么、51单片机流水灯程序、试编写一个流水灯的程序(C语言)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)