




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计作业书1 .设计目的:本设计包括确定控制任务、整体系统设计、硬件系统设计、软件程序设计等,以使学生掌握与单片机控制相关的设计思想和设计方法。为学生今后从事单片机控制系统的开发打下基础。学习proteus仿真软件,实现电路仿真。2 .设计内容及要求(包括原始数据、技术参数、条件、设计要求等):本课程的基本设计是使学生充分掌握单片机控制系统设计的基本理论,熟悉单片机的编程方法,使用89C52系列单片机和六位数码管进行显示时分秒,以24小时计时模式运行,并能点提醒(短哔声,次数代表小时上的小时),使用钥匙开关实现时间和分钟的调整,秒表/时钟功能转换、省电(关闭显示)、定时设置提醒(蜂鸣器)等
2、功能。3 .设计任务和工作量要求(包括课程设计计算说明(论文) 、图纸、实物样品等):1 .根据课题要求的指标,通过查阅相关资料,确定系统设计方案,设计其硬件电路图。2 .画出电路原理图,分析主要模块的功能以及它们之间的数据传输和控制关系。3. 用Proteus软件绘制并仿真硬件电路图。4. 软件设计包括流程图、汇编语言或C语言编译软件、调试。课程设计作业书4 .主要参考:1.韩方。 MCS-51/96系列单片机原理与应用(修订版)。航空航天大学。 1994 2.潮清。单片机原理与接口技术(第3版)。航空航天大学。 2005年5 .设计成果表格及要求:一、硬件电路图2. 软件流程图和程序清单3
3、. 撰写课程设计报告。6 .工作计划及进展:年6月2日至6月5日,查找资料,确定方案6月6日- 6月8日,设计硬件电路,绘制电路原理图6月9日- 6月11日,软件设计调试6月12日至6月13日,撰写课程设计报告、答辩或成绩评估负责人审核意见:签名:年月日目录 TOC o 1-3 h z u HYPERLINK l _Toc390549324 1简介 PAGEREF _Toc390549324 h 1 HYPERLINK l _Toc390549325 1.1设计任务及要求 PAGEREF _Toc390549325 h 1 HYPERLINK l _Toc390549326 1.2实用价值和理
4、论意义 PAGEREF _Toc390549326 h 1 HYPERLINK l _Toc390549327 2设计思路和流程 PAGEREF _Toc390549327 h 2 HYPERLINK l _Toc390549328 2.1整体设计思路 PAGEREF _Toc390549328 h 2 HYPERLINK l _Toc390549329 2.2硬件设计 PAGEREF _Toc390549329 h 2 HYPERLINK l _Toc390549330 2.3软件设计 PAGEREF _Toc390549330 h 6 HYPERLINK l _Toc390549331 3
5、调试结果与分析 PAGEREF _Toc390549331 h 9 HYPERLINK l _Toc390549332 3.1仿真调试 PAGEREF _Toc390549332 h 9 HYPERLINK l _Toc390549333 3.2硬件调试 PAGEREF _Toc390549333 h 9 HYPERLINK l _Toc390549334 4结论 PAGEREF _Toc390549334 h 10 HYPERLINK l _Toc390549335 附录A:单片机时钟图 PAGEREF _Toc390549335 h 11 HYPERLINK l _Toc390549336
6、 附录B :单片机程序源代码 PAGEREF _Toc390549336 h 12 HYPERLINK l _Toc390549337 附录C : PCB图 PAGEREF _Toc390549337 h 36 HYPERLINK l _Toc390549338 参考文献 PAGEREF _Toc390549338 h 371简介1.1设计任务及要求设计基于89C52系列单片机控制的时钟,实现以下功能:1.1.1实时显示单片机控制六位数码管显示时分秒,以24小时计时方式运行。1.1.2准时报告单片机控制蜂鸣器在整点上短时间鸣叫,次数代表整点时间。1.1.3时间调整使用钥匙开关可以进行时分调整。
7、1.1.4秒表功能秒表/时钟功能可以使用钥匙开关进行切换。1.1.5节能模式使用按键开关可以实现正常操作/节能模式(显示关闭)转换。1.1.6闹钟功能使用钥匙开关设置闹铃时间和闹铃切换方式。1.2实用价值和理论意义1.2.1实用价值数字时钟可长时间连续、可靠、稳定运行;同时还具有体积小、功耗低、携带方便、使用方便等特点。同时,由于数字集成电路的发展和石英晶体振荡器的广泛应用,数字时钟的精度远远超过老式时钟。钟表的数字化给人们的生产生活带来了极大的便利,极大地扩展了钟表原有的计时功能。数字时钟是利用数字电路实现“时、分、秒”数字显示的计时装置。电子钟广泛应用于个人家庭、车站、码头、办公室等各个角
8、落,已成为人们日常生活中不可缺少的必需品。1.2.2理论意义通过本课程的设计,您可以掌握单片机控制系统设计的基本理论和单片机的编程方法。熟悉单片机控制的设计思路和设计方法。2设计思路和过程2.1整体设计思路单片机时钟的运行流程如图 2-1 所示。根据流程图,机器人分为几个部分进行设计。图 2-1单片机时钟操作流程图2.2硬件设计2.2.1微控制器最小系统根据设计要求,选用STC89C52RC单片机。 STC89C52是STC公司生产的一款低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash存储器。 STC89C52采用经典的MCS-51内核,但做了很多改进,使芯片具有传统51单
9、片机所不具备的功能。 STC89C52 在单芯片上具有智能 8 位 CPU 和系统内可编程闪存,可为许多嵌入式控制应用系统提供高度灵活和超高效的解决方案。具有以下标准功能:8K字节Flash、512字节RAM、32位I/O线、 HYPERLINK :/baike.baidu /view/1313309.htm t _blank 看门狗定时器、4KB EEPROM、MAX810复位电路、3个16位 HYPERLINK :/baike.baidu /view/281961.htm t _blank 定时器/计数器、4个外部中断、一个7向量4级中断结构(兼容传统的51向量2级中断结构),全双工 HY
10、PERLINK :/baike.baidu /view/1060187.htm t _blank 串口。此外,STC89C52 可以降低到 0Hz 静态逻辑操作,并支持两种软件可选的省电模式。在空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串行端口和中断继续工作。在掉电保护模式下,RAM容量被保存,振荡器被冻结,单片机的所有工作都停止,直到下一次中断或硬件复位。最高工作频率35MHz,6T/12T可选。STC89C52RC单片机的最小系统如图2-2所示,包括电源、晶振、单片机、复位电路和上拉电阻。图 2-2微控制器最小系统2.2.2按键电路设计STC89C52RC单片机有两个外部
11、中断输入端口,外部中断0和外部中断1分别对应单片机的P3.2端口和P3.3端口。本系统的设计思路是在按键按下时触发MCU中断,进行实时处理。由于使用了8个按键,所以单片机只有两个外部中断输入口,电路中使用了74LS21芯片。 74LS21 是一个四输入双与门。芯片、真值表如表2-1所示,按键电路如图2-3所示。当一个按钮被按下时,MCU触发中断,然后MCU扫描I/O口来判断哪个按钮被按下。相应地处理。表2-1 74LS21真值表输入输出是A B C D呼呼呼大号LXXX大号XXXXX大号XXLX大号XXXL大号,图 2-3按钮电路2.2.3数码管电路设计LED数码管(LED Segment D
12、isplays)是由多个发光二极管封装在一起形成“8”字形组成的器件。零件中的引线已经连接好,只需要画出它们的笔划和公共电极。数码管实际上是由7个发光管组成的8字形,加上小数点为8。这些段分别用字母a、b、c、d、e、f、g、dp表示.如图 2-4 所示。当电压施加到数码管的特定部分时,这些特定部分会亮起,形成我们眼睛看到的文字。例如,如果显示“2”,则应为 a 亮 b 亮 g 亮 e 亮 d 亮 f 不亮 c 不亮 dp 不亮。 LED数码管分为普通高亮和超高亮,也有0.5寸和1寸等不同尺寸。小型数码管的显示笔划通常由一个发光二极管组成,而大型数码管则由两个或多个发光二极管组成。一般单个发光
13、二极管的管压降在1.8V左右,电流不超过30mA。发光二极管的阳极接电源的正极,称为共阳极数码管,发光二极管的阴极接电源的负极,即为称为共阴极数码管。常用的LED数码管显示的数字和字符有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。系统采用四位八段和两位八段共阴极数码管,采用74HC573分时输出位码和段码。最大驱动能力35mA,可胜任驱动数码管。 74HC573真值表如图2-5所示。数码管电路如图2-6所示。图 2-4数码管图 2-5 74HC573 真值表图 2-6数码管电路2.2.4蜂鸣器电路设计由于蜂鸣器的工作电流一般较大,单片机的I/O口不能直接驱动,需要用放大电路
14、来驱动。一般采用三极管来放大电流。蜂鸣器电路如图 2-7 所示。图 2-7蜂鸣器电路2.2.5电源设计该系统由三节额定电压为1.5V的干电池供电。三节电池串联后,测得电压为4.9V。由于本系统的额定电压为5V,可以胜任给系统供电。2.3软件设计2.3.1单片机编程软件Keil C51是美国Keil Software公司出品的兼容51系列的单片机C语言软件开发系统。与汇编相比,C语言在功能、结构、可读性和可维护性等方面优势明显,易于学习和使用。 . Keil 提供完整的开发解决方案,包括 C 编译器、宏程序集、链接器、库管理和强大的仿真器调试器,它们通过集成开发环境 (uVision) 组合在一
15、起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用 C 语言编程,那么 Keil 几乎是你的最佳选择。即使你不使用C语言,只使用汇编语言进行编程,其易用的集成环境和强大的软件仿真调试工具也会让你事半功倍。Keil uVision4 于 2009 年 2 月发布,Keil uVision4 引入了一个灵活的窗口管理系统,使开发人员能够使用多个显示器并在任何地方提供可视表面,并完全控制窗口位置。新的用户界面更好地利用了屏幕空间,更有效地组织了多个窗口,为开发应用程序提供了一个干净、高效的环境。新版本支持更多最新的 ARM 芯片,并增加了一些其他新功能。界面如
16、图 2-8 所示。图 2-8 Keil uVision4 界面2.3.2单片机仿真软件Proteus软件是英国实验室中心电子公司(该软件中国总代理为丰标电子科技)发布的EDA工具软件。它不仅具有其他EDA工具软件的仿真功能,还可以仿真单片机和外围设备。是目前比较好的模拟单片机及外围设备的工具。虽然目前的全国推广才刚刚开始,但受到了单片机爱好者、从事单片机教学的教师、致力于单片机开发与应用的科技工作者的青睐。2.3.3单片机程序流程图STC89C52RC 微控制器有两个 16 位定时器/计数器。本系统使用定时器 0 产生第二个信号并加载初始值 15536,然后定时器溢出 50ms。每溢出 20
17、次,就会产生第二个信号。定时器中断服务函数流程图如图2-9所示。图 2-9时间算法流程图3调试结果与分析3.1仿真调试在 Proteus 中连接图 3-1 所示电路,并正确仿真并运行编译好的程序。经过仿真分析,系统实现了全部设计要求。图 3-1仿真调试图3.2 硬件调试按照图 3-1 所示电路设计制作 PCB,焊接元器件,然后将程序烧写到单片机中进行调试。经过调试,系统已经实现了所有的设计要求。系统使用指南如表 3-1 所示。表 3-1 用户指南钥匙号码功能钥匙号码功能1打开/关闭闹钟5时间增量 1/秒表开始/秒表暂停2闹铃时间/实时切换6小时减 1/秒表重置3秒表/实时切换7积分加14打开/
18、关闭节能模式8减 14结论经过两周的MCU课程设计,在自己的努力和老师的帮助下,顺利完成了设计任务MCU时钟。老师给我们提供了课程设计所需的仪器、工具和元器件,然后一步步设计:首先明确了设计任务,设计了一个单片机时钟,实现6个功能;然后,经过分析研究,提出了整体设计思路,分为模块设计、绘制原理图、绘制程序流程图、编写单片机程序、在仿真软件中进行仿真。仿真无误后,制作PCB,焊接元器件,烧写程序,再次调试。最后,系统调试成功。附录A :MCU 时钟物理图附录B :单片机程序源代码/*文件名:main.c作者:郭建新日期:2014 年 5 月 6 日说明:数字时钟的主程序,首先初始化变量,I/O口
19、,外设,然后单片机进入无条件循环,如果触发中断,则进行实时处理。历史: 1. 作者:郭建新日期:2014 年 5 月 6 日描述:2. 作者:郭建新日期:2014 年 5 月 6 日描述:*/ 开始/* 包含头文件 */#include #include #include #include #include /*主程序入口参数:无;返回值:无*/无效主要(无效)Timer_Init(); /定时器初始化键盘初始化(); /密钥初始化显示初始化(); /数码管显示初始化EN_Bell = 1; /关闭蜂鸣器while(1) /无条件循环显示_更新数据(); /数码管显示更新/*文件名:延迟.h作
20、者:郭建新日期:2014 年 5 月 6 日说明:数字时钟文件,在delay.c中声明全局函数和全局变量历史: 1. 作者:郭建新日期:2014 年 5 月 6 日描述:2. 作者:郭建新日期:2014 年 5 月 6 日描述:*/ 开始#ifndef _DELAY_H_ /作用:防止delay.h被重复引用#define _DELAY_H_/*uS延时函数*/extern void DelayUs(unsigned char t); /全局函数声明/*毫秒延迟函数*/extern void DelayMs(unsigned char t); /全局函数声明万一/ 不再/*文件名:delay.
21、c作者:郭建新日期:2014 年 5 月 6 日说明:数字时钟简易延时功能历史: 1. 作者:郭建新日期:2014 年 5 月 6 日描述:2. 作者:郭建新日期:2014 年 5 月 6 日描述:*/ 开始/* 包含头文件 */#include #include #include #include #include /*大约2uS*/void DelayUs(无符号字符 t)而(-t);/*大约1mS*/void DelayMs(unsigned char t)而(t-)延迟我们(245);延迟我们(245);/*文件名:display.h作者:郭建新日期:05/06/2014说明:数字时钟
22、文件,在display.c中声明全局函数和全局变量历史: 1. 作者:郭建新日期:2014 年 5 月 6 日描述:2. 作者:郭建新日期:2014 年 5 月 6 日描述:*/ 开始#ifndef _DISPLAY_H_ /功能:防止display.h被重复引用#define _DISPLAY_H_位 LATCH1 = P07; /数码管段锁存器位 LATCH2 = P06; /数码管位锁存器外部位 EN_Dis,Open_Alarm; /全局变量声明extern unsigned char EN_Play;/*数码管显示初始化程序*/extern void Display_Init(voi
23、d); /全局函数声明/*数码管显示更新程序*/extern void Display_Updata(void); /全局函数声明万一/ 不再/*文件名:display.c作者:郭建新日期:2014 年 5 月 6 日说明:数字时钟数码管显示程序,通过两个74HC573和两个片选信号,分时输出段码和位码。历史: 1. 作者:郭建新日期:2014 年 5 月 6 日描述:2. 作者:郭建新日期:2014 年 5 月 6 日描述:*/ 开始/* 包含头文件 */#include #include #include #include #include /* 定义常量 */无符号字符码 Table_D
24、uan10 = 0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/显示段码值09无符号字符码 Table_Wei6 = 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf;/分别对应对应的数码管亮起,即位码/*定义变量*/无符号字符 Table_Dis6 = 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00;无符号字符 j,EN_Play; /数码管位数,显示模式标志位 EN_Dis; /节能模式标志位 Open_Alarm; /闹钟开启标志/*数码管显示初始化程序入口参数:无;返
25、回值:无*/无效显示初始化(无效)j = 0;s = 0;米 = 0;h = 0;s_1 = 0;m_1 = 0;h_1 = 0;s_2 = 0;m_2 = 0;h_2 = 0;Open_Alarm = 0;EN_Dis = 1;EN_Play = 0 x00;计数钟 = 0;/*数码管段码计算程序入口参数:无;返回值:无*/void Display_Actual(void) /实时Table_Dis5 = s%10;Table_Dis4 = s/10;Table_Dis3 = m%10;Table_Dis2 = m/10;Table_Dis1 = h%10;Table_Dis0 = h/10
26、;void Display_Stopwatch(void) /秒表Table_Dis5 = s_1%10;Table_Dis4 = s_1/10;表_Dis3 = m_1%10;Table_Dis2 = m_1/10;Table_Dis1 = h_1%10;Table_Dis0 = h_1/10;void Display_Alarm(void) /闹钟Table_Dis5 = s_2%10;Table_Dis4 = s_2/10;表_Dis3 = m_2%10;Table_Dis2 = m_2/10;Table_Dis1 = h_2%10;Table_Dis0 = h_2/10;/*数码管显示
27、更新器入口参数:无;返回值:无*/无效显示更新数据(无效)如果(EN_Dis)switch(EN_Play) /显示模式选择案例 0 x00:Display_Actual();休息; /即时的案例 0 x01:Display_Stopwatch( );休息; /跑表案例 0 x02:Display_Alarm();休息; /闹钟默认值: ;休息;对于(j = 0;j 6;j+)P2 = Table_Weij; /获取位码 锁存器2=1; /位锁存器 锁存器2=0;如果(j = 1)|(j = 3)P2 = Table_DuanTable_Disj|0 x80; /获取段码别的 P2 = Tab
28、le_DuanTable_Disj; /获取段码 锁存器1=1; /段锁存器 锁存器1=0;延迟Ms(2);别的P2 = 0 xff;锁存器1 = 1; 锁存器2 = 1;/*文件名:keyboard.h作者:郭建新日期:2014 年 5 月 6 日说明:数字时钟文件,在keyboard.c中声明全局函数和全局变量历史: 1. 作者:郭建新日期:2014 年 5 月 6 日描述:2. 作者:郭建新日期:2014 年 5 月 6 日描述:*/ 开始#ifndef _KEYBOARD_H_ /功能:防止keyboard.h被重复引用#define _KEYBOARD_H_/*密钥初始化例程*/外部
29、无效键盘初始化(无效); /全局函数声明万一/ 不再/*文件名:keyboard.c作者:郭建新日期:2014 年 5 月 6 日说明:数字时钟键处理功能历史: 1. 作者:郭建新日期:2014 年 5 月 6 日描述:2. 作者:郭建新日期:2014 年 5 月 6 日描述:*/ 开始/* 包含头文件 */#include #include #include #include #include /*按键初始化程序入口参数:无;返回值:无*/无效键盘初始化(无效)EA = 1;IE0 = 0; /清除外部中断0IT0 = 1; /下降沿触发EX0 = 1; / 外部中断 0 使能IE1 = 0
30、; /清除外部中断1IT1 = 1; /下降沿触发EX1 = 1; / 外部中断 1 使能无效 Open_Stopwatch(无效) /秒表开始或暂停工作 ET1 = ET1; /开启定时器1中断TR1 = TR1; /允许定时器1工作TF1 = 0; /清除定时器1溢出标志无效 Res_Stopwatch(无效) /秒表重置ET1 = 0; /关闭定时器1中断TR1 = 0; / 禁止定时器 1 工作TF1 = 0; /清除定时器1溢出标志s_1 = 0;m_1 = 0;h_1 = 0;/* 外部中断 0 中断服务程序 */void Int_0(void) 中断 0延迟(15); /延迟去抖
31、动如果(EN_Play = 0 x00) /即时的开关(P1&0 xf0)案例 0 xe0:if(h 0) h-;中断; /减1案例 0 xb0:if(m 0) m-;中断; /减负1默认值: ;休息;如果(EN_Play = 0 x01) /跑表开关(P1&0 xf0)案例 0 xe0:Open_Stopwatch( );中断; /秒表开始或暂停工作案例 0 xd0:Res_Stopwatch( );中断; /秒表重置默认值: ;休息;if(EN_Play = 0 x02) /闹钟设置开关(P1&0 xf0)案例 0 xe0:if(h_2 0) h_2-;中断; /减1案例 0 xb0:if
32、(m_2 0) m_2-;中断; /减负1默认值: ;休息;IE0 = 0; /清除中断void EN_Stopwatch(void) /秒表/实时切换如果(EN_Play = 0 x01)EN_Play = 0 x00;别的EN_Play = 0 x01;无效 EN_Alarm(无效) /闹钟/实时切换如果(EN_Play = 0 x02)EN_Play = 0 x00;别的EN_Play = 0 x02;无效 Sel_Alarm(无效) /闹钟/实时切换Open_Alarm = Open_Alarm;如果(打开_警报)s_2 = 0 x01;别的s_2 = 0 x00;EN_Bell =
33、1; /关闭蜂鸣器void Int_1(void) 中断 2延迟(15); /延迟去抖动开关(P1&0 x0f)案例 0 x0e:EN_Dis = EN_Dis;中断; /开启或关闭省电模式案例 0 x0d:EN_Stopwatch( );中断; /秒表/实时切换案例 0 x0b:EN_Alarm();中断; /闹钟/实时切换案例 0 x07:Sel_Alarm();中断; /开启或关闭闹钟默认值: ;休息;IE1 = 0; /清除中断/*文件名:timer.h作者:郭建新日期:2014 年 5 月 6 日说明:数字时钟文件,在timer.c中声明全局函数和全局变量历史: 1. 作者:郭建新日
34、期:2014 年 5 月 6 日描述:2. 作者:郭建新日期:2014 年 5 月 6 日描述:*/ 开始#ifndef _TIMER_H_ /功能:防止timer.h被重复引用#define _TIMER_H_sbit EN_Bell = P35; /蜂鸣器控制端口/*定时器初始化例程*/extern void Timer_Init(void); /全局函数声明extern unsigned char s,m,h,Count_Bell; /全局变量声明外部无符号字符 s_1,m_1,h_1;外部无符号字符 s_2,m_2,h_2;万一/ 不再/*文件名:timer.c作者:郭建新日期:2014 年 5 月 6 日描述:数字时钟定时器程序,历史: 1. 作者:郭建新日期:2014 年 5 月 6 日描述:2. 作者:郭建新日期:2014 年 5 月 6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《雨滴滋润》课件
- 《华贸中心案例研究》课件
- 铁路旅客运输服务途中作业51课件
- 铁路调车综合实训取送车辆作业课件
- 中华食材文化课件
- 中专职业形象课件设计
- 大学生职业规划大赛《工商管理专业》生涯发展展示
- 版二手手机买卖合同样本
- 施工项目款项结算合同
- 2025版郑州二手房买卖合同指南
- 《安全阀培训》课件
- 四年级语文下册 第17课《记金华的双龙洞》同步训练题(含答案)(部编版)
- 国之重器:如何突破关键技术-笔记
- 学校直饮水施工方案
- 阳光心理-健康人生小学生心理健康主题班会课件
- 2024中考化学总复习必刷80题(第1-80题)(含解析)
- 人力资源管理测试题答案
- 《新青岛版(六三制)五年级下册科学检测试题(含答案)》期中检测
- DL∕T 1901-2018 水电站大坝运行安全应急预案编制导则
- 2023-2024学年贵州省黔南州八年级(下)期末数学试卷(含答案)
- 临床重点学科验收课件
评论
0/150
提交评论