单片机温度控制系统毕业论文.doc
编号 淮安信息职业技术学院毕业论文题 目基于单片机的温度控制系统的设计学生姓名仝鹏学 号42011710系 部电气工程专 业机电一体化班 级420117指导教师龚希宾 顾问教师张守峰二三年十月摘 要温度是一种最基本的环境参数,人们生活与环境温度息息相关,在工业生产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因此研究温度的测量方法和控制具有重要的意义。本论文介绍了一种以单片机为主要控制器件,以DS18B20为温度传感器的新型数字温度计。主要包括硬件电路的设计和系统程序的设计。硬件电路主要包括主控制器,测温控制电路和显示电路等,主控制器采用单片机AT89C51,温度传感器采用美国DALLAS半导体公司生产的DS18B20,显示电路采用8位共阳极LED数码管,ULN2803A为驱动的动态扫描直读显示。测温控制电路由温度传感器和预置温度值比较报警电路组成,当实际测量温度值大于预置温度值时,发出报警信号,即发光二极管亮。系统程序主要包括主程序,测温子程序和显示子程序等。DS18B20新型单总线数字温度传感器是DALLAS 公司生产的单线数字温度传感器, 集温度测量和 A /D转换于一体 ,直接输出数字量,具有接口简单、精度高、抗干扰能力强、工作稳定可靠等特点。系统程序的设计主要包括Proteus ISIS仿真软件及Keil uVision2仿真软件的使用。Proteus软件是一款强大的单片机仿真软件,对于单片机学习和开发帮助极大。Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和数字集成电路,包括单片机。Keil uVision2是德国Keil公司开发的基于Windows平台的单片机集成开发环境,它包含一个高效的编译器、一个项目管理器和一个MAKE工具。其中Keil C51是一种专门为单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储器空间极小,完全可以与汇编语言媲美。由于采用了改进型智能温度传感器DS18B20作为检测元件,与传统的温度计相比,本数字温度计减少了外部的硬件电路,具有低成本和易使用的特点。DS18B20温度计还可以在高温报警、远距离多点测温控制等方面进行应用开发,具有很好的发展前景。此外,还介绍了系统的调试和性能分析。关键词:AT89C51, DS18B20 , Proteus ISIS, Keil uVision2 目 录摘 要I第一章 绪论1第二章设计任务及方案分析22.1设计任务及要求22.2 设计总体方案及方案论证22.3 温度测量的方案与分析2第三章芯片功能及软件简介43.1 AT89C51芯片简介43.2 DS18B20的功能简介63.3 KEIL UVISION2 的使用63.4 PROTEUS ISIS仿真软件的使用6第四章系统硬件电路的设计124.1 主控制电路和测温控制电路原理图124.2 驱动电路模块原理图124.3 显示模块原理图13第五章软件编程调试及性能分析155.1 主程序流程图155.2 主程序155.3 温度子程序175.4显示子程序225.5程序调试225.6调试性能分析和注意事项23第六章 总结与展望25致 谢26参考文献27附录29第一章 绪论日常生活及工农业生产中经常要用到温度的检测及控制,在冶金、食品加工、化工等工业生产过程中,广泛使用的各种加热炉、热处理炉、反应炉等,都要求对温度进行严格控制。在日常生活中,电烤箱、微波炉、电热水器、烘干箱等电器也需要进行温度检测与控制。传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。而采用单片机对温度进行控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温度控制的技术指标。测量温度的关键是温度传感器,温度传感器正从模拟式向数字式、从集成化向智能化、网络化的方向发展。在测温电路中,可以使用热敏电阻之类的器件利用其感温效应,将随被测温度变化的电压或电流采集过来,先进行A/D转换,然后用单片机进行数据的处理,再在显示电路上,将被测温度显示出来。这种设计需要用到A/D转换电路,因此感温电路的设计比较复杂。进而想到采用智能温度传感器来设计数字温度计。本数字温度计的设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,其温度值可以直接被读出来,通过核心器件单片机AT89C52控制温度的读写和显示,用LED数码管显示。测温范围为55125,最大分辨率可达0.0625。而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 按照系统设计功能的要求,确定系统有5个模块组成:主控制器、温度传感器DS18B20、报警电路、按键预置温度值电路及显示电路。控制器使用AT89C52,温度传感器使用DS18B20,用8位共阳极LED数码管以动态扫描法实现温度显示。系统程序主要包括主程序、温度控制子程序及显示子程序等等。综上所述,本设计以智能集成温度传感器DS18B20为例,介绍基于DS18B20传感器的数字温度计的设计,该设计适用于人们的日常生活及工农业生产中用于温度的检测及控制。第二章.设计任务及方案分析2.1设计任务及要求设计一个以单片机为核心的温度测量系统,可实现的功能为:(1)测量温度值精度为±1。(2)系统允许的误差范围为1以内。(3)系统可由用户预设温度值,测温范围为55125。(4)超出预置值时系统会自动报警,即发光二极管亮。(5)系统具有数码显示功能,能实时显示设定温度值和测得的实际温度值。2.2 设计总体方案及方案论证在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元件有热电偶和热点阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。 本数字温度计设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进智能温度传感器DS18B20作为检测元件,测温范围为55125,最大分辨率可达0.0625。DS18B20可以直接读出被测量的温度值,而采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 按照系统设计功能的要求,确定系统由5个模块组成:主控制器AT89C52,温度传感器DS18B20,报警电路,按键电路及驱动显示电路。数字温度计总体电路框图如图1-1所示。2.3 温度测量的方案与分析1芯片选择本设计的测温系统采用芯片DS18B20, DS18B20是DALLAS公司的最新单线数字温度传感器,它的体积更小、适用电压更宽、更经济,DS18B20是世界上第一片支持“一线总线”接口的温度传感器,具有一线总线独特而且经济的特点。采用智能温度传感器DS18B20作为检测元件,测温范围为55125,最大分辨率可达0.0625。DS18B20可以直接读出被测量的温度值,而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。2实现方法简介:DS18B20采用外接电源方式工作,一线测温的一线与AT89C52的P3.7连接并加上上拉电阻使其工作,测出的数据存放在寄存器10H-12H中,将数据经过BCD码转换后送LED显示。具体实现步骤见软件设计章节。主控制器AT89C52驱动显示电路按键电路报警电路DS18B20图1-1 总体电路框图3测温流程图:初始化跳过ROM匹配数码管显示温度变换读暂存器 转换成显示码延时1S跳过ROM匹配图1-2 测温流程图第三章.芯片功能简介3.1 AT89C51芯片简介AT89C51是美国ATMEL公司生产的低电平,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM ),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,32个可编程I/O口线, 3个16位定时/计数器, 低功耗空闲和掉电模式。功能强大的AT89C52单片机适合于许多较为复杂控制应用场合。引脚功能说明如下:(1)VCC:电源电压(2)GND:地(3) P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复位,在访问期间激活内部上拉电阻。(4)P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTE逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ILL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P 1.0/T2)和输入(P 1.1/T2EX ),参见表2-1。 Flash编程和程序校验期间,P1接收低8位地址。表2-1 P1.0和P1.1的第二功能引 脚 号 功能特性P1.0T2(定时/计数器2外部计数脉冲输入),时钟输出P1.1T2EX(定时/计数2捕获/重装载触发和方向控制)(5)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ILL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX RI指令)时,P2口输出P2锁存器的内容。(6)P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(ILL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2-2所示。(7)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。表2-2 P3口的第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外中断0)P3.3(外中断1)P3.4T0(定时/计数0)P3.5T1(定时/计数1)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)(8)/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH ) 。端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存端状态。如端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VCC 。(9)XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。(10)XTAL2:振荡器反相放大器的输出端。(11)数据存储器:AT89C52有256个字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128。字节的RAM和特殊功能寄存器的地址是相同的,但在物理上它们是分开的。当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128字节。RAM还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。(12)中断:AT89C52共有6个中断向量:两个外中断(INT0和INT1),3个定时器中断(定时器0, 1, 2)和串行口中断。(13)时钟振荡器: AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图2-1(a)图所示。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路,对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF士10pF,而如果使用陶瓷谐振器,建议选择40pF士l0pF。用户也可以采用外部时钟。采用外部时钟的电路如图2-1(b)图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。 (a)内部振荡电路 (b)外部振荡电路图2-1 振荡电路由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。3.2 DS18B20的功能简介 l DS18B20的性能指标l (1)只需一根口线与MCU连接,无需外部原件。l 由总线提供电源,或专线供电。l 测温范围为-55摄氏度至+125摄氏度。l 9到12位温度读数。l 温度转换时间为200ms。l 用户自行设定温度报警上下限,掉电后数据有效。l 可识别并寻址系统中温度超限报警的DS18B20,l DS18B20的电源及工作方式l DS18B20的供电方式,DS18B20有两种工作方式,一种是外部供电方式即从VCC引脚供电,GND接地,另一种是寄生电源供电方式,直接从DQ端上获得电源,当DQ为高电平是为内部电容充电,当DQ为低电平是电容为DS18B20供电(VCC端必须接地)已确保芯片的稳定性,l DS18B20的测温原理,DS18B20通过内部温度寄存器接收一个受温度系数影响的振荡器输出的脉冲个数直接影响到数字温度数据,温度转化命令执行后,发送读高速暂存器命令(BEh)可将温度数据经单线总线读出,温度数据传输时,低位在先。l 当收到温度转换命令后,DS18B20的内部数字化温度转换器讲温度数据以二进制补吗形式储存到16位快速暂存器中,有效数据位可编程设定为9位,10位,11位,12位,分别对应4种分辨率 :0.5摄氏度 0.25摄氏度 0.125摄氏度 0.0625摄氏度。有效数据最高位为符号位,可表示温度的正负值。高字节的其他高位扩展为符号位;有效数据的第四位表示温度的小数位,DS18B20出厂默认状态为12位。表DS18B20温度值格式表 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0LS Byte22222222 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 MS ByteSSSSS222 l 表 8-2 温度与转换数据的关系+1250000 0111 1101 000007D0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00010191h+10.1250000 0000 1010 001000A2h+0.50000 0000 0000 10000008h00000 0000 0000 0000 0000h-0.51111 1111 1111 1000 FFF8h-10.1251111 1111 0101 1110 FF5Eh-25.06251111 1110 0110 1111 FF6Fh-551111 1100 1001 0000FC90h/上电复位时温度寄存器的值为+85(0000 0101 0101 0000)l 报警信号的应用 。DS18B20 每次执行完温度抓换后,温度值将与储存在TH和TL内的触发值相比较,如果测量的结果大于TH的值或小于TL的值,就会置位内部的报警标志位,在连接多片DS18B20的应用系统中,主机发送报警搜索命令(ECh)时,有置位报警标志位的DS18B20会响应总线主机发回标志位,其他没有置位报警标志位的DS18B20则保持沉默,这样便于主机立即识别DS18B20并读出数据。l 16位的温度寄存器与8位TH或TL寄存器内容进行比较操作时,讲忽略温度寄存器高字节,而TH或TL得最高位对应温度数据的符号位。l DS18B20的结构DS18B201 2 3GND DQ VCCl DS18B20的外部图及引脚意义。序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。l DS18B20的内部结构如图8-2所示。主要由数字器件组成;64位闪速ROM,温度传感器,温度寄存器(告诉暂存RAM与E2PR0M)l 64bit闪速ROM的结构如图8-3所示。每片DS18B20都有唯一的64位长的激光ROM 其中低8位是单线产品(DS18B20代码为28h),后续的48位唯一的序列号,高8位是前56的CRC(循环冗余校验码) 。64位的ROM及其功能控制部分使DS18B20作物idanxian总线器件进行操作,只有满足功能协议后对DS18B20的控制功能才能接受,总线主机必须提供5个ROM命令中的一个且这个名林被成功执行,DS18B20才可接受总线主机的指定功能,即后续提供的6个存储器操作中的一个命令。 64位ROM和单线接 口 高速缓存 存储器 存储器和控制器8位CRC生成器温度传感器 低温触发器TL高温触发器TH配置寄存器电源检测8-28bit 校验CRC48bit 序列号8bit工厂代码Msb lsb msb lsb msb lsb 8-3 DS18B20闪速ROM的存储结构l DS18B20结构废纸寄存器。第04位始终为“1”。第7位始终为“0”第5,6位(R1,R0)决定温度分辨率及时对应的温度转换时间,见表8-3。0R1R011111MSB LSBR1R0测温分辨率最大温度转换时间009-bit93.75ms0110-bit187.5ms1011-bit375ms1112bit750ms表8-3l 存储器。DS18B20 的存储器由一个告诉暂存器RAM和一个永久性电可擦除E2PR0M组成,后则存储高,低温度触发器TH TL和结构配置寄存器的内容。暂存器有助于确保单线通信数据的完整性。数据首先用写暂存器命令(4Eh)读回进行校验;校验之后,再用复制暂存器;写入的数据可以被读,暂存器命令(BEh)读回进行校验;校验之后,再用复制暂存器命令(48h)把数据传送到永久性E2PROM中,这一过程确保了更改存储器是数据的完整性。高速暂存器字节温度低字节LB0温度高字节HB1温度触发高字节TH2温度触发低字节TL3结构配置CONFIG4保留5保留6保留7循环冗余校验码(CRC)8 高速暂存器由8字节存储器组成,如图8-4所示。前两个字节妇女别是测量温度数据的低字节(LSB),高字节(MSB);第3,4字节是TH TL 的复制值,第5字节是结构配置寄存器的复制值,这三个字节数据虽会因普通RAM掉电而失去信息,但每次上电时都会自动从永久性E2PROM中复制数据进行刷新,第6-8字节保留作内部运算用,第9字节是前面8个字节的循环冗余校验码(CRC);循环冗余校验码CRC产生。DS18B20内部64位ROM最高有效字节,是循环冗余校验码CRC,主机可以读出64位ROM的前56位,计算出CRC的值,并把它与存储器在DS18B20内的CRC值进行比较,以决定ROM的数据是否已被主机正确地接收,计算CRC的等效多项式函数为,CRC=X8+X5+X4+1 DS18B20 也利用与上述相同的多项式函数产生一个8位CRC值,并把此值提供给总线主机以证实数据字节的传送。在使用CRC来证实数据传送的每一种情况中,总线主机必须用上述多现实计算出CRC的值,并把计算机所得的值与存储在DS18B20的64位ROM中的最高字节CRC值(ROM读数),或者DS18B20中计算得到CRC值(读暂存器操作时读出的第9字节)进行比较。总线主机根据CRC值的比较来决定是否继续操作。当以上CRC值比较不相符合,DS18B20内部没有电路来阻止命令序列的继续执行。寄存器的所有为被初始化为零。然后从产品系列编码的最低有效位开始,每次一位。当产品系列编码的8位移入后,接着移入序列号。在序列号的第48位进入之后,移位寄存器便包含了CRC值。移入CRC的8位应该使移位寄存器返回为零。l DS18B20D的操作命令l DS18B20经单线接口协议进行存取操作的顺序是:l 初始化(发复位脉冲)ROM功能命令操作存储器功能命令操作数据处理操作。l 初始化。单线总线上的所有传输操作均从初始化序列开始,如图8-6。初始化序列包括总线主机发出复位脉冲,接着由从属器件送出存在脉冲。存在脉冲使总线主机知道DS18B20挂在总线上并准备进行操作。 主机发送复位脉冲 主 机 接 收 480us480<t<960us等待15-60us60-240usl ROM 命令代码及功能。总线主机检测到有DS18B20后,可发送5个8位ROM命令中的一个命令。l 读ROM命令(33h):在单片机DS18B20系统应用中,用该命令可读出其序列号,系列号和CRC;在总线上有多个DS18B20的系统中用该命令,将发生冲突。l 匹配ROM命令(55H);多个DS18B20在线应用时,总线主机在读取64位ROM信息后用该命令寻址指定的DS18B20,只有64位ROM顺序正确匹配的DS18B20才响应此后的存储器操作命令,其他不匹配的从属器件将等待复位脉冲,该命令在单片DS18B20系统应用中也能用。l 跳过ROM命令(cch);在单片DS18B20系统应用中,总线主机发送该命令后直接执行存储器操作,而不需要传输64位ROM信息,这样可以节省存取时间。在总线上有多个DS18B20的系统中用该命令,将发生冲突。l 搜索ROM命令(f0h)系统初始化后,总线主机不知道总线是哪个器件的数目和器件的64位ROM码,利用搜索ROM命令可使总线主机采用消除处理法识别总线上所有从属器件的64位ROM码。l 报警搜索命令(ECh);该命令与搜索ROM命令的流程相同,只有前次温度测量时满足报警条件的DS18B20才响应该命令。报警条件定义为温度高于TH 或低于TL 中的数值,DS18B20上电时报警条件被置位。l 存储器操作命令代码及其含义l 温度转换暂存器命令(44h)启动在线DS18B20进行温度转换。l 写告诉暂存器命令(4Eh)写入高速暂存器命令。从TH 寄存器开始连续写入三个字节,存储到告诉暂存器的2-4单元(TH TL CONFIG ).三个字节都必须在复位操作之前写入。l 读高速暂存器命令;(beh);读取高速暂存器命令。读操作从字节0开始连续读出低位在前,直到读完第9字节。没有读完所有字节时。总线主机发送复位脉冲可终止操作。l 复制高速暂存器命令(48h):将高速暂存器中TH TL CONGIG 三个字节数值复制到EERAM中,保存温度触发器和结构配置的内容不丢失。l 召回EEROM命令(b8h):将EERAM中的TH TL 和CONFIG的数值复制到高速暂存器相应单元中。l 度供电状态命令(b4h) :读出供电模式,“0”为寄生电源;“1”为外部电源。l 5.单线总线的读/写时际l DS18B20采用读/写时际处理数据位(0/1)形成命令字而完成指定的操作。l 写时际。写时际是主机力高数据线后,使数据线从逻辑高电平跳变为逻辑低电平再释放的过程,有写“1”时际和写“0”时际两种,所有写时际操作持续时间至少需要60us且两个写时际周期的间隔时间必须大于1us,如图8-7所示主机写时际“0” 主机写时际“1” 60us >1us 15us DS18B20采样 45us 15us DS18B20采样 45us DS18B20在DQ数据线变低后15-60us之间采样数据线,DQ数据线为高电平既是数据“1”,DQ数据线为低电平既是数据“0:”。主机发送写“1”时际拉低数据线至少1us,再拉高数据线,也也已在15us后拉高数据线然后释放;发送写“0”时际拉低数据线后一直保持低电平60us 在释放。l 读时际。读时际是主机使数据线从逻辑高电平大地为逻辑低电平,持续至少1us后释放数据线,再接收从DS18B20传来的数据位的过陈塘关,读时际的持续时间必须大于60us,且两个读时际操作的回复时间间隔必须大于1us,如图8-8所示。 主机读0时际 1us 主机读1时际 1us15us 主机采样 45us 15us 主机采样 45us DS18B20在读时际数据线下降沿之后15us开始输出有效数据,此时主机必须释放数据线(转为输入状态)。读时际技术后数据线由外部上拉电阻拉回至高电平。MCS51 P1.7100 DS18B20DQ 5.1kVCCGNDGND3.3Keil uVision2仿真软件的使用Keil uVision2 的使用Keil uVision2是目前使用广泛的单片机开发软件,它集成了源程序编辑和程序调试于一体,支持汇编、C、PL/M语言。这里我仅仅介绍Keil uVision2 的简单使用,创建项目实例Vision2包括一个项目管理器,它可以使8x51应用系统的设计变得简单。要创建一个应用,需要按下列步骤进行操作:l 启动Vision2,新建一个项目文件并从器件库中选择一个器件。l 新建一个源文件并把它加入到项目中。l 增加并设置选择的器件的启动代码l 针对目标硬件设置工具选项。l 编译项目并生成可编程PROM的HEX文件。下面将逐步地进行描述,从而指引读者创建一个简单的Vision2项目。1) 选择【Project】/【New Project】选项,如图1-2所示。图1-2 Project菜单2) 在弹出的“Create New Project”对话框中选择要保存项目文件的路径,比如保存到Exercise目录里,在“文件名”文本框中输入项目名为example,如图1-3所示,然后单击“保存”按钮。 图1-3 Create New Project对话框3) 时会弹出一个对话框,要求选择单片机的型号。读者可以根据使用的单片机型号来选择,Keil C51几乎支持所有的51核的单片机,这里只是以常用的AT89C51为例来说明,如图1-4所示。选择89C51之后,右边Description栏中即显示单片机的基本说明,然后单击“确定”按钮。图14 选择单片机的型号对话框4) 这时需要新建一个源程序文件。建立一个汇编或C文件,如果已经有源程序文件,可以忽略这一步。选择【File】/【New】选项,如图1-5所示。5) 在弹出的程序文本框中输入一个简单的程序,如图1-6所示。图1-5 新建源程序文件对话框图 图1-6 程序文本框6) 选择【File】/【Save】选项,或者单击工具栏按钮,保存文件。在弹出的如图1-7所示的对话框中选择要保存的路径,在“文件名”文本框中输入文件名。注意一定要输入扩展名,如果是C程序文件,扩展名为.c;如果是汇编文件,扩展名为.asm;如果ini文件,扩展名为. ini。这里需要存储ASM源程序文件,所以输入.asm扩展名(也可以保存为其他名字,比如new.asm等),单击“保存”按钮。图1-7 “Save As”对话框图7) 单击Target1前面的+号,展开里面的内容Source Group1,如图1-8所示。图1-8 Target展开图8) 用右键单击Source Group1,在弹出的快捷菜单中选择Add File to GroupSource Group1选项,如图1-9所示。图19 Add Files to Group Source Group1菜单9) 选择刚才的文件example.asm,文件类型选择Asm Source file(*.C)。如果是C文件,则选择C Source file;如果是目标文件,则选择Object file;如果是库文件,则选择Library file。最后单击“Add”按钮,如果要添加多个文件,可以不断添加。添加完毕后单击“Close”按钮,关闭该窗口,如图1-10所示图1-10 Add Files to Group Source Group1对话框设置Output选项卡(如图1-17所示)图1-17 设置Output卡l Select Folder for Objects:单击该按钮可以选择编译后目标文件的存储目录,如果不设置,就存储在项目文件的目录里。l Name of Executable:设置生成的目标文件的名字,缺省情况下和项目的名字一样。目标文件可以生成库或者obj、HEX的格式。l Create Executable:如果要生成OMF以及HEX文件,一般选中Debug Information和Browse Information。选中这两项,才有调试所需的详细信息,比如要调试C语言程序,如果不选中,调试时将无法看到高级语言写的程序。l Create HEX File:要生成HEX文件,一定要选中该选项,如果编译之后没有生成HEX文件,就是因为这个选项没有被选中。默认是不选中的。l Create Library:选中该项时将生成lib库文件。根据需要决定是否要生成库文件,一般应用是不生成库文件的。l After Make:栏中有以下几个设置。l Beep when complete:编译完成之后发出咚的声音。l Start Debugging:马上启动调试(软件仿真或硬件仿真),根据需要来设置,一般是不选中。l Run User Program #1,Run User Program #2:这个选项可以设置编译完之后所要运行的其他应用程序(比如有些用户自己编写了烧写芯片的程序,编译完便执行该程序,将HEX文件写入芯片),或者调用外部的仿真器程序。根据自己的需要设置。图1-21 Rebuild all target files或者单击工具栏中的按钮,如图1-22所示,开始编译程序。图1-22 工具栏中的按钮 如果编译成功,开发环境下面会显示编译成功的信息,如图1-23所示。图1-23 编译成功信息14)编译完毕之后,选择【Debug】/【Start/Stop Debug Session】选项,即就进入仿真环境,如图1-24所示。 图1-24 仿真 或者单击工具栏中的铵钮,如图1-25所示。 图1-25 工具栏仿真按钮15)装载代码之后,开发环境下面显示如图1-26所示的信息。图1-26 装载代码3.4Pr