单片机流水灯实验报告

合集下载

单片机跑马灯(流水灯)控制实验报告

单片机跑马灯(流水灯)控制实验报告

单片机跑马灯(流水灯)控制实验报告实验目的:本实验旨在通过使用单片机对LED灯进行控制,实现跑马灯(流水灯)的效果,同时熟悉单片机编程和IO口的使用。

实验器材:1)STC89C52单片机2)最基本的LED灯3)面包板4)若干跳线实验过程:1.硬件连接:将单片机的P2口与面包板上的相应位置连接,再将LED灯接入面包板中。

2.编写程序:按照题目要求编写所需程序。

3.单片机烧录:将程序烧录进单片机中,即可实现跑马灯效果。

程序详解:1. 由于LED灯是呈现亮灭效果,我们要编写程序来控制LED的亮灭状态。

2. 在程序中,我们通过P2口控制LED灯的亮灭状态。

例如,若要让LED1亮,我们就将P2口的第一个引脚设置为低电平(0),此时LED1就会发光。

同样地,若要LED2,LED3等依次点亮,则需要将P2口的第二个、第三个引脚设置为低电平,依此类推即可。

3. 接下来,我们要实现每个LED灯的亮灭时间间隔,并实现跑马灯的效果。

4. 在本实验中,我们采用了计时器中断的方式来实现灯光的控制,即在定时器中断函数中对P2口进行控制,这样可以方便地控制灯亮灭时间和亮度。

通过改变定时器中断的时间,可以改变LED灯的亮灭时间;通过改变P2口的控制顺序,可以实现跑马灯效果。

5. 整个程序比较简单,具体的代码实现可以参考以下程序:#include <REG52.H>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void Delay1ms(uchar _ms); void InitTimer0();sbit led1=P2^0;sbit led2=P2^1;sbit led3=P2^3;sbit led4=P2^4;sbit led5=P2^5;sbit led6=P2^6;sbit led7=P2^7;void InitTimer0(){TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;}void Timer0() interrupt 1 {static uint i;TH0=(65536-50000)/256; TL0=(65536-50000)%256;i++;if(i%2==0){led1=~led1;}if(i%4==0){led2=~led2;}if(i%6==0){led3=~led3;}if(i%8==0){led4=~led4;}if(i%10==0){led5=~led5;}if(i%12==0){led6=~led6;}if(i%14==0){led7=~led7;}}void Delay1ms(uchar _ms){uchar i;while(_ms--){i=130;while(i--);}}实验总结:通过本次实验,我们掌握了单片机控制跑马灯(流水灯)的方法,对单片机编程和IO 口的使用有了更深入的了解。

流水灯 单片机 实验报告

流水灯 单片机 实验报告

课程设计报告(论文)设计课题:流水灯专业班级:学生姓名:指导教师:设计时间:单片机技术课程设计课程设计任务书姓名:专业:班级:指导教师:职称:课程设计题目:流水灯已知技术参数和设计要求:要求电路开启后:led灯逐个亮,逐个灭以中间四点为中心,向外扩散四个灯顺时针亮灯顺时针亮从左往右亮从下往上亮上半部分亮下半部分亮所需仪器设备:计算机一台单片机最小系统一套成果验收形式:设计成果现场验收、回答提问、课程设计报告参考文献:单片机课程教材时间安排指导教师:教研室主任:注:本表下发学生一份,指导教师一份,栏目不够时请另附页。

课程设计任务书装订于设计计算说明书(或论文)封面之后,目录页之前。

内容摘要电子技术实验是一门重要的实践性技术基础课程。

开设本课程的目的在于使学生理论联系实际,在老师的指导下完成大纲规定的实验任务。

通过实验熟悉电工.电子技术的应用中常用的设备和电子器件,熟悉常用仪器的使用方法,掌握正确记录.处理实验数据、绘制曲线、分析实验结果的方法,从而开发学生分析问题或解决问题的能力,培养学生具有严谨的工作作风,实事求是的科学态度,刻苦钻研、勇于探索和创新的开拓精神以及遵守纪律、团结协作和爱护公物的优良品质,为今后从事专业科研工作和工程技术工作打下良好的基础。

流水灯是一串按一定的规律像流水一样连续闪亮。

流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。

索引关键词:流水灯循环亮灭目录一概述 (1)二方案设计与论证 (1)三单元电路设计与参数计算 (2)四总原理图及元器件清单 (3)五安装与调试 (4)(一般分静态调试与动态调试两大内容)六性能测试与分析 (4)(要围绕设计要求中的各项指标进行)七结论 (4)八心得体会 (4)九参考文献 (4)附录:程序一、概述要求电路开启后,灯在时钟信号作用下按以下规律转换状态。

电路开启后:led灯逐个亮,逐个灭,以中间四点为中心,向外扩散,四个灯顺时针亮,灯顺时针亮,从左往右亮,从下往上亮,上半部分亮,下半部分亮二、方案设计与论证实现单片机流水灯很简单,但是我们不能说P1.0你变低,它就变低了。

单片机流水灯实验总结800字(6篇)

单片机流水灯实验总结800字(6篇)

单片机流水灯实验总结800字(6篇)关于单片机流水灯实验总结,精选6篇范文,字数为800字。

实验总结是指对某一阶段实验情况的总结,是对已经做过的实验所作的总结,也是对实践进行检验与评价工作的依据。

今天为大家整理了单片机流水灯实验总结,希望对大家有所帮助。

光阴似箭,日月如梭。

转眼,一个月的实习期就要过去了,回顾一个月的实习生活感受颇多。

我于xx年xx 月xx日开始到湖南农业大学金秋期间实习,作为一名刚踏出校门的大学生,我充满期待。

我实习的单位是湖南农业大学金秋期间的实习单位。

单片机流水灯实验总结(范文):1实验总结是指对某一阶段实验情况的总结,是对已经做过的实验所作的总结,也是对实践进行检验与评价工作的依据。

今天为大家整理了单片机流水灯实验总结,希望对大家有所帮助。

光阴似箭,日月如梭。

转眼,一个月的实习期就要过去了,回顾一个月的实习生活感受颇多。

我于xx年xx月xx日开始到湖南农业大学金秋期间实习,作为一名刚踏出校门的大学生,我充满期待。

我实习的单位是湖南农业大学金秋期间的实习单位。

我实习的单位是湖南农业大学金秋期间的实习单位,这是一家农业大学的单位,是由湖南省农业大学农业学院的教学与科研单位组成。

我实习的单位是湖南农业大学金秋期间的实习单位。

我实习的单位是湖南农业大学金秋期间的实习单位。

该单位的经济效益良好,在农业生产上也给我们提供了良好的服务,我们作为实习的负责人对他们表示衷心的感谢。

这次实习我主要是在生产部和机电部实习。

通过在机电部参观生产线上的各个岗位的工作,我熟悉和掌握了各个生产部的作业程序及原理和方法,对机电部各个岗位也有了深刻的了解和认识,这次实习不仅仅是对我们专业知识的扩展,同时也是我们的一次综合能力的培养,使我们不仅要能学好专业的知识,也要注意多方面的学习,比如,如何在生产部门的岗位上工作,这就要求我们在以后的学习中要注意知识的积累。

在实习期间我严格按照公司的要求和指导老师的要求,认真做好每日的日常工作,在工作中学习,在实践中提高自己的技术水平。

单片机跑马灯(流水灯)控制实验报告

单片机跑马灯(流水灯)控制实验报告

单片机实验报告姓名: 学号:一、 实验实现功能:1:计数器功能2:流水灯二、 具体操作:1、计数器功能数码管的动态显示。

每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。

2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。

三、 程序流程图开始 定时器T0 设置初值,启动定时器,打开中断复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开四、程序#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16; //类型定义sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit P2_4 = P2^4; //位声明四个数码管开关sbit Key2 = P3^2;sbit Key3 = P3^3; //位声明2个按键K2和K3sbit Ledk = P2^0 ; //LED 开关void delay(uint16 i); //延时函数声明void refresh (); // 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main() //主函数{TMOD = 0x01; //定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18; //定时器初值使每次循环为1msTR0 = 0; //定时器0开始作ET0 = 0; // 定时器中断关EA = 0; // 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j; // 定义局部变量for(i;i>0;i--) //循环i*240 次for(j=240;j>0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j<4;j++) //四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20); //延时消抖}}/*************定时器的中断服务函数**************/void Timer0_Overflow() interrupt 1 //定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1; //中断开放ET0 = 1; //定时器0中断开while(1){Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{P0=~(1<<j++); //控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{j=0;}}}。

跪求单片机8个流水灯的课程设计实验报告(共9篇)

跪求单片机8个流水灯的课程设计实验报告(共9篇)

跪求单片机8个流水灯的课程设计实验报告(共9篇)单片机花样流水灯设计实验报告* * 大学物理学院单片机花样流水灯设计实验课题:花样流水灯设计班级: 物理***姓名:*** 学号:当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。

制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。

本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。

本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。

该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。

关键字:AT89C51 单片机流水灯数码管1. 单片机及其发展概况单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。

单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。

2. Protues仿真软件简介Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。

利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。

【实验设计目标】设计要求以发光二极管作为发光器件,用单片机自动控制,对8个LED灯设计至少3种流水灯显示方式,每隔20秒变换一次显示花样,计时通过一个二位七段数码管显示。

流水灯实验报告

流水灯实验报告

流水灯实验报告实验目的1.了解单片机I/O口的工作原理。

2.掌握51单片机的汇编指令。

3.熟悉汇编程序开发,调试以及仿真环境。

一、实验内容通过汇编指令对单片机I/O进行编程(本实验使用P0口),以控制八个发光二极管以一定顺序亮灭。

(即流水灯效果)二、实验原理通过更改P0口8位的高低电平,分别控制8个发光二极管的亮灭。

具体的亮灭情况如下表:要实现“流水灯”效果,也就是需要将P0口的输出值发生以下变化:FE→FD→FB→F7→EF→DF→BF→7F→BF→DF→EF→F7→FB→FD→FE→......可以使用一个循环,不断对数据进行移位运算实现。

这里的移位指令采用RL和RR,即不带进位的位移运算指令。

如果使用带进位的位移运算指令(RLC和RRC),则需要定期把CY置0,否则会出现同时亮起两个发光二极管的情况。

三、实验过程1.在仿真系统中绘制好单片机的电路图2.编写汇编程序,程序如下:ORG 0000HDelay: MOV R0,#0FFHSJMP StartDelay1: MOV R1,#0FFHStart: MOV A, Delay2: NOP#0FEHMOV P0, A DJNZ R1,Delay2 CLR P2.7 DJNZ R0,Delay1 CLR P3.7 RETMove: MOV R2, #7H ENDMOV R3, #7HRMove: RL AMOV P0, ACALL DelayDJNZ R2,RMoveLMove: RR AMOV P0, ACALL DelayDJNZ R3,LMoveSJMP Move四、实验结果为了便于实验结果的描述,下面分别把P0.0, P0.1…, P0.7对应的发光二极管编号为1, 2, …, 8号二极管。

在仿真系统中,先从1号二极管下面是在仿真系统中的实验结果:1.只有1号二极管点亮2.只有2号二极管点亮3.只有3号二极管点亮4.只有4号二极管点亮5.只有5号二极管点亮6.只有6号二极管点亮7.只有7号二极管点亮8.只有8号二极管点亮实验的结果:二极管的发光状态从1→2→3→4→5→6→7→8→7→…→1→2;如此往复循环。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告:实验一:用C51实现流水灯实验实验要求:完成亮流水,即LED从低位流向高位流动,每次流动一位,且每次只亮一个LED灯,其它LED灭。

实验原理:单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。

使用r1或rr a实现位的转换。

实验内容:通过仿真来实现实验电路图代码如下;for(x=0;x<8;x++){P0=num[x];delay();}for(x=6;x>0;x--){P0=num[x];delay();}P0=0xfe;实验结果:实验程序:#include<REG51.H>void delay();//延时函数声明void main()//主函数{unsigned charx,num[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};while(1){for(x=0;x<8;x++){P0=num[x];delay();}for(x=6;x>0;x--){P0=num[x];delay();}P0=0xfe;}}void delay()//延时函数,无符号字符型变量i为形式参数{unsigned int j,k;//定义无符号字符型变量j和kfor(k=0;k<500;k++)//双重for循环语句实现软件延时for(j=0;j<100;j++);}实验总结:这次试验通过仿真实验软件实现流水灯实验,充分学会了keil 软件和Proteus电路仿真的联合调试,为后期的实验做足了功课。

也认识到仿真实用性。

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告引言单片机是一种集成电路,可以通过编程来控制不同的功能。

其中,流水灯是一个最简单的单片机实验项目,也是学习单片机的第一步。

本篇实验报告将详细介绍如何通过使用 AVR 单片机来实现一个流水灯的控制器。

实验原理流水灯的原理很简单,就是通过一个方向控制信号,以及一定的时间延时控制来逐步点亮和熄灭多个 LED 灯。

在本次实验中,我们将使用 AVR ATmega328P 单片机,它可以通过编程来实现流水灯的控制功能。

实验步骤1. 硬件准备将 ATmega328P 单片机插入到开发板中,并使用杜邦线将单片机的引脚连接到各个 LED 灯。

我们需要将一个引脚连接到方向控制信号,用于控制灯的点亮方向。

同时,我们还需要连接一个电位器,用于调节流水灯的速度。

2. 程序设计使用 Arduino 开发环境来编写 AVR 单片机的程序。

首先需要包含头文件 avr/io.h 和 util/delay.h,并定义输入输出引脚。

然后,我们需要定义一个名为“led” 的一个数组,来存储各个 LED 灯的输出状态。

同时,还需要定义一个变量“dir”,来表示流水灯的方向。

在程序主循环中,我们使用 for 循环来遍历各个 LED 灯。

同时,根据“dir”变量的不同,我们可以实现流水灯的正向和反向控制。

另外,我们还需要使用“_delay_ms()”函数来延时一定的时间,实现流水灯的闪烁效果。

3. 程序烧录使用 AVR ISP 编程器将编写好的程序烧录到单片机中。

在烧录过程中需要设置正确的程序和芯片类型,并选择正确的口线连接方式。

实验结果经过实际测试,我们成功地实现了一个流水灯控制器。

在调节电位器之后,灯的闪烁速度可以得到不同的调整。

同时,也可以通过改变方向控制信号来改变流水灯的运动方向。

结论通过本次实验可以学习到如何使用 AVR 单片机来实现一个简单的流水灯控制器。

通过编写程序、烧录编译等过程,可以加深对单片机的基础知识和理解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机流水灯实验报告
电子信息工程学系实验报告
课程名称:单片机原理及接口
实验项目名称:实验2 流水灯实验时间: xx-10-21 班级:电信092 姓名:蔡松亮学号: 910706247
一、实验目的:
进一步熟悉keil仿真软件、proteus仿真软件的使用。

了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。

掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

二、实验原理:
MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。

每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。

四组并行I/O端口即可以按字节操作,又可以按位操作。

当系统没有扩展外部器件时,I/O端口用作双向输入输
出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。

以P1口为例,内部结构如下图所示:
图 P1口的位结构
作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。

输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。

作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。

I/O口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;P0口作I/O 口使
用时应外接10K的上拉电阻,其它口则可不必;P2可某几根线作地址使用时,剩下的线不能作I/O口线使用;P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。

三、实验环境:
硬件:PC机,基本配置CPU PII以上,内存2G 软件:keil 2, Proteus 7.5
四、实验内容及过程:
1、用Proteus画流水灯电路图流程:
1)、运行Proteus仿真软件,单击pick from libraries,打开搜索元器件窗口,如图 1 所示:
图 1 打开搜索元器件窗口
2)、搜索添加元器件,如图2 所示:
图2 搜索添加元器件窗口
3)、添加元器件,修改元器件的参数,绘制流水灯原理图,元器件参数为c1=c2=20pf、c3=10uf;
R1=R2=R3=R4=R5=R6=R7=R8=470欧姆、R9=10k欧姆;晶振
=12M;VCC=5V。

总电路图如图 3 所示:
图 3 流水灯电路原理图
2、用keil建项目流程:
1)、运行keil 2软件,启动后,点击Project菜单新建项目,新建项目后,选择为AT89C51的仿真单片机的型号,单击File选择New新建程序文件,保存后,右击Source Group1添加入程序文件。

2)、编写程序,右击Target 1打开设置输出HEX窗口,如图 4 所示:
图 4 打开设置输出HEX窗口
3)、设置输出HEX文件,勾选上Output下的Create HEX Fi:,单击确定保存,运行程序得到HEX文件,如图 5 所示:
图5 设置输出HEX文件
3、实验内容:
1)、8个LED灯从最高位依次点亮,每次只亮一盏灯,依此循环。

新建keil文件,编写程序,程序如下:
#include #include #define uint unsigned int
#define uchar unsigned char void defay(uint z) {
uint x,y;
for(x=100;x>0;x--) for(y=z;y>0;y--); }
uchar temp; void main() {
temp=0xfe; P2=temp; while(1)
{
temp=_crol_(temp,1); defay(500); P2=temp;
} }
2)、编写程序使8个LED灯从两边向中间循环点亮。

编写程序,程序如下:
uchar temp,m,n;
uint i; void main() {
m=0xfe; n=0x7f; while(1) {
P2=m&n;
m=_crol_(m,1); n=_cror_(n,1); if(m==0xef)
{
m=0xfe; n=0x7f; }}
3)、编写程序使用一根或二根I/O线接一开关控制流水灯流向。

编写程序,程序如下:
sbit p15=P1^5; void main() {temp=0xfe;
P2=temp; while(1) defay(500); }
{
if (p15==1){ temp=_crol_(temp,1);
defay(500); }
if (p15==0) { temp=_cror_(temp,1); defay(500); }
P2=temp; } }
五、实验心得:
通过本次的实验,熟悉keil仿真软件、proteus仿真软件的使用。

了解并熟悉单片机I/O口和LED灯
51单片机流水灯试验
一、实验目的
1.了解51单片机的引脚结构。

2.根据所学汇编语言编写代码实现LED灯的流水功能。

3.利用开发板下载hex文件后验证功能。

二、实验器材
个人电脑,80c51单片机,开发板
三、实验原理
单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED 灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。

使用rl或rr a实现位的转换。

A寄存器的位经过rr a之后转换如下所示:
然后将A寄存器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置一操作。

四、实验电路图
五、通过仿真实验正确性
代码如下:ORG 0
MOV A,#00000001B
LOOP:MOV P2,A
RL A
ACALL DELAY
SJMP LOOP
DELAY:MOV R1,#255
DEL2:MOV R2,#250
DEL1:DJNZ R2,DEL1
DJNZ R1,DEL2
RET
End
实验结果:
六、实验总结
这次试验我通过Proteus仿真实现对流水灯功能的实现。

受益匪浅,对80c51的功能和结构有了深层次的了解,我深刻的明白,要想完全了解c51还有一定距离,但我会一如既往的同困难作斗争。

在实验中,我遇到了不少困难,比如不知道怎么将程序写进单片机中,写好程序的却总出错,不知道什么原因,原来没有生成hex文件。

这些错误令我明白以后在试验中要步步细心,避免出错。

单片机流水灯实验报告
一、实验目的
1、熟练掌握AT89S52-Ⅰ型开发板的使用方法和注意事项。

2、了解简单单片机应用系统的设计方法。

3、掌握应用KEIL软件、编译源汇编程序的操作方法。

4、掌握应用USBISP烧录软件的操作方法。

5、帮助学生养成良好实验习惯。

二、实验内容
在AT89S52-Ⅰ开发板上实现8个发光LED“流水”的现象,并通过编写程序控制流水现象。

三、实验说明
当8255 的PA口有低电平输出时,相应的发光二极管就会点亮。

应用这一原理我们可以容易的点亮一个数码管,例如令PA口输出0111 1111时D1就会点亮。

若再把0111 1111向右循环一位,利用PA口输出,就会点亮D2。

在发光二极管两次点亮的间隔中加延时程
序,让每次点亮停留一段时间,像这样人眼就可以看到“流水”的现象。

五、实验原理图
六、实验参考程序
#include
#define uchar unsigned char
#define uint unsigned int
uchar table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
sbit P00=P0^0;
sbit P01=P0^1;
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
for(j=0;j<110;j++); }
void main()
{
uchar i;
while(1)
{
P00=1;
delay(200);
P00=0;
for(i=0;i<8;i++) {
P1=table[i];
P2=table[i];
delay(200);
}
P01=1;
delay(200);
P01=0;
}
}
实物展示:
(1)单片机最小系统板
(2)自己焊制的集成最小系统板(3
)自己制作的心形流水灯实验板
(4)系统板与实验板的连接展示内容仅供参考。

相关文档
最新文档