太原理工大学
单片机原理与应用技术课程
专业班级 学 号 姓 名 指导教师
实验报告
跑马灯控制
一、实验目的
(1)进一步熟悉Keil和Proteus软件的操作,掌握快速复制元器件的操作方法;
(2)掌握利用多路LED实现跑马灯控制的原理; (3)掌握循环移位、查表的编程方法。 二、实验硬件和软件
计算机1台,并安装Proteus软件和Kei C51软件。 三、实验任务
实现跑马灯控制效果,八个发光二极管L1-L8分别依次点亮,时间间隔0.2S,点亮顺序为:L1→L2→…→L8→L7→L6→…→L1亮,重复循环。 四、实验电路及分析
实验电路如图所示,分析可知当P1.0-P1.7端口输出“0”时,发光管点亮;当P1.0-P1.7端口输出“1”时,发光管熄灭。
跑马灯仿真电路图
五、实验程序编写 1.跑马灯控制分析
根据跑马灯的控制要求,P1.7-P1.0输出状态如下表所示,P1口输出值从0XFE开始,循环左移7次后变为0X7F,然后循环右移7次 变为0XFE,移位操作之间延时0.2S,循环左移的终止状态是循环右移的初始状态,注意该状态持续时间仍为0.2S,不是0.4S ,以上过程 重复循环。
P1口输出状态表
P1 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 说明 L8 L7 L6 L5 L4 L3 L2 L1 0-亮/1-灭 循 FE 1 1 1 1 1 1 1 0 L1 亮 FD 1 1 1 1 1 1 0 1 L2 亮 FB 1 1 1 1 1 0 1 1 L3 亮 环F7 1 1 1 1 0 1 1 1 L4 亮 EF 1 1 1 0 1 1 1 1 L5 亮 左DF 1 1 0 1 1 1 1 1 L6 亮 移 BF 1 0 1 1 1 1 1 1 L7 亮 7F 0 1 1 1 1 1 1 1 L8 亮 循 7F 0 1 1 1 1 1 1 1 L8 亮 BF 1 0 1 1 1 1 1 1 L7 亮 DF 1 1 0 1 1 1 1 1 L6 亮 环EF 1 1 1 0 1 1 1 1 L5 亮 F7 1 1 1 1 0 1 1 1 L4 亮 右FB 1 1 1 1 1 0 1 1 L3 亮 1 1 1 1 1 0 1 L2 亮 移 FD 1 FE 1 1 1 1 1 1 1 0 L1 亮 2.C语言程序
#include #include void Delayms(unsigned int n) { unsigned int i, j; for(j=n; j>0;j--) for(i=112; i>0; i--); } int main( ) { unsigned char n; unsigned char temp; while(1) { temp=0xfe; P1=temp; for(n=7;n>0;n--) { temp=_crol_(temp,1); Delayms(200); P1=temp; } for(n=7;n>0;n--) { temp=_cror_(temp,1); Delayms(200); P1=temp; } } } 3.程序流程图 六、实验步骤 1.利用Proteus软件绘制仿真电路图 (1)打开Proteus软件,File→New Project进入工程创建向导,选择项目文件存放路径,项目文件名为“实验2.pdsprj”。 (2)创建原理图(schematic),默认模板为default,可根据电路规模选择 合适的图纸大小。 (3)选择“Do not create a PCB layout”,即不绘制PCB图。 (4)选择第一项“No Firmware Project”,即不在Proteus平台下创建源程序。需要在Keil C环境下编写源程序并成功编译生成hex文件,然后加载到Proteus仿真电路的单片机上。 (5)工程创建向导结束,配置情况确认。 (6)点击“P”按钮在器件库中搜索并添加电路中所需要的器件。 (7)根据电路图将器件放置到绘图区并合理布局,右键单击器件弹出快捷菜单,可以进行旋转、镜像、修改参数(如电容、电阻大小、晶振频率)等操作,双击器件也可以打开参数设置对话框。 (8)用导线将各个器件连接起来,最终的仿真电路。 2.利用Keil软件编写单片机程序 (1)打开Keil软件,点击菜单project→New μVision project,创建项目文件Lab2-C.uvproj,保存位置建议与Proteus工程文件相同。 (2)选择单片机为Atmel公司的AT89C51,当然也可以选择其他51单片机(如 AT89S51),窗口右边给出了单片机的内部资源。 (3)对话框提示是否加入启动代码,选择“否”。 (4)在工程浏览窗口,右键单击“Target1”,单击“Options for Target…”;进入选项设置对话框,单击“output”选项卡,勾选“Create HEX file”后确定。 (5)右键单击“Source Group1”,为工程添加新的程序源文件(Add New Item),当然也可以添加已存在的源程序文件(Add Existing Files…) (6)选择文件类型为“C File(.c)”,文件名为Lab1.c。 (7)输入C语言程序代码,并编译成功得到hex文件,该文件所在位置为:E:\\李泽\\单片机\\实验1\\Objects\\Lab2-C.hex,文件名与项目名相同。 (8)单击调试按钮(或按快捷键Ctrl+F5)进入调试状态,通过菜单“Peripherals”调出P1端口,然后全速(F5)或者单步(F10)仿真运行,观察变化。仿真调试结束后再次点击调试按钮退出。 3.在Proteus平台上为单片机加载程序并仿真运行 (1)切换到Proteus软件,双击单片机进入属性对话框,将Program File设置为Keil软件生成的hex文件,文件位置为E:\\李泽\\单片机\\实验1\\Objects\\Lab2-C.hex,然后点“OK”确定。 (2)点击左下角的启动仿真按钮(或按快捷键F12)进入仿真运行状态,如果电路和程序正确,八个发光二极管L1-L8分别依次点亮,时间间隔0.2S,点亮顺序为:L1→L2→…→L8→L7→L6→…→L1亮,重复循环,最后点击停止按钮结束仿真运行。 因篇幅问题不能全部显示,请点此查看更多更全内容