单片机课程设计指导书

上传人:飞****9 文档编号:28634008 上传时间:2021-09-04 格式:DOC 页数:31 大小:13.21MB
收藏 版权申诉 举报 下载
单片机课程设计指导书_第1页
第1页 / 共31页
单片机课程设计指导书_第2页
第2页 / 共31页
单片机课程设计指导书_第3页
第3页 / 共31页
资源描述:

《单片机课程设计指导书》由会员分享,可在线阅读,更多相关《单片机课程设计指导书(31页珍藏版)》请在装配图网上搜索。

1、单片机原理及应用设计指导书胡景春 编写2008-102011-10目录1.课程设计的要求与基本内容11.1 目的和要求11.2设计内容12. 系统构成22.1硬件结构22.2主要功能及技术要求23硬件电路原理33.189C52单片机主控模块33.1.189C52主控电路及其分析33.1.289C52内部FLASH编程控制电路及其分析43.1.2.1 FLASH编程43.1.2.2系统的编程控制电路43.2LCM103液晶显示模块53.2.1 LCM103显示器及其控制原理53.2.2 LCM103液晶显示模块工作原理63.2.3 LCM103显示器电路连接63.2.4 LCM103读写控制73

2、.3键盘处理模块93.3.1键盘工作原理93.4.2 键盘电路分析103.4定时及电器控制103.4.1继电器控制电路103.4.2声、光报警及上电显示113.6在线编程接口123.7 电源输入及转换电路133.8 硬件的安装与第一步调试133.8.1 硬件安装133.8.2 第一步调试144.单片机控制器软件设计154.1 系统软件要实现的功能154.2 C51语言及其软件开发工具154.2.1 C51语言介绍154.2.2 软件开发工具164.2.3 C51程序设计及调试过程184.3 单片机控制程序设计提要184.3.1 设计要求和总体设计184.3.2 主程序模块设计方案194.3.3

3、 子程序模块设计方案204.3.3.1 液晶显示模块204.3.3.2 电器控制模块224.3.3.3 键盘处理模块224.3.3.4 定时模块264.3.3.5 串行模块295.微机控制单片机编程软件设计及调试355.1系统要实现的对单片机编程功能355.2 C+语言及其软件开发工具355.2.1 软件开发工具C+355.3 AT89C52 Flash存储器编程363.3.1 编程方法(略,已在3.1.2中叙述)363.3.2 编程时序365.4 EPP接口375.5自编程程序设计方案385.5.1功能设计和界面设计385.5.2 类设计38附A 课程设计控制器元器件及材料41附B 控制器电

4、路原理图A1.课程设计的要求与基本内容1.1 目的和要求该课程设计的目的是,通过一个实际应用电路模块的安装、调试、及其控制设计,使学生在“单片机原理及应用”课程所学知识和所掌握的技能获得一次综合性训练,进一步熟悉单片机应用系统结构和软硬件之间的联系,培养学生软、硬件综合设计、调试和开发能力。在课程设计中,要求学生完成一个实际应用系统的安装、调试和产品化设计,展示完成的产品,并提交课程设计报告。1.2设计内容计算机综合课程设计包括以下几方面内容:1、 分析课程设计的“自编程微电脑定时控制器”硬件电路原理,完成硬件电路焊接、安装、调试;2、 查阅有关的资料,并对资料进行整理综合;3、 学习有关工具

5、软件的使用,工具软件包括:单片机串行编程下载软件,能实现对STC89C52等单片机进行在线编程控制;5110LCD汉字生成软件,生成汉字点阵码;CH340T驱动程序,USB to RS232驱动;Keil C51,单片机的C语言编程环境。4、 单片机控制软件的设计:用汇编或C编程,直接实现对控制器的键盘、液晶显示、串行通信、继电器定时、LED显示、声光报警、数据存储器等模块的控制。学生按分组完成其中2-3项程序的编程、下载、调试。5、 接受教师检查,进行设计展示、进行设计结果介绍,回答指导教师提问。6、 完成课程设计报告。设计报告由学生独立完成,包括以下几方面内容:(1) 设计目标、内容和设计

6、要求。(2) 硬件设计部分。包括:电路原理分析、电路的安装与调试情况、被控电路的设计与连接、相关的工艺设计、以及与设计图相关的文字论述和说明。(3) 软件设计部分:控制程序的流程图及源程序,以及对程序功能、特点、实现方法的论述及说明。(4) 用户使用说明:详细说明所设计的系统的功能、使用方法及每一步操作步骤。(5) 其它:收获、体会、意见及建议等。(6) 附录:提交设计调试完成的源程序(带注释)。课程设计报告的文本要求是打印稿和相应的电子文档(包括电子设计文档),要求文字通顺,文档符合设计规范。2. 系统构成2.1硬件结构系统的硬件总体框图如图2-1所示。主要包括以下功能模块:1、 主控模块:

7、采用89C52单片机进行各项控制;2、 键盘处理、显示及报警模块:实现人机交互操作和控制;3、 定时及电器控制:通过继电器连接外部电器,由单片机进行定时控制;4、 异步串行通信:实现微机RS-232接口和单片机的异步串行通信;5、 在线编程接口:通过微机串行口或USB接口,实现微机对单片机的在线编程控制;2.2主要功能及技术要求1、能进行单片机仿真实验(1) 控制器设置了4*3矩阵键盘,可以参考按键标识或自行定义按键功能;(2) 单片机控制液晶显示模块,有两种可选的液晶显示器:48*84点阵液晶显示5110LCD或10位8段数码液晶显示LCM103;(3) 单片机和微机RS-232接口串行通信

8、测试和实验,进行“三线”连接异步串行通信;(4) USB接口转RS-232串行接口实验;(5) 8路LED显示控制;(6) 声、光报警控制(7) 扩展数据存储器读、写控制;2、 串行接口编程控制。实现WINDOWS下对内带Flash的STC 51系列单片机进行串行编程下载,包括:擦除、读出、写入、校验、加密等功能。3能够进行四路家电控制单片机对4路电器设备和家电进行选择和定时控制,定时范围:1秒-60小时。图2-1 硬件总体框图3硬件电路原理硬件电路原理图可参看图3-1,系统硬件主要由:89C52单片机主控模块、键盘处理模块、定时及电器控制模块、异步串行通信模块、在线编程接口、液晶显示模块等组

9、成。3.189C52单片机主控模块3.1.189C52主控电路及其分析89C52主控电路如图3-1。本系统中,89C52 有2种使用状态,一是以89C52控制为核心的正常工作状态,一是对89C52内部FLASU进行编程的编程工作状态,这里对正常工作状态进行说明,其基本设计要点是:89C52内部有8KB程序存贮器FLASH, EA为程序存储器选择信号,EA接地CPU从外部存贮器中取指令,EA接高电平时CPU可以从内部或外部取指令。本设计采用内部程序存储器,所以EA接高电平。FLASH编程时,EA引脚为编程电源输入端Vpp。引脚PSEN输出外部程序存贮器的读选通信号,仅当CPU访问外部程序存贮器时

10、PSEN才有效。由于89C51的内部程序存储器已经能够存放本系统的程序,所以系统不需要扩展外部程序存储器,因此,PSEN引脚接地。 P0口为三态双向I/O口,可以作为系统扩展的地址/数据总线口,本系统扩展了外部8KB的SRAM存储器,所以P0口作为地址/数据线复用线使用。P1口为准双向口,它的每一位可以分别定义为输入线或输出线,本系统工作状态下用P1.1-P1.7作为键盘矩阵的行、列线。P2口作为高8位地址线使用,本设计选用了P2.6和P2.7分别控制74LS373锁存和6264的片选控制。P3口在设计中选用第二功能作为特殊输入/输出线,本控制器选用了外部中断0、串行输入、串行输出、读/写控制

11、信号、定时器T0等接口,P3.4则作为键盘中断处理控制线。此外,P0、P1、P3的部分引脚还用于液晶显示控制。图3-1 系统电路原理图编程时,8255的PA口接89C52的P0口是作为89C52的编程数据信号;8255的PB口接89C52的P1口是作为89C52的地址A0-7;8255的PC0-4接89C52的P2.0-P2.4作为89C52的地址A8-12,PC5用作89C52的编程脉冲ALE/PROG#,PC6-PC7接89C52的P2.6-P2.7,和P3.6-P3.7一起用作编程方式选择。图3-2 单片机和5110LCD的连接如3.2 液晶显示模块这里主要就是地址48*84点阵液晶显示

12、模块5110LCD的使用3.2.1 单片机和5110LCD的连接单片机和5110LCD的连接如图3-2 所示。P1.0用于模块选中,RESET信号对模块复位,P2.0选择数据/命令输入,P2.3接输入引脚,P0.4接SCLK产生时钟脉冲P0.5接LED用于背光控制3.2.2 显示控制方法图3-3 显示汉字字模的生成1、 用共享软件zimo221.exe生成要显示的汉字点阵编码,如图3-3所示;图3-4 用垂直寻址方式(V=1)和水平寻址方式(V=0)往RAM写入数据的次序单片机和5110LCD的连接如2、 往RAM写入数据和48*84点阵显示的关系如图3-4所示的次序3、5110LCD的控制图

13、3-5 5110LCD的串行总线协议5110LCD的控制是采用串行总线控制,其串行总线协议如图3-5,上图是传送单字节,下图是传送多字节。5110LCD的控制命令集见表3-1、表3-2(1)初始化接电源后,内部寄存器和RAM的内容不确定。必须应用一个RES脉冲。注意,不正确的复位是危险的,可能会损坏设备。所有内部寄存器在指定的时间内,通过31脚的外部RES脉冲(低电平)复位。无论如何,RAM的内容仍然不确定。(2)复位作用复位后,LCD驱动器有下列状态:电源节省模式 (位 PD = 1)水平寻址 (位 V = 0)常规指令设置(位 H = 0)显示页(位 E = D = 0)地址计数器 X6

14、至 X0 = 0; Y2 至 Y0 = 0温度控制模式(TC1 TC0 = 0)偏置系统 (BS2 至 BS0 = 0)VLCD 等于 0, HV 发生器为关闭状态(VOP6 至 VOP0 = 0)(3)功能设置位 PD:LCD 输出为 VSS (显示关闭);偏置发生器和VLCD发生器关闭;VLCD可以不连接;振荡器关闭(可用外部时钟);串行总线,命令,等功能;进入省电模式之前,RAM需要填充0以保证指定的电流消耗。位 V:当 V = 0,选择水平寻址。当 V = 1,选择垂直寻址。位 H:当 H = 0, 可以执行显示控制,设置Y地址和设置X地址;当 H = 1,可以执行其它命令。写数据和功

15、能设置可以在两种状态下执行。(4) 显示控制 位 D 和 E:位 D 和 E 选择显示模式(见表2)。(5)设置RAM的 Y 地址。定义显示RAM的Y寻址向量。(6)设置RAM的 X 地址。X 地址指向列。X的范围是0至83(53H)。(7)温度控制。VLCD的温度系数由位TC1和TC0选择。3.3键盘处理模块3.3.1键盘工作原理键盘分为独立式键盘和矩阵键盘,本系统中采用4*3矩阵键盘。本系统采用中断方式加行扫描进行按键处理,当有键闭合时,向单片机/INT0请求中断,CUP响应键盘中断,对键盘扫描,以识别哪一个键按下,然后执信相应的处理程序。在键盘的键被按下和断开的过程中,会出现一段时间的机

16、械抖动,抖动时间的长短和开关的机械特性有关,一般为510ms,为保证CPU对键的闭合仅做一次处理,必须去除抖动,通常采取软件延时等方法,在键的稳定闭合时读键的状态。3.4.2 键盘电路分析系统所使用的键盘接口电路参看图3-1。为提高CPU的工作效率,CPU对键盘采取中断控制方式。当有键闭合时,向CPU请求中断,CPU响应键盘中断,执行中断服务程序,对键盘扫描,判别键盘上闭合键的键号,并作出相应处理。P1.1-P1.3为列线,P1.4-P1.7为行线。当有键按下时,按下键对应的列为低电平。三个按键通过一个与门接至89C52的INT0端(外部中断0),一旦有键按下,就会产生一个中断至89C52,8

17、9C52响应中断,对P1.4-P1.7引脚进行行扫描,确定按下的按键,再执行相应处理程序。3.4定时及电器控制3.4.1继电器控制电路四路电器设备控制电路主要通过74LS373锁存信号来保持对设备的控制。单片机通过P26口控制74LS373的锁存控制端,由P0口向其发送数据,74LS373输出口5Q接蜂鸣器8Q-6Q接了LED,1Q4Q接四路驱动电路,可选择连接4个LED或驱动四个继电器控制外部电器,继电器控制电路图如图3-6所图示:图3-6 继电器控制电路以图中一路电器控制说明其工作原理。由于主控芯片向外发送的控制电流太小,不足以驱动外部继电器工作,所以用中功率放大器三极管放大成所需的电流。

18、当P0.3口向74LS373发送高电平时,并且P26口送入一个正跳变信号,此时,锁存器锁存控制信号,放大器工作,并放大电流,继电器线包在足够大电流的驱动下产生磁场,致使常开触点吸合,向外部电器提供220V交流电;当P0.3口送入低电平时,放大器反向不工作,无电流流过继电器线包,常开触点断开,外部电器不工作。对继电器得电时间长短的控制,可以通过89C52的内部定时器来定时,由软件控制实现。在调试程序或做实验时,可以用连接电缆把Q1-Q4信号接至LED,通过对LED的显示控制来模拟电器控制过程。3.4.2声、光报警及上电显示图3-7 声、光报警声、光报警电路主要是在控制过程结束和对出错处理时,用蜂

19、鸣器的发声或闪烁发光给用户以警示,以便用户及时进行人工处理。电路通过74LS373锁存电路向外发送信号,以控制蜂鸣器的发声和LED的显示,电路如图3-7,当Q8为低电平时,LED发光;当Q2为高电平时,蜂鸣器发声,控制Q2高低电平交替变化的频率,则蜂鸣器发出不同的声响。图3-8 串行口接线方法图右为上电显示电路,LED发光表示已接通电源。3.5异步串行通信及单片机在线编程图3-9 MAX232引脚及逻辑PC机RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。本设计在9针RS-232C的基础再进行简化,只用其中的2、3、5三个管脚进

20、行通信,即可满足通讯的要求,这三个管脚分别是接收线、发送线和地线。计算机和外部通讯的接线方法如图3-8:图3-10 串行接口电路在电路板上,信号的传输通常是TTL电平,就是以5V表示“1”,0V表示“0”。而232信号的传输标准是采用负逻辑电平,即用-3V-15V表示1,+3V+15V表示0,这就需要进行信号电平的转换,也就是把TTL电平信号转换成232电平信号,或者把RS-232电平信号转换成TTL电平信号。此处采用MAX232芯片(与HIN232芯片兼容)来将TTL信号转换成232信号,MAX232芯片引脚和逻辑符合如图3-9,具体电路见图3-10。本系统可使用STC或ISP类型的单片机,

21、通过微机串行接口,实现微机对单片机的在线编程控制。编程步骤如下:1、在Keil C环境下进行原程序的设计,包括:程序编辑、修改、编译、连接,最后生成16进制目标文件(.hex).2、使用共享软件STC-ISP。EXE程序下载软件,把生成的.exe程序装载到系统的单片机中:(1)断开控制板的电源;(2)连接好微机和本系统的串行接口;(3) 进入STC-ISP界面如图3-11,装入要下载的.hex文件,并按其中提示步骤进行操作;3、程序下载后,即可以运行调试。3.6 存储器扩展电路系统3.7 硬件的安装与第一步调试3.7.1 硬件安装按照原理图和印刷电路板,参考元器件焊接表自行安装元器件及连接电缆

22、,做到焊接漂亮,没有虚焊和短路,装配完成后,用万用表检查电源和地是否短路,确认无短路后再通电。表3-3 元器件焊接表*元件名称数量焊接位置的印刷版标记标准配备器件STC89C52+DIP401U16264+DIP281U474LS373+DIP202U2, U3MAX232+DIP161U774LS11+DIP141U10LED9LED1-LED8, POWER,注意极性.二极管IN400710D1-D4, D1-D4,D51,D52.注意极性.三极管S80505T1-T5,b极在左,c极在右方。3针单排插针1JP64针单排插针1Stande-by8针双排插针1CONECT弯脚9针插头1J2

23、RS232电源插座15VDCUSB座1J1 USB(扁形或方形)OSC2OSC1, OSC2电容: 10u1C1 10u1u1C 1u0.1u4C4-C70.01u1C33p2C1,C220p2C01,C02编程开关1P-Key按钮134*3的矩阵键盘,RST9脚电阻排1R 10K*8电阻: 1K15R41-R48,R50-R55,R8,10K4R1-R3,R74.7K1R18针SIP座15110LCD蜂鸣器1SPEAKER(正极在上方)可选器件5110LCD(液晶)1CH340T1CH340T强电连接器1 Control-port继电器4Relay1-relay4液晶LM1031LCM103

24、50K电位器1WR_1*注意:1、如果选择了可选的贴片芯片CH340T,则应首先焊接该芯片,后焊则不太方便。其它器件的焊接顺序没有太大关系。2、双排直插器件只需焊接DIP插座,焊接时圆缺口对圆缺口,方向不要搞反。元器件的焊接可参考表3-33.7.2 第一步调试安装完成后,必须进行第一步调试,包括以下工作:(1) 电源测试:用万用表测试各芯片插座、继电器等的电源和地线是否正确(+5V,GND)。测试电源前,不要插芯片,测试电源正确,确定电源无短路,才能插上芯片。(2) 焊接点目测检查,看是否有虚焊,发现问题,应该补焊。4.单片机控制器软件设计4.1 系统软件可实现的功能单片机机要完成的主要功能有

25、:(1) 键盘的功能定义及按键处理,系统的12个按键可根据需要进行功能定义,原有的键盘标识是一种常用的键盘定义的方案。(2) 定时控制。系统可同时控制4路家电,通过按键输入来设定和查看定时时间,也可通过微机来设定和查看定时时间,并且要根据用户操作来显示各种信息。(3) 报警的处理。在系统上电复位时会有3次报警声,并且指示灯亮灭3下,表示系统工作正常,在家电定时完成时也会有报警声,并且指示灯熄灭,表示家电定时时间到。(4) 和微机RS-232接口进行异步串行通信。(5) 点阵液晶显示控制。(6) 存储器读写控制。(7) LED显示控制。以上基本功能的组合,实现多种控制功能。此外扩充并行接口可以外

26、接扩展的电路,进行系统功能的扩充。4.2 C51语言及其软件开发工具4.2.1 C51语言介绍C51是对C语言的扩展,除了可使用ANSIC标准关键字以外,还增加了C51编译器的扩展关键字,主要扩展关键字如下:表4-1 C51编译器的扩展关键字关键字用途说明bit位标量声明声明一个位标量或一个位类型的函数sbit位标量声明声明一个可位寻址变量sfr特殊功能寄存器声明声明一个特殊功能寄存器sfr16特殊功能寄存器声明声明一个16位的特殊功能寄存器data存储器类型说明直接寻址的内部数据存储器bdata存储器类型说明可位寻址的内部数据存储器idata存储器类型说明间接寻址的内部数据存储器pdata存

27、储器类型说明分页寻址的外部数据存储器xdata存储器类型说明外部数据存储器code存储器类型说明程序存储器interrupt中断函数说明定义一个中断函数reentrant再入函数说明定义一个再入函数using寄存器组定义定义芯片的工作寄存器除此之外,C51编译器还定义了特殊功能寄存器,如下表所示。表4-2 AT89C52特殊功能寄存器符号地址注释符号地址注释*ACCE0H累加器*P3B0H端口3*BF0H乘法寄存器PCON87H电源控制及波特率选择*PSWD0H程序状态字*SCON98H串行口控制字SP81H堆栈指针SBUF99H串行数据缓冲字DPL82H数据存储器指针低8位*TCON88H定

28、时器控制字DPH83H数据存储器指针高8位TMOD89H定时器方式选择*IEA8H中断允许控制字TL08AH定时器0低8位*IPD8H中断优先控制字TL18BH定时器1低8位*P080H端口0TH08CH定时器0高8位*P190H端口1TH18DH定时器1高8位*P2A0H端口2注: *表示可位寻址4.2.2 软件开发工具1. Keil Vision简介德国keil公司的单片机语言编译器KeilC支持九种基本数据类型,变量可存放在bit、data、bdta、idata、xdata、pdata等不同类型的存储器空间;支持AMD和DALLAS公司的80320等单片机的双数据指针和PHILIPS公司

29、的807651等单片机的指令集以及Infieon(Siemens)公司80c517单片机中的算术单元和多重数据指针,支持数据覆盖。KeilC是目前流行的单片机C语言调试和开发软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部份组合在一起。KeilC51软件提供丰富的库函数和功能强大的Windows界面集成开发调试工具。重要的一点是KeilC51生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时,更能体现高级语言的优势。KeilC编译器能产生可重入代码,而且用Keil

30、C语言可以打开和关闭中断。KeilC程序结构与一般C语言没有什么差别。一个C51源程序大体上是一个函数定义的集合,一个C源程序至少包括一个函数,在这个集合中有且仅有一个名为main()的函数(主函数),也可能包含其它函数,因此函数是C程序的基本单位。主函数是程序的入口,一个C语言程序,总是从main()函数开始执行的,而不管物理位置上这个main()放在什么地方,主函数中的所有程序执行完毕,则程序执行完毕。主程序通过直接书写语句和调用其它函数来实现有关功能,这些其它函数可以是由C语言本身提供给我们的,这样的函数称之为库函数;也可以是用户自己编写的,这样的函数称之为用户自定义函数。库函数是C在库

31、文件中已定义的函数,其函数说明在相关的头文件中。对于这类函数用户在编程时只要用include预处理指令将头文件包含在用户文件中直接调用即可,简单地说,任何使用KeilC语言的人,都可以直接调用C的库函数而不需要为这个函数写任何代码,只需要包含具有该函数说明的相应的头文件即可。KeilC提供了100多个库函数供我们直接使用。图4.1(a) Keil Vison3窗口在KeilC中,函数定义由函数类型、函数名、参数表和函数体四部分组成。例如:voidmDelay(unsignedintDelayTime)。实现单片机仿真及程序编辑、编译的软件有很多,比较常用的有Keil Vision。Keil V

32、ision3开发界面如图4-1所示。2.Keil Vision使用Keil Vision编程环境和VC相似,使用过VC的人都很容易熟悉。for Windows 的使用步骤:(1) 菜单file_new 新建一个.c 文件,在编辑栏编写源程序。(2) 菜单file_save 或工具栏将C文件存盘。图4.1(b) Keil Vison3窗口菜单(3) 菜单 project_new project 创建一个project,工程名自定,并在其中加入已存在的该工程所需文件。这时该project 已是打开状态,或用open project 打开已存在的project。(4) 菜单option_for ta

33、rget 设置工程环境。(5) 如果需要,进入project- File Extension,。对工程文件路径进行修改。(6) 菜单project 选Build ,进行编译、链接,看是否有语法错误,若无则生成HEX 文件,若有则修改源文件后重复以上部分步骤。4.2.3 C51程序设计及调试过程1按Keil Vision使用步骤编写源程序和建立工程;2在Keil Vision环境下编译、连接无错误后产生.HEX文件;3使用通用编程器把程序的二进制文件.HEX写入单片机中的FLASH。本系统采用STC单片机,可以通过串行口进行直接下载编程。4.3 单片机控制程序设计提要 4.3.1 设计要求和总体

34、设计软件设计是根据硬件提供的功能及对其控制的要求来实现,需要考虑程序结构和数据结构。程序一般采取模块化程序结构,本次课程设计可以考虑从以下模块进行设计:表4-3 程序结构说明文件名说明Define.h变量、函数声明Main.c主函数模块LCD.c液晶显示初始化和显示模块LED.c发光二极管显示控制AppCtrl.c电器、声光报警控制模块Key.c键盘初始化和中断处理模块Timer.c定时器0初始化和中断处理模块Serial.c串行初始化和发送接收模块Memo.cSRAMd读写数据结构根据控制对于数据的要求来定义。主要包括:全局变量、局部变量、液晶显示码表等。开始检测硬件,指示灯亮灭3下,蜂鸣器

35、响3下程序初始化,显示“GOOD”检测中断,中断处理4.3.2 主程序模块设计方案主程序模块主要是进行硬件电路的检测和程序的初始化。硬件电路检测包括对LED指示灯、蜂鸣器和液晶显示器的检测。程序初始化包括液晶显示初始化、键盘初始化、定时器初始化和串行口初始化,它们都定义在相应的文件中。初始化完毕主程序一般处于循环工作状态,当有图4-2 主程序流程图中断发生,立即转去执行相应的中断处理程序。主程序流程图如图4-2所示。程序初始化主要包括:(1)定时器T0:计数方式、计数初值、中断允许、设置相关全局变量(包括输入计数值、报错计数值等);(2)LED显示器:写入模块专用初始化命令并定义内部RC 振荡

36、方式,同时显示“GOOD” ,表示液晶显示工作正常。(3)键盘初始化:主要是对/INT0 进行中断设置。(4)串行口初始化:对异步通信的帧格式、波特率、以及发生/接收中断进行设置。以下为主程序模块的参考程序。void init()check();/ 硬件电路检测P0 = 1;/ 指示灯1灭EA = 1;/ 打开总中断TMOD = 0x21;/ 设置定时器0和定时器1工作方式led_init();/ LED显示器初始化key_init();/ 键盘初始化timer_init();/ 定时器0初始化ser_init(); / 串行初始化 void main(void)delay(20);/ 延时2

37、0ms,稳定系统init();while(1);/ 循环4.3.3 子程序模块设计方案子程序作为模块单独封装,以便为主程序或其他模块调用。4.3.3.1 液晶显示模块4.3.3.2 电器控制模块此模块比较简单,主要是通过74LS373控制四路电器、指示灯和蜂鸣器的工作,根据系统接收到的数据,如键盘按键,控制是否给电器定时,需要定时则给74LS373相应位送上一个高电平,然后锁存到输出口,继电器吸合,给电器送电。送电的时间由单片机定时器确定,当定时时间到,要停止电器工作时,只需按相同步骤锁存一个低电平,断开电器供电,这样就可以实现电器的定时控制。4.3.3.3 键盘处理模块键盘中断程序的功能有以

38、下几个方面:(1) 判别键盘上有没有键闭合:其方法是行扫描,若判断有键按下,进行下一步处理。(2) 去除键的机械抖动:其方法为判断到键盘上有键闭合,延迟一段时间再判断键盘的状态,若键仍闭合,再判断按键是否释放,直到释放后才认为键盘上确实有一个键被按下,进行按键处理;否则,认为是键的抖动。(3) 按键处理:对各个定义的按键进行相应的处理:(4)使CPU对键的一次闭合仅作一次处理:采用方法为等待闭合键释放以后再作处理。程序流程如图4-3所示。 图4-3 键盘中断程序4.3.3.4 定时模块系统定义数组大小为12的无符号字符类型用来分别保存4路电器的时、分、秒,初始化定时时间为0,通过键盘或串口数据

39、确定时间,而时、分、秒的进制不一样,要求用软件控制。要精确定时,定时器0中断优先级别应该高一点,系统将它作为第二优先中断源来考虑。在定时中断函数内部的指令也会影响到定时时间的准确度,每次中断处理函数的执行时间是25ms,所以,中断函数中的语句的安排应尽可能不影响精确定时。时间计数用计数器T0,T0工作方式为1,由TH0作为高8位,TL0作为低8位,构成一个16位的计数器。通过TMOD方式寄存器设定定时器的工作方式,通过TCON控制寄存器相应位来启动定时器(参考图4-3和表4-4)。图4-3 定时中断处理表4-4 定时器的方式选择M1M0功能说明00方式0,为13位的定时器01方式1,为16位的

40、定时器10方式2,为常数自动重新装入的8位定时器11方式3,仅适用于T0,分为两个8位计数器,T1在方式3时停止计数当T0计数溢出时,一方面置“1”溢出标志TF0,向CPU请求中断,同时将TH0和TL0内容归0,所以,每进入一次中断都要给TH0和TL0装入初值。因此,T0工作于方式1定时,定时精度一般,但定时时间较长,T=(12/fosc)*(216-a)。T0工作于方式1,产生25ms定时中断,根据公式,计算出计数初值TH0=0X4C,TL0=0。1s内有40次中断。以下是定时中断处理模块流程图:图4-5 定时中断处理以下是时间中断参考程序:void timer0() interrupt 1

41、/ 一次中断25ms fosc=22.1184MHzTH0 = 0x4c;/ 定时器0初值TL0 = 0x00;for (i = 1; i 5; i+)/ 扫描4个家电if (appi-1 = 1)/ 已启动定时if (a = 36)/ 1s时间到a = 0;/ 每到1s钟,a清零if (sfm3*i-1 = 0)if (sfm3*i-2 = 0)if (sfm3*i-3 = 0)/ 定时时间到appi-1 = 0;sfm3*i-3 = 0;sfm3*i-2 = 0;sfm3*i-1 = 0;OnAppCtrl(i, 0);else/ 小时减1,分和秒置为59sfm3*i-3-;sfm3*i-

42、2 = 59;sfm3*i-1 = 59;else/ 分减1,小时不变,秒置为59sfm3*i-2-;sfm3*i-1 = 59;elsesfm3*i-1-;/ 秒减1,其它不变elsea+;/ 累加,直到36 4.3.3.5 串行模块系统要求能够通过微机发送命令给家电定时,下位机也能够发送所有家电的剩余时间给微机。下位机和上位机通信用的是串口通信,通信用方式1,每帧传送8位数据,利用第九位数据来判定是否停止一帧的传送。异步通信是按字符传送的,字符的前面有一个起始位(0),后面有一个停止位(1),这是一种起止式的通信方式,字符之间没有固定的间隔长度。典型的异步通信数据格式如图4-6所示。图4-

43、6 典型的异步通信格式MCS-51的串口是一个全双工的异步通信接口,可以同时发送和接收数据。串行口的内部有数据接收缓冲器和数据发送缓冲器。数据接收缓冲器只能读出不能写入,数据发送缓冲器只能写入不能读出,这两个数据缓冲器都用符号SBUF表示,地址都是99H。CPU对特殊功能寄存器SBUF执行写操作,就是将数据写入发送缓冲器;对SBUF读操作,就是读出接收缓冲器的内容。特殊功能寄存器SCON存放串行口的控制和状态信息,如图4-7所示。串行口用定时器T1作为波特率发生器(发送接收时钟),特殊功能寄存器PCON的最高位SMOD为串口波特率的倍率控制位。串行口控制寄存器SCON如图所示,它具有位寻址功能

44、。它包括串行口的工作方式选择位SM0、SM1,多机通信标志SM2,接收允许位REN,发送接收的第九位数据TB8,RB8,以及发送和接收中断标志TI,RI。图4-7 SCON的格式SM0、SM1串行口的方式选择位功能如表4-5所示。表4-5 串行口的方式选择SM0SM1方式功能说明000扩展移位寄存器方式(用于I/O扩展),移位速率为fosc/120118位UART,波特率可变(T1溢出率/n)1029位UART,波特率为fosc/64或fosc/321139位UART,波特率可变(T1溢出率/n)SM2方式2和方式3的多机通信控制位。对于方式2或方式3,如SM2置1,则接收到的第九位数据(RB

45、8)为0时不激活RI。对于方式1,如SM2=1,则只有接收到有效的停止位时才会激活RI。对于方式0,SM2应该为0。REN允许串行接收位。由软件置位以允许接收。由软件清0来禁止接收。TB8对于方式2和方式3,是发送的第九位数据。需要时由软件来置位或复位。RB8对于方式2和方式3,是接收到的第九位数据。对于方式1,如SM2=0,RB8是接收到的停止位。对于方式0,不使用RB8。TI发送中断标志。由硬件在方式0串行发送第8位结束时置位,或在其它方式串行发送停止位的开始时置位。必须由软件清0。RI接收中断标志。由硬件在方式0接收到第8位结束时置位,或在其它方式接收到停止位的中间时置位,必须由软件清0

46、。串行口定义为方式1时,它是一个8位的异步串行通信接口,TXD为数据发送端,RXD为数据接收端。方式1的波特率下式确定。方式1波特率=振荡器频率/3212(256-(TH1)在方式1中,一帧信息为10位:1位起始位,8位数据位(先低后高),1位停止位。只要有CPU数据写入SBUF,就会触发一个发送中断TI,同理,只要外部有数据写入SBUF,就会产生一个接收中断RI。发送或接收数据既可采用中断方式又可采用查询方式,由于系统在确定进入接收状态后,需接到或发送正确数据才算是完成传送,所以系统采用查询方式实现串口通信。完成课程设计的串行通信功能,可以选择完成以下设计之一:1、 通过串口传送命令和数据,

47、实现对电器控制此种设计需要编写单片机通信控制程序和微机通信控制程序,以下给出单片机程序。系统定义了数组大小为7的缓冲区,说明如下:uchar buffer7 = 0,/ 电器号 0,0,/ 秒 0,0,/ 分 0,0/ 时;/ 格式定义如:3460501(3 01-05-46)系统的串行发送流程图如图4-8所示。串行发送程序参考代码如下:void send()/ 发送所有家电的剩余时间给微机uchar i;index = 0;TI = 0;/ 每次调用该函数都要清零for (i = 1; i 5; i+)/ 4个家电putsfmToBuf(i);/ 把家电i剩余时间填入缓冲区while (in

48、dex 7)/ 缓冲区大小SBUF = bufferindex+0x30;/ 发送一字节数据while (!TI);/ 等待发送完毕TI = 0;/ 发送完毕需清零index+; if (index = 7)index = 0;/ 发送完一个家电剩余时间break;图4-8 串行发送流程图系统的串行接收流程图如图4-9所示。串行接收程序代码如下:void receive()/ 接收一个家电的定时时间index = 0;RI = 0;/ 每次调用该函数都要清零while (index = 0) & (buf = 9)图4-9 串行接收流程图buf = buf - 0x30;/ 判断数据格式els

49、e buf = 0x45;/ 错误码bufferindex = buf;/ 存入缓冲区index+;2、 和已有的微机串行通信通用测试程序进行通信图4-14 微机串行通信通用测试程序微机串行通信通用测试程序可采用SSCOM串口调试程序(可从网上下载),其界面如图4-14。可以设置波特率和帧格式,可以进行1次性发送和定时循环发生,可以接收并显示接收数据。单片机程序只要能实现以下功能:(1) 串行数据接收并回送;(2) 按键控制送数。串行中断处理模块,采取先中断后查询相结合的方式,处理完数据块帧后再退出,其中断处理参考程序如下:/*程序中r_com、t_com是定义的接收、发送数组下标全局变量,初

50、值为0;rbuf为定义的接收缓存区数组;tbuf为定义的发送缓存区数组*/void int_rs232 (void) interrupt 4 EA=0; /*关中断*/ if(RI) rbufr_com=SBUF;RI=0;tbufr_com=rbufr_com;r_com+;if(TI)TI=0;t_com+;SBUF=tbuft_com;EA=1; 【参考文献】【1】徐爱钧、彭秀华, Keil Cx51V7.0单片机高级语言编程与Vision2应用实践,电子工业出版社。【2】 马忠梅 马岩 单片机的C语言应用程序设计 北京航空航天大学出版社。【3】 keilc51 中文资料手册 【5】徐爱

51、钧 单片机高级语言c51应用程序设计电子工业出版社【6】戴梅萼、史嘉权编著,微型计算机技术及应用第三版, 清华大学出版社。【7】张友德、赵志英等编,单片微型机原理、应用与实验,复旦大学出版社。【8】黄维通编,Visual C+面向对象与可视化程序设计,清华大学出版社【9】, DATA SHEET:89C51/89C52/89C54/89C58/80C51 8-bit microcontroller family 4K/8K/16K/32K Flash【10】,+5V-Powered, Multichannel RS-232 Drivers/Receivers【11】,MC34063A DC/D

52、C CONVERTER CONTROL CIRCUIT.【12】单片机的c语言教程 磁动力工作室明浩【13】电子工程师网站附A 课程设计控制器元器件及材料序号名称数量备注189C5212825513MAX2321474LS37325MC340631674LS1117以上各种芯片DIP插座14P, 16P, 8P各1个;20P,40P各2个8按键49LCM103(液晶显示)110发光二极管(高亮)611继电器42扬声器113中功率NPN三极管514DB25RA/M插座(弯头)1套另:1针1孔(直型)15D9插座RA/M(弯头)1套另:2孔(直型)16USB方座117印刷电路板118电阻:1K10K*8(排) 10K16K4.7K2K560220 0.5可调电阻50K14121052611119二极管520电容:0.1u33uf 33P220P200u(电解)10u1u512122421电感120uH122晶振12MHz123SIP插件4芯+6芯3套+1套24跳线、256芯电源插座1套26扁平电缆40心1米附B 控制器电路原理图

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!