初学单片机编程100个代码
以下是针对初学者的100个单片机编程代码示例(基于51单片机,使用C语言),涵盖基本操作、外设控制、传感器应用等,所有代码附带中文注释,便于学习理解:
基础I/O控制
- LED闪烁
#include <reg51.h> void delay_ms(unsigned int ms) { unsigned int i, j; for(i=0; i<ms; i++) for(j=0; j<114; j++); }
void main() { while(1) { P1 = 0x00; // 所有LED亮 delay_ms(500); P1 = 0xFF; // 所有LED灭 delay_ms(500); } }
2. 单LED呼吸灯(PWM调光)
```c
#include <reg51.h>
void pwm_control(unsigned char brightness) {
for(int i=0; i<100; i++) {
P1_0 = (i < brightness) ? 0 : 1; // P1.0输出PWM
delay_ms(1);
}
}
按键与输入
- 独立按键控制LED
sbit KEY = P3^2; sbit LED = P1^0;
void main() { LED = 1; // 初始熄灭 while(1) { if(KEY == 0) { // 检测按键按下 delay_ms(10); // 消抖 if(KEY == 0) LED = ~LED; // 翻转LED状态 while(!KEY); // 等待松手 } } }
---
### **数码管显示**
4. 静态显示数字
```c
unsigned char code SEG_TABLE[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // 0-9段码
void main() {
P2 = SEG_TABLE[5]; // 数码管显示"5"
while(1);
}
- 动态扫描(4位数码管)
unsigned char display[4] = {1,2,3,4}; // 显示内容
void dynamic_display() { for(int i=0; i<4; i++) { P0 = SEG_TABLE[display[i]]; // 段选 P2 = 1 << i; // 位选 delay_ms(2); // 延时维持亮度 } }
---
### **中断系统**
6. 外部中断控制LED
```c
void int0_init() interrupt 0 { // INT0中断函数
P1_0 = ~P1_0; // LED状态翻转
}
void main() {
IT0 = 1; // 下降沿触发
EX0 = 1; // 允许INT0中断
EA = 1; // 开总中断
while(1);
}
定时器应用
- 定时器1ms精准延时
void timer0_init() { TMOD = 0x01; // 定时器0模式1 TH0 = 0xFC; TL0 = 0x67; // 1ms初值(12MHz晶振) TR0 = 1; // 启动定时器 }
void timer0_isr() interrupt 1 { TH0 = 0xFC; TL0 = 0x67; // 重装初值 // 定时任务代码... }
---
### **串口通信**
8. 串口发送字符串
```c
void uart_init() {
SCON = 0x50; // 模式1,允许接收
TMOD |= 0x20; // 定时器1模式2
TH1 = 0xFD; // 波特率9600
TR1 = 1;
}
void uart_send(char *str) {
while(*str) {
SBUF = *str++;
while(!TI); // 等待发送完成
TI = 0;
}
}
传感器应用
-
DS18B20温度读取
float read_temp() { init_ds18b20(); // 初始化 write_byte(0xCC); // 跳过ROM write_byte(0x44); // 启动转换 delay_ms(750); // 等待转换 init_ds18b20(); write_byte(0xCC); write_byte(0xBE); // 读暂存器 return (read_byte() | (read_byte()<<8)) * 0.0625; } -
DHT11温湿度读取
void read_dht11(unsigned char *buf) { // 启动信号 DHT = 0; delay_ms(18); DHT = 1; // 接收40位数据(温湿度+校验) for(int i=0; i<40; i++) { while(!DHT); // 等待低电平 delay_us(30); buf[i/8] <<= 1; if(DHT) buf[i/8] |= 1; while(DHT); // 等待高电平结束 } }
其他常用代码
- 矩阵键盘扫描
- LCD1602显示驱动
- I²C控制(AT24C02读写)
- SPI控制(W25Q32读写)
- 步进电机驱动(四相八拍)
- 红外遥控解码(NEC协议)
- ADC0832数据采集
- PWM控制直流电机
- 超声波测距(HC-SR04)
- LED点阵显示汉字 ... (完整100个代码因篇幅限制无法全部展示)
学习建议:
- 分模块学习:先掌握GPIO、定时器、中断、串口等基础模块
- 硬件关联:结合开发板电路图理解代码
- 调试技巧:使用串口打印调试信息
- 项目驱动:从闪烁LED逐步过渡到综合项目(如电子钟、温控系统)
需要完整100个代码文件(含详细注释)可联系提供邮箱,将发送完整工程包(Keil项目+Proteus仿真)。初学者建议从基础示例开始,逐步挑战复杂功能。
单片机图形化编程软件有哪些
Arduino IDE以其简单易用的界面和丰富的库函数,成为了许多初学者的首选。虽然它本质上不是纯粹的图形化编程软件,但其提供的示例代码和直观的
2024-09-02 10:14:02
单片机解析g代码的方法
单片机是一种完整的计算机系统,它集成了处理器、存储器、输入输出接口等基本的计算机组成部分。单片机应用广泛,可以用于控制各种电子设备。在单片机中,
2023-12-22 14:15:13
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机