面向单片机编程(二)-开端,点亮第一个LED

发布时间:2022-12-08  

上一章中我们已经认识了单片机,并且完成了开发环境的搭建,这章中我们正式开始进入单片机编程的学习,本章的学习目标是点亮一盏LED灯。


一、创建一个Keil工程

1、双击运行Keil uVision5,选择Project->New uVision Project新建一个工程


2、入工程名,【注意】不要用中文,最好路径也不含中文,否则可能会出现未知错误!

3、工程新建后,会弹出一个窗口,让你选择设备信息,由于我们要用的51单片机STC89C52和AT89C52引脚完全兼容,硬件连接基本一样,所以我们可以搜索AT89C52

4、接下来,Keil软件会询问你是否添加STARTUP.A51到当前工程,这个一个用汇编代码写的文件,又叫启动文件,作用是可以让单片机从初始状态进入你的C代码程序。这时,工程已经创建好了,接下来我们写一个简单的main函数,首先选择New,新建一个空白文件


5、新建的文件可以直接点击保存到工程文件夹中,填写文件名称,文件名必须要加上.C后缀。

二、编写C程序代码

C文件创建成功后,即可开始在编辑界面编写程序代码了,首先我们需要开始编写一个简单的主程序:

#include 
sbit led_out = P1^0; //将单片机的P1.0端口定义为led_out
void main()
{
        led_out = 0; //P1.0端口设置为低电平(点亮LED)
        while(1)
        {

        }                
}

reg52.h:表示你调用了52或者51单片机的资源,也就是可以直接对单片机的相关寄存器与引脚进行操作


sbit led_out = P1^0;:sbit是定义特殊功能寄存器的位变量(bit和sbit都是C51扩展的变量类型,即C51特有的,而不是C语言标准变量类型),这里我们只需要把sbit当成一个类型即可,就像char、int,只不过char指的是一个字节,而sbit指的是字节里的一个位。


上面还提到特殊功能寄存器(SFR),SFR是80C51单片机中各功能部件对应的寄存器,用于存放相应功能部件的控制命令,状态或数据,SFR(sfr)也是一种扩充数据类型,占用一个内存单元(1字节)。上面式子中的P1就是一个SFR,在reg52.h中,定义了P1寄存器的地址,如果我们对P1进行赋值,就等同于对51单片机的特殊功能寄存器赋值,而P1对应的功能就是单片机P1.0~P1.7这8个IO引脚的状态(高低电平)。


知道了sbit和P1的含义,那么理解sbit led_out = P1^0;就不难了,即定义P1.0引脚的状态为led_out,P1^0也是C51的特有用法。


^在C语言中是按位异或的作用,但在C51中它多了一个作用,即可以指定寄存器的某一位,前面提到P1是一个1字节的变量,它有8个位,分别对应P1.0~1.7,如果直接对P1赋值,那就等同于同时控制单片机的8个IO端口状态,但是使用P1^x(0<=x<=7),就能单独控制单片机的某一个IO端口。


led_out = 0;:从上面的内容我们可以得知led_out代表了单片机端口P1.0的状态,所以我们对它赋值,就等同于控制P1.0这个IO的电平状态,通过查看开发板的原理图,我们发现如果将P1.0端口置为低电平,那么LED1的正负极就能形成压差,从而实现点亮LED。


while(1){}:这是一个死循环,由于单片机上电后要不停的工作,所以我们不能让main函数结束,而是让它不停地执行while函数内部的工作。


那么说到LED的点亮是通过改变其正负极电压,使之形成压差从而实现LED的点亮,那LED是什么?


三、LED的特性

LED也称为发光二极管,是一种常用的发光器件,它在照明领域应用广泛。 发光二极管可高效地将电能转化为光能,在现代社会具有广泛的用途,如照明、平板显示、医疗器件等。


这种电子元件早在1962年出现,早期只能发出低光度的红光,之后发展出其他单色光的版本,时至今日能发出的光已遍及可见光、红外线及紫外线,光度也提高到相当的光度。而用途也由初时作为指示灯、显示板等;
随着技术的不断进步,发光二极管已被广泛地应用于显示器和照明。——百度百科

上图就是LED的电路符号,通过符号就可以判断出正负极位置,由于电路回路中电流是从正极流向负极的,那么对应上图中三角形箭头剑尖所指向的左边方向就是负极,反之右边就是正极。


使用51单片机点亮LED,我们可以选择用单片机IO端连接LED的负极或正极,如果接LED的负极,那么IO端默认电平需要设置为高电平,LED另一个引脚需要接+5V,10k电阻作用是上拉,当需要点亮LED时,将51单片机对应的IO拉低即可。

四、编译烧录代码

在编译代码之前,我们还要开启生成hex文件的选项,该文件就是我们用来烧录的文件。


接下来就是编译代码,点击Build按纽即可完成编译(从左边数,第一个是预编译,第三个重新编译,第四个是链接,最后一个是停止编译),保险起见,新手在编译时,可以把前三个全部点一遍。

编译结果可以在Build Output窗口查看,这里显示的内容主要包括各个空间的大小

(data——片内ram,

xdata——片外ram ,

code——程序存储区rom)及错误和警告的数量(如果存在,则显示它们所在位置和详情)。下面特别标识的信息表示成功创建hex文件(十六进制可执行文件),一般情况下,出现这行信息,说明程序编译通过(有些时候Error为0,但没生成hex文件,也算编译失败)。

将刚才生成的hex文件烧录到单片机中,即可看到LED亮起来了。

Proteus仿真效果


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    全面解析STC89C52单片机LED调光系统电路;摘要: 在场效应管关断后让LED的负极电压升高,使得LED关闭。当场效应管导通时,LED的负极电压被拉低,使得LED发光。PWM调节方式使得驱动电路......
    技术以减少不必要的照明浪费具有重要的意义。 1 系统简介及工作原理 系统由PIC16F690单片机、TSL2561光照度传感器、LED光源和LED驱动电路4部分组成。由于LED的亮度与工作电流成正比,故调......
    以使用定时器,利用比较寄存器形成PWM。 本实验就是利用PWM信号这一特性控制LED产生不同亮度,从而实现呼吸灯的效果。 PWM信号应用场景 我们经常见到的就是交流调光电路,高电平占多一点,也就......
    的目的是为了使室内自然光跟LED灯光进行相互的补偿,使室内照度达到一个合适状态。   本节点的调光模块选用LED恒流驱动PWM调光模块。LED调光节点硬件电路图设计如图3所示。      2.3 系统路由器节点电路......
    的移位寄存器中,而后74HC595的RCLK端加上有效信号,将各芯片中数据由移位寄存器锁存到寄存器中,74HC595的输出使能端受单片机输出的PWM信号控制,当PWM信号为低电平时LED可发光。 3......
    驱动LED模型装置,通过单片机产生三路PWM(Pulse Width Modulation)波来控制MOSFET,从而分别控制三路LED,这样只需要一个DC/DC(Direct Current......
    出电压是高电压,不安全。但有时调光信号不安全是因为调光器是由交流电供电,但没有与输入电流电隔离。所以对于电源来说,如果调光电路没有与输出隔离,整个LED灯具就会不安全,这是采用隔离调光LED驱动的原因。 通常......
    低等优点,非常适合用于控制LED呼吸灯。本项目的呼吸灯将使用PWM(脉冲宽度调制)技术控制LED亮度,从而实现呼吸灯的效果。 在本项目中,将使用51单片机作为主控制器,通过编程实现呼吸灯的控制。将使用C语言......
    输入来打开和关闭。由于其简单性,这种方法非常常用于单 IC LED 驱动器。 PWM 调光不像模拟调光那样线性。当 PWM 控制输入变低时,输出电压不会立即关闭,因为输出电容需要通过 LED 负载......
    算法调制I/O 口输出的PWM 波进行控制单片机通过指定温度和当前温度计算出偏差,将其送入PID 控制器,PID 控制器经过运算,可计算出使误差最快减为0 的PWM 占空比,单片机......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>