文档库 最新最全的文档下载
当前位置:文档库 › 实验一 51单片机流水灯实验 实验报告

实验一 51单片机流水灯实验 实验报告

实验一 51单片机流水灯实验 实验报告
实验一 51单片机流水灯实验 实验报告

“流水灯”实验报告

一、实验目的

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 0000H Delay: MOV R0, #0FFH

SJMP Start Delay1: MOV R1, #0FFH Start: MOV A, #0FEH Delay2: NOP

MOV P0, A DJNZ R1, Delay2

CLR P2.7 DJNZ R0, Delay1

CLR P3.7 RET

Move: MOV R2, #7H END

MOV R3, #7H

RMove: RL A

MOV P0, A

CALL Delay

DJNZ R2, RMove

LMove: RR A

MOV P0, A

CALL Delay

DJNZ R3, LMove

SJMP Move

五、实验结果

为了便于实验结果的描述,下面分别把P0.0, P0.1…, P0.7对应的发光二极管编号为1, 2, …, 8号二极管。

在仿真系统中,先从1号二极管下面是在仿真系统中的实验结果:

实验的结果:二极管的发光状态从1→2→3→4→5→6→7→8→7→…→1→2;如此往复循环。

六、实验总结与分析

1.经过这次实验,不难总结出开发单片机程序的方法。

第一步:根据需求连接好单片机;

第二步:在仿真系统中,使用汇编指令写好单片机的程序;

第三步:在仿真系统中对程序进行测试;

第四步:把程序下载到单片机中,并观察程序运行结果;如果程序运行不正确,则根据现象分析程序错误之处。改正以后重新下载观察运行结果。

2.对单片机的悬空针脚进行相应处理:悬空针脚接上高电平。

3.

51单片机32位流水灯

51单片机32位流水灯 摘要:随着电子工业的发展,电子元器件急剧增加,C51单片机应用非常广泛。本文介绍了一种简易的单片机应用的设计思路及硬件结构。首先研究了51单片机流水灯的基本原理,画出整机框图,接着提出系统的性能指标,计算确定电路形式和元器件参数,然后根据原理图通过Simulink软件进行建模仿真,验证系统的可行性。 关键字:C51;LED;S imulink软件;Protel99SE; 1引言 1.1设计背景及意义 目前,随着电子工业的发展,电子元器件急剧增加,电子元器件的适用围也逐渐广泛起来,在我们的生活当中有许多地方要应用中到灯光,因此,设计全自动,可靠,安全,便捷的灯光效益具有极大的现实必要性。 2.系统概述 该系统主要有C51单片机,LED灯,晶振等。 2.1 设计目的 (1)掌握简易流水灯的工作原理,以及程序的编写等等。 (2)进一步熟悉和掌握常用数字电路元器件的应用; (3)学习数字电路仿真、调试、测试、故障查找和排除的方法、技巧; (4)培养实践技能,提高分析和解决实际问题的能力。 2.2设计容及要求 1、51单片机x1、40Pin 座x1 2、LED x32(建议用5mm 七彩的) 3、电阻470Ωx33 4、晶振12MHz x1 5、10uf 电解电容x1、谐振瓷片电容30pf x2 6·其他的可以看自己的爱好去加 7、其实也可以不用那么多的电阻,用几个排阻就OK了。

2.2电路原理图

2.2重要元器件介绍

(1)C51单片机 (2)12MHZ晶振分为两种封装形式: SMD3225产品详细参数: 频率围:12 ~ 54 MHz 频率公差(25℃)± 10ppm± 30 ppm, or specify 在工作温度围的频率稳定度:± 10ppm± 30 ppm, or specify 工作温度围:- 20 ~ +70 oC, or specify 并联电容(C0):7 pF Max. 驱动级:1~200μW(100μW typical) 负载电容:Series, 8 pF, 12 pF, 15 pF, 20pF, or specify 老化(25℃):± 3 ppm / year Max. 储存温度围:- 40 ~ + 85 oC SMD5032产品详细参数: 频率围:12 ~ 54 MHz 频率公差(25℃)± 10ppm± 30 ppm, or specify 在工作温度围的频率稳定度:± 10ppm± 30 ppm, or specify 工作温度围:- 20 ~ +70 oC, or specify 并联电容(C0):7 pF Max. 驱动级:1~200μW(100μW typical) 负载电容:Series, 8 pF, 12 pF, 15 pF, 20pF, or specify 老化(25℃):± 3 ppm / year Max. 储存温度围:- 40 ~ + 85 oC 3实物

花样流水灯实验报告

黄淮学院信息工程学院 单片机原理及应用课程设计性实验报告

五、硬件电路设计 根据设计任务,首先进行系统硬件的设计。其硬件原理图由LED显示电路和单片机最小系统组成,如图所示,其中包括时钟电路采用部时钟方式,复位电路采用上电自动复位。由于单片机的I/O口的高电平驱动能力只有微安级,而灌电流可以达到3毫安以上,因此采用低电平驱动。P1、P2、P3分别控制8个led灯。 六、软件程序设计 1、软件设计思路 如果通过上图所示电路图完成实验要求,通过数组,分别同时控P0、P1、P2分别控制8个led灯,从而协调控制24个灯实现花样流水灯效果。 开始 编写数组 主循环 逐个点亮 24灯同时闪烁 逐个熄灭

P3=table1[i]; delayms(500); } shan();//全部闪烁 for(i=0;i<8;i++)//逐个熄灭{ P3=table2[i]; delayms(500); } for(i=0;i<8;i++) { P1=table3[i]; delayms(500); } for(i=0;i<8;i++) { P0=table2[i]; delayms(500); } } } void delayms (uintt) { uint x,y; for(x=t; x>0;x--) for(y=50;y>0;y--); } 七、软硬件仿真调试分析 1、仿真调试结果

图片 1 逐个点亮图片 2 24灯闪烁 图片 3 逐个熄灭 2、性能测试及结果分析 通过仿真结果发现通过上述系统可以实现实验要求,24个灯逐个点亮,24个灯全亮后,24个灯一起闪烁,闪烁5次后,然后24个灯逐个熄灭。由此证明系统满足实验要求。 八、项目总结 在本次花样流水灯试验中,使用循环程序、数组语句实现了实验要求,设计过程中遇到了很多的问题,但经过努力,最终设计出了合理的解决方案。通过此次实验,对多个led灯的控制能力进一步得到提升。 九、项目设计报告成绩 实验报告成绩: 指导教师签字: 年月日

单片机课程设计51实验报告DOC

福建工程学院软件学院 题目:51开发洗衣机 班级:物联网工程1202 成员: 座号:04 28 指导老师: 日期:年月日课设报告

目录 1摘要 (1) 2.设计需求 (1) 2.1功能需求 (1) 2.1.1 基本功能 (1) 2.1.2扩展功能 (1) 2.2 设计要求 (2) 2.2.1 单片机芯片部件功能 (2) 2.2.2 LCD数码显示管部件功能 (2) 2.2.3 按键部件功能 (2) 2.2.4 蜂鸣器部件功能 (2) 3硬件设计及描述 (2) 3.1总体描述 (2) 3.2系统总体框图 (3) 3.3Proteus电路图 (3) 3.4各部分硬件介绍 (4) 3.4.1晶振Protues仿真 (4) 3.4.2LCDProtues仿真 (5) 3.4.3 按键Protues仿真 (5) 3.4.4上拉电阻Protues仿真 (6) 3.4.5C51芯片Protues仿真 (6) 3.4.6上电复位电路Protues仿真 (8) 3.4.7蜂鸣器Protues仿真 (9) 4 软件设计流程及描述 (10) 4.1程序流程图 (10) 4.2函数模块及功能 (10) 5功能实现 (11) 5.1程序烧入上电调试 (11) 5.2时间递增跳变 (12) 5.3比分更变 (13) 5.4比赛得分复位 (14) 5.5比赛时间复位 (14) 6 心得体会 (15) 7源程序代码: (16)

1摘要 是为了方便足球比赛时计时与计分及时与准确公开而引申出的实用产品。在此设计中接入了一个1602液晶显示屏,第一行用来记录赛程的时间,第二行用于显示比赛的得分情况。赛程计时用倒计时来计时。在比赛结束时按下相应按键蜂鸣器会响起,提醒比赛时间结束。 这次试验运用C语言进行编程,编程后利用Keil uVision来进行编译,再生成.hex文件装入芯片中,采用Proteus软件来仿真,检验功能是否能够正常实现,最后利用单片机MCS-51实机来实现功能。 本设计以AT89S51单片机作为核心,综合应用单片机定时器、中断、LCD1602 液晶显示等知识,设计一款单片机和简单外设控制的足球计分器应用,同时显示当前的比赛进行时间,比赛队伍,比分状况。 2.设计需求 2.1功能需求 2.1.1 基本功能 (1)屏上显示比赛已运行时间 (2)屏上显示A队和B队的得分 (3)屏上显示上下半场(H-L) (4)通过按键控制比分的增减 2.1.2扩展功能 (1)按键实现比赛场次的更换 (2)按键实现比赛计时的复位 (3)按键实现比赛比分的复位 (4)在比赛结束时,蜂鸣器在主裁判的控制下响起

51单片机流水灯C语言源代码

#include #include #define uint unsigned int #define uchar unsigned char uchar z=50,e=0x00,f=0xff; uchar code table1[]={ 0x80,0xc0,0xe0,0xf0, 0xf8,0xfc,0xfe,0xff}; uchar code table2[]={ 0x7f,0x3f,0x1f,0x0f, 0x07,0x03,0x01,0x00}; uchar code table3[]={ 0x01,0x03,0x07,0x0f, 0x1f,0x3f,0x7f,0xff}; uchar code table4[]={ 0xe7,0xdb,0xbd,0x7e, 0xbd,0xdb,0xe7,0xff}; uchar code table5[]={ 0xe7,0xc3,0x81,0x00, 0x81,0xc3,0xe7,0xff}; uchar code table6[]={ 0x7e,0x3c,0x18,0x00, 0x18,0x3c,0x7e,0xff}; void delay(uchar); void lsd1(); void lsd2(); void lsd3(); void lsd4(); void lsd5(); void lsd6(); void lsd7(); void lsd8(); void lsd9(); void lsd10(); void lsd11(); void lsd12(); main() { while(1) { lsd1(); lsd2(); lsd3(); lsd4();

单片机花样流水灯设计实验报告

**大学 物理学院 单片机花样流水灯设计实验 课题:花样流水灯设计 班级: 物理 *** 姓名: *** 学号: ……………

当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。 制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。 本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。 关键字:AT89C51 单片机流水灯数码管

1. 单片机及其发展概况 单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。 2. Protues仿真软件简介 Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。 【实验设计目标】 设计要求以发光二极管作为发光器件,用单片机自动控制,对8个LED 灯设计至少3种流水灯显示方式,每隔20秒变换一次显示花样,计时通过一个二位七段数码管显示。

最经典的51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计 开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 程序A: ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 程序B: ;用移位方式实现流水灯

ajmp main ;跳转到主程序 org 0030h ;主程序起始地址 main: mov a,#0feh ;给A赋值成11111110 loop: mov p1,a ;将A送到P1口,发光二极管低电平点亮 lcall delay ;调用延时子程序 rl a ;累加器A循环左移一位 ajmp loop ;重新送P1显示 delay: mov r3,#20 ;最外层循环二十次 d1: mov r4,#80 ;次外层循环八十次 d2: mov r5,#250 ;最内层循环250次 djnz r5,$ ;总共延时2us*250*80*20=0.8S djnz r4,d2 djnz r3,d1 ret end 51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。 ORG 0 ;程序从0地址开始 START: MOV A,#0FEH ;让ACC的内容为11111110 LOOP: MOV P2,A ;让P2口输出ACC的内容 RR A ;让ACC的内容左移 CALL DELAY ;调用延时子程序 LJMP LOOP ;跳到LOOP处执行 ;0.1秒延时子程序(12MHz晶振)=================== DELAY: MOV R7,#200 ;R7寄存器加载200次数 D1: MOV R6,#250 ;R6寄存器加载250次数 DJNZ R6,$ ;本行执行R6次 DJNZ R7,D1 ;D1循环执行R7次 RET ;返回主程序

(完整版)51单片机流水灯程序

1.第一个发光管以间隔200ms 闪烁。 2. 8 个发光管由上至下间隔1s 流动,其中每个管亮500ms, 灭500ms 。 3. 8 个发光管来回流动,第个管亮100ms 。 4. 用8 个发光管演示出8 位二进制数累加过程。 5. 8 个发光管间隔200ms 由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁 5 次。重复此过程。 6. 间隔300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到8 个管亮,然后重复整个过程。 7. 间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。 1 #include #define uint unsigned int sbit led 仁P"0; void delay(); void main() { while(1) { led1=0; delay(); led1=1; delay(); } } void delay() {

uint x,y; for(x=200;x>0;x--) for(y=100;y>0;y--); } #include #include #define uint unsigned int #define uchar unsigned char sbit p P1A0; uchar a; void delay(); void main() { a=0xfe; P1=a; while(1) { a=_crol_(a,1); delay(); P1=a; delay(); } } void delay() { uint b; for(b=55000;b>0;b--); } 3 #include #include #define uint unsigned int #define uchar unsigned char void delay() { uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--); } void main() { uchar a,i; while(1) a=0xfe; for(i=0;i<8;i++) { P1=a; delay(100); a=_crol_(a,1); } a=0x7f; for(i=0;i<8;i++) { P1=a; delay(100); a=_cror_(a,1);

单片机流水灯实验报告

流水灯实习报告 一、实验原理 单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED 灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。 二、硬件原理图 三、实验程序 ORG 00H AJMP START ORG 001BH AJMP INT ORG 0100H START: MOV SP,#60H MOV TMOD,#10H MOV TL1,#00H MOV TH1,#4CH MOV R0,#00H MOV R1,#20 SETB TR1 SETB ET1 SETB EA

INT: PUSH ACC PUSH PSW PUSH DPL PUSH DPH CLR TR1 MOV TL1,#B0H MOV TH1,#3CH SETB TR1 DJNZ R1,EXIT MOV R1,#20 MOV DPTR,#DATA MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H Movx @DPTR,A INC R0 ANL 00,#07H EXIT: POP DPH

POP PSW POP ACC RETI DATA: DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,0H END 四、实验功能 以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去. 五、实验总结 通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。 尤其是观察、分析和解决问题的实际工作能力。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我

51单片机流水灯实验报告单片机实验报告流水灯

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 实验结果: 六、实验参考程序 #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

51单片机实验报告-上传

本科生实验报告 实验课程单片微机原理与应用 学院名称ZZZZZ学院 专业名称电气工程及其自动化 学生姓名ZZZZ 学生学号ZZZZZ 指导教师ZZZ 实验地点6c902 实验成绩 二〇一六年三月二〇一六年五月

实验一单片机集成开发环境应用一实验目的 熟悉单片机集成开发软件(Keil); 掌握单片机实验板的使用; 掌握单片机P1口使用; 二实验内容 1、集成开发环境Keil介绍及开发流程 KEIL uVISION4是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,是众多单片机开发软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM(产品全生命周期管理),汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个人学习和小型应用的开发。 安装好后,让我们一起来建立一个小程序项目吧。即使你手中还没有一块实验板,甚至没有一块单片机,不过没有关系我们可以通过KEIL软件仿真看到程序运行的结果。 首先当然是运行KEIL51软件。运行几秒后,出现如图1-1的屏幕。

图1-1 2、建立第一个项目 点击工程菜单,选择弹出的下拉式菜单中的NewuVision Project,如图1-2。接着弹出一个标准Windows 文件对话窗口,如图1-3。在“文件名”中输入您的第一个C 程序项目名称,“保存”文件。这是KEIL uVision4项目文件,以后我们可以直接点击此文件以打开先前做的项目。 图1-2 New Project菜单

(完整word版)51单片机流水灯

51单片机的流水灯控制 班级:100712 姓名:全建冲 学号:10071047

一、设计要求 用51单片机设计一个流水灯的控制方案,要求采用定时器定时,利用中断法控制流水灯的亮灭,画出电路图和程序流程图,写出程序代码以及代码注释。 二、电路原理图 原理图分析: 本原理图采用STC89S52单片机控制8个LED灯,其中8个LED灯的负极接单片机的P1端口,正极通过1KΩ排阻连接到电源上。原理图中还给出了晶振与复位端,以保证控制器的稳定工作。

三、程序流程图

四、程序代码及注解 1.非中断定时器控制 #include #include//包含了_crol_函数的头文件 #define uchar unsigned char #define uint unsigned int uint i=0; uchar a=0xfe; void main() { TMOD=0x01;//设置工作方式为定时器0,16位手动重装初值 TH0=(65536-46080)/256;//50毫秒定时赋初值 TL0=(65536-46080)%256; TR0=1;//启动定时器0 while(1) { If(TF==1)//读溢出标志位 { TH0=(65536-46080)/256;//重新赋初值 TL0=(65536-46080)%256;

i++; if(i==10)//500毫秒定时 { i=0; P1=a;//P1端口赋值 a=_crol_(a,1);//循环左移 } TF=0;//清除定时器溢出标志 } } } 程序分析:本程序采用非中断定时器法控制流水灯,核心语句在于读取标志位TF位,TF为定时器溢出标志位,溢出时硬件自动置一,所以循环读取标志位以判断定时器是否溢出,而每次溢出需要手动清零,否则定时器无法再次溢出,利用标志i读取10次即可达到500毫秒的定时。另外需要注意的是单片机晶振为11.0592MHz,所以计时一个数的时间为12/11.0592=1.085us,故定时50毫秒的计数为50000/1.085=46080。 2.中断定时器控制 #include

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

80C51单片机-实验报告

实验一 CPU片内(外)清零 1.CPU片内RAM清零 一、实验目的: 掌握MCS-51汇编语言的设计,了解单片机的寻址方式以及调试方法。二、实验内容: 把单片机片内的30H~7FH单元清零。 三、实验框图: 四、实验步骤: 用连续或者单步的方式运行程序,检查30H-7FH执行前后的内容变化。五、参考实验程序: 程序名称:PNQL.ASM ORG 0000H JMP MAIN ORG 0030H MAIN: MOV R0,#30H ;30H送R0寄存器 CLR1: MOV A,#00H ;00送累加器A MOV @R0,A ;00 送到30H-7FH单元 INC R0 ;R0加1 CJNE R0,#7FH,CLR1 ;不到7F字节再清 WAIT: LJMP WAIT END 六、实验思考: 如果把30H-7FH的内容改为99H,如何修改程序。

2.CPU 片外RAM清零 一、实验目的: 掌握MCS-51汇编语言的设计,了解单片机的寻址方式以及调试方法。 二、实验内容: 把外部扩展的RAM的0000H-00FFH单元内容清零。 三、实验框图: 四、实验步骤: 用连续或者单步的方式运行程序,检查0000H-00FFH执行前后的内容变化。 五、参考实验程序: 程序名称:PWQL.ASM ORG 0000H MAIN: MOV SP,#60H MOV DPTR,#0000H ;0000H送DPTR寄存器 MOV R6,#0FFH ;FFH送R6寄存器(计数) CLR1: MOV A,#00H ;00送累加器A MOVX @DPTR,A ;00 送到0000H-00FFH单元 INC DPTR ;DPTR+1 DJNZ R6,CLR1 ;不到FF个字节再清 WAIT: SJMP WAIT END 六、实验思考: 把1-10先对应存入片内0030H起始的单元内,然后再从片内取出,对应存入片外7FFFH起始的单元中去。

基于51单片机的流水灯

基于51单片机的流水灯 利用51单片机P0口实现8个LED(发光二极管)的流水灯控制。可以使用Proteus软件进行仿真调试。 1 硬件设计 利用单片机的PO口控制8个LED,其电路如下图所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“LSD.DSN”。在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示 都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 流水灯又称为跑马灯,在函数中可以将P0口的八种不同状态做成一维数组,循环执行即可,如下所示。当然也可以采用其它函授来实现,如左移一位<<1(或右移一位>>1),循环左移函授_crol_(或循环右移函授_cror_)等。 /****************************************************************** 流水灯

*******************************************************************/ #include "reg51.h" const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delayms(unsigned int x) //延时 { unsigned int j; unsigned char k; for(j=0;j

发光二极管流水灯实验

实验一发光二极管流水灯实验 一、实验目的: 1.通过AT89C51单片机控制8个发光二极管,八个发光二极管分别接在单片机的P0.0-P0.7接口上,输出“0”时,发光二极管亮。开始时P0.0→P0.1….→P0.7,实现亮点以1HZ频率循环移动。 2.用PROTEUS 设计,仿真以AT89C51为核心的发光二极管流水灯实验装置。 3.掌握发光二极管的控制方法。 二、PROTEUS电路设计: 三、程序部分 #include sbit control = P3^7; void delay(int z) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { int i,tmp; control = 0; P0 = 0xef; delay(1000); for(i=1;i<=7;i++) { tmp = P0; P0 = (tmp>>1)+ 0x80; delay(1000); } }

实验二开关控制LED数码管实验 一、实验目的: 1.通过AT89C51读入4位开关K1、K2、K3、K4的输入状态,并按照二进制编码关系0-F输出到数码管显示。(如K4K3K2K1全部按下,则显示F;若只有K2按下,则显示2。) 2.掌握LED数码管的静态显示。 3.掌握I/O口的控制方法。 二、PROTEUS电路设计:

三、程序部分 #include unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82, 0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,}; unsigned char KEY; void main() { while(1) { KEY = P2; switch(KEY) { case 0xff:P0 = table[0];break; case 0xfe:P0 = table[1];break; case 0xfd:P0 = table[2];break; case 0xfc:P0 = table[3];break; case 0xfb:P0 = table[4];break; case 0xfa:P0 = table[5];break; case 0xf9:P0 = table[6];break; case 0xf8:P0 = table[7];break; case 0xf7:P0 = table[8];break; case 0xf6:P0 = table[9];break; case 0xf5:P0 = table[10];break; case 0xf4:P0 = table[11];break; case 0xf3:P0 = table[12];break; case 0xf2:P0 = table[13];break; case 0xf1:P0 = table[14];break; case 0xf0:P0 = table[15];break; default :break; } } }

用单片机控制的LED流水灯设计(电路、程序全部给出)

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATM EL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz 工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。 图1 流水灯硬件原理图 从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要

51单片机数字电压表实验报告

微控制器技术创新设计实验报告 :学号:班级: 一、项目背景 使用单片机AT89C52和ADC0808设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示。在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为5V;显示精度0.001伏。 二、项目整体方案设计 ADC0808 是含8 位A/D 转换器、8 路多路开关,以及与微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。ADC0808的精度为1/2LSB。在AD 转换器内部有一个高阻抗斩波稳定比较器,一个带模拟开关树组的256 电阻分压器,以及一个逐次通近型寄存器。8 路的模拟开关的通断由地址锁存器和译码器控制,可以在8 个通道中任意访问一个单边的模拟信号。

三、硬件设计 四、软件设计 #include #include"intrins.h" #define uchar unsigned char #define uint unsigned int sbit OE = P2^7; sbit EOC=P2^6; sbit START=P2^5; sbit CLK=P2^4;

sbit CS0=P2^0; sbit CS1=P2^1; sbit CS2=P2^2; sbit CS3=P2^3; uint adval,volt; uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; void delayms(uint ms) { uchar j; while(ms --) { for(j=0;j<120;j++); } } void ADC_read() { START=0; START=1; START=0; while(EOC==0); OE=1;

51单片机常见的五种流水灯编写方式

51单片机常见的五种流水灯编写方式通过改变赋值实现流水灯 void main() { while(1) { P2=0xfe; delay1ms(500); P2=0xfd; delay1ms(500); P2=0xfb; delay1ms(500); P2=0xf7; delay1ms(500); P2=0xef; delay1ms(500); P2=0xdf; delay1ms(500); P2=0xbf; delay1ms(500); P2=0x7f; delay1ms(500); } } 通过公式运算实现流水灯 void main() { while(1) { uint a,b=1; P2=0xfe; delayms(500); for(a=0;a<7;a++) {

P2-=b; // P2=P2-b delayms(500); b=b*2; //都化为同一类型进制运算 } } } 通过操作符<<与“|”实现流水灯 (通过移位实现流水灯) void main() { uchar a,i; while(1) { a=0xfe; //点亮第一位LED灯 for(i=0;i<8;i++) { P2=a; a=a<<1; //左移一位 a=a|0x01; //左移一位后与0x01相或,保证左移后最低位为1 delay_ms(500); } } } 通过库函数_crol_(字符左移)实现流水灯 void main() { uint a; a=0xfe; while(1) { P2=a;a=_crol_(a,1); delay_ms(500); } } 采用数组实现流水灯

C51单片机实验报告 流水灯 交通灯 定时器 双机交互 时钟

学号: 31100800 班级:自动化10班姓名:张 指导老师:胡 2012.12

单片机核心板实验要求 一、流水灯实验 1、实验目的: 1)简单I/O引脚的输出 2)掌握软件延时编程方法 3)简单按键输入捕获判断 2、完成功能要求 1)开机是点亮12发光二极管,闪烁三下 2)按照顺时针循环依次点亮发光二极管 3)通过按键将发光二极管的显示改为顺逆时针方式 二、定时器或实时时钟实验 1、实验目的 1)数码管动态显示技术 2)定时器的应用 3)按键功能定义 2、完成功能要求 1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。 2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。 上述二个功能至少完成一种功能。 三、双机通信实验 1、实验目的 UART 串行通信接口技术应用 2、完成功能要求 用两片核心板之间实现串行通信,将按键信息互发到对方数码管 显示。 四、交通灯实验 1、实验目的 1)按键、数码管、发光二极管综合应用编程技术 2)数据存储于EEPROM的技术(也可以不使用) 3)定时中断技术 4)按键中断技术 2、完成功能要求 1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。 2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。 3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。

实验一流水灯实验 一、实验目的 1)简单I/O引脚的输出 2)掌握软件延时编程方法 3)简单按键输入捕获判断 二、实验实现的功能 1)开机是点亮12发光二极管,闪烁三下 2)按照顺时针循环依次点亮发光二极管 3)通过按键将发光二极管的显示改为顺逆时针方式 三、系统硬件设计 1)如单片机核心板所示的硬件电路。 四、系统软件设计 设计思路: 1)定义数组使得调用数组可以使led灯能够顺时针和逆时针显示; 2)将按键的输入端全部置零,做单独按键使用; 3)利用“while”循环使得数码管可以闪烁三下; 4)利用“for”循环使得小灯能够依次点亮一个周期; 5)将以上思想汇总,编程,实现功能。程序详见附录。 五、实验过程中遇到的问题及解决方法 1)刚开始不知道怎样只设置一个管脚(如P0^0),查阅相关资料后知道表示方法,并学会了用“sbit”语句定义,方便多了。 2)对于C语言的很多东西都不知道,语句的用法也不清楚,重新看了C语言,用到什么看什么很快就懂了。 3)主程序中没有用延时程序和死循环导致led不能点亮,请教同学以后才知道。4)对于按键只是不了解,看书又很模糊,看了网上“KINGST工作室”也就是“手把手教你学单片机”的视频后很清楚明了,之后好多东西也是从上边学到,就不再赘述了。 指导老师签字: 日期:

相关文档