单片机课程设计-00-99手动计数器设计[共5篇]

时间:2019-05-12 14:47:11下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《单片机课程设计-00-99手动计数器设计》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《单片机课程设计-00-99手动计数器设计》。

第一篇:单片机课程设计-00-99手动计数器设计

单片机综合实验

题目:00-99手动计数器

班级:10计科一班 姓名:

学号:

设计时间:2013.06.2

目录

一、设计目的:..............................................................................................................................3

二、实验设备和实验平台:...........................................................................................................3

三、实验原理:..............................................................................................................................3

四、设计步骤:..............................................................................................................................4

1.电路设计................................................................................................................................4 2.软件设计................................................................................................................................4 3.实验调试................................................................................................................................5

五、心得体会..................................................................................................................................7

一、设计目的:

利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示

二、实验设备和实验平台:

EL-MUT-III 型单片机实验箱、8051CPU 模块、Keil uVision2、Proteus 7 Professional

三、实验原理:

1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;

把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上; 1. 程

2.3. 序设计内容

3.单片机对按键的识别的过程处理

单片机对正确识别的按键进行计数,计数满时,又从零开始计数;

单片机对计的数值要进行数码显示,计得的数是十进数,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。如何拆开十位和个位我们可以把所计得的数值对10求余,即可个位数字,对10整除,即可得到十位数字了。

通过查表方式,分别显示出个位和十位数字。

四、设计步骤: 1.电路设计

2.软件设计

Count EQU 30H

;EQU ——标号赋值伪指令 SP1

BIT P3.7

ORG 0 START: MOV Count,#00H NEXT: MOV A,Count

MOV B,#10

DIV AB

;A除以B,商(存于)A余(下)B

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P0,A

MOV A,B

MOVC A,@A+DPTR

MOV P2,A WT:

JNB SP1,WT

;SP为0转移 WAIT: JB SP1,WAIT

;SP为1转移

LCALL DELY10MS

JB SP1,WAIT

INC Count

;Count加1 MOV A,Count

CJNE A,#100,NEXT

;累加器与立即数不等转移 LJMP START MOV R6,#20 MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

;0---9 END

DELY10MS: D1:

TABLE:

3.实验调试

运行后,每按一下开关,后面的个位数字就加1,按到9以后再按一下向十位进1.6

五、心得体会

为期两周的单片机课程设计,给我留下了很深刻的印象.这是我第一次从硬件方面接触到单片机.在平时的上课学习中.对于书上所讲的.感觉很抽象.在做课程设计时我们从最简单的实物开始做起.在制作过程中,我们首先是实验设计,设计电路图,然后画出电路流程图,这个大概耗时一周的时间,在这期间,我们花费大量的时间在寻找方法,上网查资料,不断的讨论,每天都研究的很晚,在焊电路片,由于以前有做过.所以没有什么问题.最后就是程序的下载,这个东西我们以前没有接触过,但是进过我们的研究还是终于成功了,我心情万分激。

这次单片机制作对我收获很大.激发了我对单片机的兴趣.接下来我会慢慢的制作更多更复杂的板子.从中发现问题.解决问题.对我单片机的学习是很有帮助的.由于第一次制作单片机电路.还有许多不好的地方.恳请老师指教!

第二篇:单片机课程设计频率计数器

单片机课程设计

--频率计数器

专业:自动化 指导老师:朱兆优 班级:1430201

学号:201430020118 姓名:张超梅

一、绪论

1.1设计任务和要求

二、电路设计方案

2.1电路工作原理 2.2系统性能

三、软件设计方案

3.1功能模块 3.2.编程算法思路 3.3程序流程图

四、系统调试

4.1 硬件调试 4.2 软件调试

五、心得体会

目录

一、绪论

频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。其最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T。频率计主要由四个部分构成:时基(T)电路、输入电路、计数显示电路以及控制电路。在一个测量周期过程中,被测周期信号在输入电路中经过放大、整形、微分操作之后形成特定周期的窄脉冲,送到主门的一个输入端。主门的另外一个输入端为时基电路产生电路产生的闸门脉冲。在闸门脉冲开启主门的期间,特定周期的窄脉冲才能通过主门,从而进入计数器进行计数,计数器的显示电路则用来显示被测信号的频率值,内部控制电路则用来完成各种测量功能之间的切换并实现测量设置。

1.1设计任务和要求

本次课程设计的内容是使用AT89C51单片机最小系统设计频率计系统,系统以单片机为主控单元,主要用于对方波频率的测量,使用 NE555 输出脉冲,用单片机计数器实现技术,再把计数值转换为频率,用静态或动态显示频率值,频率计数器要实现0~1MHz信号频率测量范围,要分段频率段测量,低频段用测周法,高频段用测频法。

二、电路设计方案

2.1电路工作原理

由NE555振荡电路产生脉冲,然后经过二分频电路,然后与定时器/计数器T1相连,P2.0接74Ls273锁存器的时钟信号端,P2.1口接74Ls273锁存器的时钟信号端,P0口接74LS273段选码和位选码,输出与七位共阳数码管显示,采用动态显示。由于P0口输出数据,T2截至,输出级属于开漏电路,要使高电平1信号正确输出,应该外接上拉电阻560k.分频电路

本次设计采用的是脉冲定时测频法,由于考虑到单片机的定时计数器得计数 能力有限,无法对过高频进行测量,所以我们对待测信号进行了分频,这样能提高测量频率的范围,还能相应的提高频率测量的精度。所以我们需要把待测信号进行分频。

显示电路

我们测量的频率最终要显示出来八段LED 数码管显示器由8 个发光二极管组成。基中7 个长条形的发光管排列成“日”字形,另一个圆点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED 数码管显示器有两种形式:一种是8 个发光二极管的阳极都连在一起的,称之为共阳极LED 数码管显示器;另一种是8 个发光二极管的阴极都连在一起的,称之为共阴极LED 数码管显示器。如下图所示。共阴和共阳结构的LED 数码管显示器各笔划段名和安排位置是相同的。当二极管导通时,对应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段 h g f e d c b a 对应于一个字节(8 位)的D7、D6、D5、。D4、D3、D2、D1、D0,于是用8 位二进制码就能表示欲显

符的字

码。

在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫 描显示。所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能 的I/O 接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU 的开销小,能供给单独锁存的I/O 接口电路很多。在单片机系统中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8 个笔划段a-h 同名端连在一起,而每一个显示器的公共极COM 是各自独立地受I/O 线控制。CPU 向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM 端,而这一端是由I/O 控制的,所以我们就能自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的办法,轮流控制各个显示器的COM 端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

总电路图

三、软件设计方案

3.1功能模块

测周法

 定时器/计数器初始化,测出周期t  4字节除4字节  二进制转换为BCD码  提取BCD码  查表显示

测频法

 定时器/计数器初始化,设置中断

 二进制转换为BCD码  提取BCD码  查表显示 3.2.编程算法思路

子程序主要包括:按键中断子程序、定时中断子程序、计数中断子程序、周期中断子程序、超量程判断子程序、除法子程序、二进制转BCD子程序、显示程子序。除法子程序

该子程序用于周期转换频率,因为周期为两到三字节,所以使用移位除法。

3.3程序流程图

四、系统调试

4.1硬件调试

硬件调试,由大到小,从整体到局部,进行调试。本设计电路简单,所以不一一调试,就最复杂的显示电路进行调试。

先由仿真器连接显示电路,循环发送四位(1-9)显示编码,如果四位都不能显示,检查信号传输电路,时钟电路,电源。

如果四位都能显示,但有的位显示不正确,检查LED与移位寄存器的连线顺序是否正确。如果还显示不正确,与正常的位调换LED数码管。调换后,正常的位显示不正常,则数码管坏了,换数码管。调换后,不正常的位显示不正常,则移位寄存器坏了,换移位寄存器。4.2软件调试 4.2.1软件调试的步骤

(1)源文件的建立:使用菜单 “File-New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入汇编语言源程序(4.2小节所示)。保存该文件,加上扩展名(.asm),这里将文件保存为频率计数器程序.asm。

(2)建立工程文件:点击“Project-New Project”菜单,出现一个对话框,要求给工程起一个名字,输入频率计数器程序,不需要扩展名,点击保存按钮,出现第二个对话框。这个对话框要求选择目标CPU(即我们所使用的芯片型号80C51)点击ATMEL前面的“+”号,展开该层,点击其中的80C51,然后点击确定按钮。回到主界面,此时,在工程窗口的文件页中,出现了“Targ et1”,前面有 “+”号,点击“+”展开,可以看到下一层的“Source Group1”,这时的工程还是一个空工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Souce Group”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单。选中其中的“Add file to Group”Souce Group1”,对话框,要求寻找源文件,注意该对话框下面的“文件类型“默认为C Souce file(*.c),也就是以C为扩展名的文件,而我们的文件是以asm 为扩展名的,所以在列表框中找不到频率计数器程序.asm,要将文件类型该掉,点击对话框中”文件类型‘后的下拉列表,找到并选中“Asm Souce File(*.asm,*.a51)”,这样,在列表框中就可以找到频率计数器程序.asm文文件了。双频率计数器程序.asm文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其他文件,但初学时常会认为操作没有成功而再次双击同一文件,这时会出现对话框,提示你所选的文件以在列表中,此时点击确定,返回前一对话框,然后,点击”Close”即可返回主界面,返回后,点击“Souce Goup 1”前的加号,会发现频率计数器程序.asm 文件以在其中。双击文件名,即打开源程序。

(3)工程的详细设置:首先点击左边Project窗口的Target 1,然后使用菜单“Proget-Option for target ‘target 1’”即出现对工程设置的对话框,对这个对话框可谓非常复杂,共有8个页面,要全部高清可不容易,好在绝大部分设置项取默认值就行了。设置完成以后安确认返回主界面,工程建立、设置完毕。(4)编译、连接:在设置好工程后,既可以进行编译、连接。选择菜单Project-Build target,对当前工程进行连接,如果当前文件已修改软件会先对该文件进行比,然后在连接以产生目标代码。编译过程中的信息将出现在输出窗口中的Build页中,如果源程序有语法错误,会有错误报告出现,双击该行,可以定到出错的位置,对源程序反复修改后,最终会得到如图5-1所示的结果,提示获得了名为频率计数器程序.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其他相关文件可被用于KEIL的仿真与调试4.2.2调试过程中遇到的问题及解决方法

在进入环境以后,遇到了很多问题,总结如下:(1)提示无asm文件 编译时候提示: F:...XX.asm.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其他相关文件可被用于KEIL的仿真与调试。

File has been changed outside the editor, reload ? 解决方法:重新生成项目,产生频率计数器程序.asm即可。(2)在进入Keil的调试环境以后,发现程序有错。解决方法:将光标定位于需要修改的程序上,用菜单,DebugInline Assambly„即可出现对话框,Enter New 后面的编辑框内直接输入需要修改的程序语句,输入完之后键入回车将自动指向下一条语句,可以继续修改,如果不在需要修改,可以点击右上角的关闭按钮关闭窗口。

(3)程序调试时,一些程序必须满足一定的条件才能被执行到

解决方法:这些条件往往是异步发生或难以预先设定的,这类问题使用的单步实行方法是很难调试的,这时就要使用发现程序调试中的另一种非常重要是方法---断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug/Insert/RemoveBreakPoint设置或移除断点(也可以用鼠标在该行双击实现同样的功能);Debug/Enable/Disable BreakPoint是开启或暂停光标所在懂行的断点功能;Dubug/Disale All BreakPoint暂停所有断点;Debug/Kill All BreakPoint清除所有的断点设置。这些功能也可以用工具条上的快捷键进行设置。(4)输入程序时,有中文标点,用keil编译时出现错误 解决方法:程序里有带中文标点,用英文重输入一遍(5)汇编出现数字、字母混淆 解决方法:字母“O” 和 数字 “0”。主要错在这里。注意细节。

五、心得体会

通过这一个月来的忙碌和学习,本次课程设计已接近尾声,由于经验的匮乏,难免有许多考虑不周全的地方,在这里衷心感谢指导老师的督促指导,以及一起学习的同学们的支持,让我按时完成了这次课程设计。在论文设计过程中,我遇到了许许多多的困难。在此我要感谢我的指导老师给我悉心的帮助和对我耐心而细致的指导,我的论文较为复杂烦琐,但是老师仍然细心地纠正图中的错误。除了敬佩老师的专业水平以外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作,我才得以解决课程设计中遇到的种种问题。感谢大学三年传授我们专业知识的所有老师,谢谢你们呕心沥血的教导。还有谢谢我周围的同窗朋友,他们给了我无数的关心和鼓励,也让我的大学生活充满了温暖和欢乐。如果没有他们的帮助,此次论文的完成将变得困难。他们在我设计中给了我许多宝贵的意见和建议。同时也要感谢自己遇到困难的时候没有一蹶不振,取而代之的是找到了最好的方法来解决问题。

第三篇:单片机课程设计_简易频率计数器..

单 片 机 课 程 设 计

简易频率计数器

1.实验目的

1.要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。

2.熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境Keil C51编程调试,并使用STC ISP调试工具采用串口下载方式联调制作的单片机最小系统。

二、实验要求

自制一个单片机最小系统,包括串口下载、复位电路,采用外部计数器T0或T1作为外部频率输入,外部频率由信号源提供,计算出来的频率显示在四位一体的数码管上。

三、实验器材

89C54RD芯片(与89c51芯片管脚和指令共用,只是内部存储单元有差异)一个,晶振一个,电容3个,电阻3个,12个10千欧姆电阻,4位一体共阴数码显示管一个,按钮1个,导线若干。

四、实验原理 1.芯片介绍

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

1.主要特性: ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 2.管脚说明:

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口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 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)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.振荡器特性:

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

4.芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

2、最小系统电路的组成

由电源、复位及振荡电路、四位一体数码管显示电路、按钮及LED电路。

复位及振荡电路

复位电路由按键复位和上电复位两部分组成。电阻给电容充电,电容的电压缓慢上升直到vcc,到vcc时芯片复位脚近似低电平,于是芯片复位,接近vcc时芯片复位脚近高电平,于是芯片停止复位,复位完成。

AT89C51系列单片机为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。

按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。使用6MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。如下图所示

数码管显示电路

利用单片机的T0,T1计数定时器功能,来完成对输入信号进行率计数,计数结果通过4位动态数码管显示出来,能对0到9999HZ的方波信号频率进行准确计数。如下图所示

3、软件设计

根据设计项目所需功能,我们先进行初始化,在待机状态下,采集频率。然后检测是否有按钮按下,若按钮按下,则数码管显示所采集的频率,再按下键0时则不显示。系统实现所有功能,其程序框图如图所示。

4、设计源程序 #include bit int_flag;//定时器0,1S到标志位

unsigned char volatile T0Count;//定时器0的中断次数 unsigned char volatile T1Count;unsigned char code table[] //定时器1的中断次数

={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码值为123456789 unsigned char code temp[] = {0xfe,0xfd,0xfb,0xf7};//数码管选通 unsigned long sum;//1S内脉冲总个数 unsigned char Led[4];//Led显示缓存

void delay(unsigned int num){ //软件延时

while(--num);//定时器0初始化 } void init(void){ TMOD=0x51;//T1定时器0工作于方式1,定时器1计数 TH0=(65536-50000)/256;//定时50ms TL0=(65536-50000)%256;TH1=0x00;TL1=0x00;} void disp(void){ //数码显示

unsigned char i;for(i=0;i<4;i++){

P2=temp[i];//片选

P0=table[Led[i]];//取数据显示

delay(100);//延时1毫秒

} } void main(void){ EA=1;//开总中断

init();//初始化定时器

TR0=1;//定时器开始工作

TR1=1;ET1=1;//开T0中断

ET0=1;while(1){

if(int_flag==1){

int_flag=0;

sum=TL1+TH1*256+T1Count*65536;//计算个数

//将数据格式化,转化成可显示的BCD码

Led[3]=sum%10000/1000;//显示千位

Led[2]=sum%1000/100;//显示百位

Led[1]=sum%100/10;//显示十位

Led[0]=sum%10;//显示个位

T0Count=0x00;

T1Count=0;

TH1=0x00;

TL1=0x00;

TR1=1;

}

内脉冲1S

disp();} } void int_t0(void)interrupt 1{ TH0=(65535-50000)/256;TL0=(65536-50000)%256;T0Count++;if(T0Count==20){

TR1=0;

int_flag=1;

T0Count=0x00;} } void int_T1(void)interrupt 3{ T1Count++;

5、设计仿真图 输入正弦波频率为1324HZ的仿真情况; 输入方波频率为4216HZ的仿真情况;

6、实物图(未上电)

六、实验结果分析

在实验电路板验收的时候,对于给定的输入信号,数码管显示的频率示数与实际信号源给定的频率有大约20HZ的偏差,产生偏差的原因可能有:1.电路电容的选取不恰当;2.焊接电路板的时候,因为操作不恰当,某些焊点的焊接不到位;3.实际器件与仿真所用到的的元件有差别。

七、心得体会

通过这次课程设计,我熟悉了Keil C51编程与PROTUSE的使用,对单片机的使用有了更深刻的了解,在焊接与测试过程中要有大局观,注意布局和布线。频率计的设计让我更好的了解如何应用单片机的定时器计数器模块。其中最重要的是分析问题解决问题的能力,在我看来,写程序并不难,重要的是把程序优化,无论是在节省硬件资源,还是提高数据的准确度来看,都需要下一些功夫把它做到最好。通过这次课程设计使我明白了自己原来知识还比较欠缺。学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。

第四篇:单片机课程设计设计项目

09级通信专业《课程设计》方案 单片机应用系统设计项目介绍

学生:09级通信1、2、3班指导教师:周秋茜

一、16×16点阵LED电子显示屏的设计

1.功能要求

设计一个室内用16×16点阵LED图文显示块,要求在目测条件下LED显示屏个点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。图形或文字显示有静止、移出、移入等显示方式

2.设计要求

根据功能要求,应采用动态显示的设计方法,同时为简化设计,减少硬件数量,显示数据的传输采用串行传输方式。

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握动态显示原理及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(4)掌握串行数据传输方式的应用。

(5)实现利用AT89S51单片机控制的LED图文屏正常工作;

二、数字电压表系统设计

1.功能要求

简易数字电压表可以测量0~5V范围内的8路输入电压值,并在4位LED数码管上轮流显示或单路选择显示。其测量最小分辨率为0.02V

2.设计要求

按照系统功能实现要求,控制系统采用51单片机,A/D转换采用ADC0808。

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握数据显示原理及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(4)掌握ADC的使用。

(5)实现利用AT89S51单片机测量电压并显示出来;

三、交通灯控制系统的设计

1.功能要求

设计一个交通灯控制系统,该控制系统工作后,交通灯按照下列规律变化:初始态四面均为红灯,持续时间为2S;然后转为状态1(10S),为东西红、南北绿;状态2(3S),为东西红灯不变、南北绿灯灭、黄灯闪烁三次;状态3(15S),为东西绿、南北红;状态4(3S),为东西绿灯灭、黄灯闪烁三次、南北红灯不变;最

后回到状态1,依次循环。如遇特殊情况,可拨动应急开关,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后将开关拨回原位。系统恢复原状态运行

2.设计要求

可选用12只单色LED发光管作为交通灯,也可选用4只双色LED发光管。控制系统采用51单片机,可选用片内带ROM型单片机,以简化电路,降低成本

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握控制系统及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(5)实现AT89S51单片机对交通灯控制系统的有序管理

四、数字时钟设计

1.功能要求

时钟计时器要求用单片机用6位LED数码管显示时、分、秒,以24小时计时方式运行,使用按键开关可实现时、分调整,秒表/时钟功能转换,省电(关闭显示)等功能

2.设计要求

按照系统功能实现要求,控制系统采用51单片机,显示系统采用LED显示器

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握数据显示原理及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(4)掌握定时器的使用的使用。

(5)实现AT89S51单片机产生频率可调的多种波形的输出;

五、简易低频信号源的设计

1.功能要求

简易低频信号发生器要求能输出0.1~50HZ的正弦波、三角波和方波信号,其中正弦波和三角波信号可以用按键选择输出,输出信号的频率可以从0.1~50HZ范围内调整。

2.设计要求

按照系统功能需要,要求选用AT89C51单片机作为控制器,用DAC0832作为D/A转换器。功能键使用单片机的三个端口

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握DAC0832转换原理及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(4)掌握定时器的使用。

(5)实现利用AT89S51单片机精确计时并显示出来;

六六十秒倒计时显示器

第五篇:单片机课程设计电子钟设计

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

目录

一、摘要

二、设计任务

三、基本原理

数码管显示可以用静态显示或动态显示方法。静态显示需要数据锁存器等硬件,接口复杂,时钟显示用四个数码管。动态显示相对简单,但需动态扫描,扫描频率要大于人视觉暂留频率,信息看起来才稳定。译码方式可分为软件译码和硬件译码,软件译码通过译码程序查的显示信息的字段码;硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。

在具体处理时,定时器计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。在主程序中只需对定时器计数器初始化、调用显示子程序和控制子程序。另外,为了使用便,设计了简单的按键,可以通过按键实现时、分的调整,这样在主程序中就加入了按键设置子程序。

四、编程算法思路

五、程序流程图

六、硬件单元设计

七、软件单元设计

八、调试结果分析

九、设计总结及心得体会

十、参考文献

一设计任务

1、基本任务:利用定时器/计数器中断和静态显示或动态显示,实现电子时钟的时分秒精确走时和校准

。时间显示用四个数码管分别显示时、分、秒用点表示,在时和分的中间闪动,时间显示格式(18:49)

时间校准用2个键实现:一个键K1作移位选择(选中要修改的位,选中的位用闪烁指示),一个键K2做加1(对选中的位进行加1修改)。

2、功能增强型任务:在基本任务的基础上加上日历功能、准时报时功能和跑表功能

(1)日历功能:能实现时、分、秒和年、月、日计时,增加1个按键控制分3屏例如显开始的第1屏默认显示“时、分、秒”四位+秒点,按下K3键显示“月和日”四位,再按下课K3键显示“年份”四位,再按下K3键显示“时、分、秒”,依次类推。程序要能处理闰年、闰月功能。

(2)准点报时功能:可以在增加一个按键K4设计具有闹钟功能,实现定点报时。具体操作是:按下

K4键,进入闹钟设置功能,再通过K1、K2键来完成定点报警时间的设置。

(3)跑表功能:再增加一个按键K5设计跑表功能,实现启动毫秒计数,相当与田径运动比赛的跑

表工作。

三基本原理

软件时钟时利用单片机内部的定时器/计数器来实现的,它的过程如下:首先定单片机内部的一个定时器/计数器工作于定时方式,对机器周期形成基准时间,然后用另一个定时器/计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。然后通过数码管把它们的内容在相应位置显示出来即可。

四编程算法思路

1、主程序的设计:串行口工作方式0,定时器/计数器1工作在方式1进行初始化,然后通过循环(调用显示子程序)等待定时中断的到来。

2、按键的控制:KEY1控制时的调节,kEY2控制分的调节,KEY3控制时、分定型

3、中断服务程序的设计:中断服务程序主要功能是实现时、分、秒的计时处理。

4、时、分、秒计时的实现:秒计时时采用中断方式进行溢出次数的累计得到的。从秒到分,从分到时可通过软件的累加和比较到位方法来实现。要求每满1秒,则“秒”单元中的内容加1;“秒”单元每满60,则“秒”单元清0,同时“分”单元中的内容加1;“分”单元每满60,则“分”单元清0,同时“时”单元加1。“时”单元每满24,则将“时”单元清0。

5、显示子程序:采用数码管静态显示来显示时钟的走动

6,延时子程序:用来实现按键操控延时和实现整点12时报时

五程序流程图

六硬件单元设计

1、电路总设计图

2、AT89C51芯片

七软件单元设计

1、资源分配:定时器T1,P1.6为调整时钟,P1.5为调整分钟,P1.4为控制调整

30H秒显示单元,31H分显示单元,32H时显示单元,08H放分调整标

志,09H放时调整标志,0AH放闪烁标志

2、程序清单(加注释)

八调试结果分析

在实验操作过程中,将所写好的程序打入计算机内,通过编译检查其是否有错误,如有错误将其改正,直至无误后下载仿真器,实现运行。观察实验箱上的数码管显示,判断其是否为所需结果,如果与所要求的有差别,需继续调试,重新修改程序,检查硬件设施不断地调试,不断地检查直至得到所要的结果。在调试过程中,开始运行时能够实现时钟的显示,但是无法实现其闪烁功能,后经不断调试修改及同学的帮助最终实现该功能,能够达到时钟显示调节的基本要求,还可以实现整点报时。但在增加其功能显示年月时又出现一定的问题,未能实现该功能,程序存在一定的不足性,需继续完善,实现更多的功能

九设计总结及心得体会

经过两天的单片机课程设计,终于完成了我的电子时钟的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把一些基本功能都做了出来,只是一些增强型功能未能实现。

在本次设计的过程中,我发现很多的问题,虽然以前还做过一些实验但这次设计真的让我长进了很多单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,要有通篇的全局思想考虑问题。在操作的过程中,出现许多错误,都是在连接处不能够上下连贯正确运行,还需继续努力。有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。

从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在课程设计中的最大收获,同时,要把所学只是灵活应用才能真正领悟其中的意义,加深对它的理解与掌握。还有,通过此次的操作也使我的实践操作能力得到了进一步的提高。

十参考文献

【1】张毅刚,彭喜元,董继成。单片机原理及应用。北京:高等教育出版社,2003

【2】周航慈。单片机应用程序设计技术(修订版)。北京:北京航空航天大学出版社,2002

【3】万光毅等。单片机实验与实践教程。北京:北京航空航天大学出版社,2003

【4】何立民,I2C总线应用系统设计。北京:北京航空航天大学出版社,2002

【5】周航慈,朱兆优,李跃忠。智能仪器原理与设计。北京:北航大学出版社,2005

下载单片机课程设计-00-99手动计数器设计[共5篇]word格式文档
下载单片机课程设计-00-99手动计数器设计[共5篇].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    单片机实验三 定时计数器实验[精选合集]

    实验三定时/计数实验 一、实验目的 1、理解单片机的定时/计数原理,掌握定时/计数程序的编写方法。 2、掌握定时/计数器在定时、计数、频率测量等方面的应用。 3、学会使用PRO......

    单片机课程设计

    单片机课程设计 课题: 简易电子琴设计 学院:电气与信息工程学院 专业:电子信息工程 姓名:李琳琳 学号:093411106 指导老师:田巍 河南城建学院 2014年01 月01 日......

    单片机课程设计

    课 程 设 计 设计题目: 基于单片机的8*8点阵显示数字设计 学生姓名: 指导教师: 二级学院: 专业: 班级: 学号: 目 录 摘要„„„„„„„„„„„„„„„„„„„„„„„„„„......

    单片机课程设计

    基于单片机的火灾智能报警控制系统的设计前言在各种灾害中,火灾是最经常、最普通地威胁公众安全和社会发展的灾害之一。人类能够对火进行利用和控制,是文明进步的一个重要标志......

    单片机课程设计

    《单片机技术》课程设计说明书 音乐盒 院、部:电气与信息工程学院 学生姓名:刘亮 指导教师:凌云职称讲师 专业:电子信息工程 班级:电子1302班 学号:1330340220 完成时间: 2016年1......

    单片机课程设计

    单片机课程设计_报警器 报警器 ORG 0010H START:MOV DPTR,#TAB CLR P3.1 SETB P1 MOV A,P1 CPL A ANL A,#0F0H SWAP A MOV R0,A LCALL DISP1 MOV A,P1 CPL A ANL A,#0FH MOV......

    单片机课程设计

    单片机课程设计 --------- 机电汽车工程学院 同组成员:(机091-1) 姓名(学号):......

    单片机课程设计大全

    基于单片机的计算器设计、基于单片机的密码锁设计、基于单片机的电机控制、基于单片机的交通灯设计、基于单片机的八路抢答器设计、基于单片机的温度检测设计、基于单片机的......