51单片机基础练习源码
目录嵌入式 / 51单片机 / 基础练习格式ZIP大小33.3 KB
在线预览
28 个文件14 个目录112.2 KB 解压后大小
C7H5YML4UVOPT3UVPROJ3A513JSON2TXT1
查看完整目录 · 28 个文件
9.0 KB 51_oled/OLED_Font.h
7.3 KB 51_oled/oled.c
671 B 51_oled/oled.h
1.2 KB led_beep_relay_time/driver/hardware.c
273 B led_beep_relay_time/driver/hardware.h
6.3 KB led_beep_relay_time/main.uvopt
14.4 KB led_beep_relay_time/main.uvproj
6.2 KB led_beep_relay_time/STARTUP.A51
2.6 KB led_beep_relay_time/user/main.c
1.3 KB led_beep_relay_time/vscode/.eide/eide.yml
689 B led_beep_relay_time/vscode/.eide/files.options.yml
50 B led_beep_relay_time/vscode/.eide/stc.flash.json
1.2 KB led_beep_relay/driver/hardware.c
273 B led_beep_relay/driver/hardware.h
5.8 KB led_beep_relay/main.uvopt
14.4 KB led_beep_relay/main.uvproj
6.2 KB led_beep_relay/STARTUP.A51
1.7 KB led_beep_relay/user/main.c
308 B README.txt
1.2 KB Round_Robin/driver/hardware.c
273 B Round_Robin/driver/hardware.h
6.3 KB Round_Robin/main.uvopt
14.4 KB Round_Robin/main.uvproj
6.2 KB Round_Robin/STARTUP.A51
1.9 KB Round_Robin/user/main.c
1.3 KB Round_Robin/vscode/.eide/eide.yml
689 B Round_Robin/vscode/.eide/files.options.yml
50 B Round_Robin/vscode/.eide/stc.flash.json可读文件预览
README.txt308 B
51单片机基础练习源码
本压缩包由开源协会知识库从学习目录中自动精选生成。
已排除安装包、视频、编译缓存、目标文件、可执行文件、私钥和大型第三方依赖。
部分工程需要通过对应 IDE、SDK 或配置文件重新生成依赖后再编译。51_oled/oled.c7.3 KB
#include "OLED_Font.h"
/*引脚配置*/
sbit OLED_W_SCL=P2^0;
sbit OLED_W_SDA=P2^1;
/**
* @brief I2C开始
* @param 无
* @retval 无
*/
void OLED_I2C_Start(void)
{
OLED_W_SDA=1;
OLED_W_SCL=1;
OLED_W_SDA=0;
OLED_W_SCL=0;
}
/**
* @brief I2C停止
* @param 无
* @retval 无
*/
void OLED_I2C_Stop(void)
{
OLED_W_SDA=0;
OLED_W_SCL=1;
OLED_W_SDA=1;
}
void IIC_Wait_Ack()
{
OLED_W_SCL=1;
OLED_W_SCL=0;
}
/**
* @brief I2C发送一个字节
* @param Byte 要发送的一个字节
* @retval 无
*/
void OLED_I2C_SendByte(unsigned char Byte)
{
unsigned char i;
OLED_W_SCL=0;
for (i = 0; i < 8; i++)
{
OLED_W_SDA=Byte & (0x80 >> i);
OLED_W_SCL=1;
OLED_W_SCL=0;
}
}
/**
* @brief OLED写命令
* @param Command 要写入的命令
* @retval 无
*/
void OLED_WriteCommand(unsigned char Command)
{
OLED_I2C_Start();
OLED_I2C_SendByte(0x78); //从机地址
IIC_Wait_Ack();
OLED_I2C_SendByte(0x00); //写命令
IIC_Wait_Ack();
OLED_I2C_SendByte(Command);
IIC_Wait_Ack();
OLED_I2C_Stop();
}
/**
* @brief OLED写数据
* @param Data 要写入的数据
* @retval 无
*/
void OLED_WriteData(unsigned char Data)
{
OLED_I2C_Start();
OLED_I2C_SendByte(0x78); //从机地址
IIC_Wait_Ack();
OLED_I2C_SendByte(0x40); //写数据
IIC_Wait_Ack();
OLED_I2C_SendByte(Data);
IIC_Wait_Ack();
OLED_I2C_Stop();
}
/**
* @brief OLED设置光标位置
* @param Y 以左上角为原点,向下方向的坐标,范围:0~7
* @param X 以左上角为原点,向右方向的坐标,范围:0~127
* @retval 无
*/
void OLED_SetCursor(unsigned char Y, unsigned char X)
{
OLED_WriteCommand(0xB0 | Y); //设置Y位置
OLED_WriteCommand(0x10 | ((X & 0xF0) >> 4)); //设置X位置高4位
OLED_WriteCommand((X & 0x0F)); //设置X位置低4位
}
/**
* @brief OLED清屏
* @param 无
* @retval 无
*/
void OLED_Clear(void)
{
unsigned char i, j;
for (j = 0; j < 8; j++)
{
OLED_SetCursor(j, 0);
for(i = 0; i < 128; i++)
{
OLED_WriteData(0x00);
}
}
}
/**
* @brief OLED显示一个字符
* @param Line 行位置,范围:1~4
* @param Column 列位置,范围:1~16
* @param Char 要显示的一个字符,范围:ASCII可见字符
* @retval 无
*/
void OLED_ShowChar(unsigned char Line, unsigned char Column, char Char)
{
unsigned char i;
OLED_SetCursor((Line - 1) * 2, (Column - 1) * 8); //设置光标位置在上半部分
for (i = 0; i < 8; i++)
{
OLED_WriteData(OLED_F8x16[Char - ' '][i]); //显示上半部分内容
}
OLED_SetCursor((Line - 1) * 2 + 1, (Column - 1) * 8); //设置光标位置在下半部分
for (i = 0; i < 8; i++)
{
OLED_WriteData(OLED_F8x16[Char - ' '][i + 8]); //显示下半部分内容
}
}
/**
* @brief OLED显示字符串
* @param Line 起始行位置,范围:1~4
* @param Column 起始列位置,范围:1~16
* @param String 要显示的字符串,范围:ASCII可见字符
* @retval 无
*/
void OLED_ShowString(unsigned char Line, unsigned char Column, char *String)
{
unsigned char i;
for (i = 0; String[i] != '\0'; i++)
{
OLED_ShowChar(Line, Column + i, String[i]);
}
}
/**
* @brief OLED次方函数
* @retval 返回值等于X的Y次方
*/
unsigned int OLED_Pow(unsigned int X, unsigned int Y)
{
unsigned int Result = 1;
while (Y--)
{
Result *= X;
}
return Result;
}
/**
* @brief OLED显示数字(十进制,正数)
* @param Line 起始行位置,范围:1~4
* @param Column 起始列位置,范围:1~16
* @param Number 要显示的数字,范围:0~4294967295
* @param Length 要显示数字的长度,范围:1~10
* @retval 无
*/
void OLED_ShowNum(unsigned char Line, unsigned char Column, unsigned int Number, unsigned char Length)
{
unsigned char i;
for (i = 0; i < Length; i++)
{
OLED_ShowChar(Line, Column + i, Number / OLED_Pow(10, Length - i - 1) % 10 + '0');
}
}
/**
* @brief OLED显示数字(十进制,带符号数)
* @param Line 起始行位置,范围:1~4
* @param Column 起始列位置,范围:1~16
* @param Number 要显示的数字,范围:-2147483648~2147483647
* @param Length 要显示数字的长度,范围:1~10
* @retval 无
*/
void OLED_ShowSignedNum(unsigned char Line, unsigned char Column, int Number, unsigned char Length)
{
unsigned char i;
unsigned int Number1;
if (Number >= 0)
{
OLED_ShowChar(Line, Column, '+');
Number1 = Number;
}
else
{
OLED_ShowChar(Line, Column, '-');
Number1 = -Number;
}
for (i = 0; i < Length; i++)
{
OLED_ShowChar(Line, Column + i + 1, Number1 / OLED_Pow(10, Length - i - 1) % 10 + '0');
}
}
/**
* @brief OLED显示数字(十六进制,正数)
* @param Line 起始行位置,范围:1~4
* @param Column 起始列位置,范围:1~16
* @param Number 要显示的数字,范围:0~0xFFFFFFFF
* @param Length 要显示数字的长度,范围:1~8
* @retval 无
*/
void OLED_ShowHexNum(unsigned char Line, unsigned char Column, unsigned int Number, unsigned char Length)
{
unsigned char i, SingleNumber;
for (i = 0; i < Length; i++)
{
SingleNumber = Number / OLED_Pow(16, Length - i - 1) % 16;
if (SingleNumber < 10)
{
OLED_ShowChar(Line, Column + i, SingleNumber + '0');
}
else
{
OLED_ShowChar(Line, Column + i, SingleNumber - 10 + 'A');
}
}
}
/**
* @brief OLED显示数字(二进制,正数)
* @param Line 起始行位置,范围:1~4
* @param Column 起始列位置,范围:1~16
* @param Number 要显示的数字,范围:0~1111 1111 1111 1111
* @param Length 要显示数字的长度,范围:1~16
* @retval 无
*/
void OLED_ShowBinNum(unsigned char Line, unsigned char Column, unsigned int Number, unsigned char Length)
{
unsigned char i;
for (i = 0; i < Length; i++)
{
OLED_ShowChar(Line, Column + i, Number / OLED_Pow(2, Length - i - 1) % 2 + '0');
}
}
/**
* @brief OLED初始化
* @param 无
* @retval 无
*/
void OLED_Init(void)
{
OLED_WriteCommand(0xAE); //关闭显示
OLED_WriteCommand(0xD5); //设置显示时钟分频比/振荡器频率
OLED_WriteCommand(0x80);
OLED_WriteCommand(0xA8); //设置多路复用率
OLED_WriteCommand(0x3F);
OLED_WriteCommand(0xD3); //设置显示偏移
OLED_WriteCommand(0x00);
OLED_WriteCommand(0x40); //设置显示开始行
OLED_WriteCommand(0xA1); //设置左右方向,0xA1正常 0xA0左右反置
OLED_WriteCommand(0xC8); //设置上下方向,0xC8正常 0xC0上下反置
OLED_WriteCommand(0xDA); //设置COM引脚硬件配置
OLED_WriteCommand(0x12);
OLED_WriteCommand(0x81); //设置对比度控制
OLED_WriteCommand(0xCF);
OLED_WriteCommand(0xD9); //设置预充电周期
OLED_WriteCommand(0xF1);
OLED_WriteCommand(0xDB); //设置VCOMH取消选择级别
OLED_WriteCommand(0x30);
OLED_WriteCommand(0xA4); //设置整个显示打开/关闭
OLED_WriteCommand(0xA6); //设置正常/倒转显示
OLED_WriteCommand(0x8D); //设置充电泵
OLED_WriteCommand(0x14);
OLED_WriteCommand(0xAF); //开启显示
OLED_Clear(); //OLED清屏
}
led_beep_relay_time/driver/hardware.c1.2 KB
#include "hardware.h"
// LED控制函数
void LED_Control(unsigned char state)
{
/***************开门*****************/
P2&=0x1F; //将P2口高三位清零
P2|=0x80; //将P27设置为高电平P26,P25为低电平,选择控制LED的Y4对应的锁存器
//0x80=1000 0000
/****************送“外卖”*****************/
P0 = state; //将state的值送到P0口
/***************关门*****************/
P2&=0x1F; //将P2口高三位清零
}
// 蜂鸣器和继电器控制函数
void BEEP_Relay_Control(unsigned char BEEP_state, unsigned char Relay_state)
{
/***************开门****************/
P2&=0x1F; //将P2口高三位清零
P2|=0xa0; //将P27,P26设置为高电平,选择控制蜂鸣器和继电器的Y5对应的锁存器
//0xA0=1010 0000
/***************送“外卖”*****************/
P0=0X00; //先将P0口清零
if(BEEP_state==ON)
P0|=0x40; //0x40=0100 0000 将P06位置高电平,控制蜂鸣器鸣叫
else
P0&=~0x40; //将P06位置低电平,控制蜂鸣器停止鸣叫
if(Relay_state==ON)
P0|=0x10; //0x10=0001 0000 将P04位置高电平,控制继电器吸合
else
P0&=~0x10; //将P04位置低电平,控制继电器释放
/***************关门*****************/
P2=P2&0x1f;
}led_beep_relay/driver/hardware.c1.2 KB
#include "hardware.h"
// LED控制函数
void LED_Control(unsigned char state)
{
/***************开门*****************/
P2&=0x1F; //将P2口高三位清零
P2|=0x80; //将P27设置为高电平P26,P25为低电平,选择控制LED的Y4对应的锁存器
//0x80=1000 0000
/****************送“外卖”*****************/
P0 = state; //将state的值送到P0口
/***************关门*****************/
P2&=0x1F; //将P2口高三位清零
}
// 蜂鸣器和继电器控制函数
void BEEP_Relay_Control(unsigned char BEEP_state, unsigned char Relay_state)
{
/***************开门****************/
P2&=0x1F; //将P2口高三位清零
P2|=0xa0; //将P27,P26设置为高电平,选择控制蜂鸣器和继电器的Y5对应的锁存器
//0xA0=1010 0000
/***************送“外卖”*****************/
P0=0X00; //先将P0口清零
if(BEEP_state==ON)
P0|=0x40; //0x40=0100 0000 将P06位置高电平,控制蜂鸣器鸣叫
else
P0&=~0x40; //将P06位置低电平,控制蜂鸣器停止鸣叫
if(Relay_state==ON)
P0|=0x10; //0x10=0001 0000 将P04位置高电平,控制继电器吸合
else
P0&=~0x10; //将P04位置低电平,控制继电器释放
/***************关门*****************/
P2=P2&0x1f;
}Round_Robin/driver/hardware.c1.2 KB
#include "hardware.h"
// LED控制函数
void LED_Control(unsigned char state)
{
/***************开门*****************/
P2&=0x1F; //将P2口高三位清零
P2|=0x80; //将P27设置为高电平P26,P25为低电平,选择控制LED的Y4对应的锁存器
//0x80=1000 0000
/****************送“外卖”*****************/
P0 = state; //将state的值送到P0口
/***************关门*****************/
P2&=0x1F; //将P2口高三位清零
}
// 蜂鸣器和继电器控制函数
void BEEP_Relay_Control(unsigned char BEEP_state, unsigned char Relay_state)
{
/***************开门****************/
P2&=0x1F; //将P2口高三位清零
P2|=0xa0; //将P27,P26设置为高电平,选择控制蜂鸣器和继电器的Y5对应的锁存器
//0xA0=1010 0000
/***************送“外卖”*****************/
P0=0X00; //先将P0口清零
if(BEEP_state==ON)
P0|=0x40; //0x40=0100 0000 将P06位置高电平,控制蜂鸣器鸣叫
else
P0&=~0x40; //将P06位置低电平,控制蜂鸣器停止鸣叫
if(Relay_state==ON)
P0|=0x10; //0x10=0001 0000 将P04位置高电平,控制继电器吸合
else
P0&=~0x10; //将P04位置低电平,控制继电器释放
/***************关门*****************/
P2=P2&0x1f;
}led_beep_relay_time/user/main.c2.6 KB
#include <STC15F2K60S2.H>
#include "hardware.h"
#include "intrins.h"
void Delay500ms(void) //@12.000MHz
{
unsigned char data i, j, k;
_nop_();
_nop_();
i = 23;
j = 205;
k = 120;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
unsigned char LED_State = 0xFF; //LED状态变量
unsigned char BEEP_State = OFF; //蜂鸣器状态变量
unsigned char Relay_State = OFF; //继电器状态变量
int i = 0;
int time1s=0;
void Timer0_Init(void) //1毫秒@12.000MHz
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x18; //设置定时初始值
TH0 = 0xFC; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA=1; //打开总中断
ET0 = 1; //使能定时器0中断
}
void main(void)
{
Timer0_Init();
while(1)
{
for(i=0;i<9;i++)
{
LED_State&=(0xff<<i); //依次点亮LED
LED_Control(LED_State); //调用LED控制函数
// if(i%2==0) //当i为偶数时,蜂鸣器开启,继电器关闭
// {
// BEEP_State=ON; //蜂鸣器开启
// Relay_State=OFF; //继电器关闭
// }
// else //当i为奇数时,蜂鸣器关闭,继电器开启
// {
// BEEP_State=OFF; //蜂鸣器关闭
// Relay_State=ON; //继电器开启
// }
// BEEP_Relay_Control(BEEP_State, Relay_State); //蜂鸣器开启,继电器关闭
Delay500ms(); //延时500毫秒
}
for(i=0;i<9;i++)
{
LED_State|=~(0xff>>i); //依次熄灭LED
LED_Control(LED_State); //调用LED控制函数
// if(i%2==0) //当i为偶数时,蜂鸣器开启,继电器关闭
// {
// BEEP_State=OFF; //蜂鸣器开启
// Relay_State=ON; //继电器关闭
// }
// else //当i为奇数时,蜂鸣器关闭,继电器开启
// {
// BEEP_State=ON; //蜂鸣器关闭
// Relay_State=OFF; //继电器开启
// }
// BEEP_Relay_Control(BEEP_State, Relay_State); //蜂鸣器开启,继电器关闭
Delay500ms(); //延时500毫秒
}
}
}
bit beep_relay_flag=0;
void Timer0_Isr(void) interrupt 1
{
if(time1s++>=1000)
{
if(beep_relay_flag == 0)
{
BEEP_State=ON; //蜂鸣器开启
Relay_State=OFF; //继电器关闭
BEEP_Relay_Control(BEEP_State, Relay_State); //蜂鸣器开启,继电器关闭
beep_relay_flag = 1;
}
else if(beep_relay_flag == 1)
{
BEEP_State=OFF; //蜂鸣器关闭
Relay_State=ON; //继电器开启
BEEP_Relay_Control(BEEP_State, Relay_State); //蜂鸣器关闭,继电器开启
beep_relay_flag = 0;
}
time1s=0;
}
}
led_beep_relay/user/main.c1.7 KB
#include <STC15F2K60S2.H>
#include "hardware.h"
#include "intrins.h"
void Delay500ms(void) //@12.000MHz
{
unsigned char data i, j, k;
_nop_();
_nop_();
i = 23;
j = 205;
k = 120;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
unsigned char LED_State = 0xFF; //LED状态变量
unsigned char BEEP_State = OFF; //蜂鸣器状态变量
unsigned char Relay_State = OFF; //继电器状态变量
int i = 0;
void main(void)
{
while(1)
{
for(i=0;i<9;i++)
{
LED_State&=(0xff<<i); //依次点亮LED
LED_Control(LED_State); //调用LED控制函数
if(i%2==0) //当i为偶数时,蜂鸣器开启,继电器关闭
{
BEEP_State=ON; //蜂鸣器开启
Relay_State=OFF; //继电器关闭
}
else //当i为奇数时,蜂鸣器关闭,继电器开启
{
BEEP_State=OFF; //蜂鸣器关闭
Relay_State=ON; //继电器开启
}
BEEP_Relay_Control(BEEP_State, Relay_State); //蜂鸣器开启,继电器关闭
Delay500ms(); //延时500毫秒
}
for(i=0;i<9;i++)
{
LED_State|=~(0xff>>i); //依次熄灭LED
LED_Control(LED_State); //调用LED控制函数
if(i%2==0) //当i为偶数时,蜂鸣器开启,继电器关闭
{
BEEP_State=OFF; //蜂鸣器开启
Relay_State=ON; //继电器关闭
}
else //当i为奇数时,蜂鸣器关闭,继电器开启
{
BEEP_State=ON; //蜂鸣器关闭
Relay_State=OFF; //继电器开启
}
BEEP_Relay_Control(BEEP_State, Relay_State); //蜂鸣器开启,继电器关闭
Delay500ms(); //延时500毫秒
}
}
}
Round_Robin/user/main.c1.9 KB
#include <STC15F2K60S2.H>
#include "hardware.h"
#include "intrins.h"
volatile unsigned char LED_State = 0xFF; // LED状态在ISR中使用,需volatile
volatile unsigned char beep_state = OFF; // 蜂鸣器状态在ISR中使用,需volatile
volatile unsigned char relay_state = OFF; // 继电器状态在ISR中使用,需volatile
// 使用事件标志替代多字节计数器,避免主循环与ISR的非原子读写
volatile unsigned char tick_250ms = 0;
volatile unsigned char tick_500ms = 0;
volatile unsigned char tick_1s = 0;
void Timer0_Init(void) // 1毫秒@12.000MHz
{
AUXR &= 0x7F; // 定时器时钟12T模式
TMOD &= 0xF0; // 设置定时器模式
TL0 = 0x18; // 设置定时初始值
TH0 = 0xFC; // 设置定时初始值
TF0 = 0; // 清除TF0标志
TR0 = 1; // 定时器0开始计时
EA = 1; // 打开总中断
ET0 = 1; // 使能定时器0中断
}
unsigned char led_time = 0;
unsigned char led_flag = 0;
void main(void)
{
Timer0_Init();
while (1)
{
// 1s事件:切换蜂鸣器
if (tick_1s)
{
tick_1s = 0;
beep_state = !beep_state; // 简化切换
}
// 500ms事件:切换继电器
if (tick_500ms)
{
tick_500ms = 0;
relay_state = !relay_state; // 简化切换
}
// 250ms事件:更新LED动画
if (tick_250ms)
{
tick_250ms = 0;
if (led_time++ >= 8)
{
led_time = 0;
led_flag = !led_flag;
}
if (led_flag)
LED_State |= ~(0xFF >> led_time); // 依次熄灭LED
else
LED_State &= (0xFF << led_time); // 依次点亮LED
}
}
}
void Timer0_Isr(void) interrupt 1 // 中断程序
{
// 用静态毫秒累加器触发事件标志,避免主循环读写多字节计数器
static unsigned int acc250 = 0, acc500 = 0, acc1000 = 0;
acc250++;
acc500++;
acc1000++;
if (acc250 >= 250)
{
acc250 = 0;
tick_250ms = 1;
}
if (acc500 >= 500)
{
acc500 = 0;
tick_500ms = 1;
}
if (acc1000 >= 1000)
{
acc1000 = 0;
tick_1s = 1;
}
LED_Control(LED_State);
BEEP_Relay_Control(beep_state, relay_state);
}
51_oled/OLED_Font.h9.0 KB
#ifndef __OLED_FONT_H
#define __OLED_FONT_H
/*OLED字模库,宽8像素,高16像素*/
const unsigned char code OLED_F8x16[][16]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,
0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,
0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,
0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,
0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,
0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,
0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,
0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,
0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,
0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,
0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,
0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,
0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,
0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,
0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,
0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,
0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,
0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,
0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,
0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,
0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,
0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,
0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,
0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,
0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,
0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,
0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,
0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,
0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,
0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,
0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,
0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,
0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,
0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,
0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,
0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,
0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,
0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,
0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,
0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,
0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,
0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,
0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,
0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,
0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,
0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,
0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,
0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,
0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,
0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,
0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,
0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,
0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,
0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,
0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,
0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,
0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,
0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
};
#endif
led_beep_relay_time/driver/hardware.h273 B
#ifndef __HARDWARE_H__
#define __HARDWARE_H__
#include <STC15F2K60S2.H>
// BEEP,Relay状态定义
#define ON 1
#define OFF 0
void LED_Control(unsigned char state);
void BEEP_Relay_Control(unsigned char BEEP_state, unsigned char Relay_state);
#endifled_beep_relay/driver/hardware.h273 B
#ifndef __HARDWARE_H__
#define __HARDWARE_H__
#include <STC15F2K60S2.H>
// BEEP,Relay状态定义
#define ON 1
#define OFF 0
void LED_Control(unsigned char state);
void BEEP_Relay_Control(unsigned char BEEP_state, unsigned char Relay_state);
#endifled_beep_relay_time/vscode/.eide/eide.yml1.3 KB
version: "4.1"
name: main
type: C51
deviceName: null
packDir: null
srcDirs: []
virtualFolder:
name: <virtual_root>
files: []
folders:
- name: user
files:
- path: ../STARTUP.A51
- path: ../user/main.c
folders: []
- name: driver
files:
- path: ../driver/hardware.c
folders: []
dependenceList: []
outDir: build
miscInfo:
uid: 7f7074a2d4fd45d54a47d293afccedc5
targets:
Target 1:
cppPreprocessAttrs:
defineList: []
incList:
- d:/KEIL_MDK/mdk/C51/INC/STC
- ../user
- ../driver
libList: []
excludeList: []
toolchain: Keil_C51
toolchainConfigMap:
Keil_C51:
options:
version: 2
afterBuildTasks: []
asm-compiler: {}
beforeBuildTasks: []
c/cpp-compiler:
optimization-level: level-8
optimization-type: SPEED
global:
ram-mode: SMALL
rom-mode: LARGE
linker:
misc-controls: ""
output-format: elf
remove-unused: true
uploadConfigMap:
Custom:
bin: ""
commandLine: ""
eraseChipCommand: ""
stcgal:
bin: ""
eepromImgPath: "null"
extraOptions: ""
options: .eide/stc.flash.json
uploader: stcgal
Round_Robin/vscode/.eide/eide.yml1.3 KB
version: "4.1"
name: main
type: C51
deviceName: null
packDir: null
srcDirs: []
virtualFolder:
name: <virtual_root>
files: []
folders:
- name: user
files:
- path: ../STARTUP.A51
- path: ../user/main.c
folders: []
- name: driver
files:
- path: ../driver/hardware.c
folders: []
dependenceList: []
outDir: build
miscInfo:
uid: 7f7074a2d4fd45d54a47d293afccedc5
targets:
Target 1:
cppPreprocessAttrs:
defineList: []
incList:
- d:/KEIL_MDK/mdk/C51/INC/STC
- ../user
- ../driver
libList: []
excludeList: []
toolchain: Keil_C51
toolchainConfigMap:
Keil_C51:
options:
version: 2
afterBuildTasks: []
asm-compiler: {}
beforeBuildTasks: []
c/cpp-compiler:
optimization-level: level-8
optimization-type: SPEED
global:
ram-mode: SMALL
rom-mode: LARGE
linker:
misc-controls: ""
output-format: elf
remove-unused: true
uploadConfigMap:
Custom:
bin: ""
commandLine: ""
eraseChipCommand: ""
stcgal:
bin: ""
eepromImgPath: "null"
extraOptions: ""
options: .eide/stc.flash.json
uploader: stcgal
51_oled/oled.h671 B
#ifndef __OLED_H
#define __OLED_H
void OLED_Init(void);
void OLED_Clear(void);
void OLED_ShowChar(unsigned char Line, unsigned char Column, char Char);
void OLED_ShowString(unsigned char Line, unsigned char Column, char *String);
void OLED_ShowNum(unsigned char Line, unsigned char Column, unsigned int Number, unsigned char Length);
void OLED_ShowSignedNum(unsigned char Line, unsigned char Column, int Number, unsigned char Length);
void OLED_ShowHexNum(unsigned char Line, unsigned char Column, unsigned int Number, unsigned char Length);
void OLED_ShowBinNum(unsigned char Line, unsigned char Column, unsigned int Number, unsigned char Length);
#endif
Round_Robin/driver/hardware.h273 B
#ifndef __HARDWARE_H__
#define __HARDWARE_H__
#include <STC15F2K60S2.H>
// BEEP,Relay状态定义
#define ON 1
#define OFF 0
void LED_Control(unsigned char state);
void BEEP_Relay_Control(unsigned char BEEP_state, unsigned char Relay_state);
#endifled_beep_relay_time/vscode/.eide/files.options.yml689 B
##########################################################################################
# Append Compiler Options For Source Files
##########################################################################################
# syntax:
# <your pattern>: <compiler options>
# For get pattern syntax, please refer to: https://www.npmjs.com/package/micromatch
#
# examples:
# 'main.cpp': --cpp11 -Og ...
# 'src/*.c': -gnu -O2 ...
# 'src/lib/**/*.cpp': --cpp11 -Os ...
# '!Application/*.c': -O0
# '**/*.c': -O2 -gnu ...
version: "2.1"
options:
Target 1:
files: {}
virtualPathFiles: {}
