多功能微电脑控制_第1页
多功能微电脑控制_第2页
多功能微电脑控制_第3页
多功能微电脑控制_第4页
多功能微电脑控制_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

多功能微电脑控制第一页,共五十九页,编辑于2023年,星期五1 设计内容、安排、及评分1.1设计内容1、分析课程设计的“自编程微电脑定时控制器”硬件电路原理,完成硬件电路焊接、安装、调试;2、查阅有关的资料,并对资料进行整理综合;3、控制软件的设计,包括微机控制编程软件和单片机控制器软件二部分:微机部分:用VC、VB或其它面向对象的程序设计语言编程,能实现对89C52进行编程控制;单片机部分:用汇编或C编程,直接实现对控制器的键盘、液晶显示、串行通信、继电器定时等模块的控制;4、按工程化的原则完成控制器的电路原理图、使用说明书;进行设计展示、问辩和优化设计;5、学生独立完成课程设计报告。第二页,共五十九页,编辑于2023年,星期五1.2时间安排1.3

评分完成情况70%+设计报告30%1.

完成情况(1)

硬件焊接装配及电源测试:30分(2)

键盘处理程序:15分(3)

串行通信:15分(4)

液晶显示控制15分(5)

继电器定时控制15分(6)

微机并行口单片机编程控制10分(7)

问辩:2-3题,每答错一题,在总分中扣除8-10分2.

设计报告第三页,共五十九页,编辑于2023年,星期五2.系统构成2.1 硬件结构第四页,共五十九页,编辑于2023年,星期五2.2 主要功能及技术要求

1、能进行单片机仿真实验2.控制器自编程3.能够进行四家电控制第五页,共五十九页,编辑于2023年,星期五3.硬件电路原理系统硬件主要由:89C52单片机主控模块、LCM103液晶显示模块、键盘处理模块、定时及电器控制模块、异步串行通信模块、在线编程接口等组成。3.189C52单片机主控模块图3-1主控电路图第六页,共五十九页,编辑于2023年,星期五3.1.1FLASH编程AT89C52单片机内部有8K字节的FLASHPEROM,用户可对其进行编程。AT89C52编程方法如下:1、在地址线上加上要编程单元的地址信号。2、在数据线上加上要写入的数据字节。3、激活相应的控制信号。4、对高电压编程芯片,应将EA/VPP端加上+12V编程电压。5、每对FLASH存储阵列写入一个字节或每写入一个加密位,需加上一个ALE/PROG编程脉冲。每个字节写入周期是自身定时的,通常约为1.5ms。重复1—5步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。图3-2编程电路第七页,共五十九页,编辑于2023年,星期五表3-1FLASH存储器编程真值表第八页,共五十九页,编辑于2023年,星期五系统的编程控制电路系统设计出通过并行口实现AT89C52在线编程的电路。电路图如图3-3所示:第九页,共五十九页,编辑于2023年,星期五3.2 LCM103液晶显示模块3.2.1LCM103显示器及其控制原理表3-2LCM103引脚说明第十页,共五十九页,编辑于2023年,星期五(1)模块上电后,软件初始化模块,应延时200ms以上再送命令,第一写入模块专用初始化命令10000100100定义模块,第二10000011000定义内部RC振荡方式或10000010100定义外部晶体振荡方式(模块B处必须焊32768Hz晶体),第三10000000001开振荡器,第四10000000011开显示器.,以上四步完成后再送其它命令或显示数据,对显示的数据正确与否,可选用读RAM方式进行校验,为实现低功耗方式,每次读/写命令或数据之后,应将/CS、/RD、/WR、DATA置高电平或悬空。(2)LCM103显示RAM对应10位字符为右→左,RAM表数据位为1则显示,为0则灭。(3)VLCD必须接!当模块工作电压为3.3V以下时,VLCD脚与VDD直接相接或A焊盘短路,当模块工作电压>3.3V时,VLCD脚与VDD间接一电位器50KΩ调节,参考值:5V/36K。(3)模块掉电再上电时,应上电延时后,对/CS进行几个10µs以上的高电平脉冲,让模块复位。第十一页,共五十九页,编辑于2023年,星期五3.2.3LCM103显示器电路连接系统的显示器接口部分的具体电路如图所示。LCM103液晶显示模块有11个引脚(如表3-2所示),各引脚使用方法如下:图3-5显示电路第十二页,共五十九页,编辑于2023年,星期五(1)/CS为模块片选信号,必须接,用来选定LCM103,本电路选用口P2.6对LCM103选中控制。(2)/RD为LCM103模块的数据读出控制线,控制读取LCM103内部的显示数据,一般与单片机读线相接,如不需要读,可以不连接。(3)/WR为LCM103模块数据写控制线,与单片机写线相接。(4)DATA为LCM103的数据输入/输出,在设计时接单片机89C51的P0.0脚,按写时序逐位传送数据。(5)/IRQ为LCM103模块的WDT/定时器输出,集电极开路输出,不用可不接,本设计没用。(6)BZ为LCM103模块的压电陶瓷蜂鸣片驱动“+”极,/BZ为LCM103模块的压电陶瓷蜂鸣片驱动“-”极,由于系统中已有报警电路,所以该功能没有使用。(7)VLCD为LCM103模块的LCD屏工作电压调整线,可调整视角对比度,接一可调电阻用来调节显示器的亮度。第十三页,共五十九页,编辑于2023年,星期五3.2.4LCM103读写控制

显示模块的数据线只有一根,因此输入输出数据要串行进行。该模块的读写格式及指令如下:读格式:只读显示RAM

写命令:写数据:第十四页,共五十九页,编辑于2023年,星期五

表2.3LCM103命令集定义第十五页,共五十九页,编辑于2023年,星期五表2.4LCM103显示RAM对应笔划第十六页,共五十九页,编辑于2023年,星期五写命令/数据时序连续写数据时序第十七页,共五十九页,编辑于2023年,星期五3.3 键盘处理模块3.3.1键盘工作原理键盘分为独立式键盘和矩阵键盘,独立式键盘又可分为共阴极和共阳级两种。本系统中采用共阴极独立式键盘,CPU对键盘的扫描可采取程序控制的随机方式、定时控制方式、或中断控制方式。本系统采用中断方式,当有键闭合时,向CPU请求中断,CUP响应键盘中断,对键盘扫描,以识别哪一个键按下,然后执信相应的处理程序。第十八页,共五十九页,编辑于2023年,星期五3.4.2键盘电路分析系统的键盘接口电路如图所示。3个按键,分别为功能选择键、数字递增键和确定键第十九页,共五十九页,编辑于2023年,星期五3.4 定时及电器控制3.4.1 继电器控制电路第二十页,共五十九页,编辑于2023年,星期五3.4.2 声、光报警及上电显示声、光报警电路主要是在控制过程结束和对出错处理时,用蜂鸣器的发声或闪烁发光给用户以警示,以便用户及时进行人工处理。第二十一页,共五十九页,编辑于2023年,星期五3.5 异步串行通信232信号的传输标准是采用负逻辑电平,即用-3V~-15V表示1,+3V~+15V表示0,这就需要进行信号电平的转换,也就是把TTL电平信号转换成232电平信号,或者把RS-232电平信号转换成TTL电平信号。此处采用MAX232芯片来将TTL信号转换成232信号图3-18串行接口电路第二十二页,共五十九页,编辑于2023年,星期五3.6 在线编程接口第二十三页,共五十九页,编辑于2023年,星期五3.7电源输入及转换电路系统需要提供12V和5V两种电源。5V电源通过微机USB接口提供,在通过升压变换器MC34063得到12V电源。第二十四页,共五十九页,编辑于2023年,星期五3.8硬件的安装与第一步调试3.8.1硬件安装由于电路比较紧凑,安装时应该注意焊接元器件的顺序。可按以下顺序安装:(1)IC插座→电阻、电容、二极管、三极管→SIP插座→按钮→DB25、DB9插座→USB插座→继电器→拍POWERR6插座。(后2项可先不安装)注意:IC插座的方向不要焊错;二极管、三极管和电解电容的正负极不要焊错。按钮的方向不要焊错;各种器件焊接平整,焊点光滑。(2)焊接连接电缆:25DB:只焊接1-11、14-19共17个引脚,两边DB25对应引脚连接。9DB:只焊接2、3、5共3个引脚,两边DB25对应引脚连接。液晶显示器:只焊接/CS、/WR、DATA、VDD、VLCD、GND共6根线至SIP6插头,按样机焊接。继电器/LED选择连接电缆(SIP4):1-4脚对应连接。第二十五页,共五十九页,编辑于2023年,星期五(3)外接电器插座的连接:本控制器可以控制0线或火线,只要通过POWERR6插座,把电器的0线或火线接入即可,连接引脚如表。第二十六页,共五十九页,编辑于2023年,星期五3.8.2第一步调试安装完成后,必须进行第一步调试,包括以下工作:电源测试:用万用表测试各芯片插座、继电器等的电源和地线是否正确(+5V,+12V,GND)。测试电源前,不要插芯片,测试电源正确,才能插上芯片。焊接点目测检查,看是否有虚焊,发现问题,应该补焊。第二十七页,共五十九页,编辑于2023年,星期五4.单片机控制器软件设计4.1软件要实现的功能下位机要完成的主要功能有:(1)键盘的多功能定义,系统只有3个按键可用,因此,每一个按键都有多重功能,在不同时刻按下处理不同事务。(2)定时控制。系统可同时控制4路家电,通过按键输入来设定和查看定时时间,也可通过微机来设定和查看定时时间,可根据用户操作来显示各种信息。(3)报警的处理。在系统上电复位时会有3次报警声,并且指示灯亮灭3下,表示系统工作正常,在家电定时完成时也会有报警声,并且指示灯熄灭,表示家电定时时间到。(4)和微机RS-232接口进行异步串行通信。第二十八页,共五十九页,编辑于2023年,星期五4.2C51语言及其软件开发工具4.2.1C51语言介绍C51是对C语言的扩展,除了可使用ANSIC标准关键字以外,还增加了C51编译器的扩展关键字:

第二十九页,共五十九页,编辑于2023年,星期五C51编译器还定义了特殊功能寄存器,如下表所示第三十页,共五十九页,编辑于2023年,星期五4.2.2软件开发工具1.KeilµVision简介德国keil公司的单片机C语言编译器KeilC支持九种基本数据类型,变量可存放在bit、data、bdta、idata、xdata、pdata等不同类型的存储器空间。KeilC是目前流行的单片机C语言调试和开发软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(µVision)将这些部份组合在一起。KeilC程序结构与一般C语言没有什么差别。一个C51源程序大体上是一个函数定义的集合,一个C源程序至少包括一个函数,在这个集合中有且仅有一个名为main()的函数(主函数),也可能包含其它函数,因此函数是C程序的基本单位。主函数是程序的入口,一个C语言程序,总是从main()函数开始执行的,而不管物理位置上这个main()放在什么地方,主函数中的所有程序执行完毕,则程序执行完毕。主程序通过直接书写语句和调用其它函数来实现有关功能,这些其它函数可以是由C语言本身提供给我们的,这样的函数称之为库函数;也可以是用户自己编写的,这样的函数称之为用户自定义函数。KeilC提供了100多个库函数供我们直接使用。在KeilC中,函数定义由函数类型、函数名、参数表和函数体四部分组成。例如:void

mDelay

(unsigned

int

DelayTime)。实现单片机仿真及程序编辑、编译的软件有很多,比较常用的有KeilµVision。KeilµVision3开发界面如图4-1所示。第三十一页,共五十九页,编辑于2023年,星期五图4.1(a)KeilμVison3窗口第三十二页,共五十九页,编辑于2023年,星期五2. KeilµVision使用KeilµVision编程环境和VC相似,使用过VC的人都很容易熟悉。forWindows的使用步骤:(1)菜单file_new新建一个<文件名>.c文件,在编辑栏编写源程序。(2)菜单file_save或工具将C文件存盘。(3)菜单project_newproject创建一个project,工程名自定,并在其中加入已存在的该工程所需文件。这时该project已是打开状态,或用openproject打开已存在的project。(4)菜单option_fortarget…设置工程环境。(5)如果需要,进入project-FileExtension,…。对工程文件路径进行修改。(6)菜单project选Build…,进行编译、链接,看是否有语法错误,若无则生成HEX文件,若有则修改源文件后重复以上部分步骤。图4.1(b)KeilμVison3窗口菜单第三十三页,共五十九页,编辑于2023年,星期五4.2.3C51程序设计及调试过程1.按KeilµVision使用步骤编写源程序和建立工程;2.在KeilµVision环境下编译、连接无错误后产生.HEX文件3.使用通用编程器把程序的二进制文件.HEX写入单片机中的FLASH。以下以南京西尔特的SUPERPRO680通用编程器为例,介绍编程器的使用步骤:第三十四页,共五十九页,编辑于2023年,星期五(1)把89C52芯片正确放入编程器的编程槽中,按照编程器面板上的图例,千万不要放反,放反将烧坏芯片。(2)打开编程器电源,指示灯绿灯亮表示正常;红灯亮表示不正常,立即关掉电源进行检查,重新摆放芯片。(3)执行SUPERPRO680通用编程器程序进入编程窗口如图4-2所示。(4)用菜单Device-select或“select”功能按钮进入芯片选择对话框,正确选择被编程芯片。(5)用菜单File-Load或打开文件的功能按钮,装入KeilµVision下产生的.HEX文件(6)用Blank按钮擦除芯片的FLASH。(7)用Prog按钮把.HEX文件写入芯片的FLASH(8)写入无误(有错误会自动报错)后,关掉编程器电源,取出芯片,即编程完成。编程好的芯片插入用户板89C52的插座,然后接通用户板电源,观察单片机控制运行的情况,若不符合设计要求,则要修改程序,重新对单片机进行编程。第三十五页,共五十九页,编辑于2023年,星期五4.3单片机控制程序设计提要4.3.1设计要求和总体设计软件设计是根据硬件提供的功能及对其控制的要求来实现,需要考虑程序结构和数据结构。程序一般采取模块化程序结构,具体设计表所示。数据结构根据控制对于数据的要求来定义。主要包括:全局变量、局部变量、液晶显示码表等。第三十六页,共五十九页,编辑于2023年,星期五4.3..2主程序模块设计方案主程序模块主要是进行硬件电路的检测和程序的初始化。硬件电路检测包括对LED指示灯、蜂鸣器和液晶显示器的检测。程序初始化主要包括:(1)定时器T0:计数方式、计数初值、中断允许、设置相关全局变量(包括输入计数值、报错计数值等);(2)LED显示器:写入模块专用初始化命令并定义内部RC振荡方式,同时显示“GOOD”

,表示液晶显示工作正常。(3)键盘初始化:主要是对/INT0进行中断设置。(4)串行口初始化:对异步通信的帧格式、波特率、以及发生/接收中断进行设置。第三十七页,共五十九页,编辑于2023年,星期五开始检测硬件,指示灯亮灭3下,蜂鸣器响3下程序初始化,显示“GOOD”检测中断,中断处理第三十八页,共五十九页,编辑于2023年,星期五4.3.3子程序模块设计方案子程序作为模块单独封装,以便为主程序或其他模块调用。4.3.3.1液晶显示模块(1)初始化子程序模块voidled_init() { ucharch; write_com(0x24); //专用初始化定义

write_com(0x18); //定义内部RC振荡器工作

write_com(0x01); //开振荡器

write_com(0x03); //开显示器

cleardisp(); //清屏

write_data_addr(0); for(ch=0;ch<12;ch++) //显示“GOOD” write_data_data(dscrc_tablegood[ch]); cleardisp(); delay(500); displaychar(1); //显示“1”}第三十九页,共五十九页,编辑于2023年,星期五(2)写数据子程序模块写字符函数参数分别为需要写入的字段位和需要写入的字符,程序根据要写入的字符值查找到码表中相对应的数据,然后输出。需要注意的是,码表数据是按8位字段反向定义的,所以,在写数据位时,地址位要左移,而数据位则需要右移。(3)写命令和写数据子程序模块方法类似。(4)写字符串函数由时、分、秒作为参数,时间输出格式为:00-00-00。它可以在键盘处理中根据设定时间的不同或查看状态的不同而动态的显示。

第四十页,共五十九页,编辑于2023年,星期五4.3.3.2电器控制模块此模块比较简单,主要是通过74LS373控制四路电器、指示灯和蜂鸣器的工作,根据系统接收到的数据,如键盘按键,控制是否给电器定时,需要定时则给74LS373相应位送上一个高电平,然后锁存到输出口,继电器吸合,给电器送电。送电的时间由单片机定时器确定,当定时时间到,要停止电器工作时,只需按相同步骤锁存一个低电平,断开电器供电,这样就可以实现电器的定时控制。

第四十一页,共五十九页,编辑于2023年,星期五4.3.3.3键盘处理模块系统有3个独立的功能按键,它们是通过与门接到中断0输入口,在键盘中断函数中还要识别按下的键,按键功能可以根据控制及人机交互需要自行定义,通过软件处理来实现。以下介绍的是一种定义方法。

本系统的3个按键定义为3类按键:P1.0段位选择键(用*代表)、P1.1数字键(用%代表)、P1.2确认键(用#代表),3类按键所产生的功能如下表。

第四十二页,共五十九页,编辑于2023年,星期五键盘中断程序的功能有以下几个方面:(1)判别键盘上有没有键闭合:其方法是判断P1.0、P1.1、P1.2是否为低电平,若为低电平,则可能有键按下,进行下一步处理。(2)

去除键的机械抖动:其方法为判断到键盘上有键闭合,延迟一段时间再判断键盘的状态,若键仍闭合,再判断按键是否释放,直到释放后才认为键盘上确实有一个键被按下,进行按键处理;否则,认为是键的抖动。(3)按键处理:系统定义了一些标志变量,在各自的按键处理程序中都会修改这些变量,当有下一次按键时,就可以通过这些变量来做相应的处理。(4)使CPU对键的一次闭合仅作一次处理:采用方法为等待闭合键释放以后再作处理。程序流程如图4-6所示。

第四十三页,共五十九页,编辑于2023年,星期五第四十四页,共五十九页,编辑于2023年,星期五确认键处理第四十五页,共五十九页,编辑于2023年,星期五4.3.3.4定时模块系统定义数组大小为12的无符号字符类型用来分别保存4路电器的时、分、秒,初始化定时时间为0,通过键盘或串口数据确定时间,而时、分、秒的进制不一样,要求用软件控制。要精确定时,定时器0中断优先级别应该高一点,系统将它作为第二优先中断源来考虑。在定时中断函数内部的指令也会影响到定时时间的准确度,每次中断处理函数的执行时间是25ms,所以,中断函数中的语句的安排应尽可能不影响精确定时。时间计数用计数器T0,T0工作方式为1,构成一个16位的计数器。通过TMOD方式寄存器设定定时器的工作方式,通过TCON控制寄存器相应位来启动定时器。

第四十六页,共五十九页,编辑于2023年,星期五定时中断处理

第四十七页,共五十九页,编辑于2023年,星期五4.3.3.5串行模块系统要求能够通过微机发送命令给家电定时,下位机也能够发送所有家电的剩余时间给微机。下位机和上位机通信用的是串口通信,通信用方式1,每帧传送8位数据,利用第九位数据来判定是否停止一帧的传送。典型的异步通信数据格式如图所示。特殊功能寄存器SCON存放串行口的控制和状态信息,串行口用定时器T1作为波特率发生器(发送接收时钟),特殊功能寄存器PCON的最高位SMOD为串口波特率的倍率控制位。第四十八页,共五十九页,编辑于2023年,星期五完成课程设计的串行通信功能,可以选择完成以下设计之一:1、

通过串口传送命令和数据,实现对电器控制此种设计需要编写单片机通信控制程序和微机通信控制程序,以下给出单片机程序。系统定义了数组大小为7的缓冲区,

串行发送流程串行接收流程第四十九页,共五十九页,编辑于2023年,星期五

2、和已有的微机串行通信通用测试程序进行通信微机串行通信通用测试程序可采用SSCOM串口调试程序(可从网上下载),其界面如图。可以设置波特率和帧格式,可以进行1次性发送和定时循环发生,可以接收并显示接收数据。

微机串行通信通用测试程序第五十页,共五十九页,编辑于2023年,星期五单片机程序只要能实现以下功能:(1)

串行数据接收并回送;(2)

按键控制送数。串行中断处理模块,采取先中断后查询相结合的方式,处理完数据块帧后再退出,其中断处理参考程序如下:voidint_rs232(void)interrupt4{ EA=0; /*关中断*/ if(RI) { rbuf[r_com]=SBUF; RI=0; tbuf[r_com]=rbuf[r_com]; r_com++; } if(TI) { TI=0; t_com++; SBUF=tbuf[t_com]; } EA=1;}

第五十一页,共五十九页,编辑于2023年,星期五5. 微机控制单片机编程软件设计及调试5.1系统要实现的对单片机编程功能系统由上位机和下位机共同组成,上位机要完成的主要功能有:对89C52芯片进行擦除操作,实质上是对存储单元全写入0XFF。对89C52芯片进行读操作,包括读签名字和整个存储单元。对89C52芯片进行写操作。对89C52芯片进行程序校验。对89C52芯片进行加密。完成89C52的自动编程和工作状态转换。第五十二页,共五十九页,编辑于2023年,星期五5.3AT89C52F

温馨提示

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

评论

0/150

提交评论