您的当前位置:首页正文

at89c51单片机课程设计

2024-08-21 来源:赴品旅游


XXXX学院

课程设计报告

XX 系 x级 X专业

题目 倒计时、开关控制的应用

姓名 xxx 学号 xxxxxxx

指导教师 xxxxx

2010年x 月 x 日

- I -- I -

目 录

摘要........................................................................................................................................................ 错误!未定义书签。 1 引言 ................................................................................................................................................... 错误!未定义书签。 2 设计任务和要求 ............................................................................................................................. 错误!未定义书签。 2.1 设计方案与论证 .............................................................................................................. 错误!未定义书签。 2.2 元件介绍 ................................................................................................................................................................. 4 3

总原理图及及主要模块的流程图 ................................................................................................................................6 3.1 总原理图及元器件清单....................................................................................................................................... 6 3.2 主要流程图............................................................................................................................................................. 7 4 性能测试与分析 ...................................................................................................................................................................7 5 结论与心得 ............................................................................................................................................................................9 参考文献.....................................................................................................................................................................................9 附录(程序指令) .........................................................................................................................................................................9 致谢........................................................................................................................................................ 错误!未定义书签。

2

摘要

单片机的应用已经广泛的渗透到国民经济的各个领域,随着在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统正以前所未有的速度被单片机智能控制系统所取代,它已经成为工科大学生的必修课程之一。单片机技术含有硬﹑软两个方面的技术。硬件是以单片机为核心,再加以其他各元器件组成的电子电路的一个实体。它既有单片机的技术,又有电子类专业所必须的模拟﹑数字﹑高频电子电路的综合运用。

单片机的种类繁多,目前单片机应用系统开发工具也有不少,但同一系列单片机的开发工具或实验系列基本相同。51系列单片机时目前应用最广泛的一种8为单片机之一,它具有体积小﹑功能强﹑成本低﹑应用面广等优点。经过20多年的推广与发展,51系列单片机形成了一个规模庞大,功能齐全,资源丰富的产品群。本文设计的是基于单片机89C51的用倒计时和开关控制炫彩流水灯的一个简单设计。

关键字:LED;开关控制;AT89C51单片机,倒计时

1. 引言

学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料,当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

2. 设计任务和要求

(1)熟悉集成电路的引脚安排。

(2)设置外部操作开关,控制LED灯的流动效果。 (3)用相关仿真软件对电路进行仿真

(4)进一步熟悉常用芯片和电子器件的类型及特性

2.1设计方案和论证

我这里用单片机实现的是用倒计时的开关共同控制流水灯的流转路线。 我用了一块at89c51单片机来实现这个功能。

第一个是启动开关,启动后倒计时开始(30秒),第一种流水灯功能自动开始流动。如没按其他功能开关,30秒后自动转到下一种功能。 最后一个是关闭开关,关闭后只能按启动开关来启动。 2到4是功能开关,每个开关都是一种不同的流动方式。(30秒后自动跳转到下一个功能)

3

2.2元件介绍

AT89C51的芯片概述

AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 其工作电压在4.5-5V,一般我们选用+5V电压。外形及引脚排列如图1所示

图1:89C51的核心电路框图

 主要特性 ·与MCS-51 兼容

·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源

4

·可编程串行通道

·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路

 管脚说明 (1)电源及时钟引脚(4个) Vcc: 电源接入引脚 Vss:接地引脚

XTAL1:晶振震荡器接入的一个引脚(采用外部振荡器时,此引脚接地);

XTAL2:晶体振荡器的另一个引脚(采用外部振荡器时,此引脚作为外部振荡器信号的输入端)。

(2)控制线引脚(4个)

RST/Vpd:复位信号输入引脚/备用电源输入引脚; ALE:地址锁存允许信号输出引脚/编程脉冲输入引脚: EA:内外存储器选择引脚/片外EPROM编程电压输入引脚; PSEN:外部程序存储器选通信号输出引脚。 (3)并行I/O引脚

P0.0-P0.7:一般I/O口引脚或数据/低位地址总线复用引脚; P1.0-P1.7:一般I/O口引脚;

P2.0-P2.7:一般I/O口引脚或高位地址总线引脚; P3.0-P3.7:一般I/O口引脚或第二功能引脚

 振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

5

3. 总原理图及主要模块的流程图 3.1总原理图及元器件清单

总原理图

元件清单

元件名称 AT89C51 LED灯 电压源 排电阻(8个电阻) 74ls0 按键 4数码管显示 数值 - - - 200 - - - 数量 1 8 1 1 4 8 1

6

3.2主要流程图

4.性能测试与分析

启动模拟,启动按键没按下时,是关闭状态,如图:

7

当打开启动开关,流水灯开始按模式一运转,同时倒计时启动。

按下不同按键,启动不同模式为第一模式,然后顺序转换(每30秒换一个,下图为方式3)

模拟实验证明,程序可行。

8

5. 结论与心得

通过不停地修正源程序,改正了各种缺点,个人感觉,写程序要细心和耐心。 比如我刚刚开始是没注意到按键抖动和按下接触的时间会对运行造成影响,结果安多几次按键后显示出错,通过改正,也明白了很多有关按键的程序。

参考文献

(1) 孙玉才编著,MCS-51系列单片微型计算机及其

应用,东南大学出版社,2004.6

(2) 万光毅,严义,邢春香,单片机实验与实践教

程[M],北京航空航天大学出版社,2006.4

(3) 侯玉宝等编著,基于Proteus的51系列单片机

设计与仿真,电子工业出版社

附录 源程序

ORG 0000H LJMP MAIN ORG 000BH LJMP ZDUAN MAIN: MOV P0,#0H MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV 41H, #10 MOV 42H, #3 MOV 43H, #0 MOV 44H, #0 MOV 51H, #0

9

MOV 52H, #0 MOV 53H, #0 MOV 54H, #0 MOV 61H, #0 MOV 62H, #0 MOV 63H, #0 MOV 64H, #0 SETB EA SETB ET0 CLR EX0 CLR EX1

MOV TMOD, #01H MOV TH0, #03CH MOV TL0, #0B0H LJMP SAT SAT: MOV A,P3 JNB ACC.2, KEY LJMP SAT SAT1: MOV A,P3 JNB ACC.2, KEY RET

KEY: LCALL DLAY10 JNB ACC.2, KEY2 LJMP SAT FKEY: MOV A,P3 ANL A,#0FFH

CJNE A,#0FFH, FKEY1 RETI FKEY1:

LCALL DLAY10 ANL A,#0FFH

CJNE A,#0FFH, TKEY LJMP FKEY TKEY: MOV A, P3 JNB ACC.3, KEY3 JNB ACC.4, KEY4

10

JNB ACC.5, KEY5 JNB ACC.6, KEY6 JNB ACC.7, KEY7 RETI KEY5: LJMP KEY51 KEY6: LJMP KEY61 KEY7: LJMP KEY71 KEY2: JNB P3.2, $ CLR TR0 MOV 41H, #10 MOV 42H, #3 MOV 43H, #0 MOV 51H, #0 MOV 52H, #0 MOV 53H, #0 MOV 54H, #0 MOV 61H, #0 MOV 62H, #0 MOV 63H, #0 MOV 64H, #0 MOV TH0, #03CH MOV TL0, #0B0H SETB TR0 MOV 44H,#0 LJMP LOOP KEY3: JNB P3.3, $ CLR TR0 MOV 41H, #10 MOV 42H, #3 MOV 43H, #0 MOV 51H, #0 MOV 52H, #0 MOV 53H, #0 MOV 54H, #0 MOV 61H, #0 MOV 62H, #0

11

MOV 63H, #0 MOV 64H, #0 MOV TH0, #03CH MOV TL0, #0B0H SETB TR0 MOV 44H,#0 LJMP LOOP KEY4: JNB P3.4, $ CLR TR0 MOV 41H, #10 MOV 42H, #3 MOV 43H, #0 MOV 51H, #0 MOV 52H, #0 MOV 53H, #0 MOV 54H, #0 MOV 61H, #0 MOV 62H, #0 MOV 63H, #0 MOV 64H, #0 MOV TH0, #03CH MOV TL0, #0B0H SETB TR0 MOV 44H,#1 LJMP LOOP KEY51: JNB P3.5, $ CLR TR0 MOV 41H, #10 MOV 42H, #3 MOV 43H, #0 MOV 51H, #0 MOV 52H, #0 MOV 53H, #0 MOV 54H, #0 MOV 61H, #0 MOV 62H, #0

12

MOV 63H, #0 MOV 64H, #0 MOV TH0, #03CH MOV TL0, #0B0H SETB TR0 MOV 44H,#2 LJMP LOOP KEY61: JNB P3.6, $ CLR TR0 MOV 41H, #10 MOV 42H, #3 MOV 43H, #0 MOV 51H, #0 MOV 52H, #0 MOV 53H, #0 MOV 54H, #0 MOV 61H, #0 MOV 62H, #0 MOV 63H, #0 MOV 64H, #0 MOV TH0, #03CH MOV TL0, #0B0H SETB TR0 MOV 44H,#3 LJMP LOOP KEY71: JNB P3.7, $ MOV 41H, #10 MOV 42H, #3 MOV 43H, #0 LCALL SAT1 CLR TR0 MOV P0,#0H MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH LJMP KEY7

13

RETI LOOP:

MOV P0, #0FFH ;关闭显示. MOV P2,#0FFH

MOV DPTR,#TAB ;显示子程序(XIAN) MOV A,41H MOVC A,@A+DPTR ;查表

MOV P0, A ;输出秒钟个位的显示码. CLR P2.7 ;打开个位显示 LCALL TIME;一毫秒延时

MOV P0, #0FFH ;关闭显示. MOV P2,#0FFH

MOV DPTR,#TAB ;查表 MOV A,42H MOVC A,@A+DPTR

MOV P0, A ;输出秒钟十位的显示码. CLR P2.6 ;打开十位显示 LCALL TIME

MOV P0, #0FFH ;关闭显示. MOV P2,#0FFH MOV P0, #0C0H CLR P2.5 LCALL TIME

MOV P0, #0FFH ;关闭显示. MOV P2,#0FFH MOV P0, #0C0H CLR P2.4 LCALL TIME LCALL FKEY LCALL RO LJMP LOOP

ZDUAN: PUSH PSW ;保护现场 PUSH ACC SETB RS0

MOV TL0,#0B0H ;重装定时初值 MOV TH0,#3CH

14

INC 43H ;0.05秒单元加1 MOV A, 43H

CJNE A,#20,DONE ;是否1s LJMP DU1

DU1: MOV 43H, #0 ;0.05秒单元清零 DEC 41H ; 秒钟个位减1 MOV A,41H

CJNE A, #0,DONE ;个位是否为0 LJMP DU2 DU2: MOV 41H,#10

DEC 42H ; 秒钟十位减1 MOV A,42H

CJNE A, #0, DONE ;十位是否为0 MOV 41H,#10 ;重置秒钟个位位查表码 MOV 42H,#3 ;重置秒钟十位位查表码 MOV 43H,#0 INC 44H LJMP DONE

DONE: POP ACC ;恢复现场 POP PSW

RETI ;中断返回 RO: MOV A,44H CJNE A,#1,DU3 LJMP LIU1 DU3: CJNE A,#2,DU4 LJMP LIU2 DU4: CJNE A,#3,DU5 LJMP LIU3 DU5: CJNE A,#0,DU6 LJMP LIU0 DU6: MOV 44H,#0 LJMP LIU0 LIU0:

MOV DPTR,#TAB0 MOV A,51H MOVC A,@A+DPTR

15

MOV P1, A MOV A,51H CJNE A,#8, AA MOV 51H,#0 RETI AA: INC 61H MOV A, 61H CJNE A, #40, AA1 MOV 61H, #0 INC 51H RETI AA1:RETI LIU1:

MOV DPTR,#TAB1 MOV A,52H MOVC A,@A+DPTR MOV P1, A MOV A,52H CJNE A,#8, BB MOV 52H,#0 RETI BB: INC 62H MOV A, 62H CJNE A, #40, BB1 MOV 62H, #0 INC 52H RETI BB1:RETI LIU2:

MOV DPTR,#TAB2 MOV A,53H MOVC A,@A+DPTR MOV P1, A MOV A,53H CJNE A,#8, CC MOV 53H,#0

16

RETI CC: INC 63H MOV A, 63H CJNE A, #40, CC1 MOV 63H, #0 INC 53H RETI CC1:RETI LIU3:

MOV DPTR,#TAB3 MOV A,54H MOVC A,@A+DPTR MOV P1, A MOV A,54H CJNE A,#8, DD MOV 54H,#0 RETI DD: INC 64H MOV A, 64H CJNE A, #40, DD1 MOV 64H, #0 INC 54H RETI DD1:RETI

TIME:MOV 55H,#20 ;显示延时程序,延时1ms DEL2:MOV 56H,#25 DEL1:DJNZ 56H,DEL1 DJNZ 55H,DEL2 RET

DLAY10: MOV R0, #100 DLAY1: MOV R1, #50 DLAY2: DJNZ R1,DLAY2 DJNZ R0,DLAY1 RET

DLAY50:MOV R7,#200 DEL3:MOV R6,#125

17

DEL4:DJNZ R6,DEL4 DJNZ R7,DEL3 RET

TAB: DB 00H,0C0H,0F9H,0A4H,0B0H,099H,92H,82H DB 0F8H,80H,90H

TAB0: DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH TAB1: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH TAB2: DB 7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,7EH TAB3: DB 7FH,3FH,1FH,0FH,07H,03H,01H,00H END 致谢

在这里,我非常感谢辅导我的老师,和各位为我解惑的同学。 18

因篇幅问题不能全部显示,请点此查看更多更全内容