《基于单片机的秒表课程设计大学毕设论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的秒表课程设计大学毕设论文.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录第一章 单片机的应用领域11.1在智能仪器仪表上的应用11.2在工业控制中的应用11.3在家用电器中的应用11.4在计算机网络和通信领域中的应用21.5单片机在医用设备领域中的应用21.6在各种大型电器中的模块化应用21.7单片机在汽车设备领域中的应用2第二章 系统设计任务和要求以及方案硬件设计42.1设计任务42.2设计要求42.3系统总体方案42.4硬件电路设计52.5硬件主电路图设计7第三章 软件设计83.1软件设计概述83.2主程序流程图83.3程序中各函数设计93.4 C语言主程序设计11第四章 课程设计体会15参考文献16第一章 单片机的应用领域目前单片机渗透到我们生活的各个
2、领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: 1.1在智能仪器仪表上的应用 单片机具有体积小、功耗低、控制功能强、扩展
3、灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(示波器,各种分析仪)。 1.2在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管 芯片理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。 1.3在家用电器中的应用 可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音
4、响视频器材、再到电子称量设备,五花八门,无所不在。 1.4在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。 1.5单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。 1.6在各种大型电器中的模块化应用 某些专用单片机设计用于实现特定功能,
5、从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。 在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。 1.7单片机在汽车设备领域中的应用 单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器,GPS导航系统,abs防抱死系统,制动系统等等。 此外,单片机在工商,金融,科研、教育,
6、国防航空航天等领域都有着十分广泛的用途。 以89c51为例讲解单片机的引脚及相关功能; 单片机引脚图 40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。 电源: VCC - 芯片电源,接+5V; VSS - 接地端; 注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 控制线:控制线共有4根, ALE/PROG:地址锁存允许/
7、片内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 PSEN:外ROM读选通信号。 RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。 EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外ROM选择端。 Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。 I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。 P3口还具有第二功能,用于特殊信号输入
8、输出和控制信号(属控制总线) 5. P3口第二功能 P30 RXD 串行输入口 P31 TXD 串行输出口 P32 INT0 外部中断0(低电平有效) P33 INT1 外部中断1(低电平有效) P34 T0 定时计数器0 P35 T1 定时计数器1 P36 WR 外部数据存储器写选通(低电平有效)P37 RD 外部数据存储器读选通(低电平有效)第二章 系统设计任务和要求以及方案硬件设计2.1设计任务设计一个单片机控制的秒表系统。利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行加计时,数码管能够正确地显
9、示时间。2.2设计要求1. 开机时数码管显示 00。2. 两位LED显示,显示时间为0099秒。3. 每一秒钟,计数器自动加 1。 4. 按键控制计数,分别控制开始计数、停止计数和归零,功能分配如下所示:按键K1:控制秒表的启动,停止按键K2:控制数码管显示清零2.3系统总体方案本系统采用C51系列单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等来设计计时器,将软、硬件有机地结合起来。其中软件系统采用C语言编写程序,包括显示程序,加1计数程序,延时程序,按键消抖程序等,并在WAVE中调试运行,硬件系统利用PROTE
10、US强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。 单片机 外围 电路 电源 电路 显示电路 键盘电路 图1 系统电路原理2.4硬件电路设计本系统中,硬件电路主要有电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等(1)单片机简介本系统设计采用C51系列单片机。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容(由于在微机原理中学过C-51的具体知识,这里不再详细说明)。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,
11、ATMEL的AT89C51是一种高效的微控制器。(2)电源电路电源电路是系统最基本的部分,任何电路都离不开电源部分,由于三端集成稳压器件所组成的稳压电源线路简单,性能稳定,工作可靠,调整方便,已逐渐取代分立元件,在生产中被广泛采用,由于是小系统,我们采用7809电源提供+5V稳压电压。(3)晶体振荡电路MCS-51单片机内部的振荡电路是一个高增益反相放大器,引线 XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。这里,我们选用51单片机12MHZ的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作
12、用,C1和C2可在20-100PF之间取,这里取30P,接线时要使晶体振荡器X1尽可能接近单片机。 图2 晶体振荡电路(4)复位电路采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使用使RST持续一段时间的高电平,从而实现上电加开关复位的操作。这不仅能使单片机复位,而且还能使单片机的外围芯片也同时复位。当程序出现错误时,可以随时使电路复位。电路图如下:图3 复位电路(5)显示电路显示电路既可以选用液晶显示器,也可以选用数码管显示。我们采用的是数码管显示电路。用2个共阳极LED显示,LED是七段式显示器,内部有7个条形发光二极管和1
13、个小圆点发光二极管组成,根据各管的亮暗组合成字符。在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。在设计中,我们采用LED动态显示,用P0口驱动显示。由于P0口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。电路图如下所示:图4 显示电路(6)键盘电路在按键电路中,我们可以在I/O口上直接接按键,或者通过I/O口设计一个键盘,然后通过键盘扫描程序判断是否有键按下等。键盘扫描电路节省I/O口,但编程有些复杂,在这里,由于我们所用的按键较少,且系统是一个小系统,有足够的I/O口可以使用,
14、为了使程序简化,我们采用按键电路,用部分P1口做开关,P1.1为开始停止,P1.0为清零,用外中断INT1开始,另外用软件法消除抖动。电路图如下所示:图5 键盘电路2.5硬件主电路图设计用pretues画出其硬件主电路图如下:第三章 软件设计3.1软件设计概述在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。应用系统的程序由包含多个模块的主程序和各种子程序组成。各程序模块都要完成一个明确的任务,实现某个具体的功能,如:
15、加计数延时,计数和显示等,在具体需要时调用相应的模块即可。功能描述:用2位LED数码显示秒表,显示时间为0099秒,每秒自动加1;一个开始暂停键,一个清零键。3.2主程序流程图这里采用顺序结构,通过对按键的扫描,判断要实现什么功能。如下所示:开始初始化P1.1=0?开始计数P1.1=0?停止计数P1.0=0?清零继续计数计数为99?YYNYNY3.3程序中各函数设计(1)初始化函数设计void init() TMOD=0x10; /定时器1工作方式1 TH1=0xd8; TL1=0xf0; /延时初始化设置/ TR1=1; EA=1; /开总开关 ET1=1; /开定时器(2)显示函数设计vo
16、id writeled(uchar num,uchar addr) /关显示 P2=0xff; /送数据 P0=dulatabnum; /开显示 P2=welatabaddr; delay(4); void display(uchar sec) uchar sech,secl;sech=sec/10; secl=sec%10; writeled(sech,0); writeled(secl,1);(3)按键函数设计void keyscan() if(start=0) delay(2); if(start=0) TR1=TR1; while(start=0) display(sec); if(s
17、top=0&TR1=0) delay(2); if(stop=0) sec=0; while(stop=0) display(sec); (4)延时函数设计void delay(uchar time) /延时 uchar i,j; for(i=0;itime;i+) for(j=0;j110;j+); 3.4 C语言主程序设计主程序如下:#include #define uchar unsigned charsbit start=P11;sbit stop=P10;uchar code dulatab=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,
18、0x6f,0x40; /数字编码0-9uchar code welatab=0xfe,0xfd;/位控制字uchar msec,sec;void delay(uchar time) /延时 uchar i,j; for(i=0;itime;i+) for(j=0;j110;j+); void writeled(uchar num,uchar addr) /关显示 P2=0xff; /送数据 P0=dulatabnum; /开显示 P2=welatabaddr; delay(4); void display(uchar sec) uchar sech,secl;sech=sec/10; secl
19、=sec%10;writeled(sech,0);writeled(secl,1);void init() TMOD=0x10; TH1=0xd8; TL1=0xf0;/ TR1=1; EA=1; ET1=1;void keyscan() if(start=0) delay(2); /延时防抖 if(start=0) TR1=TR1; while(start=0) display(sec); if(stop=0&TR1=0) delay(2); /延时防抖 if(stop=0) sec=0; while(stop=0) display(sec); void main() init(); whi
20、le(1) display(sec); keyscan(); void timer1() interrupt 3 TH1=0xd8; TL1=0xf0; msec+; if(msec=100) msec=0; sec+; if(sec=100) sec=0; 第四章 课程设计体会经过三个星期的课程设计,我从最初的一窍不通到现在的深刻理解,我花费了很多的时间和精力,比如重新c语言的书籍和理解一些单片机里以前不太懂的知识,我觉得这些天让我过的很充实,下面是我的一些心得体会:1、将学习的理论知识通过实验融会贯通,让我对它的理解更加深刻。对程序的编译过程了解透彻。2、本次课程设计以自己设计为主,因此培
21、养了学习的积极性,让我能够独立去分析问题、发现问题、解决问题,更增强我与老师同学交流沟通和合作完成任务的能力。3、由于这次课程设计不仅设计编程方面的知识,还涉及了其它学科的知识,例如PROTEUS和WAVE等的基本知识。程序是用C语言来编写的,这次课程设计让我在编程能力方面得到了提高。4、由于水平有限,实验程序运行有一定的限制,望见谅。总之,通过这次课程设计,不仅加深了我对单片机理论方面的理解,将理论更好的运用的实践方面,而且锻炼了我们各方面的能力,培养了坚强的毅力和做事的耐心和细心,认识合作的重要性,虽然程序可能有一定的浪费资源,且较罗嗦,但这需要在实践中慢慢提高,还希望老师能够多多指导,促进我不断的进步。在此感谢那些帮助过我的老师和同学们!参考文献1 余发山主编.单片机原理及应用技术.徐州:中国矿业大学出版社.20032 杨凌霄编著.微型计算机原理及应用.徐州:中国矿业大学出版社,20043 李群芳主编.单片机原理、接口及应用.北京:清华大学出版社,20054 杨路明主编.C语言程序设计.北京:北京邮电大学出版社,2005 15
限制150内