基于单片机的计数器设计.doc_第1页
基于单片机的计数器设计.doc_第2页
基于单片机的计数器设计.doc_第3页
基于单片机的计数器设计.doc_第4页
基于单片机的计数器设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的计数器设计学 校:实习单位: 姓 名: 目录目录2摘要31.方案论证41.1电路设计分析41.2整体方案论证41.3设计步骤42.硬件电路设计52.1系统搭建52.2计数器设计52.2.1原理52.3移位寄存器62.3.1 移位寄存器作用62.3.2 74LS16472.4显示器设计82.5完整电路图103.软件设计114.项目测试145.小结15附录16参考文献19摘要计数器是通过对脉冲进行计数得到脉冲通过的个数,经过移位寄存器将得到的数值通过数码管显现,从而实现计数器的功能。本次设计共分:计数器、移位寄存器和显示器三部分,以单片机AT89s52为核心,用74LS164移位寄存器,4连排8段共阳极数码管来显示相应数字。关键字:计数器,移位寄存器,数码管1.方案论证1.1电路设计分析经分析,此次设计可用软硬件结合,通过软件控制、硬件实现的方式实现。1.2整体方案论证整个课程设计要求我们设计三个部分:计数器、BCD译码器、七段数码管,系统原理方框图如图1所示。根据设计任务指出的要求,我们照旧设计出相应的3个基本原理图:计数部分原理图;译码部分原理图;显示部分电路图计数器移位寄存器显示器控制键整个系统通过计算脉冲进入的个数,在计数器电路中进行计数,将得出的信息通过软件设计使所得的二进制数据转变为一个十进制的数字并传递给下一级电路移位寄存器,并驱动显示部分电路工作,即对七段数码管接通相应的管脚电流。1.3设计步骤根据原理图焊接电路板;检测电路板焊接是否规范、电路能否导通、能否写进程序;软件编程设计,实现十进制计数;软件编译、调试、运行;观察分析结果,保存数据2.硬件电路设计2.1系统搭建单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。单片机AT89s52原理图及各元件接法:2.2计数器设计2.2.1原理89C51单片机有2个16位的定时/计数器,即定时器0(T0)和定时器1(T1)。T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。这些功能都由特殊功能寄存器TMOD和TCON所控制。 当设置为定时工作方式时,定时器计数89C51片内振荡器输出经12分频后的脉冲,即每个机器周期使定时器(T0或T1)的数值加1直至计满溢出。当89C51采用12MHz晶振时,一个机器周期为1s,计数频率为1MHz。当设置为计数工作方式时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的下降沿时,定时器的值加1。 在每个机器周期的S5P2期间采样T0和T1引脚的输入电平,若前一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的数值装入计数器。所以,检测一个1至0的跳变需要二个机器周期,故最高计数频率为振荡频率的1/24。 对输入信号的占空比无特殊要求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期,对输入脉冲的基本要求如下图所示,Tcy为机器周期。TcyTcy对输入脉冲宽度的要求2.3移位寄存器2.3.1 移位寄存器作用移位寄存器中的数据可以在移位脉冲作用下一次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,串行输入、并行输出,十分灵活,用途非常广泛。2.3.2 74LS16474LS164为8位移位寄存器,其主要电特性:当清除端(CLEAR)为低电平时,输出端(QAQH)均为低电平。 串行数据输入端(A,B)可控制数据。当 A、B任意一个为 低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0 为低电平。当A、B 有一个为高电平,则另一个就允许输入数据,并在CLOCK 上升沿作用下决定Q0 的状态。 引脚功能:CLOCK :时钟输入端CLEAR: 同步清除输入端(低电平有效) A,B :串行数据输入端QAQH: 输出端74LS164封装图74LS164 内部逻辑图极限值 电源电压7V 输入电压 5.5V 工作环境温度 54164 -55125 74164 -070 储存温度 -65150真值表H高电平 L低电平 X任意电平 低到高电平跳变 QA0,QB0,QH0 规定的稳态条件建立前的电平 QAn,QGn 时钟最近的前的电平时序图2.4显示器设计显示器工作原理:数码管一种是半导体发光器件,其基本单元是发光二极管,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字,能够显示时间、日期、温度等所有可用数字表示的参数的器件。七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。LED数码管的ga七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见表数字对应数码管显示控制转换字节(共阴编码)显示HGFE,DCBA编码0 0011,11110x3F;1 0000,01100x06;2 0101,10110x5B;3 0100,11110x4F;4 0110,01100x66;5 0110,11010x6D;6 0111,11010x7D;7 0000,01110x07;8 0111,11110x7F;9 0110,11110x6F;七段数码管驱动方式:直流驱动,即每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。优点是编程简单,显示亮度高,缺点是占用I/O端口多。数码管结构:数码管正面图4连排8段数码管2.5完整电路图3.软件设计#include #define uint unsigned int#define uchar unsigned char /串行数据sbit led1=P11;sbit CLK =P20;sbit AB =P21;sbit c1=P22;sbit c2=P23;sbit c3=P24;sbit c4=P25;sbit fmq=P37;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ;/0-9unsigned int num,i,stt,g,s,h,m,i_g,i_s;i_h;i_m;uchar time_s;bit Crol;void delay(unsigned int t)unsigned int j; for(;t0;t-) for(j=1000;j0;j-) ;/实现一个字节的传送 void Byte(unsigned int t)unsigned int i;unsigned char Data;Data = tablet;for(i=0;i 1;CLK = 1;main() TMOD=0x59; TH0=(65536-50000)/256; /高8位初始化 TL0=(65536-50000)%256; /低位初始化 EA = 1; /总中断允许 ET0 = 1; /定时器允许 ET1 = 1; /定时器1允许 EX0 = 1; /外部中断允许 IT0 = 1; /边沿触发有效 TR0=1; /定时器启动 TR1=1; /定时器启动 while(1)if(i = 9999)i = 0;if(Crol) /判断是否翻转i = time_s; /执行计数器 else i=TL1;i_s = i%10;i_g = i/10%10;i_h = i/100%10;i_m = i/1000;c1 = 0;c2 = 1;c3 = 1;c4 = 1;Byte(i_s);delay(1);c1 = 1;c2 = 0;c3 = 1;c4 = 1;Byte(i_g);delay(1); c1 = 1;c2 = 1;c3 = 0;c4 = 1;Byte(i_h);delay(1);c1 = 1;c2 = 1;c3 = 1;c4 = 0;Byte(i_m);delay(1); void zd1(void) interrupt 0 /IT0中断 Crol=Crol;/定时器翻转void T0_Timer() interrupt 1 / 定时器中断 num+; if(num=20) num=0;time_s+; TH0=(65536-50000)/256; TL0=(65536-50000)%256;4.项目测试图表 1 实物图图表 2 效果图5.小结这次实习设计使我懂得了理论知识和实践相结合的重要,光有理论知识是远远不够的,只有把理论知识和实践结合起来,用理论指导实践,用实践求证理论,才能真正做到学以致用、提升能力,为社会服务。实际动手能力和独立思考不仅能够快速提高自己的知识水平还能极大促进学习的兴趣,看到自己亲手设计的作品真是一件令人愉悦的事。在设计过程中遇到好多问题,同时发现了自己很多不足之处,对之前所学的理论知识掌握的不牢固或不完整。通过这次设计弥补了我之前的不足,更找到了改变的方法,对我自身提高和发展有非常大的帮助!最后,衷心感谢所有辛苦指导我们的老师!感谢几位组员和所有帮助我的同学!附录 程序代码:#include #define uint unsigned int#define uchar unsigned char /串行数据sbit led1=P11;sbit CLK =P20;sbit AB =P21;sbit c1=P22;sbit c2=P23;sbit c3=P24;sbit c4=P25;sbit fmq=P37;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ;/0-9unsigned int num,i,stt,g,s,h,m,i_g,i_s;i_h;i_m;uchar time_s;bit Crol;void delay(unsigned int t)unsigned int j; for(;t0;t-) for(j=1000;j0;j-) ;/实现一个字节的传送 void Byte(unsigned int t)unsigned int i;unsigned char Data;Data = tablet;for(i=0;i 1;CLK = 1;main() TMOD=0x59; TH0=(65536-50000)/256; /高8位初始化 TL0=(65536-50000)%256; /低位初始化 EA = 1; /总中断允许 ET0 = 1; /定时器允许 ET1 = 1; /定时器1允许 EX0 = 1; /外部中断允许 IT0 = 1; /边沿触发有效 TR0=1; /定时器启动 TR1=1; /定时器启动 while(1)if(i = 9999)i = 0;if(Crol) /判断是否翻转i = time_s; /执行计数器 else i=TL1;i_s = i%10;i_g = i/10%10;i_h = i/100%10;i_m = i/1000;c1 = 0;c2 = 1;c3 = 1;c4 = 1;Byte(i_s);delay(1);c1 = 1;c2 = 0;c3 = 1;c4 = 1;Byte(i_g);delay(1); c1 = 1;c2 = 1;c3 = 0;c4 = 1;Byte(i_h);delay(1);c1 = 1;c2 = 1;c3 = 1;c4 = 0;Byte(i_m);delay(1); void zd1(void) interrupt 0 /IT0中断 Crol=Crol;/定时器翻转void T0_Timer() interrupt 1 / 定时器中断 num+; if(num=20) num=0;time_s+; TH0=(65536-50000)/256; TL0=(65536-50000)%256;参考文献1.胡汉才 单片机原理及其接口技术 清华大学出版社2.阎石 数字电子技术基础(第五版) 高等教育出版社3.华成英 童诗白 模拟电子技术基础 高等教育出版社4.文U皖,何道君,谭明FPGA设计与应用M北京,清华大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论