没有合适的资源?快使用搜索试试~ 我知道了~
首页51单片机LED闪烁与二进制加法程序实战
51单片机LED闪烁与二进制加法程序实战
需积分: 10 0 下载量 145 浏览量
更新于2024-07-25
收藏 513KB PDF 举报
"这是一份关于51单片机编程的学习资料,包含了LED闪烁和二进制加法的基础实验代码。" 这篇文档是针对初学者整理的51单片机C语言程序,主要介绍了两个基础的实践项目:LED闪烁试验和二进制加法试验。51单片机是广泛应用的微控制器,常用于电子设备的控制和教育学习。 在第一个项目——LED闪烁试验中,主要目的是掌握基本的IO口操作。通过点亮和熄灭P2口的LED灯来实现闪烁效果,这涉及到对特殊功能寄存器的操作。程序首先包含了`reg51.h`头文件,这个文件定义了51单片机的特殊功能寄存器。在`main()`函数中,设置P2口为低电平(熄灭LED),然后调用`delay()`函数延迟一段时间,再将P2口设置为高电平(点亮LED)。`delay()`函数是一个延时函数,通过两个嵌套的for循环实现一定时间的延迟。 在第二个项目——二进制加法试验中,目标是通过P2口的LED灯演示二进制数的加法过程。同样,`reg52.h`头文件被包含,尽管51系列单片机通常使用`reg51.h`,但这里可能是为了兼容更多类型的51单片机。`main()`函数中,定义了一个无符号字符变量`Num`初始化为0xff(二进制11111111,即8位全1),然后进入一个无限循环。在循环中,将`Num`的值赋给P2口,显示二进制数,延时后减1,直到`Num`变为0,然后再次变为0xff,如此往复,模拟二进制加法的过程。 这些程序可以帮助学习者理解51单片机的基本操作,如IO口的读写、延时函数的编写以及简单的循环结构,同时也提供了二进制数值在硬件上的直观展示。对于刚接触单片机编程的初学者来说,这样的实践是非常有益的。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/6006225/bg10.jpg)
风行下载 2012 正式版官方下载 提供
风行下载
2012
正式版官方下载
}
delay(150);
}
}
}
/***************************************************************************
*
*
* 延时程序 *
****************************************************************************/
void delay(unsigned
int
i)
{
char
j;
for(i;
i
> 0; i--)
for(j = 200;
j
> 0; j--);
}
第十四章 74HC573 输出使能试验 ( 单片机直接实现位选 共阴极 )
/*********************************************************************************
*
* 标题
:
74HC573 输出使能试验 ( 单片机直接实现位选 共阴极 )
*
*
*
* 连接方法: P0 与 J12 用 8PIN 排线连接 P16 与 JP11(P2) 用排线连接
*
**********************************************************************************
*
* 目的:熟悉 74HC573 的 LE 输出使能控制
*
* 请学员认真消化本例程 , 用 573 锁存器控制和单片机脚直接位选控制 ( 非译码器控制 ) 数码管
*
**********************************************************************************
*/
#include <reg52.h>
#include <intrins.h>
void delay(unsigned
int
i); // 函数声名
sbit
LE
= P1^0; // 定义输出使能控制脚在 P1.0 上
char DelayCNT;// 定义变量
// 此表为 LED 的字模 , 共阴数码管 0-9 -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
// 段码控制
![](https://csdnimg.cn/release/download_crawler_static/6006225/bg11.jpg)
风行下载 2012 正式版官方下载 提供
风行下载
2012
正式版官方下载
// 此表为 8 个数码管位选控制 , 共阴数码管 1-8 个 -
unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; // 位选控制 查
表的方法控制
/************ 主函数 **********************/
main()
{
unsigned
int
i,LedNumVal=1 ; // 变量定义
unsigned
int
LedOut[10]; // 变量定义
DelayCNT=0;
while(1)
{
if(++DelayCNT>=20) // 控制数字变化速度
{
DelayCNT=0; //20 个扫描周期清零一次
++LedNumVal; // 每隔 20 个扫描周期加一次
}
LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80;
LedOut[2]=Disp_Tab[LedNumVal%100/10];
LedOut[3]=Disp_Tab[LedNumVal%10];
LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; // 千位
LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; // 百位带小数点
LedOut[6]=Disp_Tab[LedNumVal%100/10]; // 十位
LedOut[7]=Disp_Tab[LedNumVal%10]; // 个位
for( i=0; i<9; i++)
{
LE = 0; // 输出使能,锁存器不输出数据
P0 = LedOut[i];
LE = 1; // 输出使能,锁存器将 8 位数据一口吐出
P2 = dispbit[i]; // 使用查表法进行位选
delay(150); // 扫描间隔时间 太长会数码管会有闪烁感
}
LE = 0; // 锁存器不输出数据
}
}
/**************************************************************************
*
* 延时处理
*
![](https://csdnimg.cn/release/download_crawler_static/6006225/bg12.jpg)
风行下载 2012 正式版官方下载 提供
风行下载
2012
正式版官方下载
****************************************************************************/
void delay(unsigned
int
i)
{
char
j;
for(i;
i
> 0; i--)
for(j = 200;
j
> 0; j--);
}
第十五章 试验动静 LED 灯 —— 实现动态控制
/*******************************************************************************
* 标题
:
试验动静 LED 灯 —— 实现动态控制 *
*
*
* 连接方法: P0 与 J12 用 8PIN 排线连接 J1 4 短路帽短接 *
********************************************************************************
*
*
* 请学员认真消化本例程,用单片机脚直接控制和 138 译码器控制数码管 *
********************************************************************************/
#include <reg51.h>
#include <intrins.h>
sbit LED8_1=P1^1; //j14 接在 P1.1 上
void delay(unsigned
int
i); // 函数声名
char DelayCNT;
char LED;
main()
{
LED = 0x01;
DelayCNT=0;
while(1)
{
if(++DelayCNT>=10) // 点亮动静 LED 灯速度控制
{
DelayCNT=0;
LED = LED << 1; // 左移
if(LED==0) LED = 1; // 移位后,后面的位为高电平
}
P0 =LED;
LED8_1=0;
delay(1000); // 调用延时程序
}
}
![](https://csdnimg.cn/release/download_crawler_static/6006225/bg13.jpg)
风行下载 2012 正式版官方下载 提供
风行下载
2012
正式版官方下载
void delay(unsigned
int
i)
{
char
j;
for(i;
i
> 0; i--)
for(j = 200;
j
> 0; j--);
}
第十六章 LED 点阵实验 ( 流动显示 1 2 3 4 5 6 7 8 9)
/*********************************************************************************
********
*
*
* LED 点阵实验 ( 流动显示 1 2 3 4 5 6 7 8 9)
*
*
*
*
*
*
*
* 说明 通过 P0 和 P2 作为点阵接口
*
* 要求学员掌握 LED 点阵的工作原理和 各点阵脚的定义及接法,具体接线请参考接线说明
*
* 我们采用的 LED 点阵式是低功耗,在做实验时可以用单片机脚直接驱动
*
**********************************************************************************
********/
#include<reg51.h>
unsigned char code tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,}; // 列选通控制
unsigned char code digittab[18][8]={
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
![](https://csdnimg.cn/release/download_crawler_static/6006225/bg14.jpg)
风行下载 2012 正式版官方下载 提供
风行下载
2012
正式版官方下载
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}, //9
{0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00}, //P
{0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00}, //R
{0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00}, //E
{0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00}, //C
{0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00}, //H
{0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //I
{0x00,0x7F,0x10,0x08,0x04,0x7F,0x00,0x00}, //N
{0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00} // 中
};
unsigned
int
timecount1 , timecount2; // 定义的变量
unsigned char cntx , cnty ; //cntx 列控制数的变量 cnty 用来控制 字符与字符之间的切换
void main(void)
{
cnty=0;
while(1)
{
if(cnty<18) // 红色
{
P1=0xFF; // 列选通都关闭掉
P2=tab[cntx]; // 列线
P0=digittab[cnty][cntx]; // 行线
}
else // 绿色
{
P2=0xFF; // 红色的列选通都关闭掉
P1=tab[cntx]; // 列线
P0=digittab[cnty-18][cntx]; // 行线
}
// 用于控制动态扫描的速度
if(++timecount1>=50)
剩余147页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
wosibaoqiang
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)