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