多功能跑马灯设计

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

.3
3.1 系统概述 ,,,,,,,,,,,,,,,,,,,,,,,,,,
.3
3.2 单 元电路 设计与 分析 ,, ,,,,
, ,,,,,
,,,
, ,,,,,
ห้องสมุดไป่ตู้
4
3.3 电路的安装与调试 , , ,, , ,,,,,
,,,,,
,,,,,,
,7
4 心得体会及建议 ,,,,,,,,,,,,,,,,,,,,,,,,,
1 设计要求
(1). 1、使用 16 个 LED,用这 16 个发光二极管以不同的模式循环点亮; (2)、三个功能键, K1 模式键, 通过按键调整显示结果, 要求有九种模式; K2 加速键; K3 减速键; (3)、九种模式通过一个共阴型数码管显示出来,九个模式分别显示为 0~ 8。
2 设计的作用、目的
课程设计报告
(2009—2010 年度 第 二 学期)
题 目: 院 系: 姓 名: 学 号: 专 业: 指导老师:
多功能跑马灯设计 物电学院 黄凯 061234109
电子信息工程 方天红
2009 年 5 月 12 日
一、设计任务及要求
设计任务: 设计一个具有多种显示结果的跑马灯。
要 求: 1、使用 16 个 LED显示; 2、三个功能键 K1、 K2、K3, K1 为模式键,选择显示九种跑马状态。 K2 为跑马灯加速键。 K3 为跑马灯减速键; 3、九种模式通过一个共阴型数码管显示,九个模式分别为 0~ 8。
}
void LEDShow(uint LEDStatus) {
LED1_8 = ~(LEDStatus&0x00FF); LED9_16 = ~((LEDStatus>>8)&0x00FF); }
void Timer1(void) interrupt 3 //T1 interrupt service routine {
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F}; ”注释掉,
//



uchar
code
LEDDisplayCode[]
=
{0x40,0x79,0x2B,0x30,0x19,0x12,0x02,0x78,0x00}; ”恢复就行了。
#include <REG52.H>
通过发光二极管的动态闪亮,显示非常炫目的效果,如拖尾灯,以及各种休闲娱 乐场所用的动态灯光显示,通过此次课程设计,可以加深对 51 单片机的应用、 C51编 程和 protues 软件操作的能力。了解 51 单片机的外围引脚,以及各个端口的功能,还 可以通过对走马灯的程序编写让我们对程序的执行方式和特点有一个初步的认识,同 时掌握 C51软件与 protues 联机调试程序,对进一步学习单片机打下坚实基础。
4
图二 AT89S52 Pin Configurations 3. 显示部分:显示部分用 16 个发光二极管分别接在 P0 和 P2 口,通过程序控制 P0 和 P2 的 16 个端口按照一定的方式依次为低电平以点亮相应端口的 LED。LED 阵列如图三:
图三 LED 显示阵列 4. 模式显示部分:模式即跑马的方式,共九种。相应方式由数码管显示出来,每 当模式按钮按下时,相应的模式加一 ,数码管显示相应模式。 共阴数码管结构如图四:
7
4.1 心得体会 ,,,,,,,,,,,,,,,,,,,,,,,,,,
7
4.2 建议 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,
8
5 附录 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
8
6 参考文献 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,
9
2
多功能走马灯设计报告
2009 年 5 月 7 日
二、指导教师评语
三、成 绩
指导教师签名: 年月日
年月 日
1
目录
1 设计要求 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,
3
2 设计的作用、目的 ,,,,,,,,,,,,,,,,,,,,,,,,
3
3 设计的具体实现 …………………………………………………………………
a 各段代码
b
实物外观
c
实际电路
图四 共阴数码管结构
5. 单片机部分:该部分主要涉及功能的实现方式,即程序编写。程序要实现的功
能包括读键盘, 通过对读入键盘的值控制 LED 点亮方式和数码管显示。 键盘有三
个按键 K1、 K2、 K3,K1 控制 LED 点亮模式, K2 、K3 键控制跑马灯速度, K2
7
4.2 建议 希望老师多我们讲一些单片机的研究方向,平时也多给我们出一些小设计课题,
我觉得像这样自己做一个设计对理论学习是一个很好的总结,当我们有不懂的东西的 时候也可以得到老师的指点,这样才能够更全面的认识和学好单片机。
5 附录
实验器材表单
实物图如图六:
电路图如图七:
图六 跑马灯实物图
8
图七 跑马灯电路图
K1,就
执行下一个跑马;如果是 K2,就执行跑马加速;如果是 K3,就执行跑马减速。采
用置标志位的方法。即在主程序中设定两个标志位,一个跑马模式标志位,一个
跑马速度标志位。不断的对这三个标志进行查询:如果是跑马模式标志为状态
0,
就执行右向跑马;如果是状态 1,就执行左向跑马灯,依次类推。跑马速度标志
//若两次值相同,无键按下,返回 0 值
return 0x00;
if(!(check1&0x01)) key|=0x01;
if(!(check1&0x02)) key|=0x02;
if(!(check1&0x04)) key|=0x04;
return key;
//key1 键被按下 //key2 键被按下 //key3 键被按下 //返回键值
系统框图如图一:
3
LED 显示阵列
12M 晶振
MCU(AT89S51)
复位 电路
7段共阴数码管
键盘
图一 系统框图 3.2 单元电路设计与分析 1. 主控芯片 AT89S52
AT89S52是一个低功耗, 高性能 CMOS8 位单片机,片内含 4k Bytes ISP(In-system programmable) 的可反复擦写 1000 次的 Flash 只读程序存储器,器件采用 ATMEL公司 的高密度、非易失性存储技术制造,兼容标准 MCS-51指令系统及 80C51引脚结构,芯 片内集成了通用 8 位中央处理器和 ISP Flash 存储单元,功能强大的微型计算机的 AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 2. AT89S52 性能简介
uint i,j; for(i=0;i<num;i++)
for(j=0;j<125;j++); //1ms 延时 }
void Display(uchar Value)
//数码管驱动函数
{
_7SEG = LEDDisplayCode[Value];
}
uchar KeyScan(void)
//键盘读入函数
{
uchar check1,check2,key = 0x00;
check1 = KEYBOARD&0x07;
//第一次读键盘值
if(check1==0x07)
return 0x00;
Delay1ms(10);
10
check2 = KEYBOARD&0x07;
//第二次读键盘值
if(check2==check1)
#define LED1_8 P0
//左 8 个 LED ,起始 P0.0 对应 LED1 ,依次对应
#define LED9_16 P2
//右 8 个 LED ,起始 P2.0 对应 LED9,依次对应
#define _7SEG P1
//7 段数码管
#define KEYBOARD P3 //键盘
此外, AT89S52设计和配置了振荡频率可为 0Hz 并可通过软件设置省电模式。空 闲模式下, CPU暂停工作,而 RAM定时计数器,串行口,外中断系统可继续工作,掉 电模式冻结振荡器而保存 RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
AT89S52 PDIP Pin Configurations 如图二:
4 心得体会及建议
4.1 心得体会 通过此次课程设计, 不仅初步掌握了 51 单片机的一些基本功能应用, 还学会了使
用 keil 和 protues两个软件。知道了怎么用 keil 新建工程文件、编写调试程序、生成.HEX 文件;怎么用 protues软件画图,特别是总线的画法,怎么仿真等。
我会以此为起点,进一步学习和使用单片机,为将来工作打基础。 感谢我的 51 单片机启蒙老师方天红老师的教诲。
5
加速, K3 减速。不论 K1 被按下多少次, LED 九种点亮模式是循环的, K2 、K3
键控制速度分别有上限和下限,多按无效。
程序设计思路 : 主程序中默认执行左右流水灯 , 在中断服务程序中,首先读取按键
状态,然后延时 10ms,再次读取按键状态。把两次获得的按键状态比较,如果不
同,就表示是抖动,退出中断;否则,就去判断是哪个按键按下。如果是
默认值为 10,对应延时值为 200ms。而在中断服务程序中,只需要进行如下工作:
去抖动,键盘识别,改变标志位。
程序流程图如图五:
6
图五 程序流程图 3.3 电路的安装与调试
用 keil 将程序编写好之后,检查程序有无错误。有错误就改正,直到没有错误, 最后生成. HEX文件,再用 peoteus 画好硬件电路图,将单片机指向刚生成的. HEX文 件并进行仿真调试,在调试过程当中通过调试的结果完善程序。一切OK之后,下面 就进行最后阶段,即在面包板上搭电路,然后用烧写器将. HEX 文件下载到 AT89S52 单片机中。调试电路,带着笑容欣赏胜利的成果。
3 设计的具体实现
3.1 系统概述 本课程设计的设计要求是设计一个有多种功能的走马灯,要求有多种不同的显示
方式,加速功能和减速功能,这里的加速减速还有显示方式都是由单片机内部的程序 控制,在这里我将 16 个发光二极管分别接在 P0 和 P2口,通过程序控制这两个端口的 电平高低,将 16 个发光二极管的正极接电源,负极接 P0和 P2口,即发 P0 和 P2 口的 相应端口为高电平时,发光二极管的两端都为高电平,所以发光二极管不亮,当发光 二极管的相应端口为低电平时就能被点亮。再通过程序循环的让各个端口以不同的方 式点亮来达到走马的效果,并且当中要有一定的延时,延时时间小于人眼视觉暂留时 间,否则人眼看上去每个灯都是亮的也就没有跑马效果。
源程序如下:
//程序说明
//在本程序中,默认使用 51 单片机的 P0、P2 两个端口作为 16 个跑马灯的驱动端口
//P1 端口作为数码管驱动端口, P3 端口的 0、1、2 脚接按键。若要修改端口只需在
//宏定义中修改就行了。另外本程序默认使用 7 段共阴极数码管,若需要使用共阳极
// 数 码 管 只 需 将 “ uchar code LEDDisplayCode[] =
AT89S52具有如下特点: 40 个引脚, 4k Bytes Flash 片内程序存储器, 128 bytes 的随机存取数据存储器( RAM),32 个外部双向输入 / 输出( I/O )口, 5 个中断优先级 2 层中断嵌套中断, 2 个 16 位可编程定时计数器 ,2 个全双工串行通信口, 看门狗(WD)T 电路,片内时钟振荡器。
#define uchar unsigned char
#define uint unsigned int
uint
code
9
SpeedCode[]={1,3,5,7,10,14,18,23,27,32,40,50,65,80,100,120,140,170,200,240,280,320,36 0,400,500,600,700,800,900,1000};/速/ 度码 uchar code LEDDisplayCode[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F};// 七 段共阴极数码管 0 到 8 字码 //uchar code LEDDisplayCode[] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00};// 七 段共阳极数码管 0 到 8 字码 uchar mode; uint count,systemSpeed,speedNum,index; bit direction,flag; void Delay1ms(uint num) //num ms 延时函数 {
相关文档
最新文档