化作尘百度网盘下载中心:https://pan.baidu.com/s/1eLnnSXwbFi8o0RESJYFPSQ
提取码:uxir

取走点赞哦~

keil+proteus

第一个51程序 :让一个发光二极管闪烁

这是一篇超级详细的C51教程。

单片机就是一个小型CPU,在电子领域应用广泛,电视、冰箱、洗衣机、空调等产品中都能见到他们的身影。它是一个可编程的mcu,根据代码的不同可实现非常多功能

首先介绍两个软件
1、keil uvision4:这是一个单片机开发软件,用于调试,生成可执行文件HEX文件
2、proteus7.8:电路仿真软件

一、首先,到网上下载一个keil uVision4开发环境(用来编写C语言程序)或者下载我的软件,keil下载链接://download.csdn.net/download/mbs520/12191016

二、下载好之后百度keil4的安装教程,开始按百度步骤安装


一定要严格按照百度教程安装

安装成功后打开软件,看到如下界面:

三、安装软件:Proteus 7.8

这是一个电路仿真软件,非常实用,用来绘制原理图和仿真

Proteus 7.8 下载链接://download.csdn.net/download/mbs520/12116854
下载好后安装,安装好打开软件:

四、下面开始用Proteus建立硬件环境

把led接在P1.0上,因为我们是初学者,晶振与电源可以先省略,电路一样可以工作。

点击P:

然后搜索需要的元器件:AT89C51、RES、LED

找到之后双击添加:左边元件栏里可以看到添加的元件

继续添加:

添加完成后开始布置元器件:

接地符号在这里:

元件布置完后开始接线:点击两个点就可以连接起来

连接完成。。。点击保存。

五、上面两个软件都安装成功后开始我们的第一个工程的建立,参考以下代码 ,代码作用: 让一个led闪烁

#include<regx51.h>void delayms(unsigned int t)//延时函数
{int a,b;for(a=0; a<t; a++)for(b=0; b<120; b++);
}void main(void)
{P1_0 = 0;       //让P1.0口输出0delayms(500);   //延时500msP1_0 = 1;       //让P1.0口输出1delayms(500);   //延时500ms}

下面开始建立工程,打开keil,点击新建工程

文件名改为“第一个51程序”,点击保存

找到ATMEL公司的AT89S51

点击OK,然后新建一个文本文件

点击保存,文件名后缀为.c,生成一个c文件
写下代码

添加C语言文件到工程:把刚刚写的c文件添加到工程

发现左边工程文件多了个.c文件
点击魔法棒:
勾选生成.hex文件

然后点击编译生成:
编译报告0错误0警告:说明已经生成了.hex文件

六、打开仿真软件

双击单片机,弹出对话框,点击选择文件夹,找到刚生成的hex文件

把hex文件导入单片机,运行仿真软件,可以看到led在闪烁,每隔1秒钟闪烁一次,如图:

*代码解读

1、

#include<regx51.h>
包含头文件<regx51.h>,为什么要包含头文件?因为要编写的是51程序,最终代码是要在51单片机里运行,所以要包含一个51头文件,这个文件包含了51所有寄存器的一些定义,怎么查看它呢,编译的时候会出现在你的工程文件中,在keil4的左边工程文件就可以查看了

2、

void delayms(unsigned int t)//延时函数
{

int a,b;
for(a=0; a<t; a++)for(b=0; b<120; b++);

}
延时函数就是让CPU反复执行一条空指令来消耗时间,这段时间CPU仍然在工作,各寄存器的值保持不变。

3、

void main(void)
这是主函数,程序从这里开始执行

4、

P1_0 = 0;       //让P1.0口输出0
delayms(500);   //延时500ms
P1_0 = 1;       //让P1.0口输出1
delayms(500);   //延时500ms

P1_0是什么?P1_0是在reg51.h头文件定义的,没有头文件写P1_0编译是通不过的。P1_0的本质是一个位寄存器,存储了1bit数据,可以存储0或1,P1_0的值决定了P1_0引脚上输出的电平
P1_0 = 0;就是让P1_0输出0V
delayms(500);寄存器的值不变,P1_0持续500ms低电平
P1_0 = 1; 就是让P1_0输出5V(实际达不到5V),
delayms(500);寄存器的值不变,P1_0持续500ms高电平,循环执行,led就会以1HZ的频率闪烁了
另外,51单片机不用循环语句while,也会循环执行main函数中的内容

代码资料链接://download.csdn.net/download/mbs520/12117125

百度网盘链接:https://pan.baidu.com/s/18cVVHyE6O1AzvUvZMsApZA
提取码:22pi

或者编辑 “所需要的资源名字如:‘点亮一个发光二极管’”->邮箱:2809786963@qq.com
我就会把资料给你发过来,求支持求点赞啊。

(有问题欢迎留言,第一次发帖,不到之处希望各位大神指点)
(也可以私信我问题,看到否可以为为大家耐心解答,很高兴跟大家交流技术问题。范围:电路设计 电路仿真 PCB设计 51单片机 msp430 arduino stm32 luinx)

下一篇:C51教程 第二个51程序: 跑马灯 流水灯

51单片机教程 第一个51程序 :点亮一个发光二极管相关推荐

  1. 51单片机教程哪个好?

    单片机入门51单片机是最好的选择. 很多人可能以为51单片机已经过时了,能这么想的绝对是没实际产品开发经验的. 51最大的优势就是价格便宜,在小家电等消费市场有大量的使用. 新手先学51可以培养你对单 ...

  2. 51单片机教程:51单片机驱动四个8*8点阵,拼凑16*16点阵显示标准汉字。

    看此篇博文之前建议先看博主的上一篇博文: 51单片机教程:8*8 点阵显示字符.数字.简单汉字 取走点赞哦~ 教你如何用4个8乘8点阵拼成一个16乘16点阵 资料链接:点阵16乘16.rar 一.点阵 ...

  3. 51单片机教程:8*8 点阵显示字符、数字、简单汉字

    点阵显示实验 一.什么是点阵? 我们用之前的方法一个IO口只能控制一个led,如果需要用更少的IO口控制更多的led怎么办呢,于是就有了点阵. 8X8点阵共由64个发光二极管组成,且每个发光二极管是放 ...

  4. 共阳极数码时钟c语言程序,基于51单片机C语言数字钟程序.doc

    基于51单片机C语言数字钟程序 基于51单片机C语言数字钟程序 数字电子钟的设计 一. 绪论 (一)引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地 ...

  5. 专业导师告诉你,有哪些51单片机教程值得大力推荐

    专业导师告诉你,有哪些51单片机教程值得大力推荐 摘要:前两天我的学生做了一个电路,功能就是用MOS管来控制一个电源的开关,但是做出来后发现不能用控制MOS管的开关,MOS管一直处于导通状态.一起来看 ...

  6. 课设-51单片机+PM2.5+温湿度(程序+原理图+Protel仿真)

    51单片机PM2.5+温湿度(程序+原理图+Protel仿真) 一.功能 二.模块 三.代码程序 四.PCB原理图 一.功能 本系统以STC89C52单片机为核心,主要包括传感器温湿度采集,传感器PM ...

  7. 基于51单片机的贪吃蛇小程序(8*8LED点阵实现)by_jy

    ** 基于51单片机的贪吃蛇小程序(8*8LED点阵实现)by_jy ** 一直很想写一个贪吃蛇的小程序,这两天终于抽空完成了,这里把我的思路分享给大家,仅供参考! 代码如下: 先放段主函数压压惊 v ...

  8. 郭天祥51单片机教程--- IIC总线

    郭天祥51单片机教程- IIC总线 #include <reg52.h> #define uchar unsigned charsbit SDA = P2^0; //数据总线 sbit S ...

  9. 单片机控制蜂鸣器唱生日快乐歌曲 PROTEUS 和51单片机教程(附仿真文件+源代码)

    功能:按一下开关后,单片机控制蜂鸣器唱生日快乐歌曲 PROTEUS 和51单片机教程 单片机控制蜂鸣器唱生日快乐歌曲 程序源代码如下: /* 生日歌 */ #include <reg51.h&g ...

  10. 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

    <(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...

最新文章

  1. R语言使用str_replace函数和str_replace_all函数替换字符串中匹配到的模式:str_replace函数替换第一个匹配到的字符串、str_replace_all函数替换所有匹配到的
  2. pytorch历史版本下载:
  3. js全局变量和局部变量
  4. 恭喜 神策数据入选中国信通院开源供应商全景图
  5. php 获取文件最后几行,php获取文件的最后N行数据
  6. F#学习之路(2) 深刻理解函数(上)
  7. Jordan Elman Neural Networks
  8. cif判断字符串相等_leetcode 86 扰乱字符串(c++)
  9. VS2010: Microsoft.TeamFoundation.PowerTools.CheckinPolicies.ChangesetComments 未注冊
  10. 一种巧妙且简单的数据增强方法 - MixUp 小综述
  11. IDEA集成Git使用教程
  12. linux curl获取头部信息,curl 命令如何获取 http header 返回的响应消息头
  13. cisco2811语音网关+callmanager拨打外线,外线拨入详解配置
  14. libmodbus 手册翻译
  15. 原生开发什么意思_原生app开发是什么意思?
  16. 关闭 Eureka 的自我保护机制
  17. Android 系统截屏实现
  18. 设计模式的艺术——软件开发人员内功修炼之道 重磅来袭
  19. 经典8个数据分析模型
  20. BASLER Pylon 抓取策略

热门文章

  1. 奥林匹克信息学竞赛学习内容
  2. 代码(2):聚类图以及PCA图
  3. 最新爱K易支付在线换钱系统网站源码
  4. 世界杯,四年一次,看世界杯,也看自己
  5. Python爬虫笔记——HTML基础认识
  6. Oracle官方文档日记
  7. linux uboot nfs启动,嵌入式uboot,内核启动通过nfs挂载根文件系统
  8. 如何不需要再sudo输入密码
  9. python获取股市股票数据并播报和右下角弹窗提示,利用datetime和win32com模块,有针对性选择大盘晴雨表卡片
  10. CSS语法之@规则(at-rule)