按键控制led灯python程序_单片机初学者最适合的按键控制LED灯程序

本文介绍了一个51单片机的按键控制LED灯的程序,强调了程序的可读性和可移植性。通过示例代码,展示了如何使用STC12C2052AD单片机实现LED灯的闪动,并包含防抖动处理,同时提供了初始化设置和时间管理的相关函数。适合单片机初学者学习。
摘要由CSDN通过智能技术生成

//----------------------------------------------------------------------------------------

// File Name: KeyToLed.c

// Author : Great Tiger

// Function : Drive a LED flash

// 说明 : 这里只是一个51MCU按键控制LED灯的程序。可能很多人很不解,一个再简单不过的功能何必搞得那么复杂,是在炫吗。

//: 如果你这么想可以绕道了。这里浓缩很多技巧,是我把一个算是蛮大的前后台程序的一些常用而又不能丢的技巧用在了

//: 这个按键控制LED灯的程序上(呵呵,源程序是台湾人写的多媒体播放器的程序)。程序的可读性,可移植性都在这里

//: 很好的表现了,这里只是开始,还有很多就等初学都慢慢体会吧。如果你只会 if(P1^0 == 0) P1^1 = 0; 你是做不了好的产品的。

// Update : 2012-03-25

//----------------------------------------------------------------------------------------

#include "STC12C2052AD.h"

// 常用数据类型名重定义

typedef bit bool;

typedef unsigned charuint8;

typedef unsigned int uint16;

typedef unsigned longuint32;

#define TRUE(bool)1

#define FALSE(bool)0

#define HEIGH(bool)1

#define LOW(bool)0

// 自定义开关常量

#define ledONLOW

#define ledOFFHEIGH

// Timer Conversion (unit: us)

#define _1S_PERIOD 1000000UL // 1S = 1000000US

#define _1MS_PERIOD1000

#define CPU_F12000000UL // 晶振频率

#define _CPU_PERIOD((float)_1S_PERIOD / (CPU_F / 12)) // CPU 指令周期

//--------------------------------------------------

// Timer1 Period (unit: ns)

//--------------------------------------------------

#define _TIMER1_PERIOD_1MS_PERIOD // T1 定时周期

#define _TIMER1_COUNTER(uint32)(0xFFFF - (_TIMER1_PERIOD / _CPU_PERIOD))

typedef struct

{

uint16 mSecond;

uint8 Second;

uint8 Minute;

}TimeType;

TimeType tMyTime;

uint16 Timer1Count; // 空间换时间,避免重复计算

sbit bLED = P3^5; // LED

sbit bKey = P3^4; // 按键

#define KeyStableCounter30 // 防抖延时时间

#define KeyEvent2

uint8 ucKeyStableCountBuff[KeyEvent]; // 防抖延时计数器

// 一个按键动作的两个状态

bool bKeyDown = FALSE;

bool bKeyUp = FALSE;

//----------------------------------------------------------

void IO_Init(void)

{

bLED = HEIGH; // 假设LOW亮

bKey = HEIGH; // 假设LOW有效

}

void ClearRTC(void)

{

tMyTime.mSecond = 0;

tMyTime.Second = 0;

tMyTime.Minute = 0;

}

void Timer1_Init(void)

{

Timer1Count = _TIMER1_COUNTER;

ET1= 1;

TMOD = 0x10;

TH1 = Timer1Count &gt&gt 8;

TL1 = (uint8)Timer1Count;

EA = 1;

TR1 = 1;

}

void SystemInit(void)

{

IO_Init();

ClearRTC();

Timer1_Init();

}

void KeyStableValueInit(void)

{

uint8 i;

for(i=0; i!=KeyEvent; i++)

ucKeyStableCountBuff[i] = 0;

}

void ScanKey(void)

{

static bool bVKeyPre = HEI

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Python单片机控制带方面,有多种编程软件可供选择,如Anaconda、PyCharm和Python IDE。然而,对于低级别的单片机编程,我个人认为最好用的是Thonny。Thonny提供了简单易用的界面和调试功能,非常适合初学者和小型项目。当然,在进行AI项目时可能需要使用像PyCharm这样的高级IDE来编程。\[1\] 在硬件接线完成后,你可以进入Thonny的交互模式,输入以下指令来操作带: ```python from machine import Pin from neopixel import NeoPixel pin = Pin(19, Pin.OUT) # 在本案例中,使用GPIO 19作为带控制 np = NeoPixel(pin, 8) # 创建一个包含8颗LED的NeoPixel对象 np\[0\] = (255, 255, 255) # 将第一颗置为白色 np.write() # 将颜色写入硬件 r, g, b = np\[0\] # 读取第一颗珠的颜色 ``` 这些指令将帮助你控制带的亮灭和颜色。你可以根据需要修改代码中的GPIO引脚和珠数量。\[2\] 如果你有更多关于Python单片机控制带的问题,欢迎加入技术交流群,与其他人一起交流学习。\[3\] #### 引用[.reference_title] - *1* [用ESP32+MicroPython+Thonny点亮WS2812带](https://blog.csdn.net/weixin_39588542/article/details/110993880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [酷,用ESP32与HaaS Python做了个舞动的氛围带,还能做你自己喜欢的模式哦](https://blog.csdn.net/HaaSTech/article/details/122777868)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【流光溢彩】物联网入门 - ESP8266 + WS2812B 制作流光溢彩带](https://blog.csdn.net/freekiteyu/article/details/131331042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值