《单片机课程设计说明书.docx》由会员分享,可在线阅读,更多相关《单片机课程设计说明书.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机课程设计说明书 任务书电脑时钟(带定时启闹功能) 一、课程设计题目: 电脑时钟的设计与制作 二、课程设计要求: 要求设计制作的电脑时钟具有以下功能: 1.自动计时,由6位LED显示器显示时、分和秒; 2.具备校准功能,可以直接由0-9数字键设置当前时间; 3.具备定时启闹功能。 三、设计任务概述: 通过设计一个电脑时钟,掌握Protel 设计单片机应用系统硬件线路图的方法,掌握使用Dais集成开发环境开发单片机应用系统控制程序的基本步骤和方法。 任务涉及的知识面包括MCS-51汇编程序语言、MCS-51 单片机I/O 应用、中断与定时器应用、人机接口应用技术等。 四、工作计划及安排: 布
2、置任务、分析任务、学习汇编语言、单片机的功能程序设计(3 天) 方案设计、使用Protel 设计和绘制电脑时钟的硬件原理图(2 天) 电脑时钟控制程序设计和调试(4 天) 撰写实习报告(1 天) 五、考核及成绩评定方式: 设计结果占40 %;实习报告占40;平时抽查(含半小时抽查):20; 课程程设计的成绩可为优秀、良好、中等、及格、不及格五个等级; 考勤:迟到扣5 分/次,旷课扣10 分/次 设计说明书目录 0、前言 单片机的应用介绍 1、课程设计的目的和要求 1.1课程设计的目的 1.2课程设计的基本要求 2、总体设计 2.1、总体方案 2.1.1、计时方案 2.1.2、键盘/显示方案 2
3、.2、硬件总体设计 2.2.1、系统组成方案 2.2.2、扩展单元编址 2.2.3、键盘、显示功能的定义 2.3、软件总体设计 2.3.1、存储单元的分配、标志位的定义 2.3.2、主程序框图及清单(带有注释) 3、硬件设计 本系统所选用的各种芯片的功能、引脚、相应的命令控制字格式等。 4、软件设计 本系统的主要子程序、中断服务程序的框图及程序清单(带有注释) 5、总结 课程设计的收获、体会以及对本教学环节的意见和建议 6、参考文献 7、系统原理图 A3图纸绘制 摘要:用8051单片机CPU及接口电路设计电压检测报警系统并实现。包括企划,设计,运行.调试等过程。用到8051,8255两种芯片。
4、 前言 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 由于单片机有许多优点,因此其应用领域之广,几乎到了无孔不入的地步。单片机应用的主要领域有: 1)智能化家用电器:各种家用电器普遍采用单片机智能化
5、控制代替传统的电子线路控制,升级换代,提高档次。如洗衣机、空调、电视机、录像机、微波炉、电冰箱、电饭煲以及各种视听设备等。 2)办公自动化设备:现代办公室使用的大量通信和办公设备多数嵌入了单片机。如打印机、复印机、传真机、绘图机、考勤机、电话以及通用计算机中的键盘译码、磁盘驱动等。 3)商业营销设备:在商业营销系统中已广泛使用的电子称、收款机、条形码阅读器、IC卡刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统、冷冻保险系统等都采用了单片机控制。 4)工业自动化控制:工业自动化控制是最早采用单片机控制的领域之一。如各种测控系统、过程控制、机电一体化、PLC等。在化工、建筑、
6、冶金等各种工业领域都要用到单片机控制。 5)智能化仪表:采用单片机的智能化仪表大大提升了仪表的档次,强化了功能。如数据处理和存储、故障诊断、联网集控等。 6)智能化通信产品:最突出的是手机,当然手机内的芯片属专用型单片机。 7)汽车电子产品:现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器(黑匣子)等都离不开单片机。 8)航空航天系统和国防军事、尖端武器等领域:单片机的应用更是不言而喻。 单片机应用的意义不仅在于它的广阔范围及所带来的经济效益。更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。以前采用硬件电路实现的大部分控制功能,正在用单
7、片机通过软件方法来实现。以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。这种以软件取代硬件并能提高系统性能的控制技术称为微控技术。随着单片机应用的推广,微控制技术将不断发展完善。 1. 课程设计的目的和要求 1.1 课程设计的目的 通过课程设计让我们把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发我们的学习的热情。 用8051单片机CPU及接口电路设计并实现显示时间的电脑时钟。 1.2 课程设计的基本要求 1.自动计时,由6位LED显示器显示时、分和秒; 2.具备校准功能,可以直接由0-9数字键设置当
8、前时间; 3.具备定时启闹功能。 2总体设计 2.1、总体方案 2.1.1、计时方案 利用MCS-51单片机内部的定时器/计数器进行中短定时,配合软件延时实现时,分,秒的计时。 2.1.2、键盘/显示方案 采用动态显示模型,如图1所示。 图-1动态显示模型 2.2、硬件总体设计 2.2.1、系统组成方案 电路的核心是8051单片机,系统配备6位LED显示和4X3键盘,采用8255做为键盘/显示接口电路,利用8255的A口作为6位LED显示的选口,B口作为段选口,C口的低3位为键盘输入口,对应0-2 行,A口同时用作键盘的列扫描口。由于采用共阴极数码管,A口输出低电平选中相应的位,而B口输出高电
9、平点亮相应的段,P1.0接蜂鸣器,低电平驱动蜂鸣器鸣叫。 2.2.2、扩展单元编址 8255的地址分配如下: 控制寄存器:8000H,定义为PORT ; A口:8001H,定义为PORTA; B口:8002H,定义为PORTB; C口:8003H,定义为PORTC; 2.2.3、键盘、显示功能的定义 时钟显示: 6位LED从左到右依次显示时,分,秒,采用24h计时. 键盘功能: 0-9数字键(健号为00H-09H),C/R键(时间设置/启动计时键,键号为0AH)和ALM键(闹钟设置/启闹/停闹键,键号位0BH).) (1)时间显示上电后系统自动进入时钟显示,从00:00:00开始计时,此时可以
10、设置 当前时间。 (2)时间调整按下C/R键,系统停止计时,进入时间设定状态,系统保持原有显示, 等待键入当前时间。按下0-9数字键可以顺序设置时,分,秒,并在相应的LED上显示 设置值,设置完毕后系统将从设定后的时间开始计时显示。 (3)闹钟设置按下ALM键,系统继续计时,显示00:00:00,进入闹钟设定状态,等 待键入启闹时间。按下0-9数字键可以顺序进行相应的时间设置,并在相应的LED上显 示设置值,设置完毕后系统启动定时启闹功能,并恢复时间显示。定时时间到,蜂鸣 器鸣叫,直至重新按下ALM键停闹,并取消闹钟设置。 2.3、软件总体设计 软件设计分为下面功能模块。 (1)主程序初始化与
11、键盘键控。 (2)计时定时器0中断服务子程序,完成刷新计时缓冲区功能。 (3)时间设置与闹钟设置由键盘输入设置当前时间与定时启闹时间。 (4)显示完成6位动态显示。 (5)键盘扫描判断是否有键按下,若有则求取键号。 定时比较判断启闹时间到否,如到则启动蜂鸣器鸣叫。 (6)其他辅助功能子程序。 主程序模块MAIN,流程图如图-3示。 计时程序模块CLOCK,流程图如图-4示。 定时器0每隔100ms溢出中断一次,则循环中断10次延时时间为1s,重复60次为1min,分计时60次为1h,小时计时24次则时间重新回到00:00:00。 设系统使用6MHz晶振,定时器0工作在方式1的定时器初值为3CB
12、0H,即TH0=3CH,TL0=OB0H。 时间设置程序和闹钟定时程序模块MODIFY,流程图如-5所示。 将键盘输入的6位时间值合并为3位压缩BCD码(时,分,秒),送入计时 缓冲区和闹钟值寄存区,做为当前计时起始时间或闹钟定时时间,模块入口微计时缓冲区或闹钟值寄存区的首地址。 如图-6示,键盘设置子程序KEYIN的功能是将键入的6位时间值送入键盘设置缓冲区,用合字子程序COMB将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区。若键盘输入的小时值大于23,分和秒值大于59,则不合法,将取消本次设置,清零重新开始计时。 键盘扫描程序模块YSCAN,流程图如-
13、7示。 判断是否有键按下,无键按下则循环等待,有键按下则求取键号后返回。 图-3主程序流程图图-4 计时流程图 图-5时间设置程序和闹钟定时流程图图-7键盘扫描程序流程图 图-6键盘设置子程序流程图图-9定时比较程序流程图显示程序模块DISPLAY,流程图如-8示。 将显示缓冲区的6位BCD码用动态扫描方式显示。首先将3B计时缓冲区中时,分,和秒压缩BCD码拆分为6BBCD码,由拆字子程序SEPA来实现。当按下时间或闹钟设置键后,在6位设置完 成之前,应显示键入的数据而不显示当前时间。为此系统设置一个计时显示允许标志位F0,在时间/脑钟设置期间F0=1,不调用拆字程序SEPA。 图-8显示程序
14、流程图 定时比较程序模块ALARM,流程图图-9示。 将当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的值)比较,二者完全相同时,启动蜂鸣器鸣叫,并置位闹钟标志位,重新按下ALM键停闹,并清零脑钟标志。 拆字程序的功能是将3B计时缓冲区中时,分和秒压缩BCD码拆分为6BBCD码并刷新显示缓冲区;合字程序的功能是将键盘设置缓冲区中6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区,同时检测时间值的合法性。 2.3.1、存储单元的分配、标志位的定义 定时器0按照方式1工作,片内RAM及标志位的分配与定义见图2所示 2.3.2、主程序框图及清单(带有注释) *主程序MAIN
15、* ORG 0000H AJMP MAIN ORG 000BH AJMP CLOCK ORG 0030H PORT EQU 8000H PORTA EQU 8001H PORTB EQU 8002H PORTC EQU 8003H DISP0 EQU 30H DISP1 EQU 31H DISP2 EQU 32H DISP3 EQU 33H DISP4 EQU 34H DISP5 EQU 35H HOUR EQU 3CH MIN EQU 3DH SEC EQU 3EH MSEC EQU 3FH AHOUR EQU 40H AMIN EQU 41H ASEC EQU 42H F1 BIT PSW
16、.1 MAIN: MOV SP, #50H ;设置堆栈区 MOVX DPTR, #PORT MOV A, #03H MOVX DPTR,A ;8155初始话 CLR F1 ;清零闹钟标志位 CLR F0 ;允许计时显示 MOV AHOUR, #0FFH MOV AMIN, #0FFH MOV ASEC, #0FFH MOV R7, #10H MOV R0, #DISP0 CLR A LOOP: MOV R0, A INC R0 DJNZ R7, LOOP ;设置初值 MOV TMOD, #01H MOV TL0, #0B0H MOV TH0, #3CH ;定时器0初始化 SETB TR0 ;启
17、动定时器 SETB EA SETB ET0 ;开中断 BRGIN: ACALL ALARM ;调用定时比较 AACALL KEYSCAN ;调用键盘扫描 CJNE A, #0AH, NEXT1 ;是CLR/RST键否 CLR TR0 ;是则暂时停止计时 MOV R1, #HOUR ;地址指针向计时缓冲区首地址 AJMP MOD NEXT1: CJNE A, #0BH ,BEGIN ;是ALARM键否 JB F1, NEXT2 ;闹钟正在闹响否 MOV R1, #AHOUR ;地址指针指向闹钟值寄存区首地址 MOD: SETB F0 ;置位时间设置/闹钟定时标志,禁止显示计时时间 ACALL M
18、ODIFY ;调用时间设置/闹钟定时程序 SETB TR0 ;重新开始计时 CLR F0 ;清零时间设置/闹钟定时标志,恢复显示计时时间 AJMP BEGIN NEXT2: SETB P1.0 ;闹钟正在闹响,停止 CLR F1 ;清零闹钟标志 AJMP BEGIN *时间设置/闹钟定时模块MODIFY* MODIFY : ACALL KEYIN ;调用键盘设置子程序 ACALL COMB ;调用合字子程序 RET 3. 硬件设计 本系统所选用的各种芯片的功能、引脚、相应的命令控制字格式等。 3.1 MCS-51 芯片介绍:MCS-51系列单片机是美国Intel 公司开发的8位单片机,又可以分
19、为多个子系列。MCS-51 系列单片机共有40条引脚,包括32条I/O 接口引 脚、4条控制引脚、2条电源引脚、2条时钟引脚。 引脚说明: P0.0P0.7:P0口8位口线,第一功能作为通用I/O 接口,第二功能作为存储器扩展时的地址/数据复用口。 P1.0P1.7:P1口8位口线,通用I/O 接口无第二功能。 P2.0P2.7:P2口8位口线,第一功能作为通用I/O 接口,第二功能作为存储器扩展时传送高8位地址。 P3.0P3.7:P3口8位口线,第一功能作为通用I/O 接口,第二功能作为为单片机的控制信号。 ALE/ PROG :地址锁存允许/编程脉冲输入信号线(输出信号) PSEN :片
20、外程序存储器开发信号引脚(输出信号) EA/Vpp :片外程序存储器使用信号引脚/编程电源输入引 脚 RST/VPD :复位/备用电源引脚 3.2 8255A P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST RXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1 V SS 芯片说明:8255A是Intel公司生产的可编程输入输出接口芯片,它具 有3个8位的并行I/O口,具有三种工作方式,可通过程序改变其功能, 因而使用灵活,通用性强,可作为单片机与多种外围设备连接时的中 间接口电路
21、。8255有三种基本工作方式,三种工作方式由工作方式 控制字决定,方式控制字由CPU通过输入/输出指令来提供.三个端口 中PC口被分为两个部分,上半部分随PA口称为A组,下半部分随PB 口称为B组.其中PA口可工作与方式0、1和2,而PB口只能工作 在方式0和1。8255共有40个引脚,采用双列直插式封装,各引脚功 能如下: D0-D7:三态双向数据线,与单片机数据总线连接,用来传送数据信 息。 CS:片选信号线,低电平有效,表示芯片被选中。 RD:读出信号线,低电平有效,控制数据的读出。 WR:写入信号线,低电平有效,控制数据的写入。 Vcc:+5V电源。 PA0-PA7:A口输入/输出线。
22、 PB0-PB7:B口输入/输出线。 PC0-PC7:C口输入/输出线。 RESET:复位信号线。 A1、A0:地址线,用来选择8255内部端口。 GND:地线。 4.软件设计 5. 本系统的主要子程序、中断服务程序的框图及程序清单(带有注释) *键盘设置子程序KEYIN* * KEYIN:PUSH PSW PUSH ACC SETB RS1 ;保护现场 MOV R0,#DISPO ;R0指向显示缓冲区首地址 MOV R7,#06H ;设置键盘输入次数 L1:CLR RS1 CJNE A,#0AH,L2 ;键入数合法性检测(是否大于9) L2:JNC L1 ;大于9,重新键入 MOV R0,A
23、 ;键号送入显示缓冲区 INC R0 DJNZ R7,L1 ;6位时间输入完否?未完继续,否则返回 POP ACC POP PSW CLR RS1 ;恢复现场 RET *键盘扫描子程序KEYSCAN* KEYSCAN:ACALL TEST ;调判按键是否按下子程序TEST JNZ REMOV ;有键按下调消抖延时 ACALL DISPLY ACALL ALARM AJMP KEYSCAN ;无键按下继续判是否按键 REMOV:ACALL DISPLAY ;调用显示子程序延时消抖 ACALL TEST ;再判是否有键按下 JNZ LIST ;有键按下转逐列扫描 ACALL DISPLAY ACA
24、LL ALARM AJMP KEYSCAN ;无键按下继续判断是否按键 LIST:MOV R2,#0FEH ;首列扫描字送R2 MOV R3,#00H ;首列键号送R3 LINE0:MOV DPTR,#PORAT ;DPTR指针指向8155的A口 MOV A,R2 ;首列扫描字送R2 MOVX DPTR,A ;首列扫描字送8155的A口 MOV DPTR,#PORTC ;DPTR指针指向8155的C口 MOVX A,DPTR ;读入C口的行状态 JB ACC.0,LINE1 ;第0行键入无按下转第1行 MOV A,#00H ;第0行有键按下,行首键号送A AJMP TRYK ;求键号 NEXT
25、:INC R3 ;扫描下一列 MOV A,R2 ;列扫描字送A JNB ACC.3,EXIT ;4列扫描完,重新进行下一轮扫描 RL A ;4列未扫描完,扫描字左移扫描下一列 MOV R2,A ;扫描字送A AJMP LINE0 ;转向扫描下一列 EXIT:AJMP KEYSCAN ;等待下一次按键 TRYK:ADD A,R3 ;按公式计算码,求得键号 PUSH ACC ;键号入栈保护 LETK:ACALL TEST ;等待按键释放 JNZ LETK ;按键未释放,继续等待 POP ACC ;按键释放,键号出栈 RET ;键盘扫描结束,返回 TEST:MOV DPTR,#PORTA ;DPTR指向指针向8155的A口MOV A,#00H MOVX DPTR,A ;全扫描字00H送8155的A口 MOV DPTR,#PORTC ;DPTR指向指针8155的C口 MOVX A,DPTR ;读入C口行状态 CPL A ;A取反,以高位电平表示有按键 ANL A,#07H ;屏蔽高5位 RET
限制150内