+节日彩灯控制器课程设计论文
1 任务及
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
1.1 设计任务
1. 设计一个基于单片机的节日彩灯控制器。
2. 设计出硬件电路;
3. 设计出软件编程方法,并写出源代码;
4. 用PROTEUS进行仿真。
1.2 设计要求
1(用C语言或汇编语言编实现程序设计。
2(利用查表,中断等方式实现目的。
3(系统的各各功能模块要清楚,有序。
4(程序运行时有友好的用户界面。
2 单片机识的相关知识 2.1 单片机简介
单片机全称为单片机微型计算机(Single Chip Microsoftcomputer)。从应用
领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或
嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算
机。
2.2 单片机的发展史
1 . 4位单片机
1975年,美国德克萨斯仪器公司首次推出4位单片机TMS-1000;此后,各
个计算机公司竞相推出四位单片机。日本松下公司的MN1400系列,美国洛克威尔
公司的PPS/1系列等。四位单片机的主要应用领域有:PC机的输入装置,电池充
电器,运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器,
电子玩具,钟表,计算器,多功能电话等。
2 . 8位单片机
1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率
先推出MCS-48系列单片机。在这以后,8位单片机纷纷面市。例如,莫斯特克和
2
仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。随着集成电路
工艺水平的提高,一些高性能的8位单片机相继问世。例如,1978年摩托罗拉公司
的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。
这类单片机的寻址能力达64KB,片内ROM容量达4--8KB,片内除带有并行I\O
口外,还有串行I\O口,甚至还有A\D转化器功能。8位单片机由于功能强,被广
泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领
域。
3 . 16位单片机
1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷
面市。这一阶段的代表产品有1983年Intel公司推出的MCS-96系列,1987年Intel
推出了80C96,美国国家半导体公司推出的HPC16040,NEC公司推出的783XX
系列等。16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。
4 . 32位单片机
随着高新技术只智能机器人,光盘驱动器,激光打印机,图像与数据实时处理,
复杂实时控制,网络服务器等领域的应用与发展,20世纪80年代末推出了32位单
片机,如Motorlora公司的MC683XX系列,Intel的80960系列,以及近年来流
行的ARM系列单片机。32位单片机是单片机的发展趋势,随着技术的发展及开发
成本和产品价格的下降,将会与8位单片机并驾齐驱。
5 . 64位单片机
近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算
法密集的实时控制场合已有应用,如英国Inmos公司的Transputer T800是高性能
的64位单片机。
2.3 单片机的特点
1 . 单片机的存储器ROM和RAM时严格区分的。ROM称为程序存储器,
只存放程序,固定常数,及数据
表格
关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载
。RAM则为数据存储器,用作工作区及存放用
户数据。
2 . 采用面向控制的指令系统。为满足控制需要,单片机有更强的逻辑控制能
力,特别是单片机具有很强的位处理能力。
3 . 单片机的I/O口通常时多功能的。由于单片机芯片上引脚数目有限,为了解
决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功
能,可由指令来设置或由机器状态来区分。
3
4 . 单片机的外部扩展能力很强。在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便。
2.4 89C52单片机介绍
VCC:电源。GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作 输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,
1”时,其管脚被内部上拉电阻 拉高,且作为输出4个TTL门电流,当P2口被写“
输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器 的
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
图2.1 89C52单片机
4
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C52的一些特殊功能口,如下表所示:
口管脚 备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
) P3.3 /INT1(外部中断1
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
5
3 控制系统的硬件设计
3.1 硬件设计思想
定时器/计数器及输节日彩灯控制器是利用将单片机的CPU、RAM、ROM、
入/输出(I/O)接口电路集成在一块集成电路芯片上的特点。通过其与发光二极管
及驱动电路的连接,从而构成一个完整的硬件电路。然后通过对单片机的ROM进
行编程,实现对彩灯闪烁的控制。
3.2 电路原理
以AT-89C52单片机作为主控核心,与按键、电阻等较少的辅助硬件电路相结
合,利用软件实现对LED彩灯进行控制,材料有单片机AT89C52、多色发光二极
管LED、电阻RES。
3.3 电路原理图
图3.1 电路原理图
6
4 控制系统的软件设计
4.1 软件设计思想
通过编程改变P1口的状态,从而改变彩灯的闪烁。本程序主要可分为主程序模块,比较模块LOOP0、LOOP1、LOOP2、LOOP3、LOOP4、LOOP5和状态显示程序模块k1_light、k2_light、k3_light、k4_light延时程序模块del10ms
t1 = T×20×248;t1 = T×C3H×FFH;T为单片机的等模块。其中延时时间
机器周期。
比较模块:
loop0: cjne r0, #0ffh, loop1 ; r0不为ff, 转到loop1
ajmp main_light ; 否则执行左右流水灯
loop1: cjne r0, #01h, loop2 ; r0不为01, 转到loop2
ajmp k1_light ; 否则执行左向流水灯
loop2: cjne r0, #02h, loop3 ; r0不为02, 转到loop3
ajmp K2_light ; 否则执行右向流水灯
loop3: cjne r0, #03h, loop4 ; r0不为03, 转到loop4
ajmp k3_light ; 否则执行双亮点向中间移动
loop4: cjne r0, #04h, loop5 ; r0不为04, 转到loop5
ajmp k4_light ; 否则执行双亮点向两边移动
loop5: ajmp loop0 ; 返回重新查询和状态显示程序模状态显示程序模块:
k1_light: mov r1, a ; 左向流水灯
mov p0, a
lcall del100ms
rl a
mov r1, a
ajmp loop0
k2_light: mov r1, a ; 右向流水灯
mov p0, a
lcall del100ms
rr a
7
mov r1, a
ajmp loop0 k3_light: mov p0, #07eh ; 双亮点向中间移
lcall del100ms
mov p0, #0bdh
lcall del100ms
mov p0, #0dbh
lcall del100ms
mov p0, #0e7h
lcall del100ms
ajmp loop0 k4_light: mov p0, #0e7h ; 双亮点向两边移
lcall del100ms
mov p0, #0dbh
lcall del100ms
mov p0, #0bdh
lcall del100ms
mov p0, #07eh
lcall del100ms
ajmp loop0
8
4.2 程序流程图
图4.1 主程序流程图
9
4.3 仿真结果
图4.2 从上到下闪烁仿真图
图4.3 从下到上闪烁仿真图
10
图4.4 上下同时闪烁仿真图
5 结束语
通过这次的设计使我认识到我对单片机方面的知识太重要了,对于书本上的很多知识还不够熟悉,有很多我们需要掌握的知识还没掌握,我会在以后的学习生活中弥补我所缺少的知识。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,并且在查找资料的过程中学到了许多,同时在协作过程中增进同学间的友谊。
最后,感谢刘伟春老师对我的细心的指导,使得我的课程设计能够顺利的完成,相信这对我以后的课程设计和毕业设计将会有很大的帮助~
11
6 附录
org 0000h
ljmp start
org 0003h
ljmp ext1
org 0020h
mov r0, #0ffh ; 对r0赋值,r0为所设标志位 start:
setb ea ; 开中断
setb ex0 ; 允许外部中断0申请中断
setb it0 ; 外部中断0为跳变方式触发
mov sp, #70h ; 设置中断
loop0: cjne r0, #0ffh, loop1 ; r0不为ff, 转到loop1
ajmp main_light ; 否则执行左右流水灯 loop1: cjne r0, #01h, loop2 ; r0不为01, 转到loop2
ajmp k1_light ; 否则执行左向流水灯 loop2: cjne r0, #02h, loop3 ; r0不为02, 转到loop3
ajmp K2_light ; 否则执行右向流水灯 loop3: cjne r0, #03h, loop4 ; r0不为03, 转到loop4
ajmp k3_light ; 否则执行双亮点向中间移动 loop4: cjne r0, #04h, loop5 ; r0不为04, 转到loop5
ajmp k4_light ; 否则执行双亮点向两边移动 loop5: ajmp loop0 ; 返回重新查询
ext1: clr ea ; 关中断
push acc
push psw
mov a, p1 ; 读入键值
anl a, #0fh ; 屏蔽高四位
mov 30h, a ; 键状态存入30h
12
lcall del10ms
mov a, p1 ; 再次读入键值
anl a, #0fh
cjne a, 30h, pass ; 两次键值不同,是抖动,退出中断
ajmp k1_check ; 如果相等,进行键识别
k1_check: cjne a, #0eh, k2_check ; 不是k1, 判断是不是k2
mov r0, #01h ; 是k1, 置标志为01
ajmp pass
k2_check: cjne a, #0dh, k3_check ; 不是k2, 判断是不是k3
mov r0, #02h ; 是k2, 置标志为02
ajmp pass
k3_check: cjne a, #0bh, k4_check ; 不是k3, 判断是不是k4
mov r0, #03h ; 是k3, 置标志为03
ajmp pass
k4_check: cjne a, #07h, pass ; 不是k4, 退出中断
mov r0, #04h ; 是k4, 置标志为04
ajmp pass
pass: pop psw ; 现场恢复
pop acc
setb ea ; 开中断
reti ; 中断返回
main_light: mov r7, #08h ; 左右流水灯程序
mov r6, #06h
mov a, #0feh l_loop: mov r1, a ; r1保存现在亮点位置,做样式变换时从该处
开始
mov p0, a
13
lcall del100ms
rl a
djnz r7, l_loop
mov a, #0bfh r_loop: mov r1, a
mov p0, a
lcall del100ms
rr a
djnz r6, r_loop
ajmp loop0
k1_light: mov r1, a ; 左向流水灯
mov p0, a
lcall del100ms
rl a
mov r1, a
ajmp loop0
k2_light: mov r1, a ; 右向流水灯
mov p0, a
lcall del100ms
rr a
mov r1, a
ajmp loop0
k3_light: mov p0, #07eh ; 双亮点向中间移
lcall del100ms
mov p0, #0bdh
lcall del100ms
mov p0, #0dbh
lcall del100ms
14
mov p0, #0e7h
lcall del100ms
ajmp loop0
k4_light: mov p0, #0e7h ; 双亮点向两边移
lcall del100ms
mov p0, #0dbh
lcall del100ms
mov p0, #0bdh
lcall del100ms
mov p0, #07eh
lcall del100ms
ajmp loop0
del10ms: ; 10ms延时子程序(12M)
mov r5, #20 temp1: mov r4, #248
djnz r4, $
djnz r5, temp1
ret
del100ms: mov r3, #0c3h ;100.036ms
temp2: mov r2, #0ffh ;511us
djnz r2, $
djnz r3, temp2
ret
end
15
参考文献
[1] 谢自美(电子线路设计?实验?测试[M](武汉:华中理工大学出版社,1992. [2] 何立民(单片机应用系统设计[M](北京:北京航空航天大学出版社,1993.
:人民邮电出版社,1994. [3] 楼然笛(单片机开发[M](北京
[4] 付家才(单片机控制工程实践技术[M](北京:化学工业出版社 2004.3. [5] 李光才(单片机课程设计 实例指导[M]( 北京:北京航空航天大学出版社 2004. [6] 朱定华(单片机原理及接口技术实验[M](北京:北方交通大学出版社2002.11.
16