模拟彩灯制作实验报告 - 图文

更新时间:2024-03-15 21:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

黎明职业大学 机电工程系 《单片机应用技术》 实 验 报 告 实验题目:单片机模拟彩灯制作 班 级: 姓 名: 学 号: 0906010331 同组成员: 时 间:2011--04--05 实验报告内容:

一、设计功能描述,指明基本要求及提高要求的实现内容;

二、实验材料清单(包括:软件工具名称、仪器设备名称、元器件等); 三、实验实施过程描述,要点包括: (1)设计功能描述;(2)描述原理图设计思路,并画出电路图 ;(3)描述程序设计思路,并画出程序流程图;(4)写出源程序及其必要注释;(5)片内RAM的地址及I/O端口分配表;(6)子程序列表(名称、功能描述、出入口);(7)调试结果描述;(8)出现问题及其解决办法。

学生自评 评价内容 目标 情感 团队 专业能力(描述实现的提高属于附加分) 评分标准 所占分值 分值 8 8 9 8 8 18 8 7 7 自评分析 目的明确 学习态度良好 相互帮助 教师评分 工作目标明确,计划具体、结合实际。 10 工作态度端正,能主动进行相关学习。 10 积极帮助,或与他人合作。 操作 是否规范 实验结果是否正确 过程分析是否准确。 软件工具操作能力 软硬件的调试能力 基本功能的实现 **提高功能的实现 硬件电路的原理 程序的设计 章节的理论知识点 10 10 10 20 **10 10 10 10 软件工具大概有点懂, 软硬件调试能力一般。 基本全部实现 硬件还好,程序不太懂理论知识不怎么会。 学生自评总分:81分 学生自评语: 希望老师以后多多指教 签字: 教师评价总分: 教师评语: 签字:

一、设计功能

通过软件编写程序来实现8个LED灯的全灭、全亮;从左到右依次点亮;从右到左依次点亮;间隔闪亮;从中间到两边点亮;从两边到中间;从左到右逐个点亮;从右到左逐个点亮。

二、实验材料

1软件工具:protues软件 2仪器设备:电脑一台 5V电源

2元器件:STC89C51芯片,8个LED灯,22uf电解电容1个,12MHZ晶振,10K电阻1个,300Ω电阻8个 ,30pf电容两个。

三、实验实施过程

(1)设计程序来实现花样彩灯

基本功能:用单片机来实现八个led灯的闪烁。

扩展功能:在基本功能的基础上实现单片机的各种交替循环闪烁。

(2)设计原理思路

1、主电源引脚Vss和Vcc ① Vss接地

② Vcc正常操作时为+5伏电源 2、外接晶振引脚XTAL1和XTAL2

① XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。

② XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。

③通过控制P1.0到P1.7口来控制8个LED的亮灭。

利用单片机的P0口来驱动LED灯轮流闪烁,从而实现流水灯的功能。其中LED灯是共阳极的,所以要使LED灯亮起来就必须使P0口输出低电平才能使LED灯工作,同时为了保护LED灯,串上了300欧的电阻来限流

电路图如图

(3)程序设计思路

根据所学的指令来设计,实现花样流水灯的花样跳转。依次实LED灯的闪烁,具体如下:实现全亮,全灭;实现从右到左依次点亮;实现从左到右依次点亮;实现间隔闪烁;实现从右到左逐个点亮;实现从左到右逐个熄灭;实现从右到左逐个熄灭;实现从两边到中间点亮;实现从两边到中间熄灭;实现从中间到两边点亮;实现从中间到两边熄灭。中间通过调用延时子程序来控制灯熄灭跟点亮的时间。

(4)源程序如下:

;花样流水灯 led equ p1 org 0h

ljmp start ;无条件跳转 org 30h

start: acall alll acall lm acall rm acall ss acall lon acall roff acall ron acall loff acall smon acall smoff acall mson acall msoff sjmp start alll: mov r2,#4 alll1: mov led,#00h acall delay mov led,#0ffh acall delay djnz r2,alll1 ret lm: mov r2,#7 mov a,#0feh lm1: mov led,a acall delay rl a

djnz r2,lm1 ret rm: mov r2,#8 rm1: mov led,a acall delay rr a

djnz r2,rm1 ret ss: mov r2,#4 mov a,#0aah ss1: mov led,a acall delay rl a

djnz r2,ss1 ret lon: mov r2,#8 ;;调用子程,实现全亮,全灭

;调用子程,实现从右到左依次点亮 ;调用子程,实现从左到右依次点亮 ;调用子程,实现间隔闪烁 ;调用子程,实现从右到左逐个点亮 ;调用子程,实现从左到右逐个熄灭 ;调用子程,实现从左到右逐个点亮 ;调用子程,实现从右到左逐个熄灭 ;调用子程,实现从两边到中间点亮 ;调用子程,实现从两边到中间熄灭 ;调用子程,实现从中间到两边点亮 ;调用子程,实现从中间到两边熄灭 ;全亮,延时;全灭,延时 ;从右到左依次点亮 ;初值a=feh,点亮第1个 ;末值a=07fh ;从左到右依次点亮 ;末值a=7fh作为初值 ;led间隔闪烁 ;初值a=0aah 从右到左逐个点亮

mov a,#0feh ;初值a=0feh lon1: mov led,a acall delay clr c rlc a

djnz r2,lon1 ret roff: mov r2,#8 roff1: mov led,a acall delay setb c rrc a

djnz r2,roff1 ret ron: mov r2,#8 mov a,#7fh ron1: mov led,a acall delay clr c rrc a

djnz r2,ron1 ret loff: mov r2,#8 loff1: mov led,a acall delay setb c rlc a

djnz r2,loff1 ret smon: mov r2,#4 mov a,#0ffh smon1: clr c rrc a mov b,a anl b,#0f0h rlc a rlc a anl a,#0fh orl a,b mov led,a acall delay djnz r2,smon1 ret smoff: mov r2,#4 smoff1: setb c ; rrc a mov b,a anl b,#0f0h

;末值a=00h,全亮 ;从左到右逐个熄灭 ;末值a=00h作为初值 ;从左到右逐个点亮 ;初值a=7fh,点亮第8个 ;末值a=00h,全亮 ;从右到左逐个熄灭 ;末值a=00h作为初值 ;两边到中间点亮 ;初值a=0ffh ;末值a=00h,全亮 ;两边到中间熄灭

末值a=00h作为初值

rlc a rlc a anl a,#0fh orl a,b mov led,a acall delay djnz r2,smoff1 ret mson: mov r2,#4 ;中间到两边点亮 mov a,#0e7h ;初值a=0e7h,点亮两边两个 mov led,a acall delay mson1: rrc a mov b,a anl b,#0fh rlc a rlc a anl a,#0f0h orl a,b mov led,a acall delay djnz r2,mson1 ret msoff: mov r2,#4 mov a,#18h mov led,a acall delay msoff1: rrc a mov b,a anl b,#0fh rlc a rlc a anl a,#0f0h orl a,b mov led,a acall delay djnz r2,msoff1 ret delay: mov r3,#250 del3: mov r4,#250 del2: mov r5,#4 del1: nop nop

djnz r5,del1 djnz r4,del2 djnz r3,del3 ret End

中间到两边熄灭 初值a=18h,点亮中间两个延时1s ;; ;

(4)子程序列表

lm rm ss lon roff ron loff smon smoff mson

实现从右到左依次点亮 实现从左到右依次点亮 实现间隔闪烁

实现从右到左逐个点亮 实现从左到右逐个熄灭 实现从左到右逐个点亮 实现从右到左逐个熄灭 实现从两边到中间点亮 实现从两边到中间熄灭 实现从中间到两边点亮

(6)调试结果描述;

(1):调试过程:

通过debug单步运行来调试程序,同时利用DEBUG中的断点来进行有效的调试,提高了调试程序的能力,从而来发现问题,解决问题。 (2)通过在protues软件上模拟仿真后,把能实现功能的程序输到硬件上从而来调试硬件的功能是否能够实现。

(3)调试结果是在protues上仿真的程序都能够得以实现其功能。

(7)出现问题及其解决

由于刚开始不太懂的程序中某些指令的运用所设计的程序不能够达到想要的效果,后来在老师的指导下对程序进行了改正。 程序编写常有小错误,导致应用不了,经过仔细排查错误来处,并解决使其正确,比如:打错字、符号格式错误,这些都应该注意

(8)心得体会

通过本次实验,在模仿别人的程序设计的基础上懂得了一些基本指令的使用跟编写程序的一些技巧,为以后学习单片机打下基础。

本文来源:https://www.bwwdw.com/article/sjm8.html

Top