没有合适的资源?快使用搜索试试~ 我知道了~
首页8051+Proteus实战:C语言单片机100例教程
8051+Proteus实战:C语言单片机100例教程
需积分: 9 1 下载量 151 浏览量
更新于2024-07-16
收藏 1.91MB DOC 举报
《单片机C语言程序设计实训100例—基于8051+Proteus仿真》是一本针对初学者和进阶工程师的实践教材,主要关注8051单片机及其C语言编程。该书通过一系列精心设计的实例,帮助读者掌握单片机C语言编程的基础知识和实际应用技巧,同时结合Proteus仿真软件,使得理论学习与实践操作相结合。 第一篇基础程序设计部分涵盖了各种基础功能的实现,例如LED灯的控制:从简单的单个LED闪烁到复杂的流水灯、矩阵键盘控制LED显示,以及使用定时器进行周期性操作,如计数、定时、音乐播放等。通过这些实例,读者可以了解如何利用C语言编写控制单片机硬件的代码,理解中断处理、定时器工作原理和数字信号处理等核心概念。 在硬件应用章节,作者引入了更多的外围芯片,如译码器、串行接口芯片、LCD1602液晶显示模块等,通过实战项目展示了如何将这些器件与8051单片机集成,实现复杂的功能,如数据转换、多设备通信、接口扩展等。这不仅锻炼了编程技能,也强化了对硬件电路的理解。 每个例子都具有明确的目标,比如模拟交通灯、音乐播放、计时器控制等,旨在培养读者的系统思维和问题解决能力。此外,使用Proteus进行仿真,使读者能在无需真实硬件的情况下验证和调试代码,节省成本并提高学习效率。 通过这本书的学习,读者不仅能提升C语言编程能力,还能深入了解单片机硬件的工作原理,为今后在嵌入式系统、物联网等领域打下坚实的基础。无论是作为教学资料还是自我学习的参考书籍,这本书都是学习单片机C语言设计的理想选择。
资源详情
资源推荐
《单片机 C 语言程序设计实训 100 例---基于 8051 和 PROTEUS 仿真》案例
#define uint unsigned int
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
//主程序
void main()
{
uchar i,wei=0x80;
while(1)
{
for(i=0;i<8;i++)
{
P2=0xff;
P0=DSY_CODE[i]; //发送段码
wei=_crol_(wei,1);
P2=wei; //发送位码
DelayMS(2);
}
}
}
09 8 只数码管闪烁显示数字串
电路如上图
/* 名称:8 只数码管闪烁显示数字串
说明:数码管闪烁显示由 0~7 构成的一串数字
本例用动态刷新法显示一串数字,在停止刷新时所有数字显示消失。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//段码表
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//位码表
uchar code DSY_IDX[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
8
《单片机 C 语言程序设计实训 100 例---基于 8051 和 PROTEUS 仿真》案例
}
//主程序
void main()
{
uchar i,j;
while(1)
{
for(i=0;i<30;i++)
{
for(j=0;j<8;j++)
{
P0=0xff;
P0=DSY_CODE[j]; //发送段码
P2=DSY_IDX[j]; //发送位码
DelayMS(2);
}
}
P2=0x00; //关闭所有数码管并延时
DelayMS(1000);
}
}
10 8 只数码管滚动显示数字串
电路如上图
/* 名称:8 只数码管滚动显示数字串
说明:数码管向左滚动显示 3 个字符构成的数字串
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//段码表
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//下面数组看作环形队列,显示从某个数开始的 8 个数(10 表示黑屏)
uchar Num[]={10,10,10,10,10,10,10,10,2,9,8};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
//主程序
void main()
9
《单片机 C 语言程序设计实训 100 例---基于 8051 和 PROTEUS 仿真》案例
{
uchar i,j,k=0,m=0x80;
while(1)
{ //刷新若干次,保持一段时间的稳定显示
for(i=0;i<15;i++)
{
for(j=0;j<8;j++)
{ //发送段码,采用环形取法,从第 k 个开始取第 j 个
P0=0xff;
P0=DSY_CODE[Num[(k+j)%11]];
m=_crol_(m,1);
P2=m; //发送位码
DelayMS(2);
}
}
k=(k+1)%11; //环形队列首支针 k 递增,Num 下标范围 0~10,故对 11 取余
}
}
11 K1-K4 控制 LED 移位
/* 名称:K1-K4 控制 LED 移位
说明:按下 K1 时,P0 口 LED 上移一位;
按下 K2 时,P0 口 LED 下移一位;
按下 K3 时,P2 口 LED 上移一位;
按下 K4 时,P2 口 LED 下移一位;
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned
char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchar i;
while(x--)
for(i=0;i<120;i++);
}
// 根 据 P1 口 的 按 键 移 动
LED
void Move_LED()
{
10
剩余63页未读,继续阅读
weixin_41931899
- 粉丝: 1
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功