您当前的位置:五五电子网电子知识单片机-工控设备51单片机单片机最小系统组成与I/O输出控制 正文
单片机最小系统组成与I/O输出控制

单片机最小系统组成与I/O输出控制

点击数:7729 次   录入时间:03-04 11:59:32   整理:http://www.55dianzi.com   51单片机

图4 LED的接法

    四、程序设计

    在单片机编程语言上,有C 语言和汇编两种选择。本系列教程采用C 语言编写程序,在此对C语言和汇编语言在进行单片机开发时进行下简单比较,汇编语言面向硬件,要求对硬件的特性如寄存器之类的比较熟悉,执行效率高,但可读性和移植性差,不同的单片机之间的程序不能通用,例如学会了51 单片机的汇编指令,却没法用到AVR 单片机上。C语言面向过程,可读性和移植性很好,效率要比汇编低一些。对于刚接触单片机的人来说,学习这两种语言是一样的,但在以后的开发效率上,C 语言的优势就体现出来了,其可以几乎完全不改动的情况下移植,大大提高了开发速度。

    控制发光二极管D1 闪烁的C 语言源程序:

    1. 程序详细说明

    (1)头文件包含。程序接下来调用的P0_0 就是该头文件中定义好的一个寄存器地址。在对单片机内部的寄存器操作之前,应申明其来处,有兴趣的读者可以看看AT89X52.h 文件中的内容。

    (2)宏定义led, 便于直观理解也便于程序修改,将P0_0 口命名为led, 这样在程序中就可以用led代替P0_0 口进行操作。

    (3)延时函数声明。函数在调用之前必须进行声明,由于函数定义放在主函数之后,所以在主函数之前对延时函数进行了声明。

    (4)主函数入口。主函数不传递参数也不返回值。

    (5)死循环。

    (6)输出高电平,led 不亮。

    (7)延时一段时间,以便人眼能够直观看到。

    (8)输出低电平,led 点亮。

    (9)延时一段时间。

    (10)延时函数定义。

    (11)for 语句循环延时。

    2. 程序流程图与实验现象

    程序流程如图5 所示。经编译软件(keil)编译,生成单片机烧写文件,然后就可下载到单片机内部运行了,硬件电路板如图6 所示,本实验板上用的是STC89C52RC,可以用通过板载USB 转串口烧写程序。故将USB 线(本实验套件中有)连接电脑和实验板。供电电源可以从USB 取,也可以从外部电源取电。冷启动,即先点击下载,然后再上电。下载程序到单片机内运行后,可以看到实验板上P0_0 口外接的LED 灯(D1) 一亮一灭的闪烁。

    程序流程图
图5 程序流程图



www.55dianzi.com

    硬件电路板图
图6 硬件电路板图

    五、总结

    本讲主要介绍了51 单片机最小系统的设计以及编写第一个简单的程序。从过该实验,可以掌握单片机的开发流程,从而快速入门。在该讲中应该注意几个问题:

    1. 本讲座中采用C 语言编写程序,因为C 语言的可读性和可移植性强。若读者没有学过C 语言,则应去了解和掌握相应的C 语言知识。C 语言易学易用,相信很快就能熟练。

    2. 程序编译软件采用的是Keil。限于篇幅的原因,在这里就不对其进行讲述,如果读者有对其不明白的地方,可以到本刊论坛的单片机版面,作者制作了一个详细的Keil 入门教程。我们通过Keil编译程序,最终生成烧写单片机的Hex 代码文件。

    Keil 软件界面如图7 所示, 中间空白区域为代码区,左侧为项目列表,最下面为消息窗口。

    Keil软件开发界面
图7 Keil软件开发界面

    3. 本实验板上所用的STC 单片机通过串口下载程序。其上位机软件界面如图8 所示(推荐使用V3.1 版本,最新版本可以到STC 主页上下载:http://www.mcu-memory.com/), 烧写操作很简单,点击“Open File”按钮浏览找到所生成要烧写的Hex 文件后,单片机断电,点击“下载”按钮,单片机上电,程序就可下载到单片机中了。

    STC烧写软件界面
图8 STC烧写软件界面

    4. 产品组件

    读者如果按照该讲内容进行理解并实践的话,可以说单片机就算入门了。下一讲将进一步深入,将要介绍单片机内部定时器和中断系统,敬请期待。



上一页  [1] [2] 


本文关键字:单片机  51单片机单片机-工控设备 - 51单片机