5 AT89S52单片机开发入门流水灯实验
单片机跑马灯(流水灯)控制实验报告
单片机跑马灯(流水灯)控制实验报告实验目的:本实验旨在通过使用单片机对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 口的使用有了更深入的了解。
AT89S52 单片机开发板实验手册 说明书
AT89S52单片机开发板实验手册概述:AT89S52多功能单片机开发板特点:1. 板载资源丰富,常见的控制对象基本已经包括.2. 采用在系统方式(ISP)编程,通过下载电路下载程序,不用烧录器即可下载程序,调试方便.3. 可由直流稳压电源或通过USB数据线供电.按键保持的电源开关,连接线路时只用按一下即可断开电源.扩展了若干个电源接口,板上电源可以外接给其他电路板使用.4. 所有板上资源均用排针引出,可方便用ARM,DSP或其他控制器控制.5. 红外发射/接收 ,PS/2接口接入键盘,时钟芯片,数字温度计测温等模块的程序编成了子函数,已经模块化,工程应用需要时可以直接调用.6. 配套光盘提供程序,常用软件(编译软件,烧录软件,字模提取,串口上位机软件,C语言所有库函数等),视频教程(主要为计算机屏幕操作的录像),开发板用户手册,原理图,器件 Datasheet等.配套提供的所有程序均可直接运行,注释已经尽量详细,能满足从单片机 入门到进阶的需要.7. 基于以上各模块,提供了综合应用的实例,即:可通过PC机键盘或通过红外发射进行控制的电子万年历等.(具体见实验介绍).本开发板含有如下功能模块:01. 流水灯 (控制8个超亮LED闪烁)02. 方波,PWM信号输出03. 按键中断04. 四位数码管动态显示05. 计数脉冲信号并显示06. 报警与音乐演奏07. 4×4键盘扩展08. 看门狗+上电自动复位+手动复位+电源监控09. 128*64点阵式液晶显示 (可显示画面和文字等)10. RS232串行通讯 (单片机通过串口与PC机进行通讯,板上数码管和上位机软件均可显示通讯的数据,提供上位机软件)11. 红外信号发射与接收 (单片机控制红外二极管发射红外信号并接收信号,也可以通过遥控器发射,单片机控制接收信号并处理)12. 温度测量13. I2C接口的E2PROM (AT24C08,8K容量,可用于断电时存储数据等场合,单片机软件模拟I2C总线协议与之通讯)14. 时钟芯片 (扩展时钟芯片以获取年/月/日,当前时间,星期等信息)15. PS2接口 (可外接PC机的键盘做系统的输入)16. 可通过键盘/红外遥控控制的电子万年历 (液晶屏显示年/月/日,当前时间,星期,闹铃定闹的时间,倒计时状态等;可以修改闹铃时间和倒计时的起始时间;可显示环境温度;可通过PS/2接口接入键盘或通过红外发射来校正时间,开/关闹铃等.)实验注意事项:1. 板上扩展有两个电源接口(接线柱),正负极已经标出,外接时极性不能接反.2. 通电时,最好不要用手拿着电路板,防止短路;接线时最好断开电源(开关为J1).3. 调试出现故障注意查看复位电路是否接入(最好直接接上上电自动复位电路(即J14中将上电自动复位端和复位端用短路冒短接,接好后还可以通过S17手动复位),看门狗复位可以在后面再接入).4. 下载程序时单片机P1.5,P1.6,P1.7三个脚禁止接到功能模块,否则会影响程序下载.程序比较大时,5K,6K或以上的代码时,下载可能比较慢,如果下载失败,一般重试一次即可成功下载.5. 由于并口的影响,断开电源时可能发光LED也有微弱发光,为正常现象.6. 程序以光盘中程序目录下的为准.7. 数码管和液晶不能同时接入系统,否则任一部分都不能正常使用.编程软件和烧录软件等的使用见视频教程.如有疑问可到论坛发帖.实验目录(Ⅰ)基本实验1. 流水灯-------------------------------------------------------------------------------------------42. 方波-PWM信号输出 --------------------------------------------------------------------------63. 按键中断----------------------------------------------------------------------------------------84. 四位数码管动态显示-------------------------------------------------------------------------105. 计数脉冲信号并显示-------------------------------------------------------------------------126. 报警与音乐演奏-------------------------------------------------------------------------------137. 4×4键盘扩展----------------------------------------------------------------------------------138. 看门狗+上电自动复位+手动复位+电源监控----------------------------------------------149. 128*64点阵式液晶显示 ------------------------------------------------------------------1410. RS232串行通讯------------------------------------------------------------------------------1511. 红外信号发射与接收-------------------------------------------------------------------------1612. 温度测量---------------------------------------------------------------------------------------2313. I2C接口的E2PROM--------------------------------------------------------------------------2314. 时钟芯片---------------------------------------------------------------------------------------2415. PS2接口---------------------------------------------------------------------------------------24(Ⅱ)综合实验16. 可调式电子万年历-------------------------------------------------------25 综合应用的实例会不断添加,敬请关注我们的网站.(Ⅰ)基本实验1.流水灯实验内容:利用单片机I/O口输出高低变化的电平,控制流水灯按程序设置的功能闪烁.接线说明J7接入单片机P0口.注意:单片机端口有两种操作方式,一种是写端口,如 P0=0xff; 另一种是读端口,如if(P0==0xff) ,即读I/O口P0的状态,值为0xff 时满足条件.程序清单:/***************************************************************函数功能: 控制8个流水灯闪烁接线说明: 流水灯接线柱接到P0口学习内容: 单片机IO口(输入/输出)的应用整理时间: 2006-10 ****************************************************************/#include<reg52.h>delay(int k); //延时函数预定义main(){int i;int data1=0x7f;int data2=0xfe;while(1){int abb=0xfe; //变量abb赋初值for(i=0;i<8;i++){P0=abb;delay(1000); //延时1秒abb=abb<<1; //8个灯依次点亮}P0=0xff; //8个灯均灭delay(1000);abb=0x7f;for(i=0;i<8;i++){P0=abb;delay(1000);abb=abb>>1; //8个灯换个方向依次点亮}P0=0xff; //8个灯均灭delay(1000);P0=0x00; //8个灯均灭delay(1000);P0=0xff; //8个灯均灭delay(1000);}}delay(int k) //延时函数,大致延时K毫秒{int d,n;for(d=0;d<k;d++){for(n=0;n<125;n++){;} //由经验值,12M晶振时大概的延时时间(延时1ms) }}2.方波输出<1>. 利用板上NE555组成振荡器产生方波.占空比及周期可以通过相关电阻,电容的数值计算得出.(线路已经接好,上电后L2即开始闪烁)<2>. 通过单片机定时器产生方波通过设定定时器的定时值,计数值满时溢出产生中断,在中断服务程序中使相应管脚输出电平反相,从而产生方波信号.接线说明:单片机P1.2接到流水灯上(J7)的任意一个程序清单:/*********************************************************************** 函数功能: 利用内部定时器输出方波控制流水灯接线说明: P1.2接到流水灯上(J7)的任意一个学习内容: 单片机内部定时器/计数器的应用编程思想: 单片机内部定时器最大定时值不超过一秒, 可以用累加的方式增加定时时间整理时间: 2006-10 ***********************************************************************/ #include <reg52.h>int time=0;sbit P1_2=P1^2; //定义控制脚void timeout1() interrupt 1 using 2 //定时器0的中断服务程序{if(++time==100) //延时100*10ms(即1秒)时输出反向{P1_2=~P1_2;time=0;}TH0=(65536-10000)/256; //重装数据,延时10msTL0=(65536-10000)%256;TR0=1;}main(){TMOD=TMOD&0xf0|0x01; //定时器0工作在方式1EA=1;ET0=1;TH0=(65536-10000)/256; //延时10msTL0=(65536-10000)%256;TR0=1;while(1){;}}<3>.单片机输出PWM波形输出PWM信号的原理与产生方波大致一样.设定一个数组,存入不同的延时值,定时器装入初值,溢出后产生中断,在中断服务取出数组中的定时值赋给定时器的数据寄存器 , 从而产生PWM波形.高低电平的维持时间有数组的值决定.接线说明:单片机I/O口P1.0接到流水灯上的任意一个.程序清单:/*******************************************************************函数功能: 利用内部定时器输出PWM信号控制流水灯接线说明: P1.0接到流水灯上的任意一个学习内容: 单片机内部定时器/计数器的应用编程思想: 输出低电平1000微秒,高电平15000微秒(12M的晶振时),可应用于电力电子技术中升压斩波电路等做IGBT的触发信号等.整理时间: 2006-10 *******************************************************************/#include <reg52.h>sbit P1_0=P1^0; //定义变量P1_0代表I/O口P1口的0脚bit i=0;int tab[2]={1000,15000};void timeserver() interrupt 3 using 3 //定时器1中断服务程序{P1_0=~P1_0; //输出取反i=~i;TH1=(65536-tab[i])/256;TL1=(65536-tab[i])%256;TR1=1;}main(){P1_0=0;TMOD=TMOD&0x0f|0x10; //不改变定时器0的工作状态,定时器1工作于方式1 TH1=(65536-tab[i])/256; //定时器存入初值TL1=(65536-tab[i])%256;EA=1; //CPU开中断TR1=1; //定时器1开始工作while(1){;} //等待定时器中断}3.按键中断通过设定单片机中断的形式,如下降沿产生中断或低电平产生中断.按键输入低电平到相应中断输入管脚,单片机识别出中断信号,如果CPU和相应外部中断使能有效(即EA---CPU中断使能位,EX0,EX1---外部中断使能位),则进入中断服务程序.接线说明:中断按键的线路已经连接好,不用另外接线. 数码管用跳线冒接入(即AA连接到P0.0,BB 连接到P0.1依次接入,CON1…CON4分别接到P2.7……P2.4)程序清单:/****************************************************************函数功能: 利用内部中断控制数码管显示接线说明: 数码管用跳线冒接入学习内容: 单片机中断(外部)的应用编程思想: 单片机识别出中断0或中断1就转向中断服务程序整理时间: 2006-10 *****************************************************************/#include <reg52.h>bit flag1=0,flag2=0;void service_int1() interrupt 0 //外部中断0的中断服务程序,0为中断源序号,2为//使用的寄存器(可更改){flag1=1; //允许数码管显示数据}void service_int2() interrupt 2 //外部中断1的中断服务程序{flag2=1; //允许数码管显示数据}void delay() //延时程序{int j;for(j=32400;j>0;j--){;}}void main(){EX0=1; //开外部中断EX1=1;EA=1; //开CPU中断P0=0x00;P2=0xff;IP=0x04; //设置中断优先级,外部中断0的级别设为最高,外部中断1和其他中断同级//不设优先级则按单片机硬件决定while(1){P0=0x00;P2=0xff;if(flag1==1){P0=0xd5; //显示 3P2=0x00;flag1=0;delay();}if(flag2==1){P0=0xdb; //显示 6P2=0x00;flag2=0; //清除显示使能delay();}}}4. 四位数码管动态显示数码管每个显示数字共用数据线(8根线),每个分别有一个使能管脚,显示数据采用隐消的编程方法,即每一位显示一段时间再轮换.接线说明:数码管用跳线冒接入(即AA连接到P0.0,BB连接到P0.1依次接入,CON1…CON4分别接到P2.7……P2.4).数码管何液晶不能同时接入系统,否则任一部分都不能正常使用.程序清单:/************************************************************************* 函数功能: 数码管数值动态显示接线说明: 用跳线冒接入数码管学习内容: 常用的输出显示器件的编程应用编程思想: 用隐消的方法实现数码管的动态显示,显示部分整理成库文件,方便以后直接应用整理时间: 2006-10 *************************************************************************/ #include <reg52.h>#include <LED8888.h> //调用封装好的显示库函数main(){int j,k;k=1286; //显示值,实现数值累加显示while(1){for(j=1;j<70;j++){Led(k); //数码显示}k+=1;}}以下为 LED8888.hchar shuju[10]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7}; //数码管显示数字0-9void led8888_Delay(int j) //延时函数{int m;for(m=0;m<j;m++){i;intfor(i=0; i<300; i++){;} //约1ms}}void Led(int k){if(k>999){P2=P2&0x7f; //P2.7输出低电平,选通千位数P0=shuju[k/1000]; //取千位数led8888_Delay(2); //延时P2=P2|0xff; //销隐}if(k>99){P2=P2&0xbf; //P2.6输出低电平,选通百位数P0=shuju[k%1000/100]+0x20; //取出百位数,点亮数码管百位后的那一点led8888_Delay(2); //延时P2=P2|0xff; //销隐}if(k>9){P2=P2&0xdf; //P2.5输出低电平,选通十位数P0=shuju[k%100/10]; //取十位数led8888_Delay(2); //延时P2=P2|0xff; //销隐}if(k>=0){P2=P2&0xef;P0=shuju[k%10]; //取出个位数led8888_Delay(2);P2=P2|0xff;}}5. 计数脉冲信号并显示利用单片机计数器功能,计数外部输入的脉冲信号,计算得出频率值.接线说明:FIN接入单片机I/O口P3.5.数码管接入程序清单:/********************************************************************** 函数功能: 计数外部(555电路)的脉冲接线说明: FIN接入单片机I/O口P3.5.学习内容: 单片机内部定时器/计数器的应用整理时间: 2006-10 **********************************************************************/ #include <reg52.h>#include <LED8888.h>int count=0; //显示值赋初值main(){TMOD=0x55; //计数器1工作在方式1TL1=(65536-5)%256; //设置初值,计数4次后产生定时/计数器中断TH1=(65536-5)/256;TR1=1; //启动计数器EA=1; //开CPU中断,不开中断也行,没有用到计数器中断 ET1=1;while(1){count=TL1; //显示当前计数值Led(count);}}6. 报警与音乐演奏通过单片机内部定时器,输出频率改变的信号给讯响器电路,并改变节拍即可产生音乐.程序参见光盘部分.接线说明:NC接到单片机I/O口P1.27. 4×4键盘扩展原理:采用矩阵扫描的形式, 识别按键,然后转入相应处理,程序参见光盘部分.接线说明:接线柱J16接到单片机P1口.(J16的第一个脚对应接P1.0),数码管接入.8. 看门狗+上电自动复位电路+手动复位电路+电源监控外部看门狗: 采用MAX813L,程序跑飞时可以强制复位,相当于一个定时器,有一个设定的计数值,计数没有溢出之前将其计数值清零,然后重新计数,这个过程即:”喂狗”,如果在计数溢出之前没有清零,则计数器溢出,从而产生强制复位信号.工业控制干扰大的场合必用看门狗电路防止出现意外事故.附带功能:电源检测功能,当电源电压低于门限值时相关引脚电平跳变,可以输入到单片机中断口,使单片机保存数据等. 程序参见光盘部分.接线说明:NF接到P3.2,NG接到P1.4,J14中将看门狗输出与复位脚用短路冒短接起来。
单片机流水灯实验原理
单片机流水灯实验原理
单片机流水灯实验原理:
流水灯是一种基本的电子实验,通过使用单片机控制多个
LED 灯的亮灭来实现灯光在各个灯珠之间流动的效果。
流水
灯实验原理如下:
1. 硬件连接:将多个 LED 灯和适当的电流限制电阻连接到单
片机的不同输出引脚上。
每个 LED 灯的阴极与电流限制电阻
连接到负极(GND),而阳极连接到单片机的 IO 引脚。
需要
注意的是,单片机的 IO 引脚的输出电压应该能够点亮 LED 灯。
2. 软件设计:使用单片机的 GPIO(通用输入输出)功能,设
置相应的输出引脚作为流水灯的控制引脚。
通过对这些引脚进行高低电平控制,实现不同 LED 灯的点亮和熄灭。
3. 流水灯效果:为了实现流水灯的效果,我们将需要在不同的时间间隔内控制不同的 LED 灯点亮。
可以使用一个循环来实
现这种效果,循环中通过更新和改变控制引脚的电平状态来控制流水灯的亮灭顺序。
4. 控制顺序:通过改变控制引脚的电平状态的顺序,可以改变流水灯的流动顺序。
可以通过在循环中使用延迟函数来控制灯的变换速度,或者使用计数器等其他方法来实现更复杂的流水灯效果。
通过以上原理,我们可以实现单片机流水灯实验并观察到灯光在不同的 LED 灯之间流动的效果。
单片机流水灯实验总结
单片机流水灯实验总结引言:单片机流水灯实验是学习嵌入式系统和单片机基础的重要实践环节。
通过设计和搭建流水灯电路,我们可以深入理解单片机的工作机制和时序控制。
本文将总结我在流水灯实验中的心得体会,分享一些有关单片机流水灯设计的经验。
一、实验概述这个实验的目标是设计一个能够连续闪烁的流水灯电路,通过单片机的控制,实现一串灯按照固定的顺序不断亮灭的效果。
我们可以通过改变灯的亮灭时间和顺序,来获得不同的流水灯效果。
二、选材准备在进行单片机流水灯实验之前,我们需要准备一些基本的材料和工具。
首先,我们需要一块单片机开发板,最常用的是STC89C52系列的开发板,该开发板搭载了一颗51单片机。
此外,我们还需要准备串联的LED灯,该灯可以选择常见的5mm直径的LED灯,同时需要配备一定数量的适量电阻用于限流。
三、实验步骤1. 连接电路:首先,需要将电路图中的元件按照连接要求连接好,确保各个元件之间的连接无误且紧固可靠。
2. 编写程序:接下来,我们需要使用Keil等软件编写单片机的程序。
通过学习嵌入式C语言编程,我们可以控制单片机的输入输出,包括控制LED灯的亮灭。
3. 烧录程序:编写完程序后,需要借助烧录器将程序烧录到单片机中。
这样单片机才能按照我们设计的程序来控制灯的状态。
4. 调试与测试:当烧录完成后,可将单片机开发板上的电源与电源线连接,并打开开关,此时,流水灯便会开始闪烁。
通过观察流水灯的灯光变化,我们可以判断我们的程序是否正确。
四、实验心得通过进行单片机流水灯实验,我深刻体会到了嵌入式系统的编程和硬件设计的重要性。
在编写程序时,我们需要仔细思考流水灯的亮灭规律和顺序,以及每个灯亮灭的时间间隔。
这需要我们对嵌入式C语言的基本语法和单片机的时序控制有一定的理解。
另外,在实验过程中,我遇到了一些问题和挑战。
例如,如何控制灯的顺序和亮灭时间,如何调整程序的延时时间等。
在解决这些问题的过程中,通过查阅资料和与同学的讨论,我逐渐积累了解决问题的经验,并在实践中不断调试和优化程序。
单片机流水灯实验报告
单片机流水灯实验报告单片机流水灯实验报告引言:单片机是一种集成电路,具有微处理器、存储器和输入输出设备等功能,被广泛应用于各个领域。
流水灯是一种常见的实验项目,通过控制单片机的输出端口,使多个LED灯依次亮起,形成流动的效果。
本实验旨在通过搭建流水灯电路,了解单片机的基本原理和操作方法。
实验目的:1. 掌握单片机的基本工作原理;2. 学习使用单片机控制LED灯的亮灭;3. 熟悉流水灯电路的搭建和控制。
实验器材:1. 单片机开发板;2. LED灯若干;3. 连线电缆。
实验步骤:1. 将单片机开发板连接至电源,并接通电源开关;2. 将LED灯连接至单片机的输出端口,确保极性正确;3. 打开单片机开发板上的编程软件,编写流水灯控制程序;4. 将编写好的程序下载至单片机开发板;5. 按下开发板上的复位按钮,观察LED灯是否依次亮起。
实验结果:经过实验,我们成功搭建了单片机流水灯电路,并通过编写程序实现了流水灯的效果。
当按下复位按钮后,第一个LED灯亮起,随后依次是第二个、第三个……最后一个LED灯亮起,然后再从第一个开始循环。
整个过程形成了一个流动的效果。
实验分析:通过本次实验,我们深入了解了单片机的基本工作原理。
单片机通过控制输出端口的电平状态,来控制外部设备的亮灭。
在流水灯实验中,我们通过改变输出端口的状态,实现了LED灯的顺序亮灭。
同时,本次实验也让我们学会了使用单片机开发板上的编程软件。
通过编写程序,我们可以灵活控制单片机的输出端口,实现各种不同的功能。
在流水灯实验中,我们编写的程序控制了LED灯的亮灭顺序,形成了流动的效果。
实验总结:通过本次实验,我们不仅了解了单片机的基本原理和操作方法,还掌握了流水灯电路的搭建和控制。
单片机作为一种重要的集成电路,在各个领域都有广泛的应用。
通过学习和实践,我们可以进一步探索单片机的更多功能和应用。
在今后的学习和工作中,我们可以运用单片机的知识,设计和实现更加复杂和有趣的项目。
单片机流水灯实验报告
单片机流水灯实验报告本实验旨在通过单片机控制LED灯的亮灭,实现流水灯效果。
通过对实验的设计、搭建和调试,我们可以更深入地理解单片机的工作原理和掌握相应的编程技巧。
实验器材和元件:1. 单片机,我们选用了STC89C52单片机作为控制核心;2. LED灯,我们使用8个LED灯作为实验的输出设备;3. 电阻,为了限流,我们使用了适当的电阻;4. 连接线、面包板等。
实验步骤:1. 搭建电路,首先,我们按照电路图将单片机、LED灯和电阻连接在一起,并将电路连接到电源上;2. 编写程序,接下来,我们使用C语言编写单片机的控制程序,实现LED灯的流水灯效果;3. 烧录程序,将编写好的程序通过烧录器烧录到单片机中;4. 调试程序,将烧录好的单片机连接到电路上,进行程序的调试和验证;5. 完善电路,根据实际调试情况,对电路进行必要的调整和完善,确保LED 灯能够按照预期的流水灯效果工作。
实验结果:经过反复调试和完善,我们成功实现了单片机控制LED灯的流水灯效果。
在程序控制下,8个LED灯按照顺序依次亮起并熄灭,形成了流水灯的效果。
整个实验过程非常顺利,取得了预期的效果。
实验心得:通过本次实验,我们对单片机的控制原理有了更深入的理解,也掌握了一定的C语言编程技巧。
在实验的过程中,我们遇到了一些问题,如LED灯未按预期工作、程序逻辑错误等,但通过分析和调试,最终都得到了解决。
实验不仅提高了我们的动手能力,也培养了我们的分析和解决问题的能力。
总结:本次实验不仅让我们熟悉了单片机的控制方法,也让我们体验了从实验设计到调试完善的整个过程。
通过这次实验,我们不仅学到了专业知识,也培养了动手能力和解决问题的能力。
希望在以后的学习和实践中,能够更好地运用所学知识,不断提升自己的能力。
以上就是本次单片机流水灯实验的报告内容,希望对大家有所帮助。
单片机流水灯实验报告
实验目的:实现单片机流水 灯功能
实验结果:LED灯按照预设 顺序依次点亮,实现流水灯
效果
分析与讨论:实验结果与预 期相符,验证了单片机流水
灯功能的实现。
实验结果分析
实验目的:验证单片 机流水灯控制电路的
设计与实现
实验设备:单片机、 LED灯、电阻、电源
等
实验步骤:编写程序、 连接电路、运行程序、
观察现象
实验过程中,对实验结果 的分析不够全面,容易导 致实验结论不准确。
实验过程中,对实验数据 的记录不够详细,容易导 致实验数据丢失。
实验过程中,对实验设备 的维护不够重视,容易导 致实验设备损坏。
实验过程中,对实验环境 的控制不够严格,容易导 致实验结果不准确。
对未来实验的展望
创新实验方法:尝试新的实 验方法,提高实验效果
掌握流水灯电路 的搭建方法
学习单片机的编 程和调试方法
掌握流水灯电路 的调试方法
添加标题
添加标题
添加标题
添加标题
培养实践操作和问题解决能力
通过实验操作, 提高动手能力
学习单片机的基 本原理和编程方
法
培养发现问题、 分析问题和解 决问题的能力
提高团队合作和 沟通能力
02
实验设备
单片机开发板
添加标题 添加标题 添加标题 添加标题 添加标题 添加标题
编写流水灯程序
确定流水灯的 硬件连接方式
编写流水灯控 制程序
编译并下载程 序到单片机
调试程序,确 保流水灯正常 工作
0
0
0
0
1
2
3
4
烧录程序到单片机
准备烧录器:选择合适的烧录器,如USB烧录器 连接单片机:将烧录器连接到单片机的烧录接口 打开烧录软件:启动烧录软件,选择要烧录的程序文件 开始烧录:点击烧录按钮,开始烧录程序到单片机 检查烧录结果:烧录完成后,检查单片机的运行情况,确保程序正常运行
单片机流水灯实验报告
单片机流水灯实验报告电子信息工程学系实验报告课程名称:单片机原理及接口实验项目名称:实验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。
流水灯控制实验报告
流水灯控制实验报告一、引言流水灯是一种常见的电子实验和电路设计项目,它通过控制一组LED灯的亮灭顺序和时间间隔来呈现出一种流动的效果。
本实验旨在通过搭建一个流水灯电路,学习并掌握流水灯的原理和控制方法。
二、实验原理1.流水灯电路的组成本实验采用的流水灯电路是由多个LED灯组成的,LED灯的正极与电源相连,负极通过电阻连接到单片机的输出端口。
通过控制单片机输出高低电平来控制LED灯的亮灭。
2.流水灯的工作原理流水灯电路通过单片机的输出端口控制LED灯的亮灭顺序和时间间隔,实现流动的效果。
在一个循环中,每个LED灯按顺序依次亮起,然后熄灭,接着下一个LED灯亮起,如此循环往复,形成了流水灯的效果。
三、实验器材和元件1.单片机:选用STC89C52RC型单片机;2. LED灯:选用红色5mm直径的共阳极LED灯4个;3.电阻:选用220Ω的电阻4个;4.面包板、导线等。
四、实验步骤1.连接电路将单片机、LED灯和电阻等元件按照电路图,通过面包板和导线连接起来。
2.编写程序使用C语言编写程序,在单片机上控制LED灯的亮灭顺序和时间间隔。
通过设置单片机输出端口的高低电平,控制LED灯的亮灭。
3.烧写程序将编好的程序通过编程器烧写到单片机中,使其能够执行程序。
4.测试实验将电路连接到电源,并接通电源。
观察LED灯的亮灭情况,检查流水灯效果是否符合预期。
五、实验结果分析经过反复测试,流水灯电路能够正常工作,LED灯按照预设的顺序亮灭,形成了流动的效果。
六、实验总结通过本次实验,我学习了流水灯电路的原理和控制方法,并成功搭建了一个流水灯电路。
通过编写程序,我掌握了如何通过单片机控制LED灯的亮灭。
在实验过程中,我深刻理解了流水灯电路的工作原理,培养了动手实践和问题解决的能力。
七、实验改进措施1.可以通过调整LED灯的亮灭顺序和时间间隔,改变流水灯的效果和速度;2.可以使用其他颜色的LED灯,增加流水灯的变化效果;3.可以将流水灯电路与其他电子元件结合,设计更复杂的电路和效果。
单片机流水灯闪烁实训报告
一、实验目的1. 熟悉单片机基本原理和组成,掌握单片机编程的基本方法。
2. 理解单片机I/O口控制LED灯的原理,实现流水灯闪烁功能。
3. 提高单片机实际应用能力,为以后从事相关领域工作打下基础。
二、实验原理1. 单片机简介:单片机(Microcontroller Unit,MCU)是一种将中央处理器(CPU)、存储器(RAM、ROM)、输入/输出接口(I/O)、定时器/计数器、串行通信接口等集成在一个芯片上的微型计算机。
2. LED灯简介:LED(Light Emitting Diode)是一种发光二极管,具有体积小、亮度高、寿命长、响应速度快等优点,广泛应用于各种显示、照明等领域。
3. 流水灯闪烁原理:通过单片机的I/O口控制LED灯的亮与灭,实现流水灯效果。
本实验中,采用定时器中断的方式,定时改变LED灯的状态,从而实现闪烁效果。
三、实验设备1. 单片机开发板:选用STC89C52单片机开发板。
2. LED灯:8个LED灯。
3. 电阻:8个220Ω电阻。
4. 连接线:若干。
5. 仿真软件:Proteus。
四、实验步骤1. 搭建电路:将8个LED灯依次连接到单片机的P1口,每个LED灯串联一个220Ω电阻,以保护LED灯。
2. 编写程序:使用C语言编写单片机程序,实现流水灯闪烁功能。
3. 编译程序:将编写好的程序编译成机器码。
4. 仿真测试:在Proteus中加载编译好的程序,观察LED灯的闪烁效果。
5. 实际测试:将程序烧录到单片机中,观察LED灯的闪烁效果。
五、程序设计1. 初始化:设置单片机的I/O口、定时器等。
2. 定时器中断:设置定时器中断,定时改变LED灯的状态。
3. 主循环:在主循环中不断读取定时器中断标志,根据标志改变LED灯的状态。
4. 代码示例:```c#include <reg51.h>#define LED P1void Timer0_Init(void) {TMOD = 0x01; // 设置定时器0为模式1TH0 = 0xFC; // 设置定时器0初始值TL0 = 0x66;ET0 = 1; // 开启定时器0中断EA = 1; // 开启全局中断TR0 = 1; // 启动定时器0}void main(void) {unsigned char i = 0;LED = 0xFF; // 初始化LED灯Timer0_Init(); // 初始化定时器while (1) {if (TF0) { // 定时器0溢出中断TF0 = 0; // 清除溢出标志TH0 = 0xFC; // 重新加载定时器0初始值TL0 = 0x66;for (i = 0; i < 8; i++) {LED = ~(1 << i); // 改变LED灯状态delay(1000); // 延时1秒}}}}void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 120; j++);}```六、实验结果与分析1. 实验结果:LED灯按照预设的规律闪烁,实现了流水灯效果。
基于AT89S52的流水灯状态控制与数码管显示系统
Southwest university of science and technology《电子设计基础》课程设计设计题目:基于AT89S52的流水灯状态控制与数码管显示系统学院名称:学生姓名:学生学号:专业班级:2015年7月12日基于AT89S52的流水灯状态控制与数码管显示系统摘要单片机[1](Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
本次设计是基于AT89S52芯片所设计的5种LED流水灯电路,通过对AT89S52单片机写入C语言程序实现了对8个发光二极管流水灯的控制功能,并通过AT89S52的外部中断功能实现对流水灯状态和闪烁频率的切换,同时于4位数码管上显示流水灯状态信息。
在进行课题设计的过程中,学习并掌握了AT89S52单片机的功能原理以及对其的C语言编程方法,了解了生活中霓虹灯的大致由来。
关键词:AT89S52芯片;流水灯;定时器中断;数码管;Running light control and digital display systembased on AT89S52AbstractMCU [1] (Microcontrollers) is a kind of integrated circuit chip, is the use of ultra large scale integrated circuit technology to a data processing capability of the central processing unit (CPU), random access memory ram, ROM and variety of I / O port and interrupt system, timer / counter and function (possibly also comprises a display drive circuit, pulse width modulation circuit, analog multiplexer, a / D converter circuit) integrated into a piece of silicon constitute a small and to improve the micro computer system, is widely used in industrial control. From the last century 80's, from the 4, 8 bit microcontroller, to the present 300M of the high-speed microcontroller.The design is based on AT89S52 chip machine design of five LED water lamp circuit through of AT89S52 write C language program to achieve the eight light-emitting diode light water control function and by AT89S52 external interrupt function realizes the switching of light water state and flicker frequency, also with four digital tube display light water state information. In the process of the design of the subject, learning and mastering the functional principle of AT89S52 microcontroller and its C language programming method, understand the life of neon lights.Key words:AT89S52 chip;Running light;Time interrupt;Digital tube;目录第1章引言 (1)1.151单片机简介 (1)1.2AT89S52单片机简介 (1)1.3论文主要内容 (1)第2章流水灯状态控制与显示系统设计过程 (2)2.1设计思路说明 (2)2.2流水灯状态控制与数码管显示系统设计过程 (2)2.2.1 编写头文件及定义整型及字符 (2)2.2.2 用16进制表示流水形式 (3)2.2.3 编写4位数码管程序 (3)2.2.4 编写延时函数 (4)2.2.5 编写定时器外部中断程序 (4)2.2.6 编写主函数 (6)2.2.7 编写流水灯程序 (6)2.3 基于源程序设计的AutoFlowchart流程图 (11)2.3.1 延时函数 (11)2.3.2 流水灯延时控制 (11)2.3.3 主函数 (12)2.3.4 4位数码管状态显示功能 (13)2.3.5花样流水灯状态控制流程 (14)2.4电路原理proteus仿真图 (15)2.5流水灯状态控制与显示系统程序源代码 (15)第3章对设计过程的总结与分析 (24)3.1设计过程中的问题及解决思路 (24)3.2 设计总结 (24)致谢 (25)参考文献 (25)第1章引言1.1 51单片机简介51单片机是对所有兼容Intel 8031指令系统的单片机的统称。
单片机流水灯实验报告
单片机流水灯实验报告一、实验目的1、熟练掌握AT89S52-?型开发板的使用方法和注意事项。
2、了解简单单片机应用系统的设计方法。
3、掌握应用KEIL软件编辑、编译源汇编程序的操作方法。
4、掌握应用USBISP烧录软件的操作方法。
5、帮助学生养成良好实验习惯。
二、实验内容在AT89S52-?开发板上实现8个发光LED“流水”的现象,并通过编写程序控制流水现象。
三、实验说明当8255 的PA口有低电平输出时,相应的发光二极管就会点亮。
应用这一原理我们可以容易的点亮一个数码管,例如令PA口输出0111 1111时D1就会点亮。
若再把0111 1111向右循环一位,利用PA口输出,就会点亮D2。
在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水” 的现象。
五、实验原理图六、实验参考程序#include<reg52.h>#define uchar unsigned charships of 72 and a half the Harbour, like room Tao Yuan. Triangle at the cemetery (Shanghai, Nanjing and Hangzhou), and the small triangle (Soviet Union, Ka, Lake) where the hinterland, at the junction of Jiangsu, East, South and west sides respectively, and jiaxing in Zhejiang Province, Wuzhen, Nanxun town and connected. After the liberation, 17 townships, Yan Tomb, provided there is a town, District Administration had in town. A unique geographical environment, has become the military's battleground. On November 5, 1937, Japan 10th army landed in Hangzhou Bay, North Bay, on November 12, Shanghai fell. Part of the Japanese army to the North along the flood of jiaxing railway, Jiujiang road, invaded Wu Jiang. On November 18, the Japanese army occupied Wujiang city. Stationed in Wujiang's#define uint unsigned intuchar 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(2000);P00=0;for(i=0;i<8;i++){P1=table[i];P2=table[i];delay(2000);}P01=1;delay(2000);P01=0;}}实物展示:ships of 72 and a half the Harbour, like room Tao Yuan. Triangle at the cemetery (Shanghai, Nanjing and Hangzhou), and the small triangle (Soviet Union, Ka, Lake) where the hinterland, at the junction of Jiangsu, East, South and west sides respectively, and jiaxing in Zhejiang Province, Wuzhen, Nanxun town and connected. After the liberation, 17 townships, Yan Tomb, provided there is a town, District Administration had in town. A unique geographical environment, has become the military's battleground. On November 5, 1937, Japan 10th army landed in Hangzhou Bay, North Bay, on November 12, Shanghai fell. Part of the Japanese army to the North along the flood of jiaxing railway, Jiujiang road, invaded Wu Jiang. On November 18, the Japanese army occupied Wujiang city. Stationed in Wujiang's(1)单片机最小系统板(2)自己焊制的集成最小系统板ships of 72 and a half the Harbour, like room Tao Yuan. Triangle at the cemetery (Shanghai, Nanjing and Hangzhou), and the small triangle (Soviet Union, Ka, Lake) where the hinterland, at the junction of Jiangsu, East, South and west sides respectively, and jiaxing in Zhejiang Province, Wuzhen, Nanxun town and connected. After the liberation, 17 townships, Yan Tomb, provided there is a town, District Administration had in town. A unique geographical environment, has become the military's battleground. On November 5, 1937, Japan 10th army landed in Hangzhou Bay, North Bay, on November 12, Shanghai fell. Part of the Japanese army to the North along the flood of jiaxing railway, Jiujiang road, invaded Wu Jiang. On November 18, the Japanese army occupied Wujiang city. Stationed in Wujiang's(3)自己制作的心形流水灯实验板(4)系统板与实验板的连接展示ships of 72 and a half the Harbour, like room Tao Yuan. Triangle at the cemetery (Shanghai, Nanjing and Hangzhou), and the small triangle (Soviet Union, Ka, Lake) where the hinterland, at the junction of Jiangsu, East, South and west sides respectively, and jiaxing in Zhejiang Province, Wuzhen, Nanxun town and connected. After theliberation, 17 townships, Yan Tomb, provided there is a town, District Administration had in town. A unique geographical environment, has become the military's battleground. On November 5, 1937, Japan 10th army landed in Hangzhou Bay, North Bay, on November 12, Shanghai fell. Part of the Japanese army to the North along the flood of jiaxing railway, Jiujiang road, invaded Wu Jiang. On November 18, the Japanese army occupied Wujiang city. Stationed in Wujiang'sships of 72 and a half the Harbour, like room Tao Yuan. Triangle at the cemetery (Shanghai, Nanjing and Hangzhou), and the small triangle (Soviet Union, Ka, Lake) where the hinterland, at the junction of Jiangsu, East, South and west sides respectively, and jiaxing in Zhejiang Province, Wuzhen, Nanxun town and connected. After the liberation, 17 townships, Yan Tomb, provided there is a town, District Administration had in town. A unique geographical environment, has become the military's battleground. On November 5, 1937, Japan 10th army landed in Hangzhou Bay, North Bay, on November 12, Shanghai fell. Part of the Japanese army to the North along the flood of jiaxing railway, Jiujiang road, invaded Wu Jiang. On November 18, the Japanese army occupied Wujiang city. Stationed in Wujiang's(5)环形流水灯效果展示2011年12月15日ships of 72 and a half the Harbour, like room Tao Yuan. Triangle at the cemetery (Shanghai, Nanjing and Hangzhou), and the small triangle(Soviet Union, Ka, Lake) where the hinterland, at the junction of Jiangsu, East, South and west sides respectively, and jiaxing in Zhejiang Province, Wuzhen, Nanxun town and connected. After the liberation, 17 townships, Yan Tomb, provided there is a town, District Administration had in town. A unique geographical environment, has become the military's battleground. On November 5, 1937, Japan 10th army landed in Hangzhou Bay, North Bay, on November 12, Shanghai fell. Part of the Japanese army to the North along the flood of jiaxing railway, Jiujiang road, invaded Wu Jiang. On November 18, the Japanese army occupied Wujiang city. Stationed in Wujiang's。
单片机实验报告流水灯
单片机实验报告流水灯单片机实验报告:流水灯引言:单片机是现代电子技术中非常重要的一部分,它广泛应用于各个领域,如家电、汽车、通信等。
单片机实验是学习单片机的基础,通过实际操作来理解单片机的原理和应用。
本报告将介绍一个常见的单片机实验项目——流水灯实验。
一、实验目的流水灯实验旨在通过控制单片机的IO口,实现多个LED灯按照顺序依次点亮和熄灭的效果。
通过这个实验,可以加深对单片机IO口的控制和编程的理解。
二、实验器材1. 单片机开发板:我们使用的是STC89C52开发板,它是一种基于8051内核的单片机开发板。
2. LED灯:我们使用了8个LED灯,分别连接到单片机开发板的8个IO口上。
3. 连接线:用于连接单片机开发板和LED灯。
三、实验原理流水灯实验的原理很简单,通过控制单片机的IO口输出高低电平来控制LED灯的亮灭。
当某个IO口输出高电平时,对应的LED灯点亮;当IO口输出低电平时,对应的LED灯熄灭。
四、实验步骤1. 连接电路:将8个LED灯分别连接到单片机开发板的8个IO口上,确保连接正确。
2. 编写程序:使用C语言编写单片机程序,控制IO口的高低电平变化。
程序的主要逻辑是通过一个循环,依次将某个IO口输出高电平,然后延时一段时间,再将该IO口输出低电平,再延时一段时间,以此循环实现流水灯的效果。
3. 烧录程序:将编写好的程序烧录到单片机开发板中,确保程序能够正确运行。
4. 调试实验:将单片机开发板连接到电源,观察LED灯是否按照预期的顺序点亮和熄灭。
如果有问题,可以通过调试程序或检查电路连接来解决。
五、实验结果经过调试和实验,我们成功地实现了流水灯的效果。
8个LED灯按照顺序依次点亮和熄灭,形成了一个流动的灯光效果。
这个实验不仅让我们学习了单片机的IO口控制,还提高了我们的动手能力和解决问题的能力。
六、实验总结通过这个实验,我们深入了解了单片机的原理和应用。
单片机作为一种微型计算机,具有体积小、功耗低、成本低等优点,广泛应用于各个领域。
实验一 流水灯实验
实验一流水灯实验1. 实验目的1.1 掌握单片机基础操作1.2 熟悉单片机的I/O口的使用1.3 学会使用循环语句、延时函数等基础函数2. 实验原理在该实验中,通过单片机控制多个LED灯依次点亮、熄灭,形成一个类似“流水”的效果。
在AT89S52单片机中,I/O口具有输出功能,即可以将I/O口的电平控制为高电平或低电平。
通过控制不同的I/O口电平,可以控制不同的LED灯的点亮、熄灭状态。
而I/O口的状态变化可以使用循环语句、延时函数等来控制,从而实现流水灯的效果。
3. 实验步骤3.1 硬件准备3.1.1 准备硬件:AT89S52单片机1块、LED灯5个、面包板1块、跳线若干。
3.1.2 连接电路:将AT89S52单片机引脚P0.0~P0.4连接到5个LED灯的阳极,将LED 灯的阴极连接到地,可以使用面包板和跳线完成电路连接。
3.2 编写程序流水灯实验程序如下:#include<reg52.h> //包含单片机寄存器的头文件sbit led1=P0^0; //定义led1~led5分别对应P0口的0~4引脚sbit led2=P0^1;sbit led3=P0^2;sbit led4=P0^3;sbit led5=P0^4;led1=0; //熄灭led1led2=1; //点亮led2led3=0; //熄灭led3led4=0; //熄灭led4led5=0; //熄灭led5delay(50000); //延时一段时间4. 实验结果将实验板连接电源并启动,运行程序后,可以看到LED灯依次点亮、熄灭,形成流水灯效果。
5. 实验思考题5.1 如何改变流水灯的速度?可以通过延时函数的参数设置来改变流水灯的速度,延时时间越短,LED灯的闪烁速度越快。
可以通过改变程序中LED灯点亮和熄灭的顺序和时间,实现不同的流水灯效果,比如5个LED灯两两同时点亮、相邻的LED灯同时点亮等效果。
单片机学习编程之流水灯篇OK
第一章单片机的基础学习第一个实验 LED发光二极管的左移右移(D1到D8依次)点亮二极管点亮的原理图如下。
实际上是接在P1口。
原理图说明:发光二极管阴极接单片机,让电流流入单片机,因为单片机输出电流小,点不亮发光二极管。
发光二极管点亮电流为5 mA至20mA。
编程说明:(1)做一个LED的左移右移,有硬件电路可知,输出“0”才能使LED亮。
开始时P1.0亮,——P1.1亮——P1.2亮….——P1.7亮——P1.0亮,重复循环点亮LED。
(2)延时时间的设计:石英晶体为12MHz,1个机器周期为1微秒,采用单片机每走一步指令需要的时间来延时。
✧延时时间子程序(10.002毫秒)Delay: MOV R4,#20 ;2个机器周期,2微秒D1: MOV R5,#248 ;2个机器周期,2微秒DJNZ R5,$ ;2个机器周期,2*248微秒DJNZ R4,D1 ;2个机器周期,2*20微秒RET这个延时子程序:20*(498+2)+2=10002个机器周期=10.002毫秒。
✧延时时间子程序(200毫秒)Delay: MOV R3,#20 ; 200微秒D1:MOV R4,#20 ;10微秒D2: MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RET(3)汇编程序源代码注意:向电脑上编辑程序时注意标点符号要在英文的格式下输入。
ORG 00HMAIN: MOV A,#0FFHCLR CMOV R2,#08H;左移点亮发光二极管LOOP: RLC A ;带进位左移一位MOV P1,A;点亮LED发光二极管CALL DELAY;调用延时子程序DJNZ R2,LOOP;左移、轮流点亮发;光二极管;左移点亮发光二极管后,再右移点亮发光二极管MOV R2,#07HLOOP1: RRC A ;带进位右移一位MOV P1,A;点亮LED发光二极管CALL DELAY;调用延时子程序DJNZ R2,LOOP1JMP MAIN; 返回到初始位置;设置延时时间DELAY: MOV R3,#20D1: MOV R4,#20D2: MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETEND(4)C程序源代码#include <reg51.h>void Delay()//延时子程序{ int i,j;for(i=0;i<=255;i++)for(j=0;j<=255;j++);}void main(){unsigned int i;unsigned int temp;P1=0xff;while(1){temp=0x01;for(i=0;i<8;i++){P1=~temp;逐位取反Delay();temp=temp<<1;}}}(4)实验结果图(注意学习板上的JJ_P1连接器连上)第二个实验采用定时器来设置延时时间(方式0)说明:(1)开始时p1.0亮,延时0.2秒后左移至p1.1亮,如此左移7次后至,再延时0.2秒右移至p1.6亮,如此右移7次后至p1.0亮;(2)延时时间0.2秒,使用定时器0在方式0下工作;采用查询的方式(3)程序源代码ORG 00HMOV TMOD,#00H /***设置定时器的工作方式***/START: CLR CMOV A,#0FFHMOV R2,#08 /***设置循环次数***/LOOP: RLC A /***带进位左循环累加器,点亮发光二极管***/ MOV P1,A /***设置定时器定时时间***/MOV R3,#100CALL DELAYDJNZ R2,LOOP /***点亮了八个发光二极管吗,没有继续***/MOV R2,#07LOOP1: RRC AMOV P2,AMOV R3,#100CALL DELAYDJNZ R2,LOOP1JMP START/***通过单片机内部的定时器设置定时时间***/DELAY: SETB TR0 /***启动定时器***/AGAIN: MOV TL0,#(8192-2000) MOD 32MOV TH0,#(8192-2000) / 32LOOP2: JBC TF0,LOOP3 ;通过查询的方式来判断时间定时器的计时JMP LOOP2LOOP3: DJNZ R3,AGAINCLR TR0RET;非中断END(4)实验结果图第三个实验采用定时器来设置延时时间(方式1)(1)开始时p1.0亮,延时0.2秒后左移至p2.1亮,如此左移7次后至,再延时0.2秒右移至p1.7亮,如此右移7次后至p1.0亮;(2)延时时间0.2秒,使用定时器0在方式1下工作;采用查询的方式(3)源程序代码ORG 00HMOV TMOD,#01HSTART: CLR CMOV A,#0FFHMOV R2,#08LOOP: RLC AMOV P1,AMOV R3,#20CALL DELAYDJNZ R2,LOOPMOV R2,#07LOOP1: RRC AMOV P1,AMOV R3,#20CALL DELAYDJNZ R2,LOOP1JMP STARTDELAY: SETB TR0AGAIN: MOV TL0,#0F0HMOV TH0,#0D8HLOOP2: JBC TF0,LOOP3JMP LOOP2LOOP3: DJNZ R3,AGAINCLR TR0RETEND附录资料:红外发射器的原理图AT89S52下载器的原理图。
使用at89s52单片机实现发光二极管控制,实验报告心得
使用at89s52单片机实现发光二极管控制,实验报告心得[使用at89s52单片机实现发光二极管控制]实验报告心得本次实验是使用AT89S52单片机实现发光二极管(LED)控制的实验。
通过这个实验,我对于单片机及其应用有了更深入的理解,并且学到了很多有关单片机编程和硬件设计的知识。
在这篇报告中,我将总结我在实验中的心得和体会。
首先,在实验开始之前,我首先了解了AT89S52单片机的基本特点和工作原理。
AT89S52是一种非常常见的8位单片机,具有强大的外设功能,能够实现各种控制任务。
了解这些基本知识对于我后面的学习和实践非常有帮助。
此外,我还查阅了AT89S52单片机的数据手册,详细了解了该单片机的引脚功能和寄存器的使用方法。
在实验过程中,我首先进行了电路搭建。
这个电路非常简单,只需要一个AT89S52单片机、发光二极管和几个电阻即可。
我按照实验指导书给出的电路图一步步进行搭建,然后用杜邦线连接到开发板上。
整个搭建的过程非常顺利,没有遇到太大的问题。
接着,我开始进行单片机的编程。
由于我之前有一些C语言编程的基础,所以对于单片机的编程也比较快上手。
在实验指导书的指导下,我先学习了单片机的基本语法和编程规则,然后进行了一些简单的实验,比如点亮一个LED等。
随着实验的进行,我逐渐掌握了如何读写IO口、使用定时器和中断等高级操作。
同时,我还学会了如何使用开发工具和仿真器进行调试和测试。
在编程的过程中,我也遇到了一些问题。
比如,有时候程序运行时出现了死循环或者卡死的情况,我需要通过调试来找到问题的原因。
这对我来说是一次非常好的学习机会,我学会了如何使用调试工具和调试技巧,快速定位和修复错误。
同时,我也发现了一些常见的编程错误和注意事项,比如没有给变量赋初值,没有合理使用变量的范围等等。
这些经验对于我今后的编程和项目开发非常有帮助。
除了软件编程,我还学习了一些硬件方面的知识。
比如,我了解了LED的工作原理和常见的使用方法,学会了如何使用电阻来限流和保护LED。
单片机实验报告花样流水灯
电子工艺学考试作品报告作品名称:花样流水灯姓名:专业班级:电信1105学号:中南大学物理与电子学院目录第一章系统整体概述…………………………………………………………第二章硬件设计………………………………………………………………第三章软件设计………………………………………………………………第四章调试与分析……………………………………………………………第五章制作感受………………………………………………………………【摘要】当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。
制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。
本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于单片机AT89C52和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C52为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。
本设计用AT89C52单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。
该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。
关键字:AT89C52 单片机流水灯数码管AT89C52单片机概述AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程。
基于AT89S52的流水灯控制(word文档良心出品)
电子工程学院课外学分设计报告题目:基于AT89S52的循环彩灯控制姓名:宋建军学号:22专业:自动化实验室:开放实验室班级:电子A1032班设计时间:2013 年02月15 日——2013年03月20 日评定成绩:审阅教师:李卫华1. 专业综合设计任务1.1项目的背景当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个毕业课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料,当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
1.2项目的任务设计彩灯控制电路,使连接在该电路上的8个发光二极管按顺序以次闪烁。
2. 方案设计与论证实现此功能有两种方案,一种是使用传统的模拟电路,另一种是用单片机控制的电路。
我们选择单片机控制系统。
其中系统工作原理为:在上个程序中我们是逐个控制P1端口的每个位来实现的,因此程序显得有点复杂,下面我们利用循环移位指令,采用循环程序结构进行编程。
我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现循环闪烁效果啦。
由于8051系列单片机的指令中只有对累加器ACC中数据左移或右移的指令,因此实际编程中我们应把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样就可以实现循环闪烁效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5 AT89S52单片机开发入门流水灯 实验
问题: 1、P1.X中的X是什么意思? 2、什么是内部总线? 3、CP是什么? 4、读引脚和读锁存器的区别? 5、什么是准双向IO口? 6、内部总线是双向的吗? 7、Vcc是什么?
5 AT89S52单片机开发入门流水灯 实验
5 AT89S52单片机开发入门流水灯 实验
• 可以使用Protel99SE或Altium Designer • 打开电原理图 • 打开PCB图 • 能够读懂对应的电路 • 理解电原理图、PCB图、实物之间的对应关
系
5 AT89S52单片机开发入门流水灯 实验
• 汇编指令阅读 • 指令执行时间的计算 • 执行时间测试
5 AT89S52单片机开发入门流水灯 实验
1. 程序演示 2. 软件说明&分析 3. 硬件说明 4. P1 IO口结构 5. 单片机工作原理 6. 汇编语言&执行时间测量
5 AT89S52单片机开发入门流水灯 实验
• 通过USB电缆给单片机板子 供电
读引脚指令:MOV A,P1 读寄存器:CPL P1.X(读-修改-写)
5 AT89S52单片机开发入门流水灯 实验
5 AT89S52单片机开发入门流源自灯 实验1. CPU是什么? 2. 时钟电路如何构成?有什么用处? 3. ROM是什么? 4. RAM是什么? 5. 什么是串行接口、并行接口? (后面讲) 6. 什么是中断?(后面讲) 7. 什么是定时器?和计数器的区别? (后面讲) 8. 什么是总线?
数据存储区
问题: 1、EA是哪两个单词的缩写? 2、RAM和Flash的区别?
5 AT89S52单片机开发入门流水灯 实验
1. P1变量在何处定义? 2. P1端口是什么? 3. P1口、触发器、寄存器、锁存器的关系? 4. 如何改变P1的内容? 5. sfr P1 = 0x90; ? 6. 如何改变LED灯流动的速度? 7. D1、D8点亮的时间与其他LED(D2~D6)点亮的
2 0000 0100 1111 1011 D3
3 0000 1000 1111 0111 D4
…
7 1000 0000 0111 1111 D8(右边第一个)
循环1总结:LED从左到右依次点亮
I dat
P1
点亮的LED
0 1000 0000 0111 1111 D8
1 0100 0000 1011 1101 D7
• 观察LED D1~D8工作情况: 从左到右依次点亮,然后 从右到左依次点亮
• 其他LED:
– D9点亮:+5V电源指示 – D10闪动:在线编程器
AT89C2051工作正常
5 AT89S52单片机开发入门流水灯实 验
5 AT89S52单片机开发入门流水灯
void main() {
unsigned char i,dat; while(1) { dat=0x01; for(i=0;i<8;i++)
5 AT89S52单片机开发入门流水 灯实验
基础篇 I/O口控制LED灯的点亮
5 AT89S52单片机开发入门流水灯 实验
• 电路图、PCB编辑软件的使用; • 单片机基本概念; • P1口的结构; • Keil C开发环境的使用; • 编程器使用; • 单片机工作基本原理;
5 AT89S52单片机开发入门流水灯 实验
…
7 0000 0001 1111 1110 D1
循环2总结:LED从右到左依次点亮
5 AT89S52单片机开发入门流水灯 实验
5 AT89S52单片机开发入门流水灯 实验
5 AT89S52单片机开发入门流水灯 实验
5 AT89S52单片机开发入门流水灯 实验
1、程序写入后,LED(D6)始终点亮,为 什么?哪里的问题?如何验证?硬件?软 件? 2、提示:断电后再上电恢复正常
时间相同吗?为什么?修改程序使D1、D7点亮 的时间与其他LED点亮的时间相同。
5 AT89S52单片机开发入门流水灯 实验
ECD XLCN P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7RP3.1APSENVG 9876543212345678901000 3333333322222222231142 DDCD XXCN P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7 TRVG PSEN ALE/P R 12D01 AT89S52 EA/VPXXRESETRWINT0INT1TTP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7 1 U 912345678 198762345 311111111 V 12 5 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.3P3.2P3.5P3.4+RSTAP3.7P3.6XX 1 123456789 N R5.1K*8 12345678 V DDDDDDDD 5 + 12345678 DDDDDDDD DDDDDDDD EEEEEEEE LLLLLLLL 45678132 DDDDDDDD P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
{P1=~dat; dat=dat<<1; Delay(); } for(i=0;i<8;i++) {P1=~dat; dat=dat>>1; Delay(); } } }
实验
i dat
P1
点亮的LED
0 0000 0001 1111 1110 D1(左边第一个)
1 0000 0010 1111 1101 D2
5 AT89S52单片机开发入门流水灯 实验
• FLASH 8KB • RAM:256B • SFR(Special ) • 4个并口(每个8位) • 1个串口(占用P3口的2位) • 3个16bit定时器
5 AT89S52单片机开发入门流水灯
应为多少?
实验
程序存储区 地址范围:0x0000~0x1FFF 大小:8K=0010 0000 0000 0000