51单片机学习
文章平均质量分 84
分享关于51单片机的学习资料,希望能帮助到大家。
白茶丫
在学习中进步!
需要资料,或需要定做设计的可以私聊询问
展开
-
51单片机学习:LCD12864液晶显示实验(带字库)
lcd12864_show_string(0,2,"欢迎使用51开发板");lcd12864_show_string(0,3,"好好学习天天向上");* 输 入 : x,y:显示坐标,x=0~7,y=0~3;原创 2022-09-19 07:16:05 · 6141 阅读 · 3 评论 -
51单片机学习:LCD1602液晶显示实验
/数据总线8位,显示2行,5*7点阵/字符。//数据总线4位,显示2行,5*7点阵/字符。if(i原创 2022-09-19 07:15:54 · 2887 阅读 · 0 评论 -
51单片机学习:DAC模数转换实验
/定时时间为0.01ms,PWM周期是100*0.01ms=1ms,占空比为0%//当到达一定值切换方向,占空比最大能到100,但到达70左右再递增,if(time>=gtim_scale)//PWM周期=定时器初值*gtim_scale,重新开始计数。tim_scale:PWM周期倍数:定时器初值*tim_scale。//保存PWM周期=定时器初值*tim_scale。* 函数功能 : ms延时函数,ms=1时,大约延时1ms。原创 2022-09-19 07:15:41 · 1153 阅读 · 0 评论 -
51单片机学习:ADC模数转换实验--外部通道电压采集
i++)//循环12次,每次读取一位,大于一个字节数,所以返回值类型是u16。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。i++)//循环8次,每次传输一位,共一个字节。//CLK由低到高产生一个上升沿,从而写入数据。原创 2022-09-19 07:15:30 · 1632 阅读 · 0 评论 -
51单片机学习:ADC模数转换实验--热敏电阻AD采集
i++)//循环12次,每次读取一位,大于一个字节数,所以返回值类型是u16。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。i++)//循环8次,每次传输一位,共一个字节。* 函 数 名 : xpt2046_read_adc_value。* 函数功能 : ms延时函数,ms=1时,大约延时1ms。原创 2022-09-19 07:15:17 · 1958 阅读 · 0 评论 -
51单片机学习:ADC模数转换实验--光敏电阻AD采集
i++)//循环12次,每次读取一位,大于一个字节数,所以返回值类型是u16。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。i++)//循环8次,每次传输一位,共一个字节。* 函 数 名 : xpt2046_read_adc_value。* 函数功能 : ms延时函数,ms=1时,大约延时1ms。原创 2022-09-19 07:15:06 · 3206 阅读 · 0 评论 -
51单片机学习:ADC模数转换实验--电位器电压采集
i++)//循环12次,每次读取一位,大于一个字节数,所以返回值类型是u16。i++)//循环8次,每次传输一位,共一个字节。//CLK由低到高产生一个上升沿,从而写入数据。* 函 数 名 : xpt2046_read_adc_value。//先传高位再传低位。原创 2022-09-19 07:14:53 · 3465 阅读 · 0 评论 -
51单片机学习:红外遥控实验
while((IRED==0)&&time_cnt)//等待数据1或0前面的0.56ms结束,若超过6ms强制退出。if(ired_high_time>=8)//如果高电平时间大于0.8ms,数据则为1,否则为0。IRED)&&(time_cnt))//等待引导信号9ms低电平结束,若超过10ms强制退出。while(IRED&&time_cnt)//等待引导信号4.5ms高电平结束,若超过5ms强制退出。原创 2022-09-19 07:14:42 · 1582 阅读 · 1 评论 -
51单片机学习:DS1302时钟实验
/先将value右移1位,然后temp左移7位,最后或运算。//对于实物中,P3.4口没有外接上拉电阻的,此处代码需要添加,使数据口有一个上升沿脉冲。i++)//循环8次,每次写1位,先写低位再写高位。i++)//循环8次,每次写1位,先写低位再写高位。i++)//循环8次,每次写1位,先写低位再写高位。i++)//循环8次,每次读1位,先读低位再读高位。//---存储顺序是秒分时日月周年,存储格式是用BCD码---//原创 2022-09-19 07:14:28 · 1640 阅读 · 1 评论 -
51单片机学习:DS18B20温度传感器实验
DS18B20_PORT)&&time_temp原创 2022-09-19 07:14:11 · 2651 阅读 · 1 评论 -
51单片机学习:I2C-EEPROM实验
if(key==1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))//任意按键按下。else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1) //无按键按下。i++ ) //循环8次将一个字节读出,先读高再传低位。i++) //循环8次将一个字节传出,先传高再传低位。IIC_SDA=0;原创 2022-09-18 13:54:19 · 1174 阅读 · 0 评论 -
51单片机学习:串口通信实验
/清除发送完成标志位。//对系统默认数据类型进行重定义。//将接收到的数据放入到发送寄存器。void uart() interrupt 4 //串口通信中断函数。//清除接收中断标志位。//等待发送数据完成。//存储接收到的数据。TMOD|=0X20;//设置计数器工作方式2。//波特率为9600。SCON=0X50;//设置为工作方式1。//计数器初始值设置。PCON=0X80;原创 2022-09-18 00:18:29 · 3850 阅读 · 0 评论 -
51单片机学习:定时器1实验
函数功能 : 定时器1中断配置函数,通过设置TH和TL即可确定定时时间。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。void time1() interrupt 3 //定时器1中断函数。//选择为定时器0模式,工作方式1。//给定时器赋初值,定时1ms。//给定时器赋初值,定时1ms。//定时器1中断配置。* 函 数 名 : delay_10us。* 函 数 名 : time1_init。//打开定时器1中断允许。原创 2022-09-18 00:18:17 · 1966 阅读 · 1 评论 -
51单片机学习:定时器0实验
函数功能 : 定时器0中断配置函数,通过设置TH和TL即可确定定时时间。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。void time0() interrupt 1 //定时器0中断函数。//选择为定时器0模式,工作方式1。//给定时器赋初值,定时1ms。//给定时器赋初值,定时1ms。//定时器0中断配置。* 函 数 名 : delay_10us。* 函 数 名 : time0_init。//打开定时器0中断允许。原创 2022-09-18 00:18:03 · 1454 阅读 · 0 评论 -
51单片机学习:外部中断1实验
/LED1状态翻转。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。void exti1() interrupt 2 //外部中断1中断函数。if(KEY4==0)//再次判断K4键是否按下。* 函 数 名 : delay_10us。* 函 数 名 : exti1_init。* 函数功能 : 外部中断1配置函数。* 输 入 : ten_us。//打开INT1的中断允许。* 函数功能 : 主函数。原创 2022-09-18 00:17:50 · 1976 阅读 · 0 评论 -
51单片机学习:外部中断0实验
/LED1状态翻转。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。void exti0() interrupt 0 //外部中断0中断函数。if(KEY3==0)//再次判断K3键是否按下。* 函 数 名 : delay_10us。* 函 数 名 : exti0_init。* 函数功能 : 外部中断0配置函数。* 输 入 : ten_us。//打开INT0的中断允许。* 函数功能 : 主函数。原创 2022-09-18 00:17:35 · 1160 阅读 · 0 评论 -
51单片机学习:步进电机实验
if(key==1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))//任意按键按下。else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1) //无按键按下。switch(temp)//8个节拍控制:A->AB->B->BC->C->CD->D->DA。else if(key==KEY2_PRESS)//加速。else if(key==KEY3_PRESS)//减速。KEY2_PRESS:K2按下。原创 2022-09-18 00:17:17 · 1655 阅读 · 0 评论 -
51单片机学习:直流电机实验
注意事项:将直流电机两根线分别连接到“步进电机模块”输出端子J47的5V和O1上。#define DC_MOTOR_RUN_TIME 5000 //定义直流电机运行时间为5000ms。* 函数功能 : ms延时函数,ms=1时,大约延时1ms。* 输 入 : ms:ms延时时间。* 函 数 名 : delay_ms。DC_Motor=1;* 输 出 : 无。* 输 出 : 无。//定义直流电机控制管脚。原创 2022-09-18 00:17:02 · 537 阅读 · 0 评论 -
51单片机学习:LED点阵实验(显示图像)
define LEDDZ_COL_PORT P0 //点阵列控制端口。i++)//循环8次即可将一个字节写入寄存器中。i++)//循环8次扫描8行、列。原创 2022-09-18 00:16:47 · 831 阅读 · 0 评论 -
51单片机学习:LED点阵实验(显示数字)
/LED点阵显示数字0的行数据。//LED点阵显示数字0的列数据。i++)//循环8次即可将一个字节写入寄存器中。i++)//循环8次扫描8行、列。原创 2022-09-18 00:16:24 · 2561 阅读 · 0 评论 -
51单片机学习:LED点阵实验(点亮一个点)
/将LED点阵上边第一行设置为1,即LED阳极为高电平,其余行为0,即低电平。//将LED点阵左边第一列设置为0,即LED阴极为低电平,其余列为1,即高电平。//移位寄存器时钟上升沿将端口数据送入寄存器中。#define LEDDZ_COL_PORT P0 //点阵列控制端口。//存储寄存器时钟上升沿将前面写入到寄存器的数据输出。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。i++)//循环8次即可将一个字节写入寄存器中。//移位寄存器时钟输入。原创 2022-09-17 16:42:08 · 1210 阅读 · 0 评论 -
51单片机学习:IO扩展(串转并)实验-74HC595
/移位寄存器时钟上升沿将端口数据送入寄存器中。#define LEDDZ_COL_PORT P0 //点阵列控制端口。//存储寄存器时钟上升沿将前面写入到寄存器的数据输出。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。i++)//循环8次即可将一个字节写入寄存器中。* 函数功能 : ms延时函数,ms=1时,大约延时1ms。原创 2022-09-17 16:39:59 · 899 阅读 · 0 评论 -
51单片机学习:矩阵按键实验
switch(KEY_MATRIX_PORT)//保存行为0,按键按下后的列值。switch(KEY_MATRIX_PORT)//保存列为0,按键按下后的键值。switch(KEY_MATRIX_PORT)//保存第一列按键按下后的键值。switch(KEY_MATRIX_PORT)//保存第二列按键按下后的键值。switch(KEY_MATRIX_PORT)//保存第三列按键按下后的键值。switch(KEY_MATRIX_PORT)//保存第四列按键按下后的键值。//对系统默认数据类型进行重定义。原创 2022-09-17 16:37:33 · 1145 阅读 · 0 评论 -
51单片机学习:静态数码管实验
/将数组第1个数据赋值给数码管段选口。//对系统默认数据类型进行重定义。#define SMG_A_DP_PORT P0 //使用宏定义数码管段码口。实验现象:下载程序后“数码管模块”最左边数码管显示数字0。* 函 数 名 : main。* 函数功能 : 主函数。* 输 出 : 无。//共阴极数码管显示0~F的段码数据。* 输 入 : 无。实验名称:静态数码管实验。原创 2022-09-17 16:24:44 · 799 阅读 · 0 评论 -
51单片机学习:蜂鸣器实验
/对系统默认数据类型进行重定义。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。//产生一定频率的脉冲信号。//将P2.5管脚定义为BEEP。while(i--)//循环2000次。* 函 数 名 : delay_10us。实验现象:下载程序后蜂鸣器发出声音,一段时间后关闭。* 输 入 : ten_us。* 输 出 : 无。* 输 出 : 无。实验名称:蜂鸣器实验。原创 2022-09-17 16:21:25 · 1825 阅读 · 0 评论 -
51单片机学习:独立按键实验
if(key==1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))//任意按键按下。else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1) //无按键按下。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。if(key==KEY1_PRESS)//检测按键K1是否按下。* 函数功能 : 检测独立按键是否按下,按下则返回对应键值。* 输 入 : mode=0:单次扫描按键。原创 2022-09-17 16:29:59 · 1438 阅读 · 0 评论 -
51单片机学习:动态数码管实验
define SMG_A_DP_PORT P0 //使用宏定义数码管段码口。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。//延时一段时间,等待显示稳定。* 函 数 名 : smg_display。* 函 数 名 : delay_10us。* 输 入 : ten_us。//共阴极数码管显示0~F的段码数据。原创 2022-09-17 16:27:15 · 749 阅读 · 1 评论 -
51单片机学习:LED闪烁实验
/对系统默认数据类型进行重定义。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。//大约延时450ms。//将P2.0管脚定义为LED1。* 函 数 名 : delay_10us。实验现象:下载程序后“LED模块”的D1指示灯闪烁。* 输 入 : ten_us。* 输 出 : 无。* 输 出 : 无。* 输 入 : 无。实验名称:LED闪烁实验。原创 2022-09-17 16:12:31 · 941 阅读 · 0 评论 -
51单片机学习:LED流水灯实验
/将1右移i位,然后取反将结果赋值到LED_PORT。* 函数功能 : 延时函数,ten_us=1时,大约延时10us。//方法2:使用循环+_crol_或_cror_函数实现流水灯。i++) //将led左移一位。i++) //将led右移一位。#define LED_PORT P2 //使用宏定义P2端口。//方法1:使用移位+循环实现流水灯。* 输 入 : ten_us。原创 2022-09-17 16:17:44 · 1208 阅读 · 1 评论 -
51单片机学习:点亮第一个LED
/将P2.0管脚定义为LED1。//LED1端口设置为低电平。实验现象:下载程序后“LED模块”的D1指示灯点亮。* 函 数 名 : main。* 函数功能 : 主函数。* 输 出 : 无。* 输 入 : 无。实验名称:点亮第一个LED。原创 2022-09-17 16:09:16 · 395 阅读 · 0 评论