




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
万年历课程设计前言时至今日,单片机已广泛应用于各个领域,从家用电器到办公自动化、工业自动化以及各种智能仪表、智能接口。虽然单片机的性能无法和PC机相比,但它具有体积小、价格低、可靠性高、智能、实时、可塑性好等诸多优点,使其成为开发嵌入式要用心太软和小型智能化产品的首选机种。随着电子技术的飞速发展,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。同时楼宇智能化的发展与成熟,也为基于单片机的照明控制系统的普及与应用奠定了坚实的基础。本设计是以万年历为基本理念。考虑到依需设定限时回答的功能,利用80C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。全套设计加扣3012250582 目录第1章 设计目的及要求31.1、设计目的31.2、设计要求3第2章 方案设计32.1、结构原理及比较32.2、显示模块的选择与论证42.3、键盘模块的选择与论证52.4、硬件电路总框图设计52.5、硬件电路原理图设计6第3章 主要元器件介绍63.1、AT89C52单片机介绍73.2、LM016L简介10第4章 硬件电路设计114.1、时钟电路11 4.2、复位电路114.3、控制电路124.4、显示电路12第5章 软件设计及主要子程序135.1、软件设计思路135.2、主程序设计135.3、查询子程序设计145.4、蜂鸣器子程序设计215.5、闹钟子程序设计225.6、响铃子程序设计22第6章 系统仿真与调试226.1、Keil编译226.2、Protues8仿真平台236.2.1、Protues8仿真简介及部分模块仿真236.2.2、仿真结果25第7章 操作方法25第8章 课程设计总结25附录26原理图26仿真图26 元器件清单26 PCB图28参考文献29 第1章 设计目的及要求1.1设计目的1)掌握51系列单片机的基本硬件结构及工作原理;2)掌握51系列单片机的汇编语言及基本程序设计方法;3)学习并掌握使用51系列单片机开发控制系统的基本步骤及方法。1.2设计要求 1)具有年、月、日、星期、时、分、秒等功能; 2)万年历具有闰月识别显示功能; 3)具备年、月、日、星期、时、分、秒校准功能; 第2章 设计方案2.1结构原理与比较 电子万年历既可以通过纯硬件实现,也可以通过软硬件结合实现,根据电子时钟中核心部件秒信号的产生原理,通常有以下三种形式: 1)采用NE555时基电路的实现形式 其核心部分555的秒脉冲发生器如下图所示: 图21 基于555的秒脉冲发生器采用NE555时基电路或其他振荡电路产生秒脉冲信号,作为秒加法电路的时钟信号或微处理器的外部中断输入信号,可构成电子钟。由555构成的秒脉冲发生器电路见图。输出的脉冲信号V的频率F1.443(RA2RB)C,可通过调节这3个参数,使输出V的频率为精确的1z。2)采用石英钟专用芯片的实现形式采用石英钟专用计时芯片实现的电子钟,具有实现简单、计时精度高的特点。石英计时芯片(简称“机芯”)比较多,常见型号的有STP5512F、SM5546A和D60400等。现结合康巴丝石英钟常用的5512F型为例作一简单介绍。利用5512F的2秒输出信号作为秒加法电路的计数脉冲,可实现电子时钟。5512F的引脚图如图3)所示: 图21 5512F的引脚图其中,引脚7、8为外接晶振及振荡电路,引脚接电源正极,电源为1.5,引脚3、4原为指针用步进电机线圈的输出驱动,这里可用脚作为脉冲输出,频率决定于外接晶振的频率。3)采用基于微处理器的实现形式利用微处理器的智能性,可方便实现具有智能的电子钟。由于微处理器均具有时钟振荡系统,利用系统时钟借助微处理器的定时计数器可实现电子钟功能。虽然,系统时钟的误差较大,电子钟的累积误差也可能较大,但可以通过误差修正软件加以修正。在总体设计思路中,我将其与过去学习过的数字电路进行了比较,决定采用AT89C52进行设计。2.2 显示模块的选择和论证方案一:使用液晶显示屏显示时间数字液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影响稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点。但由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本也偏高。在使用时,不能有静电干扰,否则易烧坏液晶的显示芯片,不易维护。方案二:使用传统的LED数码管显示数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比较高,称重轻,精度可靠,操作简单。数码管采用BCD编码显示数字,程序编译容易,资源占用较少。根据以上的论述,采用方案二。我们采用八段四位一体数码管动态显示,由于显示位数较多,故应使用显示驱动,在本设计中采用三极管来作为驱动。2.3 键盘模块的选择和论证方案一:使用独立式键盘独立式键盘是指直接用I/O口线构成的单个按键电路。独立式按键电路配置灵活,软件结构简单。方案二:使用矩阵式键盘矩阵式键盘是由行线和列线组成,按键位于行、列交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按键数目较多的场合。根据以上的论述,因本系统内需要的按键不多,要求简单,所以采用方案一。2.4 硬件电路的总体框图设计 该设计的硬件电路的总体框图如图7所示: 按键与按钮 电路复位等辅助电路液晶显示电路 总体开关电源系统 图23 总体框图2.5硬件电路原理图设计该万年历是以单片机AT89C52为核心来完成的。在硬件电路中采用P0口作为6位液晶显示电路的驱动接口,这是由于P0口输出驱动电路工作处于开漏状态,它的驱动能力强,故只需外接上拉电阻便可以把LED数码管点亮。因为共阴的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故该电路中的8位LED数码管均用共阳阴极的数码管。8位LED数码管的位选线分别由相应的P2. 0P2. 5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。P3口与八个校时按键相连,以成功实现万年历校时的功能。(见附件) 第3章 主要元器件介绍3.1 AT89C52单片机介绍3.1.1 AT89C52芯片介绍 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。同时,AT89c52可降至OHz的静态逻辑操作,并支持两种软件可选的节电上作模式。空闲方式停止CPU 的工作,但允许RAM,定时计数器串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.3.1.2功能引脚说明: 1)Vcc:电源电压 2)GND:地 3)P0:P0口是一组8位漏极开路型双向1/O 口,也即地址/数据总线复用口。作为输出口用时每位能吸收电流的方式驱动8个TTL 逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部 上拉电阻。 在FLASH由编程时,P0口接收指令字节,而在程序校验时,输出指令字 节,校验时,要求外接上拉电阻。 4)P1口:PI 是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流IIL 与AT89C51不同之处是,Pl.0 和P1.1还可分别作为定时/计数器2 的外部计数输入(Pl.0/T2 )和输入(P1.1/T2EX) , FLASH编程和程序校验期间,Pl接收低8位地址。 5)P2口:P2 是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电路。对端口P2写“l,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(llt )。 在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOvxDPTR 指令)时,P2送出高8 位地址数据。在访问8位地址的外部数据存储器、如执行MOVXRI指令)时,P2口输出P2锁存器的内容。FLASH编程或校验时,P2亦接收高位地址和一些控制信号。 6)P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL) . P.3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示: 表31 P3口第二功能 此外,P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。 7)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 8)ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活,此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 9)PSEN:程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 10)EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H-FFFFH ) , EA端必须保持低电平(接地)需注怠的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端), CPU则执行内部程序存储器中的指令。flash存储器编程时,该引脚加上+12V的编程允许电源VPP ,当然这必须是该器件是使用12V编程电压VPP 。 11)XTAL1:振荡器反相放大器的及内部时钟发生器的输入端 12)XTAL1:振荡器反相放大器的输出端。图31 引脚图3.1.3 AT89C52内部框图:图32 AT89C52内部框图3.2 LM016 LLM016L液晶模块采用 HD44780控制器。 HD44780具有简单而功能较强的指令集,可以实现字符移动、闪烁等功能。LM016L与单片机 MCU(Microcontroller Unit)通讯可采用 8位或者 4位并行传输两种方式。 HD44780控制器由两个 8位寄存器、指令寄存器( IR)和数据寄存器(DR)、忙标志(BF)、显示数据 RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器 RAM(CGRAM)、地址计数器( AC)。IR用于寄存指令码,只能写入不能读出;DR用于寄存数据,数据由内部操作自动写入 DDRAM和CGRAM,或者暂存从DDRAM和 CGRAM读出的数据。BF为 1时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据。 DDRAM用来存储显示的字符,能存储 80个字符码。 CGROM由 8位字符码生成 5*7点阵字符 160种和 5*10点阵字符 32种,8位字符编码和字符的对应关系,可以查看参考文献3中的表 4。CGRAM是为用户编写特殊字符留用的,它的容量仅 64字节。可以自定义 8个 5*7点阵字符或者 4个 5*10点阵字符。第4章 硬件电路设计4.1时钟电路时钟电路用来产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。通过在芯片的外部XTAL1和XTAL2两个引脚跨接晶体振荡器和两个微调电容(F陶瓷电容,理论值为33pF),形成反馈电路,就构成了一个稳定的自激振荡电路。时钟电路为单片机产生时钟脉冲序列,本设计中采用的晶振频率为12MHz。如下图所示。 图41 时钟电路4.2 复位电路 复位是单片机的初始操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需安装复位键以重新启动。RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期(即2个机器周期)以上,本设计使用频率为12MHz的晶振,所以复位信号持续时间应超过2s才能完成复位操作。复位操作有上电自动复位和按键手动复位两种方式。在本设计中采用的是按键复位,按键复位是通过使复位端经电阻与Vcc电源而实现的,如下图所示。 图42 复位电路4.3 显示电路由于七段数码显示器在显示字形代码时需要有足够的功率,单片机口线的驱动能力明显不够,所以需在显示器前加显示驱动器,以提高其输出功率,满足显示器的需求。在本设计中,我采用三极管作为显示电路的8路正向驱动器。LED显示器俗称数码管,在其内部是由8个发光二极管加限流电阻组成,其连接方式有共阴和共阳两种,在共阴极接法中,因公共端接地,只要给某一段加高电平,该段就会亮。而在本设计中采用的是共阳极接法,公共端接+5V电源,在某一段上加低电平,该段就会亮。在本次设计中,为了使硬件电路更简单化,我采用四位一体的LED数码管,显示原理与单个LED的显示原理完全相同。但在它的内部把四个数码管的段控端对应的连在了一起与单个的数码管相比其外部电路连接更加简单,故它只有8个段控端和4个位控端,4个位控端分别对四个数码管进行控制。如下图所示。 图25 显示电路4.4 控制电路 在单片机控制电路中,可把单片机使用的键盘分为独立式和矩阵式两种。独立式实际上就是一组独立的按键,这些按键可直接与单片机的I/O口连接,即每个按键独占一条口线,这种接法简单。矩阵式键盘也称行列式键盘,因为键的数目较多,所以键按行列组成矩阵。本设计中键盘数目较少,且为安装方便,因此在本设计中采用独立式接法。 按从一个键到键的功能被执行主要应包括两项工作:一是键的识别,即在键盘中找出被按的是哪个键,另一项是键功能的实现。第一项工作是使用接口电路实现的,而第二项工作则是通过执行中断服务程序来完成。具体来说,独立式键盘接口应完成以下操作功能:a 键盘扫描,以判定是否有键被按下(称之为“闭合键”)。b 排除多键、串键(复键)及去抖动。c 键识别,根据各口线的值判断按键的位置。以上这些内容通常是以软硬件结合的方式来完成的,即在软件的配合下由接口电路来完成。但具体哪些由硬件哪些由软件完成,要看接口电路的情况。总的原则是,硬件复杂软件就简单,硬件简单软件就得复杂一些。 第5章软件设计及主要子程序5.1软件设计流程图 图51 主程序流程图5.2主程序 void main() init_lcd1602();RESET_DS18B20();init_ds1302(nian,yue,ri,shi,fen,miao,xingqi);display_lcd1602_text(0,0,tab0);display_lcd1602_text(1,0,tab1);while(1)keyscan();if(flag)naozhong(); display_lcd1602_byte(0,2,tab2read_ds1302(0x8d)/10);display_lcd1602_byte(0,3,tab2read_ds1302(0x8d)%10);display_lcd1602_byte(0,5,tab2read_ds1302(0x89)/10);display_lcd1602_byte(0,6,tab2read_ds1302(0x89)%10);display_lcd1602_byte(0,8,tab2read_ds1302(0x87)/10);display_lcd1602_byte(0,9,tab2read_ds1302(0x87)%10);display_lcd1602_byte(0,15,tab2read_ds1302(0x8b)%10);display_lcd1602_byte(1,5,tab2Read_DS18B20_TEMP()/10);display_lcd1602_byte(1,6,tab2Read_DS18B20_TEMP()%10);display_lcd1602_byte(1,8,tab2read_ds1302(0x85)/10);display_lcd1602_byte(1,9,tab2read_ds1302(0x85)%10);display_lcd1602_byte(1,11,tab2read_ds1302(0x83)/10);display_lcd1602_byte(1,12,tab2read_ds1302(0x83)%10);display_lcd1602_byte(1,14,tab2read_ds1302(0x81)/10);display_lcd1602_byte(1,15,tab2read_ds1302(0x81)%10);5.3查询子程序 void keyscan()if(s1=0)&(s4num=0)delay(5);if(s1=0)while(!s1);buzzer();write_ds1302(0x8e,0);write_ds1302(0x80,80);flag=0;s1num+;switch(s1num)case 1:write_lcd1602(0x0f,0);write_lcd1602(0x80+3,0);break; case 2:write_lcd1602(0x80+6,0);break;case 3:write_lcd1602(0x80+9,0);break;case 4:write_lcd1602(0x80+15,0);break;case 5:write_lcd1602(0x80+0x40+9,0);break;case 6:write_lcd1602(0x80+0x40+12,0);break;case 7:write_lcd1602(0x80+0x40+15,0);break;case 8:write_lcd1602(0x0c,0);write_ds1302(0x8e,80);init_ds1302(nian,yue,ri,shi,fen,miao,xingqi);flag=1;break;if(s1num=8)s1num=0;if(s1num!=0)if(s2=0)delay(5);if(s2=0)while(!s2);buzzer();switch(s1num)case 1:nian+;if(nian=100)nian=0;display_lcd1602_byte(0,2,tab2nian/10);display_lcd1602_byte(0,3,tab2nian%10);write_lcd1602(0x80+3);break;case 2:yue+;if(yue=13)yue=1;display_lcd1602_byte(0,5,tab2yue/10);display_lcd1602_byte(0,6,tab2yue%10);write_lcd1602(0x80+6,0);break;case 3:ri+;if(ri=32)ri=1;display_lcd1602_byte(0,8,tab2ri/10);display_lcd1602_byte(0,9,tab2ri%10);write_lcd1602(0x80+9,0);break;case 4:xingqi+;if(xingqi=8)xingqi=1;display_lcd1602_byte(0,15,tab2xingqi%10);write_lcd1602(0x80+15,0);break;case 5:shi+;if(shi=24)shi=0;display_lcd1602_byte(1,8,tab2shi/10); display_lcd1602_byte(1,9,tab2shi%10);write_lcd1602(0x80+0x40+9,0);break;case 6:fen+;if(fen=60)fen=0;display_lcd1602_byte(1,11,tab2fen/10); display_lcd1602_byte(1,12,tab2fen%10);write_lcd1602(0x80+0x40+12,0);break;case 7:miao+;if(miao=60)miao=0;display_lcd1602_byte(1,14,tab2miao/10); display_lcd1602_byte(1,15,tab2miao%10);write_lcd1602(0x80+0x40+15,0);break;if(s1num!=0)if(s3=0)delay(5);if(s3=0)while(!s3);buzzer();switch(s1num)case 1:nian-;if(nian=-1)nian=99;display_lcd1602_byte(0,2,tab2nian/10);display_lcd1602_byte(0,3,tab2nian%10);write_lcd1602(0x80+3);break;case 2:yue-;if(yue=0)yue=12;display_lcd1602_byte(0,5,tab2yue/10);display_lcd1602_byte(0,6,tab2yue%10);write_lcd1602(0x80+6,0);break;case 3:ri-;if(ri=0)ri=31;display_lcd1602_byte(0,8,tab2ri/10);display_lcd1602_byte(0,9,tab2ri%10);write_lcd1602(0x80+9,0);break;case 4:xingqi-;if(xingqi=0)xingqi=7;display_lcd1602_byte(0,15,tab2xingqi%10);write_lcd1602(0x80+15,0);break;case 5:shi-;if(shi=-1)shi=23;display_lcd1602_byte(1,8,tab2shi/10); display_lcd1602_byte(1,9,tab2shi%10);write_lcd1602(0x80+0x40+9,0);break;case 6:fen-;if(fen=-1)fen=59;display_lcd1602_byte(1,11,tab2fen/10); display_lcd1602_byte(1,12,tab2fen%10);write_lcd1602(0x80+0x40+12,0);break;case 7:miao-;if(miao=-1)miao=59;display_lcd1602_byte(1,14,tab2miao/10); display_lcd1602_byte(1,15,tab2miao%10);write_lcd1602(0x80+0x40+15,0);break;if(s4=0)&(s1num=0)delay(5);if(s4=0)delay(500);if(s4!=0)while(!s4);buzzer();flag=0;s4num+;if(s4num=4)s4num=1;switch(s4num)case 1:write_lcd1602(0x01,0);display_lcd1602_text(0,2,tab4);display_lcd1602_text(1,7,tab5);write_lcd1602(0x0c,0);flag1=0;break;case 2:write_lcd1602(0x0f,0);display_lcd1602_byte(1,5,tab2ashi/10); display_lcd1602_byte(1,6,tab2ashi%10);display_lcd1602_byte(1,7,:);display_lcd1602_byte(1,8,tab2afen/10); display_lcd1602_byte(1,9,tab2afen%10);write_lcd1602(0x80+0x40+6,0);flag1=1;break;case 3:display_lcd1602_byte(1,5,tab2ashi/10); display_lcd1602_byte(1,6,tab2ashi%10);display_lcd1602_byte(1,7,:);display_lcd1602_byte(1,8,tab2afen/10); display_lcd1602_byte(1,9,tab2afen%10);write_lcd1602(0x80+0x40+9,0);flag1=1;break;if(s4=0)while(!s4); s4num=0;write_lcd1602(0x01,0);write_lcd1602(0x0c,0);display_lcd1602_text(0,0,tab0);display_lcd1602_text(1,0,tab1);flag=1;if(s4num!=0)if(s2=0)delay(5);if(s2=0)while(!s2);buzzer();switch(s4num)case 2:ashi+;if(ashi=24)ashi=0;display_lcd1602_byte(1,5,tab2ashi/10); display_lcd1602_byte(1,6,tab2ashi%10);write_lcd1602(0x80+0x40+6,0);break;case 3:afen+;if(afen=60)afen=0;display_lcd1602_byte(1,8,tab2afen/10); display_lcd1602_byte(1,9,tab2afen%10);write_lcd1602(0x80+0x40+9,0);break;if(s4num!=0)if(s3=0)delay(5);if(s3=0)while(!s3);buzzer();switch(s4num)case 2:ashi-;if(ashi=-1)ashi=23;display_lcd1602_byte(1,5,tab2ashi/10); display_lcd1602_byte(1,6,tab2ashi%10);write_lcd1602(0x80+0x40+6,0);break;case 3:afen-;if(afen=-1)afen=59;display_lcd1602_byte(1,8,tab2afen/10); display_lcd1602_byte(1,9,tab2afen%10);write_lcd1602(0x80+0x40+9,0);break;5.4蜂鸣器子程序 void buzzer()buzz=0;delay(50);buzz=1;5.5闹钟子程序 void naozhong()if(flag1)display();if(ashi=read_ds1302(0x85)delay(5);if(afen=read_ds1302(0x83)buzzer(); 5.6响铃子程序 void display()uchar i;write_lcd1602(0x40,0);for(i=0;i8;i+)write_lcd1602(w1i,1);write_lcd1602(0xc0+7,0);write_lcd1602(0x00,1);第6章 系统仿真与调试6.1 Keil编译 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势, Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。如果使用C语言编程,那么Keil几乎就是不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。本次设计采用汇编语言编程,生成.hex文件以供装载到Protues中的单片机进行仿真。6.2 Protues8仿真平台6.2.1 Protues8仿真简介及部分模块仿真 Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。在编译方面,它也支持IAR、Keil和MATLAB等多种编译。 目标代码的加载方法为,在Protues编辑环境双击AT89C51,弹出下图所示的对话框,在PROGRAM FILM一栏中单击打开按钮,选中Keil中生成的lzy.hex文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业园区环境影响综合评估案例
- 工业品销售中的自动化营销技巧
- 工业互联网平台的市场开发与运营策略
- 工业互联网平台在智能工区的应用
- 小红书新媒体营销攻略
- 工业4.0下的涂装生产线升级改造
- 展览信息化管理的智能实现
- 展会品牌建设与推广策略
- 工业4.0下的智能机器人技术探讨
- 展览空间创新设计数字时代的思考
- 初三自主招生自荐信 自主招生自荐信
- 南京医科大学自主招生面试试题综合素质答案技巧-南京医学院自主招生题
- 大学启示录:如何读大学(上海交通大学)【超星尔雅学习通】章节答案
- 创业法学江西财经大学【超星尔雅学习通】章节答案
- 2023年黄大仙救世报
- (完整版)高考必备3500词
- GB/T 14832-2008标准弹性体材料与液压液体的相容性试验
- GB/T 1185-2006光学零件表面疵病
- 济宁市城市介绍家乡旅游攻略PPT
- 熊浩演讲稿全
- 北师大版五下书法《第6课戈字旁》课件
评论
0/150
提交评论