1、单片机秒表课程设计单片机秒表课程设计前言 本设计主要是对51单片机的一个方面的扩展,是能实现一般定时功能的设计。系统采用单片机AT89C51作为本设计的核心元件,在其基础上外围扩展芯片和外围电路,附加时钟电路,复位电路,键盘接口及LED显示器,键盘采用独立连接式。外围设备有LED显示驱动器及相应的显示数字电子钟设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件
2、电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, AT89C51的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。 按键电路设有两个按键:从上往下为k1和k2键。按下k1键用于启动和暂停秒表;k2键用于复位。另外还有一个单片机的复位按键,此按键用于总复位,使单片机和LED数码管同时复位。目录一、设计任务和要求 3(一)系统功能任务 3(二)系统设计要求 3二、方案
3、设计与论证 3三、硬件设计 4(1)时钟电路 4(2)按钮电路 5(3)显示电路 6(4)动态显示原理 7(5)80C51中断的控制 7 (6)定时/计数器的控制 7(7)单片机 8(8)MAX7219 9四、总原理图及元器件清单 9(1)总原理图 10(2)元器件清单 11五、 源程序. . .11六、结论与心得 15七、参考文献 16秒表设计一、设计任务和要求(一)系统功能任务 1)2路秒表时间记时功能 2)具有时间启动、暂停、复位功能 3)采用LED数码管显示(二)系统设计要求 1)可以自增系统功能 2)允许采用MCS-51系列或其他类型单片机 3)系统程序采用汇编或C语言编制二、方案设
4、计与论证本设计分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。按钮电路中的“复位”按钮是按键手动复位,它有电平和脉冲两种方式,比较电路的复杂程度,本设计选择了按钮电平复位电路,其他几个按钮则是通过单片机判断高低电平的不同来控制按钮。显示电路所用的数码管有共阴和共阳之分,不管使用何种数码管,P0口作为I/O使用时都是需要上拉电阻才能驱动数码管。本课程设计不是直接用单片机的I/O口直接来驱动LED显示器,而是用芯片MAX7219来驱动LED显示器,故不需要上拉电阻
5、。为了使电路简单化,本设计选用共阳数码管。 但根据显示方式的不同选择,我们可以有几种方案:方案一:使用静态显示方式。静态显示方式下的数码管的显示字符一经确定,相应锁存器锁存的断码输出將维持不变,直到送入另一个字符的断码为止。因而此设计中使用的显示位数使用了三个8位并行I/0口。如果另外想扩展单片机功能,则能使用的输出管脚很是有限。方案二:使用动态显示方式。这个显示方式是将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阴或共阴极分别由相应的I/O线控制,形成各位的分时选通。这种显示方式,简化了硬件电路,特别在多位数码管显示时尤为突出,在本次设计中我采用的是动态显示。 三
6、、硬件设计 其模块电路如图3-1所示。图3-1(1)时钟电路 单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中AT89S51单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHz12MHz之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF100pF之间取值。AT98S51单片机的时钟电路如图3-2所示,时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中的电容C1、C2选择为30pF左右。该电
7、容的的大少会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。图3-2 时钟电路(2)按钮电路 键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘而靠软件编程来识别的称为非编码键盘;非编码键盘有分为:行列式(又称为矩阵式)键盘;行列式键盘如图3-3a 图3-3(3)显示电路显示电路用的是两位数码管,第一位用于显示毫秒,第二位用于显示个位,对应的最适合的共阴或者共阳级的数码管也不同。下图中图(a)为共阴数码管,图(b)为共阳数码管。静态显示的适宜选共阳的数码管,动态显示的适宜选共阴的数码管。如果动态显示方式下选择共阳的数码管,位选端直接用单
8、片机驱动则数码管的亮度不够,因而应该在位选端使用上拉电阻以提高数码管的驱动电流,但因为显示那个的数据段选的数目不同,故而需要用电阻对各段进行限流,以保证显示的每个数据亮度相同。相同情况下,静态显示的数码管的亮度要比动态的亮。本次设计中数码管使用的是动态显示。(4)动态显示原理 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示
9、的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 (5)80C51中断的控制 中断允许控制 CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。 EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位; ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行口中断允许位; EA (IE.7), CPU中断允许(总允许)位。 (6)定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其
10、启动和中断申请。工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下: GATE:门控位。GATE0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。 :定时/计数模式选择位。 0为定时模式; =1为计数模式。M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。 在本次课设中,使用的为方式0。方式0为13位计数,由TL0的低5位(高3位未用)和TH0
11、的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。定时器模式时有:Nt/ Tcy 计数初值计算的公式为:定时器的初值还可以采用计数个数直接取补法获得。计数模式时,计数脉冲是T0引脚上的外部脉冲。门控位GATE具有特殊的作用。当GATE=0时,经反相后使或门输出为1,此时仅由TR0控制与门的开启,与门输出1时,控制开关接通,计数开始;当GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测
12、量外中断引脚上正脉冲的宽度。 (7)单片机 单片机的程序可用汇编语言编写,也可以用C语言编写,本次课程设计的程序采用C语言来编写。 (8)MAX7219MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位
13、。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。MAX7219的外部引脚分配如图1所示及内部结构如图2所示。 四、总原理图及元器件清单(1)总原理图(2)元器件清单1) AT89C51的引脚图和数码管的引脚图 图4-1a AT89C51引脚图 图4-1b数码管引脚图2)元器件总清单元件名称数量备注AT89C511块MAX72191块数码管1块按钮3个开关电阻1个1K电阻3个10K晶振1个12MHz电容2个30pF电容1个1uF五、源程序 #include #define HIGH 1#define LOW 0#defi
14、ne TRUE 1#define FALSE 0#define ZERO 0#define MSB 0x80#define LSB 0x01/max7219 part#define DECODE_MODE 0x09#define INTENSITY 0x0A#define SCAN_LIMIT 0x0B#define SHUT_DOWN 0x0C#define DISPLAY_TEST 0x0F/pin defined/*/change this part at different boardsbit LOAD = P12; /MAX7219 Load-Data Input: rising e
15、dge pin 12sbit DIN = P11; /MAX7219 Serial-Data Input: rising edge pin 1sbit CLK = P10; /MAX7219 Serial-Clock Input: maximum 10MHz pin 13sbit key0=P13;sbit key1=P14;/function define/*/void Write_Max7219_byte(unsigned char temp);/write max7219 a bytevoid Write_Max7219(unsigned char address,unsigned ch
16、ar dat);/write max7219 command and datavoid Init_Max7219(void);/Initize max7219void delay_ms(unsigned int time);void Init_interrupt();unsigned int cntb,n=0;/test program display from 18/*主函数*/void main(void) Init_Max7219(); Init_interrupt(); while(1) Write_Max7219(4,n%10); delay_ms(1); Write_Max7219
17、(3,n/10%10); delay_ms(1); /*中断初始化*/void Init_interrupt() TMOD=0x01; TH0=(65536-20000)/256; TL0=(65536-20000)%256; TR0=0; /开启定时0 ET0=1; IT0=1; IT1=1; EX0=1; EX1=1; EA=1; /开启中断/*延时程序*/void delay_ms(unsigned int time) unsigned int i,j; for(i=time;i0;i-) for(j=125;j0;j-) ; /*中断服务子程序*/void t0(void) inter
18、rupt 1 using 0 TH0=(65536-20000)/256; TL0=(65536-20000)%256; cntb+; if(cntb=5) n+; cntb=0; if(n=60) n=0;/*外部中断0子程序*/void int0(void) interrupt 0 /EX0=0; if(TR0=0) TR0=1; else TR0=0; /EX0=1;/*外部中断1子程序*/void int1(void) interrupt 2 /EX0=0; n=0; TR0=0; /EX0=1;/*7219驱动程序*/void Write_Max7219_byte(unsigned
19、char temp) unsigned char i; for (i=0;i8;i+) CLK=LOW; DIN=(bit)(temp&MSB); temp=1; CLK=HIGH; /*/void Write_Max7219(unsigned char address,unsigned char dat) LOAD=LOW; Write_Max7219_byte(address); Write_Max7219_byte(dat); LOAD=HIGH; /*/void Init_Max7219(void) Write_Max7219(SHUT_DOWN, 0x01); /Normal Ope
20、ration XXXXXXX1 Shutdown Mode XXXXXXXX0 Write_Max7219(DISPLAY_TEST, 0x00); /Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1 Write_Max7219(DECODE_MODE, 0xff); /Decode Mode Select D7D0 1 B decode 0 No decode Write_Max7219(SCAN_LIMIT, 0x07); /SCAN LIMIT 07 0xX00xX7 Write_Max7219(INTENSITY, 0x04);
21、 /Set Intensity 0xX00xXf六、结论与心得 1:本次的课程设计,使关于51系列单片机的,正是我们刚刚学到的51单片机,在平时课程的学习中,我们仅限于理论知识的讲解,即使知识是很扎实的,实际应用并不是这样的。开始时我也觉得自己的理论知识已经够了,但当我拿到课题时,在脑海里想的是非常好的,但真正编成和控制时,理论和实际结合不到一起,甚至于51芯片的使用我都感觉很迷茫,还是经过搜集大量资料才将理论与实际结合到一起了。本次课程设计我主要负责编程,这次不仅锻炼了我C语言的知识,更加我们正在学习的51的定时与中断结合在一起,进行了实际的操作,让我的知识掌握得更加牢固。本次的实际经验之后
22、,让我对单片机定时赋初值有了更新的认识,对程序的循环顺序、结构类型都有了非常深刻的认识,对真正硬件的连接也有了认识,不再将自己的知识局限于自己狭隘的空间中。2:通过这次课程设计秒表,使我又重新开始学习C语言,因为C语言是大一学的,至从学完就再也没用过,所以开始很陌生,我又找了有关资料来了解,才有了一点眉目。对于单片机,我们课本学习的是AT89S51,但是这次做课程设计用的是89C51,这样不仅使我们掌握了AT89S51,而且对89C51也有了一定的了解了,在课堂上学习的都理论的,跟实际永远有一定的差距,不实践就不会发现问题。通过这次课程设计使我把课堂上学习的东西都用到了实践中,例如:定时/计数
23、器的应用与中断。学习的时候不怎么理解,但是在实践中应用了以后就自然了解了。这次课程设计使我受益匪浅,而且都是实际的东西。3:这次课程设计,我们做的是秒表,最终我们选择的是用C语言编程,但原来学的也只是能看懂别人写好的程序而已,通过这次课程设计,更加熟练了C语言的程序设计思路。通过本次秒表的设计实验,使我对这学期学所学51系列的单片机从理论知识到实践硬件的应用以及C语言知识的回顾,更加熟悉了89C51单片机的每一个拐角的输出和各项功能,而且对硬件电路的掌握有了很大的进步。本次仿真后终于完全实现了秒表的功能。这次课程设计终于圆满的完成了,我从理论和硬件以及实践上懂得了很多,也明白了一个团队的合作精
24、神可以让我们战胜所有的困难。七、参考文献1 单片机原理与接口技术.牛昱光 主编 ,电子工业出版社.2 单片机技术基础教程与实践.夏路易 编著,电子工业出版社.3 51单片机C语言教程入门、提高、开发、拓展全攻略.郭天祥著,电子工业出版社.4 单片机程序设计实例.先锋工作室编著,清华大学出版社.5 电子工程师之家 、豆丁网 、XX、搜狗、电子工程专辑 等等. 目 录第一章 总论 1一、项目概况 1二、项目提出的理由与过程 6三、项目建设的必要性 8四、项目的可行性 12第二章 市场预测 15一、市场分析 15二、市场预测 16三、产品市场竞争力分析 19第三章 建设规模与产品方案 22一、建设规
25、模 22二、产品方案 22三、质量标准 22第四章 项目建设地点 25一、项目建设地点选择 25二、项目建设地条件 25第五章 技术方案、设备方案和工程方案 28一、技术方案 28二、产品特点 30三、主要设备方案 32四、工程方案 32第六章 原材料与原料供应 35一、原料来源及运输方式 35二、燃料供应与运输方式 35第七章 总图布置、运输、总体布局与公用辅助工程 37一、总图布置 37二、 运输 38三、总体布局 38四、公用辅助工程 39第八章 节能、节水与安全措施 44一、主要依据及标准 44二、节能 44三、节水 45四、消防与安全 45第九章 环境影响与评价 47一、法规依据 4
26、7二、项目建设对环境影响 48三、环境保护措施 48四、环境影响评价 49第十章 项目组织管理与运行 50一、项目建设期管理 50二、项目运行期组织管理 52第十一章 项目实施进度 55第十二章 投资估算和资金筹措 56一、投资估算 56二、资金筹措 58第十三章 财务评价与效益分析 61一、项目财务评价 61二、财务评价结论 65三、社会效益 68四、生态效益 68第十四章 风险分析 70一、主要风险分析识别 70二、风险程度分析及防范风险的措施 70第十五章 招标方案 72一、招标范围 72二、招标组织形式 72三、招标方式 72第十六章 结论与建议 74一、可行性研究结论 74二、建议 75附 件 77一、附表 77二、附件 77三、附图 77
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1