数字钟基于51单片机语言设计_第1页
数字钟基于51单片机语言设计_第2页
数字钟基于51单片机语言设计_第3页
数字钟基于51单片机语言设计_第4页
数字钟基于51单片机语言设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、51单片机数字时钟课程设计报告专 业:电气工程及自动化 班 级:13电气四姓 名: 黄海伦 指导教师: 周永宁 宁波职业技术学院二一五年十二月二十八日目 录前言····································

2、3;·············摘要····································&#

3、183;·············一、单片机数字时钟设计的概述···························11.1设计目的·····

4、3;······································11.2题目描述··········&#

5、183;·································11.3单片机基础知识··············

6、83;·······················11.4 MCS-51单片机介绍及分类·······················&#

7、183;·····31.5数字钟基本原理······································3二、单片机数字时钟的硬件系统··

8、·························42.1单片机最小系统的电路原理······················&#

9、183;·····42.2 MCS-51单片机AT89C51芯片介绍·······················52.2.1 AT89C51芯片引脚功能介绍·············

10、83;········52.2.2 AT89C51芯片的内存结构························62.2.3复位电路············&#

11、183;·························82.2.4时钟震荡电路······················&#

12、183;···········92.3七段数码管的引脚图及使用···························102.4 驱动器74LS245芯片·····

13、3;···························11三、单片机数字时钟的程序设计····················

14、·······123.1系统开发环境、C语言······························123.1.1系统开发环境········&#

15、183;························123.1.2 C语言·······················

16、83;·············123.2数字时钟设计的思路及流程···························143.2.1主程序·····

17、··································143.2.2定时中断(走时)子程序流程············

18、3;······153.2.3按键调试子程序·······························163.3定时器、计数器功能········

19、·························163.4中断系统功能·······················&

20、#183;···············18四、数字时钟系统的仿真及运行··························194.1 WAVE6000仿真软件介绍··&

21、#183;···························194.2 数字时钟源程序····················

22、·············24五、心得体会···································

23、3;······28前 言随着生活水平的提高,人们越来越追求人性化的事物,传统的时钟已不能满足人们的需求。现代的数字钟不仅需要数字电路技术而且需要模拟电路技术和单片机技术,增加了数字钟的功能。其电路可以由实时时钟模块、环境温度检测模块、人机接口模块、报警模块等部分组成。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的

24、使用。数字钟是采用数字电路实现对、时、分、秒,数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。摘 要近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片

25、机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。本次设计中以单片机的发展过程和发展方向为背景,介绍了单片机的输入输出的工作原理和操作方法,中断的工作原理和操作方法,74LS245驱动器的工作原理和与LED连接的方法。本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED数码显示器、驱动器74LS245

26、等),再配以相应的软件,是它具有时,分,秒显示的功能,并且时,分,秒还可以调整。此次设计电子数字钟是为了了解电子数字钟的原理,从而学会制作电子数字钟。而且通过电子数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。通过它可以进一步学习与掌握单片机原理与使用方法。关键词:单片机 AT89C51 共阴极LED数码显示器 74LS245译码器一、单片机数字时钟设计的概述1.1设计目的1、利用所学过的知识,初步分析单片计算机控制系统的能力;2、利用单片机定时器制作数字时钟并可以实现时钟的控制;3、综合运用本专业方向所学知识,构成以单片机为核心控制系统的能力;4、单片计算机控制系

27、统实时软件的设计、 编制与调试的能力;5、单片计算机控制系统中模拟部件以及常规传感部件的使用、调试的能力;6、掌握数码管动态显示方法。7、学习AT89C51芯片管脚及其功能。8、单片计算机控制系统综合调整及性能测试的能力;9、实验结果分析、总结及撰写技术报告的能力。1.2题目描述1、掌握单片机最小系统的电路原理图;2、熟知单片机的工作原理;3、小组共同编辑、编译软件;4、调试要求:(1)数码管显示当前的时间值;(2)时间精度为1秒,由秒个位数码管变化体现;(3)闪烁显示时钟;(4)调试数字时钟;(5)四个按钮,K1用作“秒”的设定;K2用作“分”的设定;K3用作“时”的设定;K4用作复位设定;

28、1.3单片机基础知识所谓单片机,通俗的来讲,就是把中央处理器CPU(Central Processing Unit),存储器(memory),定时器,I/O(Input/Output)接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机。单片机又称为“微控制器MCU”。中文“单片机”的称呼是由英文名称“Single Chip Microcomputer”直接翻译而来的。单片机的主要分类:1、按应用领域可分为:家电类,工控类,通信类,个人信息终端类等等;2、按通用性可分为:通用型和专用型。通用型单片机的主要特点是:内部资源比较丰富,性能全面,而且通用性强,可履盖多种应用要求。所

29、谓资源丰富就是指功能强。性能全面通用性强就是指可以应用在非常广泛的领域。通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应用程序就可完成不同的功能。小到家用电器仪器仪表,大到机器设备和整套生产线都可用单片机来实现自动化控制。专用型单片机的主要特点是:针对某一种产品或某一种控制应用而专门设计的,设计时已使结构最简,软硬件应用最优,可靠性及应用成本最佳。专用型单片机用途比较专一,出厂时程序已经一次性固化好,不能再修该的单片机。例如电子表里的单片机就是其中的一种。其生产成本很低。在我们的这个网上课堂中,介绍的是MCS-51系列单片机,MCS-51单片机也是一种通用单片机,其结构及原理对所有的

30、单片机都适用。3、按总线结构可分为总线型和非总线型。如我们常常见到的89C51单片机就是总线结构,在后面讲解单片机的内部结构时,我们就可以看到,89C51单片机内部有数据总线,地址总线,还有控制总线(WR,RD,EA,ALE等)。89C2051单片机,就是一种非总线型的。其外部的引脚很少,可使成本降低。(1)单片机特点:1)受集成度限制,片内存储器容量较小,一般内ROM:8KB以下;2)内RAM:256KB以内;3)可靠性高;4)易扩展;5)控制功能强;6)易于开发。(2)单片机的发展过程:1971年intel 公司研制出世界上第一个4位的微处理器;1973年intel 公司研制出8位的微处理

31、器8080;1976年intel 公司研制出MCS-48系列8位的单片机,这也是单片机的问世。80年代初,intel 公司在MCS-48单片机基础上,推出了MCS-51单片机。1.4MCS-51单片机介绍及分类MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以80

32、51为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。以后我们将用89C51、89S51来完成一系列的实验。MCS-51系列单片机分为两大系列,即51子系列与52子系列。51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951。52子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952。这两大系列单片机的主要硬件特性如 表1:片内ROM模式ROM大小RAM大小寻址范围I/O特性中断源数量无ROMEPROM计数器并行口8031805

33、187514KB128B64KB2*164*8580C3180C5187C514KB128B64KB2*164*858032805287528KB256B64KB3*164*8680C3280C5287C528KB256B64KB3*164*86上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。51系列的中断源为5个,52系列的中断源为6个。1.5数字钟基本原理它是利用单片机的内部的定时/计数器工作与定

34、时方式,对机器周期计数形成基准时间(如10ms)然后用另外一个计数器或软件计数的形式对基准时间进行计数形成秒(如对10ms计数100次),“秒”计数60次形成“分”,“分”计数60次形成“时”,“时”计数24次形成“天”并清零,然后通过译码器,数码管把他们的内容在相应的位置显示出来。在具体的设计时定时器采用中断方式工作,对时钟的形成在终中断序中实现,在主程序只是对定时/计数器的定义初始化,调用显示程序和控制程序的初始化。另外为了使用的方便,也设计了按键,可以通过按键对时分秒进行调整,这样程序就加了按键程序。二、单片机数字时钟的硬件系统2.1单片机最小系统的电路原理51单片机最小系统复位电路的极

35、性电容C1的大小直接影响单片机的复位时间,一般采用1030uF,51单片机最小系统容值越大需要的复位时间越短。晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。起振电容C2、C3一般采用1533pF,并且电容离晶振越近越好,晶振离单片机越近越好。P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。设置为计

36、数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 ms。 2.2 MCS-51单片机AT89C51芯片介绍2.2.1单片机AT89C51引脚功能介绍根据初步设计方案的分析,设计一个数字时钟的应用系统,以MCS-51系列单片机AT89C51芯

37、片为基础,它将CPU、RAM、ROM、定时器/计数器和多功能部件集成在一块芯片上,在我国应用非常广泛。AT89C51芯片是40引脚双列直插式封装芯片,如下图。其中有些管脚具有两种功能。这40根引脚中包括电源引脚2根、外接晶振引脚2根、IO引脚32根、控制信号引脚4根。1、电源类引脚VCC(40脚):接+5 V电源正端。 VSS(20脚):接地端。2、时钟类引脚XTAL1(19脚) 和XTAL2(18脚):接外部石英晶体的一端。P0口(3932脚):P0.0P0.7统称为P0口。P1口(18脚):P1.0P1.7统称为P1口,可作为准双向I/O口使用。P2口(2128脚):P2.0P2

38、.7统称为P2口,一般可作为准双向I/O口使用。P3口(1017脚):P3.0P3.7统称为P3口。表3 P3.0口的第二功能:口线功能描述P3.0RXD (串行数据输入线)P3.1TXD (串行数据输出线)P3.2INT0 (外部中断0输入引脚)P3.3INT1 (外部中断1输入引脚)P3.4 T0 (定时器/计数器0的外部输入引脚)P3.5 T1 定时器/计数器0的外部输入引脚)P3.6 WR(外部数据存储器写选通信号引脚)P3.7 RD(外部数据存储器读选通信号引脚)3、控制引脚RST/VPP(9脚):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。 LE/PROG(30脚):地

39、址锁存允许信号。PSEN(29角):外部存储器读选通信号。EA/Vpp(31角):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。2.2.2 AT89C51芯片的内存结构MCS-51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:1、中央处理器中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操

40、作。2、数据存储器(RAM)AT89C51芯片内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。3、程序存储器(ROM)单片机内部的程序寄存器一般为1K64K字节,通常是只读存储器,因为单片机应用系统大多数是专用系统,一旦研制成功,其软件也就定性,程序固化到只读存储器,用只读存储器作为程序存储器,掉电以后程序不会丢失从而提高系统的可靠性;另外,只读存储器集成度高、成本低。根据单片机内部程序存储器000H0

41、FFFH程序存储器0FFFH0000H60KB外部ROM64KB外部RAM4KB内部EA=14KB外部EA=0专用寄存器内部RAMFFFFH1000H0FFFH0000HFFH80H7FH00H内部数据存储器 外部数据存储器图4 AT89C51芯片程序存储器结构类型的不同有可分为下列产品:(1)ROM行单片机:内部具有工厂掩膜变成的只读程序储存器ROM。这种单片机是定制的,用户是不能修改ROM中代码的。(2)EPROM型单片机:内部具有EPROM型程序存储器,对于有窗口的EPROM型单片机,可以通过紫外线擦除器擦除EPROM中的程序,用编程工具把新的程序代码写入EPROM,且可以反复擦除和写入

42、。(3)FLASH Memory型单片机:内部含有FLASH Memory型程序存储器,用户可以用编程器对FLASH Memory存储器快速整体擦除和逐个字节写入,这种单片机价格也低、使用方便,是目前最流行的单片机。4、定时/计数器1)定时器方式寄存器:TMOD2)定时器控制寄存器:TCON3)计数寄存器:TH0、TL0;TH1、TL1。可用于设定计数初值。5、并行输入输出(I/O)口:单片机有32个I/O口,P0,P1,P2,P3口。单片机是一种数字芯片,对于单片机的操作,从某种意义上讲就是对单片机I/O口进行操作,使其按程序规定输出高低电平或者检测I/O口电平,51单片机采用的是TTL电平

43、,规定高电平为+5V,低电平为0V。2.2.3复位电路单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。1、手动按钮复位手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的

44、电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。2、上电复位AT89C51芯片的上电复位电路,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至22F。上电复位的工作过程是在加电时,复位电路通过电 容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,Vcc的上升时间约为10ms,而振荡

45、器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在上图的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。2.2.4时钟震荡电路1、时钟电路单片机要不断的从程序存储器中取出指令并执行,这些执行步骤是按节拍进行的,时钟电路就是提供CPU运行节拍的电路。AT8

46、9C51的时钟电路可以由内部或外部两种方式产生。AT89C51内部具有一个振荡电路,内部方式就是利用该电路在XTAL.1和XTAL.2两引脚之间外接晶振和电容C1、C2构成并联谐振电路,使内部震荡产生自激振荡如图所示。晶振频率可选择1.2-10MHZ,电容可选则15-100PF,以对时钟频率起微调作用。2、CPU时序的周期单位通过之中振荡电路,单片机的每一步工作都按照一定的节拍进行,步调得到同意.描述MCS-51系列单片机的时序单位有4中,即时钟周期.状态周期,机器周期和指令周期。时钟周期P:既振荡周期,是MCS-51系列单片机的最小时序单位.例如:若时钟频率F=12MHZ,则时钟周期=1/F

47、=0.0833us。状态周期S:连续两个振荡周期为一个状态周期。机器周期:单片机完成某种基本操作的时间称为机器周期。一个机器周期由6个状态周期(12个振荡周期)构成。指令周期:执行一条指令所需要的时间。MCS-51的指令周期一般需要1或2个机器周期,乘,除法指令为4个机器周期。若采用上例钟12MHZ的晶振,则执行一条指令相应地需要1us,2us或4us。晶振频率越高,指令执行的速度越快。2.3七段数码管的引脚图及使用数码管使用条件:a、段及小数点上加限流电阻。b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定。c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流

48、4-5mA 峰值电流 100mA。上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。  LED数码管根据LED的接法不同分为共阴和共阳两类,右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"

49、和"c"段发光,此时,数码管显示将显示数字“1”。而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同。表4: 数码管显示01234567893FH06H5BH4FH66H6DH7DH07H7FH6FH2.4 驱动器74LS245芯片74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当805

50、1单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端CE低电平有效时,DIR(AB/BA)=“0”,信号由 B 向 A 传输(接收);DIR=“1”,信号由 A 向 B 传输(发送);当CE为高电平时,A、B均为高阻态。由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1D1),其它时间处于输出(P0.1D1)。三、单片机数字时钟的程序

51、设计3.1系统开发环境、C语言3.1.1系统开发环境单片机的应用首先要考虑的是它的开发平台,也即我们常说的开发环境。由于INTEL公司的MCS-51系列较早进入我国,事实上已形成了工业标准,MCS-51的单片机应用场合随处可见,它的软件资源相当丰富,硬件的支持也很完善,价廉物美的开发器材随处可取。现阶段,国内的大部分单片机开发工程技术人员还是普遍使用汇编语言编写程序。汇编语言有其缺陷性,但它编写的代码最小,最直接,效率也最高,所以还深得用户接受。但是,它有着固有的缺陷,必须十分了解所用单片机的硬件结构,程序编写困难,代码难以理解,不易于识读,难于移植,排错困难,编写程序花的时间相当多,调试不便

52、等等。随着国内单片机开发环境的完善,开发技术水平不断提高,现在已有相当的开发器材支持高级语言的使用和调试,为单片机的开发应用提供了更好的物质条件。高级语言(如C语言)具有开发周期短,易于识读,容易移植,也便于初学着掌握。诚然,高级语言也有它不足之处,就是高级语言产生的代码过长,对于早期单片机不大的ROM来说,可是非常突出的矛盾,另外它的运行速度太慢,对于本来主频不高的单片机是致命的弱点。但现在这方面的研制工作也取得了较大的进展,高级语言的弱点也已被较大的克服,象MCS-51上的C语言的代码长度,如果未加上人工优化条件,也可做到最优汇编程序水平的120%150%,这也相当可观了。可以说相当于中等

53、汇编程序员的水平。3.1.2 C语言C语言是目前世界上流行、使用最广泛的高级程序设计语言。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。C语言常用的编译软件有:MicrosoftVisualC+,BorlandC+,WatcomC+,BorlandC+,BorlandC+Builder,BorlandC+3.1forDOS,WatcomC+11.0forDOS,GNUDJGPPC+,Lccwi

54、n32CCompiler3.1,MicrosoftC,HighC,等等.C语言的发展历史C语言的发展颇为有趣。它的原型ALGOL60语言。1963年,剑桥大学将ALGOL60语言发展成为CPL(CombinedProgrammingLanguage)语言。1967年,剑桥大学的MatinRichards对CPL语言进行了简化,于是产生了BCPL语言。1970年,美国贝尔实验室的KenThompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的

55、D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BGPL的第二个字母作为这种语言的名字,这就是C语言。为了使UNIX操作系统推广,1977年DennisM.Ritchie发表了不依赖于具体机器系统的C语言编译文本可移植的C语言编译程序。1978年BrianW.Kernighian和DennisM.Ritchie出版了名著TheCProgrammingLanguage,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。1988年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准

56、研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准3.C语言的主要特点。C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASEPLUS、DBASE都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,象PC-DOS、WORDSTAR等就是用这种方法编写的。 1、C语言的特点1.简洁紧凑、灵活方便C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单

57、元。2.运算符丰富C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。3.数据结构丰富C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。4.C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序

58、层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。5.C语法限制不太严格、程序设计自由度大一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。6.C语言允许直接访问物理地址,可以直接对硬件进行操作因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。7.C语言程序生成代码质量高,程序执行效率高一般只比汇编程序生成的目标代码效率低1020%。8.C语言适用范围

59、大,可移植性好C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。 3.2数字时钟设计的思路及流程3.2.1主程序主程序是先开始,系统初始化、定时器初始化,脉冲基时开始跑秒后进行按键检测。若没有按键设置,显示当前时间;若有按钮按下,按键调时,检测完后,时间设置完成?系统初始化定时器初始化启动脉冲跑秒是否按设置键?按钮设置时间图1 主程序流程图时加1显示当前时间时加1时加1就可以显示更新后的时间。3.2.2定时中断(走时)子程序流程定时器中断时,先检测50ms脉冲是否计数20次,计数到20次,秒就加1;如果没计满60,就返回显示时间,如果秒计满60秒,就清零秒,给

60、分加1;检测分钟,如果没计满60,继续计时,返回显示时间,如果满60,就清零分钟,给小时加1;检测小时,如果没计满24,就继续计时,返回显示时间,如果计满24,就清零,给秒加1,显示时间。脉冲溢满20?秒+1=60?分+1=60?分清零,时加1时+1=24?时清零中断返回图2定时中断(走时)子程序流程图秒清零,分加1秒加1定时中断口3.2.3按键调时子程序:按键调试程序,是检测是否有按键按下:(1)如果秒按键按下,就给秒加1;(2)如果分按键按下,就给分加1;(3)如果小时按键按下,就给小时加1;(4)如果没有按键按下,时钟就显示当前时间。秒加1分加1时加1图3按键调时子程序流程图启动脉冲跑秒

61、是否有按键按下?显示当前时间秒按键按下?分按键按下?时按键按下?显示更新后时间3.3定时器、计数器功能3.3.1定时器/计数器的结构从下面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外

62、TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。3.3.2定时计数器的原理 16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:T=1/(12×106)Hz×1/12=1s这是最短的定时周期。

63、若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳变需要两个机器周期,故外部事年的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数

64、脉冲的高电平与低电平保持时间均需在一个机器周期以上。3.4中断系统功能CPU暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序, 叫做中断。 MCS-51单片机的中断系统简单实用,其基本特点是:有5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储器中各有固定的中断入口地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形成中断嵌套;2个特殊功能寄存器用于中断控制和条件设置的编程。5个中断源的符号、名称及产生的条件如下。INT0:外部中断0,由P32端口线引入,低电平或下跳沿引起。INT1:外部中断1,由P33端口线引入,

65、低电平或下跳沿引起。T0:定时器计数器0中断,由T0计满回零引起。T1:定时器计数器l中断,由T1计满回零引起。TIRI:串行IO中断,串行端口完成一帧字符发送接收后引起。(1)外部中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在内部的TCON中有四位是与外中断有关的。MCS-51 的中断系统 IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),

66、在CPU响应中断后,由硬件将IE0清0。中断系统的结构如下图:IT1、IE1的用途和IT0、IE0相同。(2)内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。四、数字时钟系统运行及仿真4.1 WAVE6000仿真软件介绍1、单片机仿真功能在线仿真时,开发系统应能将在线仿真器中的单片机完整地出借给目标系统,不占用目标系统单片机的任何资源,使目标系统在联机仿真和脱机运行时的环境(工作程序、使用的资源和地址空间)完全一致,实现完全的一次性仿真。单片机的资源包括:片上的CPU、RAM、SFR、定时器

67、、中断源、I/O口以及外部可扩充的程序存储器和数据存储器地址空间。这些资源应允许目标系统充分自由地使用,不应受到任何限制,使目标系统能根据单片机固有的资源特性进行硬件和软件的设计。2、模拟功能在开发目标系统的过程中,单片机的开发系统允许用户使用它内部的RAM存储器和输入输出来替代目标系统中的ROM程序存储器、RAM数据存储器和输入输出,使用户在目标系统样机还未完全配置好以前,便可以借用开发系统提供的资源进行软件的开发。在研制目标系统开始的初级阶段,目标程序还未生成,此时用户编写的程序必须存放在开发系统RAM存储器内,以便于对程序进行调试和修改。开发系统所能出借的可作为目标系统程序存储器的RAM

68、,我们常称之为仿真RAM,开发系统中仿真RAM容量和地址映射应和目标机系统完全一致。3、调试功能开发系统对目标系统软、硬件的调试功能强弱,将直接关系到开发的效率。性能优良的单片机开发系统应具有下列调试功能:(1)运行控制功能开发系统应能使用户有效地控制目标程序的运行,以便检查程序运行的结果,对存在的硬件故障和软件错误进行定位。1)单步运行:能使CPU从任意的程序地址开始执行一条指令后停止运行。2)断点运行:允许用户任意设置断点条件,启动CPU从规定地址开始运行后,当碰到断点条件(程序地址和指定断点地址符合或者CPU访问到指定的数据存储器单元等条件)符合以后停止运行。3)全速运行:能使CPU从指

69、定地址开始连续地全速运行目标程序。4)跟踪运行:类似单步运行过程,但可以跟踪到子程序中运行。(2)目标系统状态的读出修改功能当CPU停止执行目标系统的程序后,允许用户方便地读出或修改目标系统资源的状态,以便检查程序运行的结果、设置断点条件以及设置程序的初始参数。可供用户读出/修改的目标系统资源包括:1)程序存储器(开发系统中的仿真RAM存储器或目标机中的程序存储器);2)单片机中片内资源(工作寄存器、特殊功能寄存器、I/O口、RAM数据存储器、位单元);3)系统中扩展的数据存储器、I/O口。(3)跟踪功能高性能的单片机开发系统具有逻辑分析仪的功能,在目标程序运行过程中,能跟踪存储目标系统总线上

70、的地址、数据和控制信号的状态变化,跟踪存储器能同步地记录总线上的信息,用户可以根据需要显示跟踪存储器搜集到的信息,也可以显示某一位总线状态变化的波形。使用户掌握总线上状态变化的过程,对各种故障的定位特别有用,可大大提高工作效率。4.2.数字时钟源程序#include<reg52.h>#include<intrins.h>/#include<math.h>#define uchar unsigned char #define uint unsigned intsbit LED = P20;sbit StopLED = P21;code uchar pdat= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uint timer = 0; /系统时钟uch

温馨提示

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

评论

0/150

提交评论