首页 > 软件 > 求stc89c52单片机按键控制流水灯的程序可用keil直接执行的程序

求stc89c52单片机按键控制流水灯的程序可用keil直接执行的程序

软件 2023-07-16

关于Keil开发STC89C52RC单片机程序的问题

int main{ ..........//表达式 ......... while(1) { //把你要循环的函数放在这里 for(i=0;i<10;i++) { P26=1; ........ ....... } } } 单片机入口函数main()里面要是没有无限循环函数while(1),那么就会只执行一遍,并且程序往下会崩溃!!(return 0)可以不要加入!!!无限循环才能不停的一遍一遍又一遍!!

求用STC89C52RC单片机实现流水灯(C语言)

用STC89C52RC单片机实现流水灯,这是最简单的程序,用左移函数_corl_( )实现很容易。P0口接8个LED灯,用proteus 仿真时的仿真图和仿真效果如下。

52单片机独立按键控制LED流水灯

怎么个控制法,按一下,流水灯停下,再按一下开始,

还是按一下对应亮一个或亮下一个

还是想知道怎么用按键

教你用按键的方法,功能你自己去实现。把io口拉高电平后,接按键,如果按键按下,会接地,读出的io口电平会变为低,这样就可以判断说法按下按键,但要一直重复读取io口数据,而且要防抖动。


unsignedinttemp,k=9;
P2=0xff;//用P2检测键盘
temp=P2;
temp=temp&0xff;
if(temp!=0xff)//接地了,有按下
{
delayxms(10);//等键盘稳定,以确认不是误按、抖动
temp=P2;//再次检测
temp=temp&0xff; //防抖,确认是按下
if(temp!=0xff)//确认不是误按、抖动
{
switch(temp)
{
case0xfe:k=0;break;
case0xfd:k=1;break;//不同情况做出不同处理,变为0的是按下的键
case0xfb:k=2;break;
case0xf7:k=3;break;
case0xef:k=4;break;
case0xdf:k=5;break;
case0xbf:k=6;break;
case0x7f:k=7;break;
}
}
}

求52单片机流水灯程序

//单片机流水灯程序,是学习单片机的最简单的程序。

//流水灯

#include //51头文件

#define DY_PORT P1 //设置LED连接的I/O组

#define DY_SPEED 100 //设置每一个明亮级的停留时间(值域:0~65535)

void delay (unsigned int a){ // 1ms延时程序

unsigned int i;

while( --a != 0){

for(i = 0; i < 600; i++);

}

}

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;

}

}

}

跪求!!!STC89C52单片机,用八个按键控制分别控制八个LED灯的代码(C语言)

[已完成!]电路图如下,


#include
#include


unsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
void delay_ms(unsigned int ct) //延时
{
unsigned int t,i;
for(i=0;i{
t=115;
while(--t);
}
}
void main(void)
{
// Write your code here
unsigned char ct=100;
while (1) //主循环
{
switch(P1) //P1口作为独立按键输入端,检测端口电平并做如下判断
{
case 0xfe:P0=dofly_table[1];LED0=0;break;//0xfe = 1111 1110,
//说明连接在P3.0端口的按键被按下,显示对应的数字然后跳出循环
case 0xfd:P0=dofly_table[2];LED1=0;break;//调用表中的第三个
//元素 0xa4 下标 0 才表示数组中的第一个元素
case 0xfb:P0=table[3];LED2=0; break;
case 0xf7:P0=table[4];LED3=0;break;
case 0xef:P0=table[5];LED4=0;break;
case 0xdf:P0=table[6];LED5=0;break;
case 0xbf:P0=table[7];LED6=0;break;
case 0x7f:P0=table[8];LED7=0;break;
default:break; //如果都没按下,直接跳出
}
//主循环中添加其他需要一直工作的程序
}
}

//如果帮到你的话,点一个赞吧!硬件电路工程师-帝国卫兵Tt


标签:单片机 信息技术 流水灯 硬件 程序

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18