单片机跑马灯实验报告

合集下载

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

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

单片机跑马灯(流水灯)控制实验报告实验目的:本实验旨在通过使用单片机对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 口的使用有了更深入的了解。

跑马灯中断控制实训报告

跑马灯中断控制实训报告

一、实训目的本次实训旨在通过使用AT89C51单片机,结合中断技术实现对跑马灯的控制,加深对单片机中断系统、定时器/计数器以及程序设计方法的理解和掌握。

二、实训内容1. 硬件设计- 主控制器:AT89C51单片机- 驱动电路:ULN2003A驱动器- 显示电路:8个LED灯- 控制电路:按键开关2. 软件设计- 编写程序实现跑马灯的基本功能,包括:- 跑马灯模式:LED灯依次点亮,形成跑马灯效果。

- 定时控制:通过定时器实现LED灯点亮时间的控制。

- 中断控制:通过外部中断实现按键控制跑马灯模式的切换。

三、实训步骤1. 硬件连接- 将AT89C51单片机的P1.0至P1.7引脚连接至ULN2003A的输入端,用于驱动LED灯。

- 将按键开关连接至单片机的P3.2和P3.3引脚,用于控制跑马灯模式。

- 将ULN2003A的输出端连接至LED灯的正极,负极接地。

2. 程序设计- 初始化配置:- 初始化定时器T0,设置定时时间为50ms。

- 初始化外部中断0和外部中断1,配置中断触发方式为下降沿触发。

- 跑马灯控制:- 设置定时器T0中断,当定时器溢出时触发中断,实现LED灯的点亮和熄灭。

- 在中断服务程序中,通过移动LED灯的位置,实现跑马灯效果。

- 按键控制:- 当按下P3.2引脚对应的按键时,切换跑马灯模式。

- 当按下P3.3引脚对应的按键时,停止跑马灯运行。

3. 程序调试- 编译程序,将生成的HEX文件烧录至AT89C51单片机。

- 连接调试器,观察程序运行情况,确保跑马灯控制功能正常。

四、实训结果与分析1. 跑马灯效果通过实验,成功实现了跑马灯的基本功能,LED灯依次点亮,形成跑马灯效果。

定时器T0的设置保证了LED灯点亮时间的控制,中断技术实现了按键控制跑马灯模式的切换。

2. 中断控制外部中断0和外部中断1的配置保证了按键控制功能的实现。

当按下按键时,中断服务程序会根据按键的引脚和状态切换跑马灯模式或停止跑马灯运行。

心形跑马灯实训报告

心形跑马灯实训报告

一、实训目的本次心形跑马灯实训旨在通过实际操作,让学生掌握心形跑马灯的设计原理、电路搭建、编程控制以及实际应用等方面的知识。

通过实训,提高学生的动手能力、创新能力和团队协作能力,同时加深对电子技术、嵌入式系统及编程的理解。

二、实训背景随着科技的发展,嵌入式系统在日常生活中得到了广泛应用。

心形跑马灯作为一种新颖的电子装饰品,具有较高的观赏性和实用性。

本实训项目以心形跑马灯为载体,让学生在实训过程中学习相关知识,培养创新意识。

三、实训内容1. 心形跑马灯设计原理心形跑马灯采用LED灯珠作为显示单元,通过单片机控制LED灯珠的亮灭,形成动态的心形图案。

设计原理主要包括以下几个方面:(1)心形图案设计:通过数学公式计算心形图案的坐标点,将坐标点映射到LED灯珠上。

(2)LED灯珠驱动电路:设计LED灯珠的驱动电路,确保LED灯珠正常工作。

(3)单片机控制电路:设计单片机控制电路,实现LED灯珠的亮灭控制。

2. 心形跑马灯电路搭建(1)电路元器件:主要包括单片机、LED灯珠、电阻、电容、面包板、导线等。

(2)电路搭建步骤:①根据设计原理,设计电路图。

②在面包板上搭建电路,连接单片机、LED灯珠、电阻、电容等元器件。

③检查电路连接是否正确,确保电路正常工作。

3. 心形跑马灯编程控制(1)编程环境:使用C语言进行编程。

(2)编程步骤:①初始化单片机端口,设置LED灯珠的亮灭模式。

②编写心形图案的生成函数,计算心形图案的坐标点。

③编写控制LED灯珠亮灭的函数,实现心形图案的动态显示。

4. 心形跑马灯实际应用(1)展示平台:将心形跑马灯应用于各类活动、展览等场合,展示其独特魅力。

(2)应用场景:如商场、酒店、旅游景点等。

四、实训过程1. 理论学习:首先,学生对心形跑马灯的设计原理、电路搭建、编程控制等方面进行理论学习,了解相关知识。

2. 电路搭建:在面包板上搭建心形跑马灯电路,连接元器件,确保电路正常工作。

3. 编程实践:使用C语言编写心形跑马灯的代码,实现心形图案的动态显示。

跑马灯单片机实训报告

跑马灯单片机实训报告

一、前言随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。

为了提高我们的实践能力,加强理论知识与实际操作的结合,我们进行了单片机跑马灯实训。

通过本次实训,我们深入了解了单片机的基本原理,掌握了单片机的编程方法,并能够运用所学知识解决实际问题。

二、实训目的1. 熟悉单片机的硬件结构和工作原理。

2. 掌握单片机的编程方法,包括汇编语言和C语言。

3. 学会使用单片机进行简单的外设控制。

4. 提高动手能力和团队合作能力。

三、实训内容1. 实训设备(1)8051单片机开发板(2)LED灯(3)电阻(4)电源2. 实训步骤(1)搭建电路首先,我们需要搭建跑马灯的电路。

将LED灯串联,然后连接到单片机的P1口。

在LED灯的正极和负极之间串联一个电阻,用于限流。

(2)编写程序接下来,我们需要编写跑马灯的程序。

以下是用C语言编写的跑马灯程序:```c#include <reg51.h>#define LED P1void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 1275; j++);}void main() {while (1) {LED = 0x01; // 第一个LED灯亮 delay(500); // 延时LED = 0x02; // 第二个LED灯亮 delay(500); // 延时LED = 0x04; // 第三个LED灯亮 delay(500); // 延时LED = 0x08; // 第四个LED灯亮 delay(500); // 延时LED = 0x10; // 第五个LED灯亮 delay(500); // 延时LED = 0x20; // 第六个LED灯亮 delay(500); // 延时LED = 0x40; // 第七个LED灯亮 delay(500); // 延时LED = 0x80; // 第八个LED灯亮 delay(500); // 延时LED = 0x00; // 所有LED灯熄灭delay(500); // 延时}}```(3)编译程序将编写的程序导入到单片机开发板中,并下载到单片机中。

单片机跑马灯实验报告

单片机跑马灯实验报告

学号14142200277序号19单片机原理与接口技术实验报告实验项目序号一实验项目名称跑马灯实验姓名卢志雄专业电子信息工程班级电信14-2BF 完成时间2016年4月2日一、实验内容实验内容为3项,其中第1、2项必做。

1、基本的流水灯。

根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。

每点亮一个LED,采用软件延时一段时间。

2、简单键控的流水灯。

不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。

松手后,又按正序点亮流水灯。

3、键控的流水灯。

上电,不点亮LED,按一下K1键,按正序点亮流水灯。

按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。

二、电路原理图图1 跑马灯实验电路原理图三、程序流程图开始检测P2键值完成对应键值的功能判断P2键值是否改变图2 简单键控的流水灯程序流程图四、源程序1、基本的流水灯#include<reg51.h>#define uint unsigned int#define uchar unsigned charvoid delay( j ) //延时函数data uint j;{ data uint i;while(j--)for(i=0;i<250;i++);}void main( ) //主函数{ data uchar a;a=1; //保证只有一个点亮while(1) //不断循环{ P2=~a; //低电平点亮a=a<<1; //左移一位,右补0 if(a==0)a=1; //全0delay(2250);} //流动点亮延时}2、简单键控的流水灯#include<reg51.h>#define uchar unsigned char#define uint unsigned intvoid delay(uint i){ uchar t;while(i--){for(t=0;t<120;t++);}}void main(){ data uchar a;a=1;while(P2==0xff){ P0=~a;a=a<<1;if(a==0)a=1;delay(250);}while(P2==0xfe){ P0=~a;a=a>>1;if(a==0)a=128;delay(250);}}3、键控的流水灯#include<reg51.h>#define uchar unsigned char #define uint unsigned int void delay(uint i){ uchar t;data uchar b=0xfb;while(i--){ if(P2==0xfe) b=0xfe;if(P2==0xfd) b=0xfd;if(P2==0xfb) b=0xfb;for(t=0;t<120;t++);}}void main(){ data uchar a;a=1;while(P2==0xfe){ P0=~a;a=a<<1;if(a==0)a=1;delay(250);while(P2==0xff){P0=~a;a=a<<1;if(a==0)a=1;delay(250);}}while(P2==0xfd){ P0=~a;a=a>>1;if(a==0)a=128;delay(250);while(P2==0xff){ P0=~a;a=a>>1;if(a==0)a=128;delay(250);}}while(P2==0xfb){ P0=0xff;}}五、实验结果1、基本的流水灯基本流水灯仿真图2、简单键控的流水灯简单键控的流水灯仿真图3、键控的流水灯键控的流水灯仿真图六、思考题回答1、采用I/O口作为输出口时要考虑哪些因素?为什么实验装置中LED要串联一个电阻?答:电压的大小(包括它能感知的最小电压作为高电平),电流的驱动能力等,同时也要要考虑它是否要加上拉电阻。

单片机 跑马灯实验精选全文

单片机 跑马灯实验精选全文

可编辑修改精选全文完整版实验一跑马灯实验一、实验内容1、基本的流水灯根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。

每点亮一个LED,采用软件延时一段时间。

2、简单键控的流水灯不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。

松手后,又按正序点亮流水灯。

3、键控的流水灯上电,不点亮LED,按一下K1键,按正序点亮流水灯。

按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。

二、实验方案1、总体方案设计考虑到K4键未被使用,所以将实验内容中的三项合并到一个主函数中:K4键代替实验内容第二项中的K1键;单片机一开机即执行实验内容第一项;K1、K2、K3键实现实验内容第三项。

所用硬件:AT89C52、BUTTON、LED-BLUE、电源输入:P2.0-K1;P2.1-K2;P2.2-K3;P2.3-K4。

低电平有效输出:P0.0~P0.7-D0~D7。

LED组连线采用共阳极,低电平有效软件设计:软件延时采用延时函数delay(t),可调整延迟时间:void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}由于涉及到按键变化所以要设置一个变量oldK保留按键键值,要在延时程序中检测是否按键,当按键后立即设置oldK的值。

按键判断采用在while循环中利用条件语句判断P2的值然后执行该键对应的代码段,达到相应的响应。

为了让K4键的效果优化,即状态变化从当前已亮灯开始顺序点亮或逆序点亮,利用全局变量n来记录灯号,利用算法即可实现。

主要算法:1、全局变量的定义:uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;2、顺序、逆序点亮流水灯:void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}3、实验内容第二项流水灯灯亮顺序变换:void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){out=D[n];n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}4、对应实验内容第一项,开机顺序点亮流水灯:while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}2、实验原理图图2-1 实验原理图3、程序流程图图2-2 程序流程图三、源程序#include"reg51.h"#define uchar unsigned char#define uint unsigned int#define out P0uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;//记录当前亮的灯号void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}void delay10ms(){uint i;for(i=0;i<10000;i++);}void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}int delay4(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK){ //按键变化退出循环return 1;}}return 0;}void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}void main(){oldK=K[0];while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}while(1){out=AllOff;if((P2&0x0f)!=0x0f){//检测有键按下delay10ms();//延时10ms再去检测//P2.0_K1键按下正序点亮流水灯if(P2==K[1]){oldK=K[1];while(1){forward();if(P2!=K[1]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.1_K2键按下逆序点亮流水灯if(P2==K[2]){while(1){backward();if(P2!=K[2]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.2_K3键按下关闭全部LEDif(P2==K[3]){oldK=K[3];out=AllOff;}//P2.3_K4键按下长按逆序点亮流水灯,不按正序点亮流水灯,直到其他键按下停止if(P2==K[4]){hold();}}}}四、实验结果1、基本的流水灯:开机后即重复顺序点亮流水灯,等待其他按键。

跑马灯实训报告

跑马灯实训报告

摘要:AT89C51是美国ATMEL公司生产的AT89系列单片机中的一种,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

关键字:AT89C51 兼容高效微控制器目录一、实训目的 (2)二、电路设计与生成 (2)1、设计跑马灯 (2)2、生成PCB板 (2)三、程序设计 (3)1、程序设计 (3)2、运行结果 (4)四、实训总结 (4)一、实训目的了解AT89C51管脚的基本功能,学会运用Protel 99 se设计电路,并生成PCB 板,印刷线路板。

使用KEIL C51设计单片机程序,生成HEX文件,将程序下载到单片机内并运行。

从而达到初步掌握简单单片机小程序的设计,制作,调试的目的。

二、电路设计与生成1、设计跑马灯利用单片机最小系统,使P1口八个发光二极管做跑马灯和流水灯显示。

设计的电路图如下:2、生成PCB板(1)保存电路图,单击菜单栏DESIGN项,选择其中的更新PCB;(2)在弹出的对话框中,单击preview change;(3)校对弹出界面中的相关元件的信息,再单击Execute,生成元器件;(4)最后对生成的元器件进行排版,生成如下图所示:三、程序设计1、程序设计#include"reg51.h"unsigned char tab[]={1,2,4,8,0x10,0x20,0x40,0x80,0x80,0x40,0x20,0x10,8,4,2,1};void delay(unsigned char n){ unsigned int d;unsigned char i;for(i=0;i<n;i++)for(d=0;d<30000;d++);}void main(){ unsigned char i,j;while(1){ for(j=0;j<5;j++){for(i=0;i<8;i++){P1=~tab[i];delay(10);}}for(j=0;j<5;j++){for(i=0;i<8;i++){ P1=~tab[8+i];delay(10);}}for(j=0;j<5;j++){for(i=0;i<8;i++){ P1=~tab[i];delay(20);P1=~tab[i+1];delay(20);P1=~tab[i+2];delay(20);}}for(j=0;j<3;j++){for(i=0;i<8;i++){ P1=~tab[i];delay(20);P1=~tab[i+2];delay(30);}}}}2、运行结果八个发光二级管顺时针依次发光,连续五次,再返向五次,完成基本的跑马灯显示,然后再依次亮三个,退一个再亮三个,逐个发光。

基于AT89S52单片机的多模式带音乐跑马灯设计实训报告

基于AT89S52单片机的多模式带音乐跑马灯设计实训报告

基于AT89S52单片机的多模式带音乐跑马灯设计实训报告一、实训目的和要求本次实训的目的是通过设计一个基于AT89S52单片机的多模式带音乐跑马灯,加深对单片机、音乐、跑马灯等知识的理解,提高实际动手能力和创新能力。

要求通过实训设计实现以下功能:1.实现多种跑马灯效果,包括顺序、逆序、左移、右移等;2.实现音乐播放功能,增加趣味性;3.设计合理的电路布局和编程结构,提高系统的稳定性和可靠性。

二、实训内容和方案设计1.系统硬件设计:(1)主控单板:采用AT89S52单片机作为主控制器;(2)驱动器:使用ULN2003芯片驱动数码管和LED灯;(3)时钟电路:使用晶振频率为11.0592MHz的电路;(4)音频输出电路:使用LM386音频放大器作为音频输出电路。

2.程序设计:(1)主程序框架设计:主程序采用无限循环方式,根据按键输入选择跑马灯模式;(2)跑马灯模式设计:根据不同模式选择,使用对应的跑马灯效果函数进行控制;(3)音乐播放设计:通过PWM脉冲宽度调制方式,实现音乐播放功能。

三、实训步骤和实施过程1.硬件部分:(1)按照设计方案进行电路布线和焊接;(3)连接数码管、LED灯和音频输出电路,进行功能测试。

2.软件部分:(1) 在Keil C中建立项目并编写主程序的框架;(2)编写跑马灯效果函数,实现不同的跑马灯模式;(3)编写音乐播放函数,通过PWM方式产生不同频率的方波实现音乐播放;(4)完善主程序框架,添加按键输入和模式选择功能。

四、实训结果和实验分析经过实际测试,多模式带音乐跑马灯设计实现了预期的功能,能够根据用户的选择进行不同的跑马灯模式和音乐播放。

实训过程中,需要注意以下问题:1.硬件部分需要精确连接,尤其是音频输出电路的设计,需要注意电路布线,以防止杂音和干扰。

2.在软件编程过程中,需要合理利用中断和定时器等功能,确保跑马灯的流畅切换和音乐的正常播放。

3.在调试过程中,可以逐步调试并测试每个模块的功能,确保整个系统的稳定性和可靠性。

单片机实验报告

单片机实验报告

单片机实验报告班级:姓名:学号:日期:实验一:跑马灯实验实验目的:1.通过实验,掌握汇编语言程序的基本格式及其编写;2.通过实验,熟悉指令系统,掌握查表指令及其应用;3.通过实验,掌握子程序及延时子程序的编写;4.通过实验,掌握中断的概念及其定时器的应用实验内容:1.键入跑马灯的代码:#include<iom16v.h>void delay_ms(unsigned int time){unsigned int k,l;for(k=0;k<time;k++)for(l=0;l<1141;l++);}void main(void){ unsigned char i,j;PORTC=0x00;DDRC=0xFF;while(1){ j=0x02;for(i=0;i<7;i++) //8个流水灯逐个闪动{PORTC=j;delay_ms(25); //调用延时函数j<<=1;}j=0x40;for(i=0;i<7;i++) //8个流水灯反向逐个闪动{PORTC=j;delay_ms(25); //调用延时函数j>>=1;}}}2.通过ISIS7 模拟单片机3..将代码通过ATMEGA16 实现跑马灯的运行。

4.在ISIS7中运行。

实验结果:8个灯能够一次从右到左,再从左到右间隔100ms亮起。

实验问题:一开始代码正确但是当键入到ATMEGA16时8个灯不能亮起,1)电阻太大而模拟的电流太小;2)delay_ms的子代码设定的时间太短。

但是可以通过修改时钟频率可以对硬件进行时间脉冲修改。

实验二:键盘扫描实验目的:1.熟悉键盘与显示器的接口连接方法。

1.掌握键盘扫描的实现过程。

实验内容:1.键入代码:#include<iom16v.h>void delay_ms(int x){int i,j;for(i=0;i<=x;i++)for(j=0;j<=5000;j++){}}char cycle(){char jianzhi;PORTA=0xf0; //行输出低电平,列带上拉电阻输入DDRA=0x0F;delay_ms(15);if(PINA==0xf0) //检查有无键按下,无键按下返回0XFF return(0xff);if(PINA==0x70) //获取按下键的行编码jianzhi=1;else if(PINA==0xb0) //四行三列jianzhi=2;else if(PINA==0xd0)jianzhi=3;else if(PINA==0xe0)jianzhi=4;PORTA=0x0f; //反转DDRA=0xf0;delay_ms(15);if(PINA==0x0D)jianzhi=jianzhi+0;else if(PINA==0x0B)jianzhi=jianzhi+4;else if(PINA==0x07)jianzhi=jianzhi+8;return(jianzhi);}void main(){DDRD=0XFF;PORTD=0X00;DDRB=0XFF;PORTB=0X00;while(1){int jianzhi=cycle();switch(jianzhi){case 1:PORTB=0X00;PORTD=0X01;break;case 2:PORTB=0X00;PORTD=0X02;break;case 3:PORTB=0X00;PORTD=0X04;break;case 4:PORTB=0X00;PORTD=0X08;break;case 5:PORTB=0X00;PORTD=0X10;break;case 6:PORTB=0X00;PORTD=0X20;break;case 7:PORTB=0X00;PORTD=0X40;break;case 8:PORTB=0X00;PORTD=0X80;break;case 9:PORTD=0X00;PORTB=0X01;break;case 10:PORTD=0X00;PORTB=0X02;break;case 11:PORTD=0X00;PORTB=0X04;break;case 12:PORTD=0X00;PORTB=0X08;break;}}}2.通过ISIS7模拟连接电路:3.带入代码,运行程序,点击每个键盘按钮在右边的LED灯处显示所按得键盘号。

单片机跑马灯实训报告

单片机跑马灯实训报告

了解跑马灯AT89C52单片机识别与检测元器件四、电路设计1.单片机最小应用系统2.复位电路图3.彩灯原理图4.彩灯仿真图5.彩灯布局图五、焊接电路八、程序流程七、跑马灯程序八、下载调试程序九、实训总结目录.2.3.5101011、微控制器应用技术实训评价表12、了解跑马灯在生活和生产的各领域中,凡是有自动控制要求的地方都会有单片机的身影出现;从简单到复杂,从空中、地面带地下,凡是能想象到的地方几乎都有使用单片机的需求。

现在尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而没有实现的项目,因此,单片机的应用大有想象和拓展空间。

单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境, 减少能源和材料消耗,保真安全等。

但是单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于单片机的应用正从根本上改变者传统的控制系统设计思想和设计方法。

从前必须有模拟电路或数字电路实现的大部分功能,现在已能使用单片机通过软件方法来实现了。

这种以软件取代硬件并提高系统系能的控制系统是一种全新的概念,是对传统控制技术的一次革命。

随着单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。

在众多的微控技术实验中,老师为我们选择了用单片机制作8个灯的跑马机这一较为基本的科目,单片机使用我们熟悉的AT89C52型单片机,采用覆铜板手工焊制的方法来制作电路板,使用Proteus进行仿真。

本设计选择采用AT89C51单片机为核心。

AT89C51是一个低电压、高性能CMOS8位单片机带有K字节的可反复擦写的程序存储器。

和128字节的存取数据存储器RAM这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。

片内含有8位中央处理器和闪烁存储单位,有较强的功能的AT89C51单片机能够被应用到控制领域中AT89C51提供以下的功能标准:4K字节闪烁存储器,128字节随机存取数据存储器,32个I/O 口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内振荡器和时钟电路。

单片机内部结构测试报告-跑马灯

单片机内部结构测试报告-跑马灯

单片机内部结构测试报告姓名:苏汉生班别:09机械1班学号:0915020045指导老师:庞志目录1.跑马灯实验12.跑马灯实验23.跑马灯实验34.按键实验、蜂鸣器5.定时器数码管显示6.看门狗实验7.AD数模转换实验程序运行分析一、跑马灯实验11.测试程序名称:跑马灯实验12.程序功能介绍:跑马灯1的程序功能主要是控制LED灯闪亮的顺序,使八个LED灯按照程序设定闪亮。

但对按键和其他元件不起任何控制作用。

3.程序相关的电路图:8位流水灯电路4.程序总体(主函数)流程图:5(1)(3)1ms延时函数:(4)N ms掩饰函数:6.程序涉及的技术解析:unsigned charLED_table[]={0xFE,0x00,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF ,0x7F,0xFF,0x00,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0 xFF,0x00,0xFF,0x7E,0xBD,0xDB,0xE7,0xFF,0x00,0xE7,0xDB,0xBD,0x7 E,0xFF,0x00};上述这个语句用到了一维数组,命名为LED_table,该数组一共有37个元素,每一个元素是一个十六进制的数,这些十六进制的数代表着开发板上的LED灯闪亮的规律(输出1为不亮,输出0为亮)。

PORTA = 0xFF;DDRA = 0xFF;DDRE=0XFF;PORTE=0XFF;上述语句是I/O口(端口A寄存器)的初始化,A口的8个脚控制开发板上的8个LED灯。

初始化A口设置为输出,8个引脚分别为1111 1111,LED等为全灭的状态。

单片机与LED灯之间连接了一个74HC573八进制3态非反转透明锁存器,E口2脚接在74HC573锁存器的使能端。

当锁存使能端为高电平1时,锁存对于数据是透明的(也就是说输出同步);当锁存使能端为低电平0时,符合建立时间和保持时间的数据会被锁存。

单片机跑马灯实验报告

单片机跑马灯实验报告

单片机跑马灯实验报告摘要:本实验通过使用单片机来控制LED灯进行跑马灯效果的展示。

通过简单的电路连接和编程,我们成功实现了单片机跑马灯的功能。

实验结果表明,单片机跑马灯是一种简单而有效的显示系统,可广泛应用于娱乐和装饰等领域。

引言:跑马灯效果是一种常见且受欢迎的LED显示效果,它可以不断地循环显示LED灯的亮灭轮廓,给人们带来视觉上的愉悦。

单片机是一种可编程的微控制器,广泛应用于电子系统的控制和管理。

在本实验中,我们将利用单片机来实现跑马灯效果,通过编程控制LED灯的亮灭来模拟跑马灯的效果。

材料和方法:本实验所需材料如下:1. 单片机开发板2. LED灯3. 面包板4. 连接线实验步骤:1. 将单片机开发板放置在面包板上,确保连接稳固。

2. 将LED灯连接到面包板上,按照电路图正确连接。

3. 接通电源,将USB线连接到单片机开发板上。

4. 在计算机上打开开发板的编程软件。

5. 编写程序代码,实现跑马灯的效果。

6. 将程序代码下载到单片机开发板中。

7. 观察LED灯的亮灭情况,检查是否实现了跑马灯效果。

结果和讨论:经过实验,我们成功实现了单片机跑马灯的效果。

LED灯按照指定的顺序循环亮灭,产生出跑马灯的效果。

通过调整程序代码,我们可以控制跑马灯的速度和亮灭顺序,使其更加多样化和有趣。

单片机跑马灯是一种简单而有效的LED显示系统。

它可以应用于各种场景,包括室内和室外的装饰灯,新闻标语显示,广告牌等。

跑马灯效果不仅能够吸引人们的目光,还可以起到一定的宣传和广告效果。

总结:通过本次实验,我们了解了单片机的基本原理和应用,并成功实现了单片机跑马灯的效果。

单片机跑马灯具有简单、低成本、可编程等优点,适用于各种需要循环显示效果的场景。

未来,我们可以探索更多有趣的跑马灯效果,并将其应用于实际项目中。

在这个数字化时代,单片机跑马灯有着广阔的应用前景,希望能够为人们的生活和工作带来更多的灵感和乐趣。

单片机实训报告跑马灯

单片机实训报告跑马灯

一、实训背景随着科技的发展,单片机作为一种重要的嵌入式系统控制单元,在工业控制、智能家居、物联网等领域得到了广泛的应用。

为了提高学生对单片机程序设计的理解和实践能力,本次实训选择了跑马灯程序设计作为实训项目。

二、实训目的1. 熟悉单片机的基本结构和编程方法。

2. 掌握Keil C51集成开发环境的使用。

3. 学习跑马灯程序的设计与实现。

4. 培养动手实践能力和团队协作精神。

三、实训内容本次实训主要分为以下几个部分:1. 电路设计:设计跑马灯的电路,包括单片机、LED灯、电阻、按键等元件。

2. 程序设计:编写跑马灯的程序,实现LED灯的正序、倒序、闪烁等功能。

3. 程序调试:在Keil C51集成开发环境中进行程序调试,确保程序正常运行。

4. 实验报告撰写:总结实训过程中的经验和收获,撰写实验报告。

四、电路设计跑马灯电路主要包括以下元件:1. 单片机:选用AT89C51单片机作为控制核心。

2. LED灯:使用8个LED灯作为显示元件。

3. 电阻:用于限流,防止LED灯烧毁。

4. 按键:用于控制跑马灯的运行模式。

电路连接方式如下:1. 将8个LED灯的正极依次连接到单片机的P1口。

2. 将8个LED灯的负极依次连接到地线。

3. 将按键的一端连接到单片机的P3.0口,另一端连接到地线。

五、程序设计跑马灯的程序采用C语言编写,主要功能包括:1. 正序跑马灯:LED灯依次点亮,从D1到D8。

2. 倒序跑马灯:LED灯依次点亮,从D8到D1。

3. 闪烁跑马灯:LED灯快速闪烁。

程序流程如下:1. 初始化单片机P1口为输出模式。

2. 根据按键输入选择跑马灯的运行模式。

3. 根据选择的模式,依次点亮LED灯。

4. 延时一段时间,然后继续点亮下一个LED灯。

5. 重复步骤3和4,直到所有LED灯点亮完毕。

程序代码如下:```c#include <reg51.h>#define LED P1void delay(unsigned int t) {unsigned int i, j;for (i = 0; i < t; i++)for (j = 0; j < 120; j++);}void main() {unsigned char i;LED = 0x01; // 正序跑马灯while (1) {for (i = 0; i < 8; i++) {delay(500); // 延时LED = (0x01 << i); // 点亮下一个LED灯}}}```六、程序调试在Keil C51集成开发环境中,将程序代码编译生成HEX文件,然后将HEX文件烧录到单片机中。

单片机跑马灯实验报告

单片机跑马灯实验报告

单片机跑马灯实验报告单片机跑马灯实验报告引言:单片机是一种集成电路,具有微处理器核心、存储器、输入输出接口和定时计数器等功能,广泛应用于各个领域。

而跑马灯实验是单片机学习中的基础实验之一,通过控制LED灯的亮灭顺序,实现类似跑马灯效果。

本报告将详细介绍单片机跑马灯实验的设计原理、实验步骤以及实验结果。

一、设计原理:单片机跑马灯实验的设计原理基于单片机的IO口控制和定时器的应用。

在单片机中,IO口可以通过设置高低电平来控制外部设备的工作状态,而定时器可以实现对时间的精确控制。

通过将多个LED灯连接到单片机的不同IO口上,并利用定时器控制LED灯的亮灭顺序和时间间隔,就可以实现跑马灯效果。

二、实验步骤:1. 准备工作:a. 准备单片机开发板、杜邦线、LED灯等实验器材;b. 连接电路:将多个LED灯通过杜邦线连接到单片机的不同IO口上;c. 上电测试:将开发板连接到电源,确认电路连接无误。

2. 编写程序:a. 打开单片机开发环境,选择合适的单片机型号;b. 编写程序代码:根据实验要求,编写控制LED灯亮灭顺序的程序代码;c. 调试程序:通过编译、下载和运行,检查程序是否可以正常工作。

3. 实验操作:a. 将已编写好的程序下载到单片机开发板中;b. 上电运行:通过上电启动单片机,程序开始运行;c. 观察实验现象:观察LED灯的亮灭顺序和时间间隔,验证跑马灯效果。

三、实验结果:经过实验操作,我们成功实现了单片机跑马灯效果。

LED灯按照预先设定的顺序依次亮起,并在一定时间后熄灭,随后下一个LED灯亮起,如此循环往复,形成了跑马灯效果。

通过调整程序代码中的参数,我们还可以改变跑马灯的亮灭顺序和时间间隔,实现不同的效果。

四、实验总结:通过这次单片机跑马灯实验,我们深入了解了单片机的IO口控制和定时器的应用。

通过编写程序代码,我们成功实现了跑马灯效果,并通过调试参数,改变了跑马灯的亮灭顺序和时间间隔。

这次实验不仅巩固了我们对单片机的基础知识的理解,还培养了我们的实际操作能力。

跑马灯实验报告

跑马灯实验报告

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

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

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

三、程序流程图四、程序#include &lt;reg50 ;//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&gt;0;i--) //循环i*240 次for(j=240;j&gt;0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j&lt;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&lt;&lt;j++);//控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{ j=0;}。

stm32跑马灯实验报告

stm32跑马灯实验报告

stm32跑马灯实验报告《STM32跑马灯实验报告》实验目的:本实验旨在通过使用STM32单片机,实现一个简单的跑马灯效果,以加深对STM32单片机的理解和掌握。

实验器材:1. STM32单片机开发板2. USB数据线3. LED灯4. 电阻5. 连线实验原理:STM32单片机是一款功能强大的微控制器,具有丰富的外设和强大的处理能力。

在本实验中,我们利用STM32单片机的GPIO(通用输入输出)功能,控制LED灯的亮灭,从而实现跑马灯效果。

实验步骤:1. 连接STM32单片机开发板和电脑,使用Keil或者其他编程软件进行程序编写。

2. 编写程序,通过控制GPIO口的高低电平,实现LED灯的跑马灯效果。

3. 将编写好的程序下载到STM32单片机开发板中。

4. 连接LED灯和STM32单片机的GPIO口,确保连接正确。

5. 通过电脑或者外部电源给STM32单片机供电,观察LED灯的跑马灯效果。

实验结果:经过实验,我们成功实现了STM32单片机的跑马灯效果。

LED灯在不同的GPIO口控制下,能够呈现出流畅的跑马灯效果,整个实验过程非常顺利。

实验总结:通过本次实验,我们进一步了解了STM32单片机的GPIO控制功能,掌握了如何通过编程实现LED灯的控制。

同时也加深了对STM32单片机的理解和应用能力。

在今后的学习和工作中,我们将进一步深入研究STM32单片机的应用,为实际项目的开发和应用打下坚实的基础。

通过这次实验,我们不仅掌握了STM32单片机的基本应用,还增强了对微控制器的理解和应用能力。

希望通过不断的实验和学习,我们能够更加熟练地运用STM32单片机,为未来的工程项目做出更大的贡献。

51单片机走马灯实验报告

51单片机走马灯实验报告

微机原理及单片机应用实验实验报告实验跑马灯一、实验内容开关控制输出方式,共四种,开关拨到k1时奇数灯亮,开关拨到k2时偶数灯亮,开关k3时奇数偶数灯轮流亮,开关拨到k4时从左到右依次亮,开关拨到k5时从右到左依次亮。

二、实验步骤①依次L1-L8接入P1.0-P1,7,将P3接入高低电平开关②编程③实现三、实验原理图四.实验程序清单ORG 0000HPX00: MOV P1,#0FFH KEY : MOV A,#0FEHPO00: JB P3.0,PO01JNB P3.0,PO02PO01: MOV A,#055HMOV P1,ALJMP PO00PO02: JB P3.1,PO03JNB P3.1,PO04PO03: MOV A,#0AAHMOV P1,ALJMP PO00PO04: JB P3.2,PO05JNB P3.2,PO06PO05:MOV A,#0FEHK1:MOV P1,AJNB P3.2,LASTAJMP W1W1:RL ASJMP K1C1:MOV R6,#0A0HMOV R7,#0FFHK2:MOV R7,#0FFHK3:DJNZ R7,K3DJNZ R6,K2LJMP W1PO06:JB P3.3,PO07JNB P3.3,PO08PO07:MOV A,#7FHK4:MOV P1,AJNB P3.3, LASTAJMP W2W2: RR ASJMP K4C2: MOV R6,#0A0HMOV R7,#0FFHK5:MOV R7,#0FFHK6:DJNZ R7,K6DJNZ R6,K5LJMP W2PO08:JB P3.4,PO09JNB P3.4,LASTPO09:MOV A,#55HMOV P1,AMOV R6,#0A0HMOV R7,#0FFHK7:MOV R7,#0FFHK8:DJNZ R7,K8DJNZ R6,K7MOV A,#0AAHMOV P1,AMOV R6,#0A0HMOV R7 ,#0FFHK9:MOV R7,#0FFHK10:DJNZ R7,K10DJNZ R6,K9LJMP PO08LAST:MOV P1,#0FFHLJMP PO00END五、实验总结参考8255交通灯实验,加上延时程序以及查询式的跳转方法实现跑马灯。

stm32跑马灯实验报告

stm32跑马灯实验报告

stm32跑马灯实验报告STM32跑马灯实验报告引言:STM32是一款广泛应用于嵌入式系统开发的微控制器,具有高性能、低功耗和丰富的外设接口。

跑马灯实验是入门级的STM32实验项目,通过控制LED灯的亮灭顺序实现跑马灯效果。

本实验报告将详细介绍实验的目的、原理、实施步骤以及实验结果。

一、实验目的跑马灯实验旨在通过STM32的GPIO控制LED灯的亮灭,实现灯光在多个LED之间依次点亮和熄灭的效果。

通过这个实验,我们可以了解STM32的GPIO口的操作方式,掌握基本的STM32编程技巧。

二、实验原理STM32的GPIO口可以设置为输出模式,通过控制GPIO口的电平(高电平或低电平)来控制LED灯的亮灭。

跑马灯实验中,我们将多个LED连接到STM32的不同GPIO口上,通过依次改变GPIO口的电平状态,实现灯光在不同LED之间依次传递的效果。

三、实施步骤1. 准备材料:STM32开发板、杜邦线、若干个LED灯。

2. 连接电路:将多个LED分别连接到STM32的不同GPIO口上,确保极性正确。

3. 创建工程:使用Keil等开发环境创建STM32工程,并配置好相应的引脚。

4. 编写代码:在main函数中编写代码,通过设置GPIO口的电平状态实现跑马灯效果。

5. 编译烧录:编译代码生成可执行文件,并将其烧录到STM32开发板上。

6. 运行实验:将STM32开发板上电,观察LED灯的亮灭顺序是否符合预期。

四、实验结果经过实验,我们成功实现了跑马灯效果。

LED灯在不同的GPIO口之间依次点亮和熄灭,形成了流动的灯光效果。

通过调整代码中GPIO口的顺序和时间延迟,我们还可以改变灯光的流动速度和方向。

实验结果与预期一致,验证了我们的设计和实施的正确性。

五、实验总结通过这个实验,我们对STM32的GPIO控制和编程有了更深入的了解。

我们学会了如何通过改变GPIO口的电平状态来控制外部设备,掌握了基本的STM32编程技巧。

单片机跑马灯实验报告(二)

单片机跑马灯实验报告(二)

单片机跑马灯实验报告(二)引言概述:单片机跑马灯实验是一种常见的数字电路实验,也是学习单片机基础应用的重要内容。

本实验旨在通过控制单片机的IO口输出来实现多个LED灯的顺序闪烁,从而模拟跑马灯的效果。

本报告将从硬件组成、电路连接、程序设计、实验步骤和实验结果等方面进行详细阐述。

正文:1. 硬件组成:- 单片机 (例如STC89C52)- 电源 (5V 直流电源)- 电阻 (用于限流)- LED灯 (多个,不同颜色)- 连接线等2. 电路连接:- 连接单片机的引脚与LED灯、电阻等。

一般使用IO口输出来控制LED灯的开关状态,通过改变输出电平来控制灯的亮灭。

具体的连接方式可以根据单片机的datasheet或者开发板的示意图来确定。

3. 程序设计:- 使用C语言编写程序,通过编写程序控制单片机的IO口输出来实现LED灯的顺序闪烁。

基本的程序框架包括引入头文件、定义引脚、设置IO口状态、延时函数和主函数等。

4. 实验步骤:- 硬件连接完毕后,将程序通过编译、烧录等操作下载到单片机中。

- 运行程序,观察LED灯按照设定的顺序是否闪烁,是否达到跑马灯的效果。

- 可以通过改变程序中的一些参数,如延时时间、顺序等,来观察结果的变化。

5. 实验结果:- 根据实验步骤操作后,观察实验效果是否与预期相符。

- 分析实验结果,检查是否有异常情况,如LED灯不亮、顺序错误等,进行排查和修改。

- 还可进行一些扩展实验,如控制节奏变化、增加LED灯数量等。

总结:通过本次实验,我们成功实现了单片机跑马灯的效果,掌握了基本的硬件连接和程序设计方法。

在实验过程中,我们深入了解了单片机的IO口控制和LED灯驱动原理等知识。

通过不断练习和实验,我们能够熟练掌握单片机应用开发的基础技能,为日后深入学习和应用打下了良好的基础。

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

2010年中职骨干教师国家级培训
单片机焊接与调试
实验报告
学员姓名:王军朝
专业:电子电器应用与维修
单位:山西省临猗县第一职业中学
时间:2010年7月23日
实验一熟悉最小单片机组装及keil的使用
实验题目:
用P1口的P1.0~P1.3作为输入,读取开关K0~K3上的数据,用P1.4~P1.7作为输出,控制发光二极管L0~L3。

设晶振频率
fosc=12MHz,为更好的观察实验现象,要求程序在延时1S后再执行下一条。

实验目的:熟悉最小单片机组装及STC ISP和keil软件的使用,并进行调试。

实验内容:最小单片机的组装与焊接,熟悉实验环境,掌握keil 的使用方法;建立工程,编程,调试并运行程序。

基本要求:能够在计算机上使用相应的软件建立一个工程,应用简单指令编写简单的程序进行编译,并在实验板上调试成
功。

实验工具:
1、单片机测试平台:PC机,串口线,并口线,单片机开发板。

2、软件:keil51测试软件,STC软件,串口调试软件,定时器
/计数器初值测试软件。

3、万用表,尖嘴钳,斜口钳,镊子,剪刀,螺丝刀(十字/一
字),电烙铁,烙铁架,松香,焊锡,清洁棉,工具箱。

电路原理:
程序流程:
实现小灯随开关闭合亮的程流程图
实验步骤:
1、应的元件组装最小单片电路
成果图
2、进行编程
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV SP,#60H ;主程序开始,设置堆栈SP为60H
MOV A,#0FH
MOV P1,A ;数据送P1口,设置P1.0~P1.3为输入NEXT:MOV A,P1 ;读K0~K3上的数据
SWAP A ;A的低4位与高4位交换
ORL A,#0FH ;A的高4位不变,低4位为全1
MOV P1,A ;送数据到L0~L3,设置P1.0~P1.3为输入LCALL DELAY ;调用延时子程序
LJMP NEXT ;循环
DELAY:MOV R5,#10;
DEL0:MOV R6,#200;DEL1:MOV R7,# 0F8H;NOP;
DJNZ R7,$;
DJNZ R6,DEL1;DJNZ R5,DEL0;
RET

END
实验体会
单片机是一门应用性和实践性非常强的学科,必须要多动手,多做实验。

在本次实验过程中,我们从元器件的焊接开始,逐步完成对单片机端口的输入、输出编程控制。

总体来说,如何进行正确的软件编程并完成仿真模拟运行是本次实验的重点也是难点,花费时间和精力也最多。

思考问题:1、想想为什么在更改程序前强调要先暂停程序?
2、分析参考程序实现延时功能的原理。

3、如何用最少条数的指令实现闪灯程序?
4、能不能让小灯有更多、更复杂的动作方式。

相关文档
最新文档