单片机控制技术应用项目化教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 项目实施

1.4.1 总体设计思路

基本功能部分的实现思路是:用AT89C51构建单片机最小系统,用一个并行口作广告灯控制端口,依次输出不同状态的控制指令,控制发光二极管的亮与灭,从而达到广告灯的效果。总体结构框图如图1-49所示。

图1-49 广告灯总体框图

1.4.2 设计广告灯电路

用AT89C51单片机作为控制部件,AT89C51单片机复位电路采用通电复位形式,时钟电路采用12MHz时钟,20pF电容用作微调电容,红色发光二极管用作广告灯显示,P1口用作显示控制,用470Ω电阻作限流电阻。硬件电路如图1-50所示。

图1-50 广告灯电路图

1.4.3 设计广告灯程序

1)程序设计思路

用左移或右移的方法,循环8次,从左到右和从右到左,轮流使连接发光二极管的端口输出“0”,并延迟一定时间,实现从左到右和从右到左轮流点亮LED。从端口奇数、偶数引脚轮流输出高低相反的电平,并延迟一定时间,实现奇偶闪烁。主程序参考流程图如图1-51所示。

 图1-51 广告灯主程序参考流程图

2)设计程序

根据流程图设计程序,参考程序如下:

#include<reg51.h>  ∥51系列单片机定义文件

void delay(unsigned int);  ∥声明延时函数

main( );  ∥声明主函数

/ ************** 主函数************* /

main( )

unsigned int i;

unsigned char led_val;

while(1)

{

/ ************单个LED灯从左到右点亮************* /

led_val=0x01;

for(i=0;i<8;i++)

        { 

        P0=~led_val;

        delay(100);

        led_val<<=1;

        }

/ **************单个LED灯从右到左点亮************** /

led_val=0x80;

for(i=0;i<8;i++)

        { 

        P0=~led_val;

        delay(100);

        led_val>>=1;

        }

/ ************LED灯奇偶闪烁8次************* /

led_val=0xAA;

for(i=0;i<8;i++)

        { 

        P0=led_val;

        delay(100);

        P0=~led_val;

        delay(100);

        }

}

/ ************延时函数************** /

void delay(unsigned int time)  ∥定义延时函数

        {

        unsigned int t;

        unsigned char bt;

        for(t=0;t<time;t++)

        for(bt=0;bt<250;bt++)

         ;

        }

3)编辑、编译程序

(1)新建广告灯项目

①建立项目文件。运行Keil μVision2工具软件,点击菜单project,选择New Project,建立广告灯项目文件,界面如图1-52所示。

图1-52 新建项目文件界面图

②保存项目文件:在弹出的对话框中,选择广告灯项目文件保存的路径,输入项目文件的名称,如图1-53所示,点击“保存”即可。

图1-53 保存新建项目文件界面

③选择CPU型号。选择Atmel公司AT89C51单片机型号,如图1-54所示,点击“确定”即可。

图1-54 选择CPU型号

(2)新建广告灯源程序文件

①编辑程序。点击菜单File->New,打开源程序编辑界面,在程序编辑区编辑编辑的广告灯的源程序。

②保存源程序。点击File/Save进入保存界面,选择保存的路径,在文件名栏目输入文件名:广告灯.c。 

③添加源程序文件到项目:在项目工作区点击Target 1前面的“+”号展开目录,用右键点击Source Group 1,在弹出菜单中,选择Add Files to Group'Source Group 1'。如图1-55所示。在浏览窗口选择文件类型为(*.c),按原保存路径找到广告灯.c文件,点击Add添加,然后点击Close关闭对话框。source Group1出现广告灯.c文件。

图1-55 添加源程序到项目图

④项目设置。用鼠标右键点击左边的Target 1,会出现一个菜单,选择Options for Target' Target 1'弹出设置窗口。Target栏的Xtal(MHz)设置12MHz,Output栏,选择Great HEX File(项目输出)其他默认设置。

(3)编译广告灯程序。在广告灯项目环境中单击“Project”菜单,在下拉菜单中单击“Built Target”选项,编译程序。如果源程序中有错误,则不能通过编译,错误会在输出窗口中报告出来,双击该错误,就可以定位到源程序的出错行,对源程序进行反复修改,再编译,直到没有语法错误。注意:每次修改源程序后一定要保存。

1.4.4 调试仿真广告灯

1)调试

编译成功后,单击“Project”菜单,在下拉菜单中单击“Start/Step Debug Session”进行调试。打开I/O口P1观察窗口,如图1-56所示。

图1-56 程序调试界面

选择两种方式,通过单步(step)调试,可查看寄存器的数据。选择观察P1端口输出数据,判断程序设计的正确性。修改程序直至正确,点击工具或Project/ ReBuilt Target,编译输出广告灯.Hex文件。

2)仿真

(1)建立仿真模型。运行Proteus仿真软件,建立仿真文件,并且按如下步骤建立仿真模型(仿真电路图)。

①添加库元件。选择工具箱上图标component(元件选取工具),如图1-57所示,点击对象选择器的P按钮(pick Devices),按广告灯硬件电路图,在打开的对话框keyword文本框中键入AT89C51,选择AT89C51,点击OK添加库元件,添加AT89C51。

图1-57 添加库元件

用同样的方法,在keyword文本框中,分别输入RESISTISTORS(电阻)、CERAMIC22P(22P电容)GENLECT10U16V(16V10UF电解电容)、CRYSTAL(晶振)、LED-RED(红色发光二极管)等元件。

②放置元件。在库中选择元件,然后点击电路图中央编辑区放置元件,放置CPU、电阻、电容、发光二极管、晶振等元件,点击图标,在打开的对话框中选择POWER(电源)、GROUND(地),放置到电路图编辑区,如图1-58所示。

图1-58 放置仿真元件

③布局与绘制仿真模型图。按电路图调整元件布局,点击画线工具图标,按电路图建立时钟电路、复位电路、显示电路、EA接高电平。如图1-59所示。

图1-59 广告灯仿真模型

④设置元件参数。右键选中设置元件,点击左键,打开元件属性设置对话框,按电路图设置元件参数。设置CPU参数时,Program File选项选择广告灯.Hex,时钟为12MHz,其他设置可以保持默认,如图1-60所示。

图1-60 CPU参数设置

(2)仿真。点击中的第一个图标,运行仿真广告灯,观察测试功能指标,修改硬件设计和程序设计,使仿真效果与设计要求趋于一致。

1.4.5 安装元器件,烧录、调试样机

1.安装元器件及检测

仿真调试成功后,按硬件电路图安装元件,制作广告灯样机(单片机芯片最好用芯片插座),并进行静态和动态检测。

2.固化程序

仿照前面固化程序的案例,将广告灯.hex文件固化到单片机芯片中。

3.调试广告灯

断开电源,断开下载线,然后再接通电源,运行广告灯系统。观察广告灯的运行状态,对比、分析是否实现了功能,如果没有实现功能,则修改、优化程序,重新调试、下载、运行程序,测试功能,直到实现基本的功能。