单片机课程设计电子表

合集下载

单片机课程设计——电子秒表

单片机课程设计——电子秒表

安徽科技学院电气与电子工程学院《单片机原理与应用设计》课程设计设计说明书题目: 秒表姓名(学号) ************************************ 专业: 电气工程及其自动化班级: 133 指导教师: ***2016 年 5 月 9 日目录摘要 (1)关键字 (1)第一章硬件的选择与设计 (1)第二章软件设计 (9)第三章调试结果 (19)参考文献 (20)秒表摘要:本次课程设计,我们组设计的是秒表。

使用AT89C51单片机设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“开始计时/时间锁定”键和一个“复位”键。

通过对键盘的扫描对时钟的走时/停止进行控制,项目采用定时器T0作为计时器,每10ms发生一次中断,每100次中断加1s。

在此期间,如“开始计时/时间锁定”按键按下,程序方将TR0置为1,从而开启中断,秒表开始计时,再按一次“开始计时/时间锁定”按键,则将TR0置0,秒表停止计时;如“复位”按键按下,程序将TR0置为0,同时将存储时间的变量清零,从而中断停止,并实现复位。

我们设计的秒表完成了准确计时,和当前时间的显示。

通过Keil uvison4进行程序软件的编译,通过proteus进行仿真,最后调试通过,完成此次课程设计。

关键字:秒表51单片机MAX7219 定时第一章硬件选择与设计1、芯片简介(1)8051单片机MCS-51是指美国Inter公司生产的一系列单片机的总称。

这一系列单片机包括8031、8051、8751、8032、8052、8752等。

其中8051是最早、最典型的产品,该系列其他单片机都是以8051为核心发展起来的,都具有8051的基本结构和软件特征。

8051单片机内部包含了作为微型计算机所必需的基本功能部件,各部件相互独立地集成在一块芯片上,其基本功能特性如下:a、8位CPU;b、32条双向可独立寻址的I/O线;c、4KB程序存储器(ROM),外部可扩充至64KB;d、12KB数据存储器(RAM),外部可扩充至64KB;e、两个16位定时/计数器;f、五个中断源;g、全双工的串行通信口;h、具有布尔运算能力。

单片机课程设计_基于单片机的数字秒表设计

单片机课程设计_基于单片机的数字秒表设计

单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。

本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。

一、设计要求1、能够实现秒表的启动、暂停、复位功能。

2、计时精度达到 001 秒。

3、能够通过数码管显示计时结果。

二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。

显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。

按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。

时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。

2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。

中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。

三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。

晶振频率选择 12MHz,为单片机提供时钟信号。

复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。

2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。

通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。

3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。

当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。

四、软件程序设计1、主程序流程系统初始化后,进入主循环。

在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。

单片机课程设计--电子秒表与闹钟的设计

单片机课程设计--电子秒表与闹钟的设计

目录摘要 (Ⅰ)1 电子秒表与闹钟系统概述 (1)1.1 课程设计基本要求 (1)1.2 系统实现功能 (1)1.3 系统应用价值展望 (2)2 仿真软件Proteus和Keil简介 (3)2.1 Proteus简介 (3)2.2 Keil简介 (3)3 系统工作原理分析 (4)3.1AT89C2051模块 (4)3.2 显示驱动模块 (6)3.3 数码管显示模块 (8)4 程序流程图设计 (9)5 Proteus仿真原理图 (12)6 课程设计体会 (14)参考文献 (15)附:源程序代码 (16)摘要随着科学技术的不断发展 , 人们对时间计量的要求越来越高。

在当今社会,电子时钟已经得到相当广泛的应用,产品多样,发展更是多元化。

本作品是以STC89C51单片机作为主控芯片,使用12MHZ的晶振,使用专用时钟日历芯片DS12C887产生时间信息,时间精确。

软件部分以C语言为主体,用1602LCD 液晶屏显示输出信息,输出信息量多,更直观、人性化。

该时钟可实现人机交互,可通过提供的键盘对其进行调整。

系统具有以下功能:年、月、日、时、分、秒显示;12小时/24小时模式切换,在12小时模式中,用AM和PM区分上午和下午;秒表功能;整点闹铃和报时功能,且闹钟可设置多组。

本次设计的电子时钟系统由单片机最小系统,1602LCD液晶屏,时钟芯片,调整按键,蜂鸣器,电源五大部分组成。

关键词:定时器中断闹钟电子时钟1 电子秒表与闹钟系统概述1.1 课程设计基本要求(1) 用并行口设计一个具有显示功能的秒表,显示准确的北京时间(时、分、秒),可用24小时制式;(2) 有时间校准功能;(3) 允许通过转换功能键转换显示时间,用定时器实现一个电子闹钟,能设定和修改定时的时间,并能到时响铃通知;(4) 所有按键需要通过串口自发自收来调校各种功能。

1.2 系统实现功能本系统是基于单片机AT89S52制作的数字电子钟。

根据实验要求,在完成实验所要求的基本功能外,扩展了几个功能。

51单片机电子时钟课程设计实验报告

51单片机电子时钟课程设计实验报告

《单片机原理与应用》课程设计总结报告题目:单片机电子时钟(带秒表)的设计设计人员:张保江江润洲学号: 13 29班级:自动化1211指导老师:阮海容目录1.题目与主要功能要求 (2)2.整体设计框图及整机概述 (3)3.各硬件单元电路的设计、参数分析及原理说明 (3)4.软件流程图和流程说明 (4)5.总结设计及调试的体会 (10)附录1.图一:系统电路原理图 (11)2.图二:系统电路 PCB (12)3.表一:元器件清单 (13)4.时钟程序源码 (14)题目:单片机电子时钟的设计与实现课程设计的目的和意义课程设计的目的与意义在于让我们将理论与实践相结合。

培养我们综合运用电子课程中的理论知识解决实际性问题的能力。

让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。

课程设计的基本任务利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。

主要功能要求最基本要求1)使用MCS-51单片机设计一个时钟。

要求具有6位LED显示、3个按键输入。

2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。

3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。

开始计时时为000000,到235959后又变成000000。

4)使用3个键分别作为小时、分、秒的调校键。

每按一次键,对应的显示值便加1。

分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。

在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。

5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。

单片机电子课程表课程设计

单片机电子课程表课程设计

单片机电子课程表课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解其内部结构和功能。

2. 培养学生运用C语言编写单片机程序的能力,实现电子课程表的功能。

3. 让学生了解并掌握电子课程表中涉及的时间管理、显示技术等相关知识。

技能目标:1. 培养学生动手实践能力,能够独立完成单片机电子课程表的硬件搭建和程序编写。

2. 培养学生解决实际问题的能力,能够根据需求调整电子课程表的功能。

3. 培养学生的团队协作能力,能够在小组合作中发挥个人优势,共同完成项目。

情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发学生的创新意识。

2. 培养学生积极进取、严谨治学的态度,树立良好的学术风气。

3. 增强学生的环保意识,培养学生珍惜资源、爱护环境的价值观。

课程性质:本课程为实践性较强的课程,以项目为导向,注重培养学生的动手能力和实际操作技能。

学生特点:学生具备一定的电子基础知识,对单片机有一定了解,但编程能力较弱。

教学要求:结合学生特点,课程设计应注重理论与实践相结合,充分调动学生的积极性,提高学生的实践能力。

教学过程中,注重启发式教学,引导学生主动探究问题,培养学生的创新思维。

同时,关注学生的个体差异,提供个性化指导,确保每位学生都能在课程中取得进步。

通过本课程的学习,使学生能够达到上述课程目标,具备一定的单片机应用能力。

二、教学内容1. 单片机基础理论:介绍单片机的内部结构、工作原理,重点讲解CPU、存储器、输入输出接口等部分的功能和相互关系。

教材章节:第一章 单片机概述,第二章 单片机硬件结构。

2. C语言编程:讲解C语言在单片机编程中的应用,包括数据类型、运算符、控制语句等基本语法知识。

教材章节:第三章 单片机C语言编程基础。

3. 单片机程序设计:以电子课程表为例,教授如何编写程序,实现时间管理、课程显示等功能。

教材章节:第四章 单片机程序设计,第五章 中断与定时器。

4. 硬件电路设计:介绍电子课程表的硬件组成,包括单片机、显示屏、按键等,讲解电路原理图的设计方法。

单片机电子跑表课程设计

单片机电子跑表课程设计

单片机电子跑表课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其编程方法。

2. 学生能掌握电子跑表的工作原理,了解各部分功能及其相互关系。

3. 学生能运用所学知识设计并实现一个简单的单片机电子跑表。

技能目标:1. 学生能够运用C语言或汇编语言进行单片机编程,实现电子跑表的基本功能。

2. 学生能够运用电路设计软件绘制电子跑表的原理图和PCB图。

3. 学生能够运用调试工具对单片机程序进行调试,解决常见问题。

情感态度价值观目标:1. 学生培养对电子制作的兴趣,激发创新意识和动手能力。

2. 学生在团队协作中,学会沟通与交流,培养合作精神。

3. 学生能够关注单片机技术在生活中的应用,认识到科技发展对生活的影响。

课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,培养学生动手能力。

学生特点:学生具备一定的电子基础知识,对单片机有一定了解,但编程和实际操作经验不足。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,培养学生解决问题的能力。

在教学过程中,关注学生的个体差异,提供个性化指导。

通过课程学习,使学生能够独立完成单片机电子跑表的设计与制作。

二、教学内容1. 单片机原理与编程基础- 单片机结构及工作原理- C语言或汇编语言基础- 单片机编程环境搭建2. 电子跑表原理与设计- 电子跑表功能需求分析- 电路设计原理及元件选择- 原理图和PCB图绘制方法3. 单片机与外围电路接口技术- 按键输入接口设计- 数码管显示接口设计- 定时器/计数器应用4. 程序设计与调试- 程序框架设计- 功能模块编写- 程序调试与优化5. 实践操作- 电子跑表组装与调试- 故障分析与排除- 课程项目展示与评价教学内容安排和进度:第一周:单片机原理与编程基础第二周:电子跑表原理与设计第三周:单片机与外围电路接口技术第四周:程序设计与调试第五周:实践操作(含课程项目展示与评价)教学内容与教材关联性:本教学内容紧密结合教材,按照教材章节逐步展开,使学生能够循序渐进地掌握单片机电子跑表的设计与制作。

单片机课程设计word

单片机课程设计word

单片机课程设计word一、课程目标知识目标:1. 让学生掌握单片机的基本原理和结构,理解其工作流程和编程方法。

2. 使学生了解单片机在现实生活中的应用,如智能家居、自动化控制等领域。

3. 帮助学生掌握与单片机相关的电子元器件的原理和使用方法。

技能目标:1. 培养学生运用C语言进行单片机编程的能力,能够独立完成简单的程序设计。

2. 提高学生动手实践能力,学会使用面包板、编程器等工具进行单片机系统的搭建和调试。

3. 培养学生团队协作和问题解决能力,能够共同完成具有一定难度的单片机项目。

情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养其主动探索、勤于思考的学习习惯。

2. 培养学生的创新意识,鼓励他们勇于尝试,将所学知识应用于实际项目中。

3. 引导学生认识到单片机技术在我国科技发展中的重要性,增强国家认同感和自豪感。

课程性质:本课程为实践性较强的学科,注重理论联系实际,强调动手能力和创新能力的培养。

学生特点:学生具备一定的电子基础和编程能力,对单片机有一定了解,但实践经验和系统设计能力不足。

教学要求:结合学生特点和课程性质,采用案例教学、任务驱动、小组合作等方法,注重理论与实践相结合,提高学生的综合运用能力。

通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程和未来职业发展打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础知识:介绍单片机的原理、结构和功能,使学生了解单片机的基本概念,对应教材第一章。

- 单片机的组成与工作原理- 单片机的性能指标和分类2. 单片机编程语言:学习C语言编程,掌握单片机程序设计方法,对应教材第二章。

- C语言基础知识- 单片机编程语法和技巧3. 单片机I/O接口技术:学习并实践单片机与外部设备的通信和控制,对应教材第三章。

- I/O接口的工作原理- 常用I/O接口编程及应用4. 单片机中断与定时器:介绍中断系统、定时器的工作原理和应用,对应教材第四章。

单片机 秒表计时器 课程设计3

单片机 秒表计时器 课程设计3

单片机课程设计报告书学院:土木工程学院班级:土木023 设计人:田春杰1设计题目:设计一个电子秒表计时器2总体设计:完成按下按扭启动,开始计时;再次按下该按扭后停止计时。

按下另一个按扭时,秒表清零的功能,计时数值最大为99分59秒99。

用LED数码管显示计时的时间,显示的时间应有百分之一秒为、十分之一秒位、秒个位、秒十位、分个位、分十位;利用单片机的外部中断,某键为低时产生中断开始计时,再一次为低时产生中断停止计时。

当来一外部脉冲时,产生中断使时间清零。

3 硬件系统设计:将P1.2口接到一按钮开关上,作为一个停止或开始计时的中断。

外部中断0的引脚INT0接一按钮开关,作为清零中断。

利用定时器0产生一个百分之一秒的计时中断。

4源程序如下:A_BIT EQU 20H ;数码管个位数存放内存位置B_BIT EQU 21H ;数码管十位数存放内存位置TEMP EQU 22H ;计数器数值存放内存位置;开机初始化MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入MOV P0,#0FFH;使显示时间数码管熄灭CLR F0CLR F1MOV DPTR,#NUMTAB ;指定查表启始地址;等待按键输入;根据按键的输入判断执行什么功能;按键1按下则执行功能1MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入MOV P0,#0FFH;使显示时间数码管熄灭START:JB P3.6,START1;循环判断开始按钮K1是否按下?ACALL DELAY10;延时10毫秒触点消抖JB P3.6,START;如果是干扰就返回JNB P3.6,$;等待按键松开LJMP GN1;按键2按下则执行功能2START1: JB P3.7,START;循环判断开始按钮K2是否按下?ACALL DELAY10;延时10毫秒触点消抖JB P3.7,START1;如果是干扰就返回JNB P3.7,$LJMP GN2;数码管显示秒表时间的程序GN1: ;先初始化S1:MOV A,#0MOV TEMP,AGOON1: MOV R2,#2JS1: MOV R3,#250TIME1: MOV A,TEMP ;将TEMP中的十六进制数转换成10进制MOV B,#10 ;10进制/10=10进制DIV ABMOV B_BIT,A ;十位在AMOV A_BIT,B ;个位在BLCALL DPLOP1;插入一段判断定时过程中是否有按键输入的程序段C1: JB P3.6,B1ACALL DELAY10;延时10毫秒消抖JB P3.6,C1JNB P3.6,$;等待按键松开CPL F0ZT1: ; MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入JB P3.6,$;循环判断开始按钮K1是否按下?ACALL DELAY10;延时10毫秒触点消抖JB P3.6,ZT1;如果是干扰就返回JNB P3.6,$;等待按键松开LCALL DPLOP1B1: JB P3.7,LOOP1ACALL DELAY10;延时10毫秒消抖JB P3.7,B1JNB P3.7,$;等待按键松开AJMP OVERLOOP1: DJNZ R3,TIME1 ;2毫秒循环执行250次,时间约0.5秒DJNZ R2,JS1 ;循环执行2次,时间为1 秒钟INC TEMP;满一秒钟对时间加1MOV A,TEMPCLR CSUBB A,#60JNZ GOON1;判断TEMP的数值是否为60?不为60循环ACALL OVERRETGN2: MOV A,#14H ; 设定倒计时的时间20SMOV TEMP,A;数码管显示倒计时时间的程序;初始化MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入MOV P0,#14H;使显示时间为设定的倒计时时间GOON2: MOV R2,#2JS2: MOV R3,#250TIME2: MOV A,TEMP ;将TEMP中的十六进制数转换成10进制MOV B,#10 ;10进制/10=10进制DIV ABMOV B_BIT,A ;十位在AMOV A_BIT,B ;个位在BMOV DPTR,#NUMTAB ;指定查表启始地址DPLOP2: MOV A,A_BIT ;取个位数MOVC A,@A+DPTR ;查个位数的7段代码MOV P0,A ;送出个位的7段代码CLR P2.5 ;开个位显示ACALL DEL Y1;显示1毫秒SETB P2.5;关闭个位显示,防止鬼影MOV A,B_BIT ;取十位数MOVC A,@A+DPTR ;查十位数的7段代码MOV P0,A ;送出十位的7段代码CLR P2.6 ;开十位显示ACALL DEL Y1;显示1毫秒SETB P2.6;关闭十位显示,防止鬼影;插入一段判断定时过程中是否有按键输入的程序段C2: JB P3.6,B2ACALL DELAY10;延时10毫秒消抖JB P3.6,C2JNB P3.6,$;等待按键松开ZT2: MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入JB P3.6,$;循环判断开始按钮K1是否按下?ACALL DELAY10;延时10毫秒触点消抖JB P3.6,ZT2;如果是干扰就返回JNB P3.6,$;等待按键松开B2: JB P3.7,LOOP2ACALL DELAY10;延时10毫秒消抖JB P3.7,B1JNB P3.7,$;等待按键松开AJMP OVERLOOP2: DJNZ R3,TIME2 ;2毫秒循环执行250次,时间约0.5秒DJNZ R2,JS2 ;循环执行2次,时间为1 秒钟DEC TEMP;满一秒钟对时间减1MOV A,TEMPJNZ GOON2;判断TEMP的数值是否为0?不为0循环ACALL OVERRET;结束定时OVER: AJMP START;退到开机初始化状态;1毫秒延时子程序DELY1: MOV R4,#2D1:MOV R5,#248DJNZ R5,$DJNZ R4,D1RET;10毫秒延时子程序DELAY10: MOV R4,#20D2:MOV R5,#248DJNZ R5,$DJNZ R4,D2RET;实验板上的两位一体的数码管0~9各数字的显示代码NUMTAB: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H DPLOP1: MOV A,A_BIT ;取个位数MOVC A,@A+DPTR ;查个位数的7段代码MOV P0,A ;送出个位的7段代码CLR P2.5 ;开个位显示ACALL DEL Y1;显示1毫秒SETB P2.5;关闭个位显示,防止鬼影MOV A,B_BIT ;取十位数MOVC A,@A+DPTR ;查十位数的7段代码MOV P0,A ;送出十位的7段代码CLR P2.6 ;开十位显示ACALL DEL Y1;显示1毫秒SETB P2.6;关闭十位显示,防止鬼影RETEND5自评分和收获体会:通过本次设计让我又一次认识到了单片机应用的广泛性,同时也看到了自己在单片机应用上的不足之处,以后还要加强学习。

单片机简易秒表课程设计

单片机简易秒表课程设计

智能家电:通过单片机控制家 电设备,实现远程控制和智能 调节
智能安防:通过单片机实现门 窗、烟雾、燃气等安全监测, 提高家居安全
智能照明:通过单片机控制灯 光亮度和色温,实现节能和舒 适
智能环境:通过单片机监测室 内温度、湿度、空气质量等,
实现智能调节和节能
智能健康:通过单片机监测人 体健康数据,实现健康预警和
控制秒表计时:通过单片机控制秒表开始、暂停、复位等操作 显示时间:单片机通过驱动LCD或LED显示屏显示时间 报警功能:单片机可以设置报警时间,当达到设定时间时发出声音或灯光报警 数据存储:单片机可以存储秒表的运行数据,方便查看和统计 接口扩展:单片机可以扩展其他功能,如无线通信、数据传输等
掌握单片机基础知识和基本操作 提高编程能力和逻辑思维能力 培养团队合作和沟通能力 提高解决问题的能力和创新能力
初始化:设置定时器、中断、显示等参 数
循环:循环读取定时器值,计算时间
判断:判断时间是否达到设定值,如果 达到则停止计时
显示:将计时结果显示在屏幕上
处理中断:处理定时器中断,更新计时 值
结束:结束程序,关闭定时器、中断等 资源
驱动程序功能:控制显示模块的显示状态 驱动程序结构:包括初始化、显示、清除等函数 驱动程序实现:通过调用单片机的I/O接口实现显示模块的控制 驱动程序优化:考虑显示模块的刷新频率和功耗,进行优化设计
优化算法:采用更高效的 算法,提高计算速度
减少延迟:优化程序结构, 减少不必要的延迟
增加缓存:增加缓存大小, 提高数据读取速度
优化硬件:选择更高性能 的硬件,提高整体性能
PART SIX
运动计时:用于 跑步、游泳等运 动项目的计时
烹饪计时:用于烹 饪过程中的计时, 如煮饭、炖汤等

单片机课程设计完整版

单片机课程设计完整版

单片机课程设计Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】湖南工业大学课程设计资料袋理学院(系、部) 2015~2016 学年第 1 学期课程名称单片机系统课程设计指导教师职称学生姓名管专业班级电子科学1 学号题目出租车计费系统成绩起止日期 2015 年 12月7日~ 2015 年 12月 19 日目录清单湖南工业大学课程设计任务书理学院(系、部)电子科学专业班级课程名称:单片机系统课程设计设计题目:出租车计费系统完成期限:自 2015 年12月7日至2015 年 12 月 19 日共 2 周指导教师(签字):年月日系(教研室)主任(签字):年月日附件三(单片机应用系统)设计说明书(题目)出租车计费系统起止日期: 2015 年 12 月 7 日至 2015 年 12 月 19日学生姓名管班级电子科学学号成绩指导教师(签字)电气与信息工程学院2015年 12 月19 日一、设计任务:1.1 外部脉冲自动计数,自动显示。

1.1.1设计一个255计数器:0-255计数,计满后自动清0,重新计数(在数码管中显示)。

1.1.2设计一个50000计数器:0-50000计数,计满后自动清0,重新计数(在数码管中显示)。

1.2 设计一个出租车计费系统:起步价为5元(2km以内),2km后,元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元)或者用lcd1602显示二、设计原理及思路1.设计一个255计数器:0-255计数,计满后自动清0,重新计数(在数码管中显示)。

这个用C语言比较简单。

首先我确定用的是外部中断0,1,外部中断0用来计数,来一个脉冲,计数器加1,直到加到255,然后清零。

外部中断1用来暂停/开始计数,来一个外部脉冲,暂停计数,再来一个脉冲,开始计数。

用138译码器数码管进行显示0到255,到了255,自动到0.2.设计一个50000计数器:0-50000计数,计满后自动清0,重新计数(在数码管中显示)。

单片机控制8位数码管显示秒表课程设计

单片机控制8位数码管显示秒表课程设计

长沙学院《单片机原理及应用》课程设计说明书题目 LED数码管显示电子秒表设计系(部) **系专业(班级) *************姓名邹部长9931学号******指导教师***起止日期 2016.12.19—2016.12.24《单片机原理及应用》课程设计任务书1系(部):**系专业:******长沙学院课程设计鉴定表目录摘要 (5)第一章概述 (6)1.1电子秒表的设计要求 (6)1.2电子秒表的电路图 (6)1.3电子秒表的设计原理及方案 (7)第二章电子秒表的程序设计 (8)2.1 程序设计流程图 (8)2.2程序设计源代码 (10)第三章程序的调试 (16)第四章设计总结 (17)参考文献 (18)摘要随着经济与社会的发展对智能化和信息化技术要求的不断提高,单片机作为智能控制的核心,逐渐渗透到社会生产和生活的各个方面。

而本文则主要阐述基于单片机设计的数码管秒表,这次设计所采用的的单片机为stc89c52单片机,数码管则是使用2个4位共阴LED数码管组成的8位。

为减少I/O口,而使用了SM74HC138 和74HCT573这2片芯片实现数码管显示8位数据。

利用单片机内部定时器实现计时功能,分别显示为:分—秒—0.01秒。

控制则是使用一键控制,可实现计时开始,计时暂停,计时清零3个功能的循环。

本次的程序设计采用C语言编写,包括显示程序,定时中断服务程序,延时程序。

最后在单片机电路板来观察工作状态。

第一章概述1.1电子秒表的设计要求○1显示要求在初始状态显示的是00—00—00,最左边的2位显示分钟,中间2位显示秒,左边2位显示十分之一秒和百分之一秒,还有个2个LED数码管只显示中间那一段,用作间隔符。

○2然后还的有一个键用来控制秒表,要求按第一下开始计时,按第二下暂停计时,按第三下清零,以此往复循环控制。

○3使用单片机T0方式实现计时0.01秒。

1.2电子秒表的电路图1.3电子秒表的设计原理及方案设计原理根据单片机本身的定时计数器实现1秒的计时。

单片机电子日历和温度表的设计课程设计

单片机电子日历和温度表的设计课程设计

电子日历和温度表的设计专业:学号:姓名:指导老师:时间:一、任务书题目2 电子日历和温度表的设计(一)设计要求(不能采用专用芯片):(1)时间显示:年、月、日(各2位)(2)日历参数的手动设置,设置参数,每次按下按键时,应伴随有蜂鸣器提示声。

(3)实现实时温度显示功能(每秒刷新一次),温度测量范围-40~+60C(4)每当月份和年份变化时,声光报警提,如长短声,音乐等。

时,声光报警提示。

(5)当温度超过38度,或低于零下-10C(6)设计一种用外部中断方式触发的显示或声音提示模式,当触发时,停止显示时间,显示或输出特定的模式(过程不小于1分钟),推出中断处理后,能够显示正确时间。

(二)扩充功能:(1)防止极性接反,电压不足时,报警提示。

(2)显示星期的功能。

(3)重要节日提示功能,声光提示(声音,LED闪烁等)。

二、摘要本设计主要分为电子日历、温度显示功能和星期显示功能三个部分,实现年月日的显示和温度的采集显示及温度报警、星期显示功能。

时间显示年月日各两位,能够手动设置日历参数,并能在月份和年份跳转以及重要日期时蜂鸣显示;温度表采集温度并每秒刷新显示。

设计时用STC89C52单片机T0以中断方式产生周期为50ms的脉冲信号,通过秒,分,时进位,实现一天,逐次累加,满该月天数进位,满12月进位一年。

用软件实现闰年的判断,并判断重要节日实现蜂鸣警报。

年月日的显示用74LS245驱动并用集成的8位数码显示管显示,温度的采集选用DS18B20温度传感器,驱动和显示和电子日历部分相同,星期的显示同电子日历。

由单片机把各个部分联系到一起,综合完成设计要求的实现。

关键字:单片机STC89C52 电子日历星期显示温度显示三、目录1. 任务书 (2)2. 正文 (5)(1) 前言 (5)(2) 方案分析 (6)原理说明 (6)设计时所用主要元器件 (6)主要硬件元件分析 (7)方案说明 (7)电子日历方案 (6)温度表方案 (12)星期显示方案 (14)(3)调试 (15)(1)功能实现过程 (15)(2)调试出现的问题及解决方法 (17)整体显示 (17)实物显示 (17)结论 (18)附录 (19)硬件原理图 (19)程序清单 (20)四、正文(一)前言电子日历和温度表的设计,主要采用51单片机74LS245,74LS138,等来实现的。

单片机课程设计(直流数字电压表)

单片机课程设计(直流数字电压表)

课程设计总结与展 望
课程设计目标:掌握单片机基础知识,学会设计直流数字电压表 课程设计内容:包括硬件设计、软件设计、调试和测试等 课程设计成果:成功设计并制作出直流数字电压表 课程设计收获:提高了单片机应用能力,增强了团队合作和沟通能力
课程设计展望:未来将继续深入学习单片机技术,提高实践能力,为未来就业做好准备
实际应用:可用于测量直流电压,广泛应用于电子、电力等领域 市场前景:随着电子技术的发展,市场需求不断增长 技术更新:需要不断更新技术,提高测量精度和稳定性 市场竞争:面临国内外竞争对手的压力,需要提高产品质量和降低成本
智能化:单片机技术在智能设备中的应用越来越广泛,未来发展方向将更加智能化。
物联网:单片机技术在物联网中的应用越来越广泛,未来发展方向将更加注重物联网技术的应用。
单片机课程设计(直 流数字电压表)
汇报人:
目录
添加目录标题
单片机课程设计概 述
硬件电路设计
软件程序设计
系统调试与测试
课程设计总结与展 望
添加章节标题
单片机课程设计概 述
掌握单片机的基本原理和编程方法 提高动手实践能力和创新能力 培养团队合作精神和解决问题的能力 为未来的学习和工作打下坚实的基础
电源测试:检查电源电压是 否稳定,是否符合要求
信号测试:检查信号输入、 输出是否正常,是否符合要 求
功能测试:检查系统功能是 否正常,是否符合设计要求
性能测试:检查系统性能是 否满足设计要求,如响应时 间、精度等
稳定性测试:检查系统在 长时间运行下的稳定性, 如温度、湿度等环境因素 对系统的影响
软件调试:通过运行程序,发现并修复程序中的错误 软件测试:通过测试程序,验证程序的功能和性能是否符合预期 测试方法:包括单元测试、集成测试、系统测试等 测试工具:可以使用自动化测试工具,如JUnit、Selenium等

单片机课程设计(模版)

单片机课程设计(模版)

单片机电源电路设计
单击此处添加标题
电源电路的作用:为单片机提供稳定的电源电压
单击此处添加标题
电源电路的组成:电源变压器、整流器、滤波器、稳压器等
单击此处添加标题
电源电路的设计原则:稳定、可靠、高效、低噪声
单击此处添加标题
电源电路的设计方法:根据单片机的工作电压和电流需求,选择合适的电源 变压器、整流器、滤波器、稳压器等,并进行合理的布局和布线。
解决方案:优化人机交互界面,提高用户体验
单片机课程设计总结与展望
单片机课程设计的收获和不足
收获:掌握了单 片机的基本原理 和编程方法
收获:提高了动 手实践能力和解 决问题的能力
不足:理论知识 掌握不够扎实, 需要加强学习
不足:实践经验 不足,需要更多 的实践机会
单片机技术的发展趋势和应用前景
发展趋势:智能化、微型化、低功耗、高可靠性 应用领域:智能家居、物联网、工业自动化、医疗设备 技术挑战:安全性、实时性、可扩展性 应用前景:广泛应用于各个领域,成为未来科技发展的重要方向
实施教学活动:按照教学计划, 开展教学活动,包括讲解、实 验、讨论等
评估教学效果:通过考试、作 业、项目等方式,评估学生的 学习效果和课程设计的效果
单片机基础知识
单片机的概念和特点
概念:单片机是一种集成电路芯片,将微处理器、存储器、输入/输出接口等集成在一起 特点:体积小、重量轻、功耗低、可靠性高、编程简单、应用广泛 应用领域:工业控制、家电、汽车电子、医疗设备、通信设备等 发展趋势:智能化、网络化、微型化、低功耗化
解决方案:优化硬件设计,选择合适的单片机型 号
问题:软件设计复杂,难以实现高效运行 解决方 案:优化软件设计,采用高效的算法和编程技巧

电子技术课程设计报告--电子秒表的设计

电子技术课程设计报告--电子秒表的设计

电子技术课程设计报告--电子秒表的设计一、设计目的本次课程设计的目的是设计一款电子秒表,实现具备暂停和复位功能的计时功能。

通过设计本次课程,我将学习到如何运用单片机实现计时功能,同时也将提高自己的电子设计能力。

二、设计原理本次设计采用AT89S52单片机作为控制芯片,通过单片机控制数码管的显示,完成对时间的计时和显示功能。

下面详细介绍如何实现设计的计时功能。

1、初始化:将计时器寄存器清零,并设置定时器为8位计时模式,同时设置时钟源为频率为12MHz的晶振。

2、启动计时:将定时器计数器初始值设置为0,同时启动计时器。

3、计时:定时器开始工作后,每过1ms,计时器的值就会加1,当计时器的值达到255时,定时器会自动清零,并触发定时溢出中断。

4、显示:将计时器的值传入程序中,经过处理后,将时间转化为时、分、秒、毫秒等信息,并通过数码管的显示完成时间的显示。

5、暂停功能:通过按下暂停键,可以停止计时器的工作,并记录下当前的计时时间。

6、复位功能:通过按下复位键,可以将计时器的值清零,并停止计时器的工作。

三、硬件设计1、主控芯片AT89S52单片机:采用AT89S52单片机作为控制核心,具有一定的处理能力和存储容量,能在实现计时功的同时,还实现一些其他的控制功能。

2、显示模块数码管:本设计采用了4位共阴数码管,能够完成对时间的显示。

3、按键模块本设计采用了两个按键,一个用于暂停功能,一个用于复位功能。

4、电源模块本设计采用了12V电源转接头,将12V电源转化为单片机和数码管所需要的5V电压。

5、其他零件晶振:采用12MHz的晶振作为单片机的时钟源。

电容:采用22pF电容和晶振配对使用,稳定时钟信号。

四、软件设计本设计采用Keil C51软件进行开发。

软件编写的主要思路如下:1、GPIO配置:定义IO口及初始化相关设置,如数码管的引脚及输出方向。

2、时钟初始化:配置外部晶振的时钟源,并初始化相应的寄存器。

3、定时器初始化:设定中断周期,选择定时器的计数模式,启动定时器,并设置中断优先级。

单片机手表课程设计

单片机手表课程设计

单片机手表课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理和功能,掌握其内部结构。

2. 学生能了解单片机在智能手表中的应用,掌握相关编程知识。

3. 学生能掌握智能手表的基本功能,如时间显示、闹钟设置等。

技能目标:1. 学生能运用所学知识,设计并实现一个具有基本功能的单片机手表。

2. 学生能通过编程,实现智能手表的时间显示、闹钟等功能。

3. 学生能运用团队协作和问题解决能力,完成课程项目。

情感态度价值观目标:1. 学生培养对单片机及智能硬件的兴趣,激发创新意识。

2. 学生通过实践,培养动手能力、逻辑思维能力和团队协作精神。

3. 学生在学习过程中,增强自信,形成积极的学习态度。

课程性质:本课程为实践性课程,结合理论知识,培养学生的动手能力和创新能力。

学生特点:学生具备一定的电子基础知识,对单片机和编程有一定了解,具备基本的动手能力。

教学要求:注重理论与实践相结合,强调学生的动手实践和团队协作,培养解决实际问题的能力。

通过课程学习,使学生能够将所学知识应用于实际项目中,提高综合素养。

二、教学内容1. 单片机基础原理:讲解单片机的内部结构、工作原理,重点介绍时钟电路、复位电路等基础组成部分。

教材章节:第一章 单片机概述2. 单片机编程基础:介绍单片机编程语言,如C语言、汇编语言等,讲解编程规范和技巧。

教材章节:第二章 单片机编程基础3. 智能手表功能设计:讲解智能手表的基本功能,如时间显示、闹钟设置、计步器等,分析其实现原理。

教材章节:第三章 单片机应用实例4. 硬件电路设计:介绍单片机手表所需硬件,如显示屏、按键、传感器等,讲解电路设计方法和注意事项。

教材章节:第四章 硬件电路设计5. 软件编程实现:根据功能需求,编写单片机程序,实现智能手表的各项功能。

教材章节:第五章 软件编程实现6. 系统调试与优化:讲解系统调试方法,分析常见问题,介绍优化措施。

教材章节:第六章 系统调试与优化7. 课程项目实践:分组进行项目实践,完成单片机手表的设计、编程、调试和优化。

单片机课程设计秒表

单片机课程设计秒表

单片机课程设计 秒表一、课程目标知识目标:1. 让学生掌握单片机的基本原理和功能,理解单片机在秒表设计中的应用。

2. 使学生了解秒表的计时原理,掌握秒表的程序设计方法。

3. 帮助学生掌握单片机I/O口的使用,定时器/计数器的工作原理及其编程方法。

技能目标:1. 培养学生运用C语言进行单片机程序设计的能力,能够编写简单的秒表程序。

2. 培养学生动手实践能力,能够独立完成单片机秒表的硬件连接和程序下载。

3. 提高学生分析问题、解决问题的能力,能够对程序进行调试和优化。

情感态度价值观目标:1. 培养学生对单片机及嵌入式系统的兴趣,激发学生学习主动性和创新精神。

2. 培养学生团队合作意识,学会在团队中分享观点、沟通协作。

3. 培养学生严谨的科学态度和良好的学习习惯,注重实践与理论相结合。

课程性质分析:本课程为单片机原理与应用课程的一部分,以实践操作为主,理论讲解为辅。

针对学生特点,注重培养学生的学习兴趣和动手能力。

学生特点分析:学生为高中二年级学生,具备一定的电子基础和编程能力,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:结合课程性质和学生特点,将课程目标分解为具体的学习成果,注重理论与实践相结合,确保学生能够掌握单片机秒表设计的相关知识和技能。

在教学过程中,关注学生的个体差异,提供个性化指导,以促进全体学生的全面发展。

二、教学内容1. 单片机基础理论:- 单片机原理与结构- 单片机的I/O口操作- 定时器/计数器原理与应用2. C语言编程基础:- 数据类型与运算符- 控制结构(循环、分支)- 函数的定义与调用3. 秒表程序设计:- 秒表的计时原理- 程序流程图设计- 编程实现秒表功能(启动、停止、复位、计次等)4. 硬件连接与调试:- 单片机与按键、显示器的连接方法- 程序下载与调试方法- 故障分析与排查技巧教学大纲安排:第一课时:单片机基础理论,介绍单片机原理、结构及I/O口操作第二课时:C语言编程基础,讲解数据类型、运算符、控制结构等第三课时:定时器/计数器原理与应用,分析秒表的计时原理第四课时:秒表程序设计,学习程序流程图设计及编程实现第五课时:硬件连接与调试,动手实践单片机秒表的硬件连接和程序下载,进行调试与优化教材章节关联:《单片机原理与应用》第三章:单片机I/O口编程《单片机原理与应用》第四章:定时器/计数器《C语言程序设计》第二章:数据类型与运算符《C语言程序设计》第三章:控制结构《C语言程序设计》第五章:函数教学内容确保科学性和系统性,结合课程目标和教学大纲,按照以上进度进行教学,使学生能够全面掌握单片机秒表设计与实现的相关知识与技能。

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

湖南工程学院应用技术学院课程设计课程名称单片机原理与应用课题名称电子表专业电气工程及其自动化班级学号姓名指导教师周向红、李晓秀、汪超、肖峰2014年5月21日湖南工程学院应用技术学院课程设计任务书课程名称单片机原理与应用课题电子表专业班级学生姓名学号指导老师周向红、李晓秀、汪超、肖峰审批任务书下达日期2014年 5 月12 日任务完成日期2014 年 5 月21 日目录第一章绪论 (1)第二章系统总体方案设计 (2)2.1 课程设计内容要求 (2)2.2 设计思路分析 (2)第三章硬件设计 (3)3.1 系统框图 (3)3.2 单片机型号的选择 (3)3.3 显示器选择 (4)3.4 时钟电路 (4)3.5 显示电路 (5)3.6 总体电路原理图 (5)第四章开发板焊接及测试.................... 错误!未定义书签。

第五章软件设计与说明. (6)5.1 软件总体框图 (6)5.2 主程序设计 (6)5.3 子程序设计 (7)5.4 跑秒程序设计框图 (7)第六章调试和使用说明 (8)使用说明 (8)第七章总结与体会 (9)参考文献 (10)附录 (10)电路图 (10)系统程序清单 (11)第一章绪论单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能。

它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。

而51系列单片机是各单片机中最为典型和最有代表性的一种。

通过本次课程设计对51单片机的学习以及应用,已经对单片机有了初步的了解和简单的应用能力。

数字电子表是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字表的精度,远远超过老式的钟表,钟表的数字化给人们生产带来了极大的方便,而且大大的拓展了钟表的报时功能。

数字表已经成为人们日常生活中的必须品,广泛应用于家庭,车站,码头,剧院,办公场所等,给我们的生活和学习,工作带来了极大的方便。

本课程设计设计了一个基于AT89C51单片机的电子表。

并且通过一个控制按键来实现时间的调节和是否进入省电模式,并且在数码管上显示相应的时间。

应用Proteus的ISIS软件实现了单片机电子表系统的设计与仿真。

此方法仿真效果真实、准确,并且节省了硬件资源。

第二章系统总体方案设计2.1 课程设计内容要求本课题要求以单片机为核心设计一个多功能电子表,具有电子时钟、时钟设置和跑表功能。

做时钟时在6位LED显示器上显示时、分、秒,做跑表时显示范围000.0秒~999.9秒,并具有时钟启动、时钟停止、跑表启动、跑表复位、时钟调整功能键。

要求焊接好开发板,在开发板上进行调试。

2.2 设计思路分析电子表的电路由多个部分组成,如控制按键的输入电路,单片机的时钟电路,复位电路,LED显示器段码驱动电路,LED显示器位码驱动电路,显示器电路和跑表时钟电路组成。

然后通过对以上电路的产生和调整设计出总的电路框图。

所以可根据上述条件作出相应的实时时钟电路总的框图。

然后开始设计内部驱动程序,按照相应的程序实现特定的功能个,之后按照程序的设计,将相应的管脚连接调试,看是否能实现预定的功能。

利用MCS-51内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。

配合软件监控实现运行,停止,调时,调分,调秒。

该方案节省硬件成本,软件设计做够灵活,且能够使人在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,能够准确走时并实现多功能。

因此,本课题采用该方案。

第三章硬件设计3.1 系统框图图3.13.2 单片机型号的选择通过对多种单片机性能的分析,最终认为89C51是最理想的电子表开发芯片。

89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。

图3.23.3 显示器选择LED显示器的选择,在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此生产厂家就生产了多种位数、尺寸、型号不同的LED显示器。

在我们的设计中,选择6位一体的时钟型LED显示器。

6位7段共阳显示器:六位是同时显示六位阿拉伯数字,而每一个数字又是七段码显示的;七段是指一个数码显示的阿拉伯数字是由七位二进制数控制的,共阳是指相应的二进制为1时不亮,为0时亮。

在实验中显示器的作用是显.示时间。

3.4 时钟电路图3.43.5 显示电路图3.53.6 总体电路原理图图3.4第五章软件设计与说明5.1 软件总体框图图5.15.2 主程序设计主程序的初始化内容:所谓初始化,是对将要用到的51系列单片机内部部件或扩展芯片进行初始工作设定。

51系列单片机复位后,设置特殊功能寄存器。

5.3 子程序设计子程序包括了:时钟暂停显示程序,时钟运行显示程序,时钟溢出入口程序,跑秒暂停及循环显示程序,跑秒运行循环显示程序等等。

代码转换程序:由于人们日常习惯使用十进制数,而计算机的键盘输入,输出以及显示都采用二进制编码的十进制数或ASCII码。

因此,在程序设计时常常要代码转换。

LED动态显示程序:采用动态扫描方式时,要使得LED显示得比较均匀和有足够的亮度,需要设置适当的扫描频率。

扫描频率在70Hz左右时,能够产生足够的图形和较好的显示效果。

5.4 跑秒程序设计框图图5.4第六章调试和使用说明本系统可以先在电脑上使用Proteus仿真软件进行电路的仿真进行仿真,编程使用keil、调试工具并生成可执行文件加载到单片机中,在Proteus 中点击运行,查看运行结果是否与预期要求相符,如果仿真成功,便可以到实验板上进行实物实验。

使用说明按钮开关图如下图6.1仿真按下开始后时钟开始计时时间设定点击PAUSE/START后进入设定模式,点击SEC/MIN RESET TIMER进行设置,点击一下增加一。

完成以后点击PAUSE/START,即可保存并进行下一项设置,依次下去便可以设置秒、分和时。

设置秒设置分设置时设置时间后,程序继续将在设置时间的基础上继续运行跑秒功能第七章总结与体会在这一次课程设计当中,我进行了多方面的学习和实践,虽然当中遇到了许多的困难,但最终还是把它们一一地克服了。

学习就是这样的,要做好每一件事,都有很多的因素影响制约着我们,我们必须快速准确的适应这样的环境,通过改变自己来更快的融入社会。

有了这份经历,我觉得自己少了一分浮躁,多了一份沉稳。

我深深地感到要有科学的思维方法和学习方法是极其重要的。

刚刚拿到课程设计的题目时真不知道从哪里开始动手,课题名称里的芯片根本就没听说过。

通过上网查找资料,弄清楚了它的功能,才真正开始了设计。

但这个东西包括了几个部分,所以一定要把握好它的整体设计思路,在其框架之下,对各部分的单元电路进行分析和设计,最后经过电路的修改,参数的确定,将各个部分连接起来,形成总的电路图。

书到用时方恨少,在这次课程设计过程中遇到了很多大大小小的难题,这时才发现在知识的海洋里自己是多么的渺小,但这也激起了我学习的热情,我进行了多方面的学习和实践,最终还是把它们都克服了。

在这次课程设计过程中我还学会了与同学交流和沟通,这样才能把自己在设计过程中学到的知识进行交流,在交流中进一步巩固自己的知识。

这次课程设计只有两个星期的时间,时间比较紧张,提高工作、学习效率是唯一的办法。

有了这份经历,更让我觉得知识海洋的广博,驱使怀着好奇之心的我进一步努力学习告诉我为了填满好奇心,无时无刻不需要学习。

每一次新的认识,总是疑问重重,不断的分析解决问题、解决问题,等到最后回想起来都是如此的简单。

能学习能提高不容易,更重要的是我学会了如何解决问题,这次课程设计让我增加了自信心,懂得的越来越多,又感觉在以后的路上明白了很多知识。

同时也感谢老师的指导和共同探讨研究问题的同学们,希望在以后的学习和工作中能够进一步提高对单片机的认识和应用能力。

参考文献1、王迎旭编.《单片机原理与应用》[M].机械工业出版社.2、楼然苗编.《51系列单片机设计实例》[M].北京航空航天大学出版社.3、黄勤编.《计算机硬件技术基础实验教程》[M].重庆大学出版社4、刘乐善编.《微型计算机接口技术及应用》[M].华中科技大学出版社.5、陈光东编.《单片微型计算机原理及接口技术》[M].华中科技大学出版社.6、周向红编《51系列单片机应用与实践教程》[M].北航出版社附录电路图系统程序清单程序分为三个部分Main.c、TaskProc.c、Timer.c第一部分Main.c#include <reg52.h>#include "cext.h"#include "timer.h"void main( void ){ // initializes internal 8052 timer.// Clock Frequency = 12 MHzinit_timer(12e6);// enables interruptsEA = 1;// loop for everwhile (1);}第二部分TaskProc.c#include <reg52.h>#include "cext.h"char num[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 7-seg codeschar timerbuf[ ] = {0,0,0,0,0,0};//timer bufferchar add[ ] = {0x0fe,0x0fd,0x0fb,0x0f7,0x0ef,0x0df}; // Multiplexing addresschar dpn[ ] = {0,0,0,0,0,0}; // Dots matrixchar buf[ ] = {0,0,0,0,0,0}; // Counter bufferchar value, key_mask, new_key;static uchar d0,d1, d2, d3,d4,d5;static uchar t0,t1,t2,t3;static uchar flag;static uchar digit_counter,sec_counter = 0;static char fModel;static char set_flag;static char set_count;static char stop_timer = true;uint timer;uchar del;// processor switch contest.#pragma registerbank (1)// Multiplexing Task. Do it every 10msvoid led_mux (){ if (fModel == 0){ // Normal counting. Display the counts.value = buf[digit_counter];P1 = num[value] | dpn[digit_counter] ;}else{ // Display alarm valuesvalue = timerbuf[digit_counter];P1 = num[value] | dpn[digit_counter];}// Drive the digit actually multiplexed.P0 = add[digit_counter];for (del=0;del<100; del++);// Increase multiplexer address to the next digit digit_counter++ ;// Did you diplay all digit ?if (digit_counter >= 6)// Start again.digit_counter = 0;// Pulse high P0.0, P0.1, P0.2 and P0.3P0 = P0 | 0x3f;}// Blink on and off the dots when counting and alarm is on. void blink_dp (){ if (!set_flag && fModel == 0){ if (flag){dpn[1] = 0x80;dpn[3] = 0x80;}else{dpn[1] = 0x0;dpn[3] = 0x0;}flag = !flag;}if(fModel == 1){if (flag)dpn[4] = 0x80;elsedpn[4] = 0x0;flag = !flag;}}// Counter. Counts from 00.00 to 59.59 min.sec.// The Timer interrupt is driven every 1 sec.void led_counter (){ if (!set_flag)sec_counter +=1;if(sec_counter == 10){sec_counter = 0;buf[5]++;}if(fModel == 1 && !stop_timer){timerbuf[5]++; }if (timerbuf[5]>9) {timerbuf[5] = 0;t3 = true;}if(t3){++timerbuf[4];t3 = false;}if (timerbuf[4]>9) {timerbuf[4] = 0;t2 = true;}if(t2){++timerbuf[3];t2 = false;}if (timerbuf[3]>9) {timerbuf[3] = 0;t1 = true;}if(t1){++timerbuf[2];t1 = false;}if (timerbuf[2]>9) {timerbuf[2] = 0;timerbuf[3] = 0;timerbuf[4] = 0;timerbuf[5] = 0;stop_timer = true; }if (buf[5] > 9){ buf[5] = 0;d5 = true;}if (d5){ ++buf[4];d5 = false;}if (buf[4] > 5){ buf[4] = 0;d4 = true;}if (d4){ ++buf[3];d4 = false;}if (buf[3] > 9){ buf[3] = 0;d3 = true;}if (d3){ ++buf[2];d3 = false;}if (buf[2] > 5){ buf[2] = 0;d2 = true;}if(d2){++buf[1];d2 = false;}if( buf[1] > 9){buf[1] = 0;d1 = true;}if(d1){++buf[0];d1 = false;}if(buf[0] == 2 && buf[1]>3)for(d0 = 0;d0<6;d0++)buf[d0] = 0;}// Four keys Task manager.// Timer interrupt driven every 250msvoid get_key (){char valid_key;char delay = 127;key_mask = P2 & 0x07;while (--delay >= 0) ;valid_key = P2 & 0x07;if (key_mask != valid_key) valid_key = 0;while ((P2 & 0x07) != (0 | (valid_key & 0x02))) ;switch (valid_key){ case 0x01: // set watchif(fModel == 0){++set_count;if (set_count == 1){ // First time SET is pressed. Sets secondsset_flag = true;dpn[0] = 0; dpn[1] = 0; dpn[2] = 0x0; dpn[3] = 0x0;dpn[4] =0x80; dpn[5] = 0x80;}else if (set_count == 2){ // Second time SET is pressed. Set minutesset_flag = true;dpn[0] = 0; dpn[1] = 0; dpn[2] = 0x80; dpn[3] = 0x80;dpn[4] = 0x0; dpn[5] = 0x0;}else if (set_count == 3){ // Second time SET is pressed. Set minutesset_flag = true;dpn[0] = 0x80; dpn[1] = 0x80; dpn[2] = 0x0; dpn[3] = 0x0;dpn[4] = 0x0; dpn[5] = 0x0;}else if (set_count == 4){ // Latest time SET is pressed. Return to timer functions.set_flag = false;set_count = 0;dpn[0] = 0;}}if(fModel == 1){stop_timer =!stop_timer;}break;case 0x02: // model switchfModel = !fModel;dpn[0] = 0;dpn[1] = 0;dpn[2] = 0;dpn[3] = 0;dpn[4] = 0;dpn[5] = 0;break;case 0x04: // Set seconds/minutesif(fModel == 0){if (set_count == 1){ ++buf[5];if (buf[5] > 9){ buf[4]++;buf[5] = 0;if( buf[4]> 5)buf[4] = 0;}}else if (set_count == 2){ ++buf[3];if (buf[3] > 9){ buf[2]++;buf[3] = 0;if(buf[2] > 5)buf[2] = 0;}}else if (set_count == 3) { ++buf[1];if (buf[1] > 9){ buf[0]++;buf[1] = 0;if(buf[0] == 2 && buf[1]>4){buf[1] = 0;buf[0] = 0;}}}}if(fModel == 1){stop_timer = true;timerbuf[0] = 0;timerbuf[1] = 0;timerbuf[2] = 0;timerbuf[3] = 0;timerbuf[4] = 0;timerbuf[5] = 0;}break;}}第三部分Timer.c#include <reg52.h>#include "cext.h"#include "timer.h"#include "taskproc.h"// interrupt period (1 msec)#define tmr_time 1e-3static uchar counter ;static uchar cnt, dpcnt, kbcnt;static uint timer_counter;char delay;void ISR_timer2 () interrupt 5 using 1// Timer2 isr{ // Clear interruptTF2 = 0;// Do it at 1msled_mux();// Task procedure.// Each task runs every 10ms multiplied by its own task counter // S0:if (counter == 1){ if (cnt == 10){ cnt = 0;led_counter();}// Increment of the Timer task countercnt++;}// S1:if (counter == 2){ if (dpcnt == 20){ dpcnt = 0;blink_dp();}// Increment of the decimal point task counterdpcnt++;}// S2:if (counter == 3){ if (kbcnt == 25){ kbcnt = 0;get_key();}// Increment of the keyboard task counterkbcnt++;}if (++counter == 10) counter = 0;/*State tableS0: Timer countsS1: Blink dpS2: get keysOther task state are null*/}void init_timer (float fclk)// Timer2 initialization{ int tmr_reload;counter = 0; // initialize state counter// initialization T2CON:// CP/RL2 = 0 (autoreload, no capture),// EXEN2 = 0 (disable external input T2EX),// C/T2 = 0 (timer, no counter),// RCLK = TCLK = 0 (timer, no baud rate generator), // TF2 = EXF2 = 0 (interrupt flags cleared)// TR2 = 0 (timer stop, please)T2CON = 4;// Load timer2 autoreload bytestmr_reload = (0xFFFF - (uint)((fclk * tmr_time) / 12)); RCAP2H = high_byte(tmr_reload);RCAP2L = low_byte(tmr_reload);// Highest priority for Timer2 interruptsPT2 = 1;// Enables Timer2 interruptsET2 = 1;// Start Timer2TR2 = 1;}课程设计评分表指导教师签名:________________日期:________________注:①表中标*号项目是硬件制作或软件编程类课题必填内容;②此表装订在课程设计说明书的最后一页。

相关文档
最新文档