电气及自动化课程设计报告
题目:基于单片机的跑马灯课程设计
课程:单片机原理及其应用
学生姓名:刘昊杰
学生学号: 1414050319 年级: 2014级 专业:电气工程及其自动化 班级: 3班 指导教师:缪玉桂
机械与电气工程学院制
2016年11月
目录
1 设计的任务与要求 . ................................................... 1 1.1 课程设计的任务 . ................................................... 1 1.2课程设计的要求 .................................................... 1 2 芯片分析和设计概述 . ................................................. 2 2.1 AT89C51芯片分析 .................................................. 2 3 设计概述 . ........................................................... 5 4 硬件电路设计 . ....................................................... 6 5 程序部分设计 . ....................................................... 7 6 实验总结 . .......................................................... 12 7 参考文献 . .......................................................... 12
基于单片机的跑马灯课程设计
学生:刘昊杰 指导教师:缪玉桂
机械与电气工程学院电气工程及其自动化专业
1 设计的任务与要求 1.1 课程设计的任务
(1)掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 (2)通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。 (3)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 (4)与模拟电子技术,数字电子技术等课程相结合,进一步熟悉和掌握单片机的结构及工作原理,为以后所学的后续课程打下良好的基础。
(5)通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
1.2课程设计的要求
该设计使用AT 89C 51芯片作为控制芯片,利用P 1口连接8个发光二极管,通过I /O 的值控制“跑马灯”的亮灭, 以达到显示效果。开始时所有灯全亮,按下按键S 时开始跑马灯,再按下按键S 时停止,再按下S 时继续,并要求有多种亮暗组合。
2 芯片分析和设计概述 2.1 AT89C 51芯片分析
ATMEL 的AT 89S 51是一种高效微控制器,将多功能8位CPU 和闪烁存储器组合在单个芯片中,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT 89C 51的芯片引脚图如下:
图2.1 AT 89C 51引脚图
各引脚的说明和功能分析如下: VCC :供电电压。 GND :接地。
P 0口:P 0口为一个8位漏级开路双向I /O 口,每脚可吸收8TTL 门电流。当P 1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH 编程时,P 0 口作为原码输入口,当FIASH 进行校验时,P 0输出原码,此时P 0外部必须被拉高。
P 1口:P 1口是一个内部提供上拉电阻的8位双向I /O 口,P 1
口缓冲器能接收输出
4TTL 门电流。P 1口管脚写入1后,被内部上拉为高,可用作输入,P 1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P 1口作为第八位地址接收。
P 2口:P 2口为一个内部上拉电阻的8位双向I /O 口,P 2口缓冲器可接收,输出4个TTL 门电流,当P 2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P 2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P 2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P 2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P 2口输出其特殊功能寄存器的内容。P 2口在FLASH 编程和校验时接收高八位地址信号和控制信号。
P 3口:P 3口管脚是8个带内部上拉电阻的双向I /O 口,可接收输出4个TTL 门电流。当P 3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P 3口将输出电流(ILL )这是由于上拉的缘故。
RST :复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET 引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC 指向0000H ,P 0-P 3输出口全部为高电平,堆栈指钟写入07H ,其它专用寄存器被清“0”。RESET 由高电平下降为低电平后,系统即从0000H 地址开始执行程序。然而,初始复位不改变RAM (包括工作寄存器R 0-R 7)的状态,
8051的初始态(4-2-2)
ALE /PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE 脉冲。如想禁止ALE 的输出可在SFR 8EH 地址上置0。此时, ALE 只有在执行MOVX ,MOVC 指令是ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE 禁止,置位无效。
PSEN :外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。
EA /VPP :当/EA 保持低电平时,则在此期间外部程序存储器(0000H -FFFFH ),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET ;当/EA 端保持高电平时,此间内部程序存储器。在FLASH 编程期间,此引脚也用于施加12V 编程电源(VPP )。
XTAL 1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL 2:来自反向振荡器的输出。
振荡器特性:XTAL 1和XTAL 2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL 2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
芯片擦除:整个PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE 管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT 89C 51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU 停止工作。但RAM ,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM 的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
3 设计概述
本程序设计意在展示跑马灯的色彩样式及“跑马”变换效果,如果将跑马灯做大,会有很高的观赏价值。通过对一些相关书籍资料的查阅及网上各种作品和代码的浏览,对各种实现代码的比较和优化,总结出本程序,以较优秀的代码实现各种可控的“跑马灯”功能。
硬件系统部分包括显示部分、按键控制部分和控制芯片。 系统框图如下 图3.1 系统框图
本设计使用89C 2051芯片作为控制芯片,利用P 1口连接8个发光二极管,通过P 3接口连接按键S 作控制开关的输入,控制开关连接INTO 中断,通关按键触发中断响应控制“跑马灯”的亮灭,以达到显示效果。开始时所有灯全亮,按下按键S 时开始跑马灯,再按下按键S 时停止,再按下S 时继续,并设计多种亮暗组合。
硬件电路连接图如下:
图4.1 硬件电路连接图
程序设计思路:开始时跑马灯全亮,接着读取按键状态,当按键没有闭合时,一直在此查询按键状态;当有按键真正闭合后,开始读程序存储器,调出I /O 值送给P 1口,实习一次LED 状态改变。然后再检查按键状态,若无闭合,继续读程序存储器;否则,在此循环,直到按键再次按下才读程序存储器。
主程序的流程图如下:
图5.1 主程序流程图
主程序源代码如下: S EQU P3.2 ORG 0000H LJMP START ORG 0030H
START :MOV P1,#00H ;初始化P 1口,LED 全亮 CLR 00H ;清标志位00H X 2:JB S, X 1
LCALL DEL10 ;延时10MS 的消抖 X 1:JBS,X 2
JNBS ,$ ;等待按键松开 MOV A,#00H
LOOP :JB 00H , X 3 ;判断00H 位 MOVR 2, A MOV DPTR,#TAB MOVC A,@A +DPTR INC R2
MOV P1, A
LCALL DELAY ;延时125MS MOV A, R 2
CJNE R2,#85,X 3 ;判断读程存是否为最后一列 MOV P1,#00H ;初始化P 1口 MOV A,#00H
X 3:JB S,LOOP ;查询按键状态 LCALL DEL10
JBS , X 3
JNB S,$
CPL 00H
LJMPLOOP
;******************************
; 延时125ms
;******************************
DELAY :MOV R5,#5
DL :MOVR 4,#50
DL 2:MOV R3,#250
DL 1:DJNZ R3, DL 1
DJNZ R4, DL 2
DJNZ R5, DL
NOP
RET
;******************************
; 延时10ms
;******************************
DEL 10:MOV 7FH ,#42
DEL 10MS :MOV 7EH ,#119
DJNZ 7EH ,$
DJNZ 7FH , DEL 10MS
RET
TAB :DB 00000000b
DB 11111111b
DB 00000000b
DB 00000000b
DB 00000000b
DB 11111111b
DB 00000000b
DB 11111111b
DB 11111110B
DB 11111101B
DB 11111011B
DB 11110111B
DB 11101111B
DB 11011111B
DB 10111111B
DB 01111111B
DB 10111111B
DB 11011111B
DB 11101111B
DB 11110111B
DB 11111011B
DB 11111101B
DB 11111110B
DB 11111111B
DB 11111100B
DB 11110011B
DB 11001111B
DB 00111111B
DB 11001111B
DB 11110011B
DB 11111100B
DB 11111111B
DB 00001111B
DB 00001111B
DB 11110000B
DB 00001111B
DB 00001111B
DB 11110000B
DB 00000000B
DB 11100000B
DB 01110000B
DB 00111000B
DB 00011100B
DB 00001110B
DB 00000111B
DB 01111110B
DB 10111101B
DB 11011011B
DB 11100111B
DB 11011011B
DB 10111101B
DB 01111110B
DB 11111110B
DB 11111100B
DB 11111000B
DB 11110000B
DB 11100000B
DB 11000000B
DB 10000000B
DB 00000000B
DB 10000000B
DB 11100000B
DB 11110000B
DB 11111000B
DB 11111100B
DB 11111110B
DB 11111111B
END
6 实验总结
单片机是一门应用性和实践性非常强的学科,必须要多动手,多做实验。在本次实验过程中,我们从元器件的焊接开始,逐步完成对单片机端口的输入、输出编程控制。总体来说,如何进行正确的软件编程并完成仿真模拟运行是本次实验的重点也是难点,花费时间和精力也最多。
7 参考文献
1. 姚福安,电子电路设计与实践,山东科学技术出版社,2001年10月
2. 涂时亮,单片机软件设计技术,重庆科技文献出版社,1987
3. 张毅刚,新编MCS51实用汇编程序设计,哈尔滨工业大学出版社,2003
4. 康华光,电子技术基础,高教出版社,2003
5. 胡汉才,单片机原理及接口技术,清华大学出版社,1996
电气及自动化课程设计报告
题目:基于单片机的跑马灯课程设计
课程:单片机原理及其应用
学生姓名:刘昊杰
学生学号: 1414050319 年级: 2014级 专业:电气工程及其自动化 班级: 3班 指导教师:缪玉桂
机械与电气工程学院制
2016年11月
目录
1 设计的任务与要求 . ................................................... 1 1.1 课程设计的任务 . ................................................... 1 1.2课程设计的要求 .................................................... 1 2 芯片分析和设计概述 . ................................................. 2 2.1 AT89C51芯片分析 .................................................. 2 3 设计概述 . ........................................................... 5 4 硬件电路设计 . ....................................................... 6 5 程序部分设计 . ....................................................... 7 6 实验总结 . .......................................................... 12 7 参考文献 . .......................................................... 12
基于单片机的跑马灯课程设计
学生:刘昊杰 指导教师:缪玉桂
机械与电气工程学院电气工程及其自动化专业
1 设计的任务与要求 1.1 课程设计的任务
(1)掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 (2)通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。 (3)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 (4)与模拟电子技术,数字电子技术等课程相结合,进一步熟悉和掌握单片机的结构及工作原理,为以后所学的后续课程打下良好的基础。
(5)通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
1.2课程设计的要求
该设计使用AT 89C 51芯片作为控制芯片,利用P 1口连接8个发光二极管,通过I /O 的值控制“跑马灯”的亮灭, 以达到显示效果。开始时所有灯全亮,按下按键S 时开始跑马灯,再按下按键S 时停止,再按下S 时继续,并要求有多种亮暗组合。
2 芯片分析和设计概述 2.1 AT89C 51芯片分析
ATMEL 的AT 89S 51是一种高效微控制器,将多功能8位CPU 和闪烁存储器组合在单个芯片中,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT 89C 51的芯片引脚图如下:
图2.1 AT 89C 51引脚图
各引脚的说明和功能分析如下: VCC :供电电压。 GND :接地。
P 0口:P 0口为一个8位漏级开路双向I /O 口,每脚可吸收8TTL 门电流。当P 1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH 编程时,P 0 口作为原码输入口,当FIASH 进行校验时,P 0输出原码,此时P 0外部必须被拉高。
P 1口:P 1口是一个内部提供上拉电阻的8位双向I /O 口,P 1
口缓冲器能接收输出
4TTL 门电流。P 1口管脚写入1后,被内部上拉为高,可用作输入,P 1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P 1口作为第八位地址接收。
P 2口:P 2口为一个内部上拉电阻的8位双向I /O 口,P 2口缓冲器可接收,输出4个TTL 门电流,当P 2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P 2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P 2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P 2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P 2口输出其特殊功能寄存器的内容。P 2口在FLASH 编程和校验时接收高八位地址信号和控制信号。
P 3口:P 3口管脚是8个带内部上拉电阻的双向I /O 口,可接收输出4个TTL 门电流。当P 3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P 3口将输出电流(ILL )这是由于上拉的缘故。
RST :复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET 引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC 指向0000H ,P 0-P 3输出口全部为高电平,堆栈指钟写入07H ,其它专用寄存器被清“0”。RESET 由高电平下降为低电平后,系统即从0000H 地址开始执行程序。然而,初始复位不改变RAM (包括工作寄存器R 0-R 7)的状态,
8051的初始态(4-2-2)
ALE /PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE 脉冲。如想禁止ALE 的输出可在SFR 8EH 地址上置0。此时, ALE 只有在执行MOVX ,MOVC 指令是ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE 禁止,置位无效。
PSEN :外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。
EA /VPP :当/EA 保持低电平时,则在此期间外部程序存储器(0000H -FFFFH ),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET ;当/EA 端保持高电平时,此间内部程序存储器。在FLASH 编程期间,此引脚也用于施加12V 编程电源(VPP )。
XTAL 1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL 2:来自反向振荡器的输出。
振荡器特性:XTAL 1和XTAL 2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL 2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
芯片擦除:整个PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE 管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT 89C 51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU 停止工作。但RAM ,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM 的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
3 设计概述
本程序设计意在展示跑马灯的色彩样式及“跑马”变换效果,如果将跑马灯做大,会有很高的观赏价值。通过对一些相关书籍资料的查阅及网上各种作品和代码的浏览,对各种实现代码的比较和优化,总结出本程序,以较优秀的代码实现各种可控的“跑马灯”功能。
硬件系统部分包括显示部分、按键控制部分和控制芯片。 系统框图如下 图3.1 系统框图
本设计使用89C 2051芯片作为控制芯片,利用P 1口连接8个发光二极管,通过P 3接口连接按键S 作控制开关的输入,控制开关连接INTO 中断,通关按键触发中断响应控制“跑马灯”的亮灭,以达到显示效果。开始时所有灯全亮,按下按键S 时开始跑马灯,再按下按键S 时停止,再按下S 时继续,并设计多种亮暗组合。
硬件电路连接图如下:
图4.1 硬件电路连接图
程序设计思路:开始时跑马灯全亮,接着读取按键状态,当按键没有闭合时,一直在此查询按键状态;当有按键真正闭合后,开始读程序存储器,调出I /O 值送给P 1口,实习一次LED 状态改变。然后再检查按键状态,若无闭合,继续读程序存储器;否则,在此循环,直到按键再次按下才读程序存储器。
主程序的流程图如下:
图5.1 主程序流程图
主程序源代码如下: S EQU P3.2 ORG 0000H LJMP START ORG 0030H
START :MOV P1,#00H ;初始化P 1口,LED 全亮 CLR 00H ;清标志位00H X 2:JB S, X 1
LCALL DEL10 ;延时10MS 的消抖 X 1:JBS,X 2
JNBS ,$ ;等待按键松开 MOV A,#00H
LOOP :JB 00H , X 3 ;判断00H 位 MOVR 2, A MOV DPTR,#TAB MOVC A,@A +DPTR INC R2
MOV P1, A
LCALL DELAY ;延时125MS MOV A, R 2
CJNE R2,#85,X 3 ;判断读程存是否为最后一列 MOV P1,#00H ;初始化P 1口 MOV A,#00H
X 3:JB S,LOOP ;查询按键状态 LCALL DEL10
JBS , X 3
JNB S,$
CPL 00H
LJMPLOOP
;******************************
; 延时125ms
;******************************
DELAY :MOV R5,#5
DL :MOVR 4,#50
DL 2:MOV R3,#250
DL 1:DJNZ R3, DL 1
DJNZ R4, DL 2
DJNZ R5, DL
NOP
RET
;******************************
; 延时10ms
;******************************
DEL 10:MOV 7FH ,#42
DEL 10MS :MOV 7EH ,#119
DJNZ 7EH ,$
DJNZ 7FH , DEL 10MS
RET
TAB :DB 00000000b
DB 11111111b
DB 00000000b
DB 00000000b
DB 00000000b
DB 11111111b
DB 00000000b
DB 11111111b
DB 11111110B
DB 11111101B
DB 11111011B
DB 11110111B
DB 11101111B
DB 11011111B
DB 10111111B
DB 01111111B
DB 10111111B
DB 11011111B
DB 11101111B
DB 11110111B
DB 11111011B
DB 11111101B
DB 11111110B
DB 11111111B
DB 11111100B
DB 11110011B
DB 11001111B
DB 00111111B
DB 11001111B
DB 11110011B
DB 11111100B
DB 11111111B
DB 00001111B
DB 00001111B
DB 11110000B
DB 00001111B
DB 00001111B
DB 11110000B
DB 00000000B
DB 11100000B
DB 01110000B
DB 00111000B
DB 00011100B
DB 00001110B
DB 00000111B
DB 01111110B
DB 10111101B
DB 11011011B
DB 11100111B
DB 11011011B
DB 10111101B
DB 01111110B
DB 11111110B
DB 11111100B
DB 11111000B
DB 11110000B
DB 11100000B
DB 11000000B
DB 10000000B
DB 00000000B
DB 10000000B
DB 11100000B
DB 11110000B
DB 11111000B
DB 11111100B
DB 11111110B
DB 11111111B
END
6 实验总结
单片机是一门应用性和实践性非常强的学科,必须要多动手,多做实验。在本次实验过程中,我们从元器件的焊接开始,逐步完成对单片机端口的输入、输出编程控制。总体来说,如何进行正确的软件编程并完成仿真模拟运行是本次实验的重点也是难点,花费时间和精力也最多。
7 参考文献
1. 姚福安,电子电路设计与实践,山东科学技术出版社,2001年10月
2. 涂时亮,单片机软件设计技术,重庆科技文献出版社,1987
3. 张毅刚,新编MCS51实用汇编程序设计,哈尔滨工业大学出版社,2003
4. 康华光,电子技术基础,高教出版社,2003
5. 胡汉才,单片机原理及接口技术,清华大学出版社,1996