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

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-16
单片机AT89C51,八个按键控制八个LED灯.求电路图和C程序!急急急急!在线等!!!!!

电路(图)不合适
1、P0口应该用于输出,你可以接LED,且负极接管脚,正极接VCC.
2、按键任意接P1~P3
仅告诉这些!!

/*******************************************************
* 程序名称:hc595.c
* 程序功能:595的应用文件
* 程序作者:吴鉴鹰
* 创建时间:2014-3-10
* 修改时间:
* 程序版本:V0.1
******************************************************/
/*
* 包含头文件
*/
#include "inc/hc595.h"
#include "reg51.h"

/*
* 定义引脚
*/
/* 时钟信号线引脚定义 */
sbit HC595CLK = P0^5;
/* 片选信号线引脚定义 */
sbit HC595RCK = P0^6;
/* 数据输入引脚定义 */
sbit HC595DATA = P0^7;

/******************************************************
* 函数名称:SendData
* 函数功能:74HC595数据的发送
* 入口参数:unsigned int uiDataOne, unsigned int uiDataTwo
* 出口参数:void
*******************************************************/
void SendData(unsigned int uiDataOne, unsigned int uiDataTwo)
{
unsigned int i = 0;
/* 将片选信号置为低电平 */
HC595RCK = 0;

/* 输入第一个数据:uiDataOne */
for (i = 0; i < 8; i++)
{
/* 给出脉冲信号,首先将CLK置为0 */
HC595CLK = 0;
if (0 != (uiDataOne & 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/* 给出脉冲信号,首先将CLK置为1 */
HC595CLK = 1;
/* 准备第二个数据 */
uiDataOne = uiDataOne << 1;
}

/* 输入第二个数据:uiDataTwo */
for (i = 0; i < 8; i++)
{
/* 给出脉冲信号,首先将CLK置为0 */
HC595CLK = 0;
if (0 != (uiDataTwo & 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/* 给出脉冲信号,首先将CLK置为1 */
HC595CLK = 1;
/* 准备第二个数据 */
uiDataTwo = uiDataTwo << 1;
}

/* 将片选信号置为高电平 */
HC595RCK = 1;
}

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


#include <reg52.h>
#include <stdio.h>



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<ct;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



按键按下,不松开,灯就亮。

仿真图如下:

看到这个题目,已经过去很多天了。

也不知道,楼主还需要程序吗?



我不知道,还没有学过这个,所以我才不知道的,对不起😣

  • STC89C52RC与普通89C52有什么区别?
    答:STC89C52RC与普通89C52的主要区别在于STC89C52RC是一款增强型8051单片机,而普通89C52是标准的8051单片机。首先,在硬件特性上,STC89C52RC相较于普通89C52具有更高的集成度和更多的功能。STC89C52RC内置了更丰富的外设接口,如更多的I/O端口、串口通信、定时器等,使得在开发过程中可以更加灵活地满足各种需求。...
  • stc89c52是什么单片机?
    答:STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决...
  • 单片机的AT89C51和STC89C52的区别是什么?
    答:1、生产的公司不同 AT89C51是Atmel公司生产;STC89C52是宏晶公司生产。2、RAM和ROM不同 AT89C51是128byte RAM,4K ROM;STC89C52是256Byte,8K ROM。3、定时器数量不同 AT89C51有T0、T1两个16位定时器;STC89C52有T0、T1、T2三个16位定时器。
  • stc89c52属于51单片机吗
    答:STC89C52属于51单片机系列。STC89C52是STC公司推出的一款基于MCS-51内核的单片机,它是89C51的升级版本。STC89C52与89C51兼容,但89C51不能兼容89C52。STC89C52的P1.0和P1.1引脚具有第二功能,可以作为定时器T2的外部引脚使用。
  • stc89c52是什么类型的单片机芯片
    答:STC89C52RC是宏晶公司的增强型MCS-51单片机,与Atmel公司的AT89C52相比,有以下优点:支持STC的2线制下载方式,下载程序更方便;支持6T模式(在6T模式下,6个时钟周期就是一个机器周期);片内集成了4kB容量的E²PROM;带有P4口,具有更多的I/O;程序存储器拥有更多的擦写寿命(STC标称可以擦写10...
  • stc89c52是stc的哪种型号?
    答:STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的...
  • STC89C52RC属于什么系列的单片机?
    答:【STC89C52RC】是宏晶科技生产的STC89系列单片机,具体代码意思如下: 主要功能如下: 【单片机】是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/...
  • 写出STC89c52、AT89c51、STM32这三类型单片机的区别?
    答:STC89c52、AT89c51和STM32是三种不同类型的单片机,具有不同的规格和功能。STC89c52:基于8051单片机架构 内置8 KB闪存,可以存储程序代码 具有32 I/O管脚,用于与外部设备进行通信 支持基本的外设,如串口、定时器/计数器、中断等 AT89c51:同样基于8051单片机架构 内置32 KB闪存,比STC89c52多4倍 同样具有32...
  • stc89c52和at89c52的区别
    答:1、生产的公司不同 AT89C52是Atmel公司生产;STC89C52是宏晶公司生产。2、RAM和ROM不同 AT89C52是128byte RAM,4K ROM;STC89C52是256Byte,8K ROM。3、定时器数量不同 AT89C52有T0、T1两个16位定时器;STC89C52有T0、T1、T2三个16位定时器。单片机的发展:从二十世纪九十年代开始,单片机技术就已经发展...
  • at89s52与STC89C52有什么区别
    答:一、生产公司不同 1、at89s52:at89s52是ATMEL公司生产的一个低电压,高性能CMOS8位单片机。2、STC89C52:STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器。二、存储器不同 1、at89s52:at89s52含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM)。2、STC89C52...