用51单片机点亮一个发光二极管开始

一、前言
第一次写博客,菜鸟一枚,权当记录自己学习的过程。因为之前自己学习了一下51单片机和C语言,时间长了感觉忘了很多,之前基本按步骤走的多,理解的不够深,而且没有做笔记的习惯,所以博客就当自己的在线笔记吧,以后查找起来也方便。所以写的时候只会标注我自己容易忘和理解的不到位的地方,这样也能督促一下自己持续的学习下去。
使用的开发板是郭天祥的51开发板,教材也主要参考他的新概念51单片机C语言教程,keil2版本,烧录软件是stc-isp下载烧写软件v6.86.exe.
二、keil2新建一个工程
第一步:在D盘下新建一个文件夹stc89c52rc
在这里插入图片描述
补充:1、文件名尽量用英文,不要用中文。因为有些单片机或平台软件不支持中文名2、新建的文件夹尽量放在某盘的根目录下,因为有些平台软件不支持嵌入层次太深的的文件目录
第二步:新建工程
双击打开keil2软件,打开后如果有工程的话,如图所示关闭工程,Close Project
在这里插入图片描述
再建立一个新的工程,New Project
在这里插入图片描述
新建完之后选择路径,我是选择在STC89C52RC文件夹下创建lesson1_1文件,要保存的文件名也用lesson1_1,点击保存,注意:要保存的文件名选择尽量和路径上的文件名一致,因为有些平台软件要求相同
在这里插入图片描述
保存后弹出选择单片机型号,选择AT89c52,因为在keil2平台上没有stc89c52,51系列的单片机是兼容的,点击确定
在这里插入图片描述
点击确定后会出现下图这个英文询问框,选择是和否都可以,在弹出的英文询问框,大致意思是“是否要复制 STARTUP.A51 这个文件到工程里?”,STARTUP.A51 是一个启动程序文件,在单片机进入.c 程序执行 main 函数之前,先去执行这个启动程序,这个启动程序是专门用来初始化 RAM 和设置堆栈等,如果我们选“否”不添加这个启动程序, 编译器也会自动加入一段我们不能更改的默认启动程序。如果选“是”,那么这个文件就会出现在我们工程里, 我们可以根据需要对它进行更改。但是大多数的情况下,我们都不会去更改此文件,所以无论你选“是”还是 “否”,只要你不更改 START.A51 文件,对我们来说都是一样的。
在这里插入图片描述
第三步:添加文件
此时并没有建立好一个完整的工程,因为工程里没有文件和代码。点击file选项中的new,可以看到界面中显示出代码编辑处的text1文件
在这里插入图片描述
接着再次点击file文件下的save按钮
在这里插入图片描述
路径还是选择上面的lesson1_1文件夹下,把文件名改为lesson1_1.c,点击保存。注意:文件名一定要用.c扩展名,这是C文件格式,如果是汇编语言则是.asm。(此时打开 D 目录下“lesson1_1”的文件夹,你会发现此文件夹有一个“lesson1_1.c”的文件,这个文件就是在这一步被新建添加进来的,但是此文件“lesson1_1.c”目前跟整个工程还没有关联。)
在这里插入图片描述
第四步:将新建的文件与工程关联起来
单击target1,右击source group 1,选择add files to group ’source group 1‘
在这里插入图片描述
然后选中lesson1_1.c文件,单击add,再选择close即可
在这里插入图片描述
最后在source group1下看见lesson1_1.c文件夹,工程建立完成。

在这里插入图片描述
三、编辑代码
位操作法点亮第一个发光二极管

#include <reg52.h>//头文件,目的是将这个头文件中的全部内容放在这个位置,以免以后每次编写同类程序都要将头文件中的内容重复编写
sbit led1=P1^0;//将P1口的的最低位定义为led1
void main()
{
	led1=0;//将P1口的最低位置0
	while(1);//让程序停止在这里,因为已经点亮了二极管,注意:单片机不会停止工作,只是一直在循环里
}

四、将.c源程序编译成.hex机器码
单片机只能下载HEX文件和BEN文件,即十六进制和二进制,因为机器只认识这两种文件,即平台软件充当了程序员和机器之间的中介,将高级语言翻译成了机器语言。
将.c源代码编译后无错误,在project目录下单击options for target ’target1‘。
在这里插入图片描述
点击output下的create HEX File勾选上,单击确定
在这里插入图片描述
再次编译可以看到输出栏多了一行creating hex file from “lesson1_1”…,HEX文件编译完成
在这里插入图片描述
五、将.hex文件烧录(就是下载)到单片机中
烧录就如同将电影下载到手机上一样,烧录程序的本质是:把单片机当做一个存储器,每一条程序指令都对应一个唯一的存储 地址,把这些指令以字节为单位一条条存储到指定的存储地址中,这就是烧录程序的本质。对于 STC89C52RC 单片机,在下载程序时需要上位机软件和一根 USB 转串口线。上位机软件负责把.hex 格式的机器码文件打开,机器码文件里面记录着每条程序指令所对应的地址信息,下载过程时,上位机软件根据.hex 文件记录的指令内容和对应的地址信息,经过 USB 转串口线,跟单片机的预置系统程序进行串口通讯,从而把.hex 记录的信息传输到单片机内部的 flash 存储器中,实现了程序的烧录下载。转自独闷闷网,下面网址,(他的一些比喻好恰当,特别容易理解,说的透彻)(http://www.dumenmen.com/forum.php)
设置单片机型号,串口号和波特率,单击打开程序文件,选择lesson1_1.hex文件,单击打开即可
在这里插入图片描述
单击下载/编程可以看到操作成功,即下载完成
在这里插入图片描述
五、结果
实验板上的二极管接线如图所示,接锁存器的目的是A/D芯片也接到P1口,在做A/D实验时,二极管就会随着A/D的变化而变化。因为OE三态允许控制端接地,而单片机上电时所有未控制的I/O口默认高电平,LE锁存端就为高电平,所以没有设置锁存器。输出端就随着输入端变化而变化。
在这里插入图片描述
点亮第一个发光二极管如图所示
在这里插入图片描述
六、总线法点亮二极管
点亮前四个二极管

#include <reg52.h>
void main()
{
	P1=0xf0;//直接对P1口进行操作,让低四位的四个二极管亮,如果用位操作法就麻烦一点了,f0即十六进制11110000,前四个数码管亮
	while(1);
}

在这里插入图片描述
七、总结
到这里点亮一个发光二极管的全部过程完成了。这里我有几个容易忘的知识点。1、#include <reg52.h>头文件的作用,鼠标右击头文件,点击open document <reg52.h>,可以看到头文件的内容,如下面两张图所示。reg52.h是被宏定义好的,在第一段代码中,单片机是不认识P1的,通过sfr关键字(特殊功能寄存器的数据声明,声明一个8位寄存器)将单片机0x90地址的寄存器命名为P1,这样单片机才认识P1。所以我们操作P1就相当于对0x90地址的寄存器进行操作。sbit(特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位)可以看到先通过sfr TCON = 0x88;再由sbit TR0 = TCON^4将TCON寄存器的第四位重命名为TR0;以后就可以直接操作定时器TR0了,而不用每次都去定义了。
在这里插入图片描述
在这里插入图片描述
2、74HC573锁存器的真值表
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值