课程设计专业课程设计.doc_第1页
课程设计专业课程设计.doc_第2页
课程设计专业课程设计.doc_第3页
课程设计专业课程设计.doc_第4页
课程设计专业课程设计.doc_第5页
免费预览已结束,剩余18页可下载查看

下载本文档

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

文档简介

专业方向课程设计报告题目:甲机通过串口控制乙机LED闪烁的设计班 级 : 电子信息科学与技术姓名(学号):姓名(学号):姓名(学号): 组 号 : 01 目录摘要 2一设计目的 3二 设计要求 3三 方案论证 33.1 单片机介绍 33.2 方案设计 5四 理论设计 94.1 用CAD软件绘制的硬件原理图 94.2 PCB制图及电路板制作11五 电路仿真及仿真结果分析125.1电路调试125.2 软件程序调试135.3 硬件调试20六 心得体会21七 参考文献22摘要 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用尤为重要。而51单片机是各类单片机中最为典型和最具代表性的一种。本实验是基于MCS-51系列单片机所设计的,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制, 实现甲机控制乙机LED灯的闪烁,实现双机通信。关键词:单片机、AT89C51、双机通信、LED题目:甲机通过串口控制乙机LED闪烁的设计一、课程设计目的单片机专业课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。在课程设计过程中,在教师指导和组员同学帮助下,应用工程的方法,通过一个课题的设计练习,可使学生初步体验单片机应用系统的设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。 通过课程设计,应该能加强学生如下能力的培养:1.独立工作能力和创造力;2.综合运用专业及基础知识,解决实际工程技术问题的能力;3.查阅图书资料、产品手册和各种工具书的能力;4.工程绘图的能力;5.编写技术报告和编写技术资料的能力。二、设计要求 两片单片机(称为甲机和乙机)之间采用串行通信方式1来控制乙机的LED1闪烁,LED2闪烁, LED1和LED2同时闪烁,或者同时关闭LED1和LED2。1.甲机发送字符“A”,控制乙机的LED1闪烁;2.甲机发送字符“B”,控制乙机的LED2闪烁;3.甲机发送字符“C”,控制乙机的LED1和LED2同时闪烁;4.甲机停止发送任何命令字符,则乙机的LED1和LED2均停止闪烁。三、方案论证3.1 单片机简介AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性:与MCS-51 兼容;4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-24MHz;三级程序存储器锁定;1288位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。图3-1 AT89C51芯片图 图 3-2 AT8952实物图3.2 方案设计 直接利用89C51单片机芯片内部的串行口进行控制AT89C51单片机内部有一个 全双工的串行接收和发射缓冲器(SBUFF),这两个在物理上独立的接收发射器,即可以接收也可以发射数据,但接收缓冲器只可以读出不能写入,而发送缓冲器只能写入不能读出,它们的地址是99H。这个通信口即可以用于网络通信,亦可以实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可以方便的构成标准的RS-232接口。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发射器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99H)。MCS-51的串行数据传输很简单,只要向缓冲器写入数据就可发送数据。而从接收缓冲器读出数据既可接收数据。SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据通信的控制,单元地址是98H,其结构格式如下:表1 寄存器SCON结构SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH8DH9CH9BH9AH99H98H图 3-3 SCON寄存器结构特殊功能寄存器PCON,主要是CHMOS型单片机的电源控制而设置的专用寄存器,单元地址为87H其机构格式如下表: PCOND7D6D5D4D3D2D1D0位符号SMODGF1GF0PDIDL图 3-4 特殊功能寄存器PCON89C5189C51串行口串行口图 3-5 方案一模块图串行口工作方式的选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数。MSC-51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式0和模式2波特率计算很简单;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。 在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。在此模式下波特率计算公式为: 波特率=(1+SMOD)*晶振频率/(384*(256-TH1) 其中,SMOD寄存器PCON的第7位,称为波特率倍增位;TH1定时器的重载值。 在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信利用RS232、串行接口、89C51进行控制RS-232简介 图 3-6 RS232电路RS-232规定了自己的电气标准,由于它是在TTL电路之前研制的,因此它的电平不是+5V和地,而是采用负逻辑,即逻辑“0”:+5V5V,逻辑“1”:5V15V。因此RS-232不能和TTL电平直接相连,必须进行电平转换。本设计选用MAX232。管脚说明如下C0+、C0-、C1+、C1-是外接电容端;R1IN、R2IN是2路RS-232C电平信号接收输入端;RlOUT、R2OUT是2路转换后的TTL电平接收信号输出端,送8051的RXD接收端;TlIN、T2IN是2路TTL电平发送输入端,接8051的TxD发送端;TlOUT、T2OUT是2路转换后的发送RS-232C电平信号输出端,接传输线;V+经电容接电源+5V;V-经电容接地。图 3-7 方案二模块图图 3-8 方案二电路图 对方案一和方案二进行比较,虽然两个方案在控制和操作方面都比较相似,但是从现实的操作,对电路板制作,焊接以及工程成本的计算,方案一是优先方案。四、理论设计:4.1 用CAD软件绘制的硬件原理图图 4-1 硬件原理图开关电路控制整个电路的电源和电源指示显示,方便在对电路进行操作时观察,控制。图 4-2 开关电路图按键电路: 控制LED灯的显示及复位按键,方便电路控制。图 4-3 按键电路LED 显示电路:电路控制显示程序结果。图 4-4 LED显示电路4.2 PCB制图及电路板制作 根据电路硬件原理图画出PCB图,如下图所示:图 4-5 PCB电路图利用原理图设计工具绘制原理图,并且生成对应的网络表。当然,有些特殊情况下,如电路板比较简单,已经有了网络表等情况下也可以不进行原理图的设计,直接进入PCB设计系统,在PCB设计系统中,可以直接取用零件封装,人工生成网络表。 手工更改网络表 将一些元件的固定用脚等原理图上没有的焊盘定义到与它相通的网络上,没任何物理连接的可定义到地或保护地等。将一些原理图和PCB封装库中引脚名称不一致的器件引脚名称改成和PCB封装库中的一致,特别是二、三极管等。五、电路仿真及仿真结果分析 5.1电路调试单片机软件仿真系统Proteus介绍:Proteus是英国Labcenter Electro-nics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES(Adv-Ancd Routing and Editing Software)也就是PCB.图5-1 ISIS启动界面图5-2 单片机属性的设定硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。调试步骤是:首先把电路分为若干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的范围内;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。仿真调试结果图 5-3 仿真5.2 软件程序调试Keil Vision2开发环境介绍:Keil软件是目前最流行开发MCS-51系列单片机的软件。Keil提供包括C编译器,宏汇编,连接器,库管理和一个功能强大的仿真调试器等在内的完整开发方案。通过一个集成开发环境Vision2将这些部分组合在一起。软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。软件编写程序时,应注意使用汇编语言编写的程序文件名后缀(即扩展名)是.c,编写的程序称为源程序。通过编程器扩展名为.HEX的可执行文件烧写到单片机内。在写入之前还可以进行软件仿真,即在软件上模拟单片机程序原形情况,以便进行调试和修改。图5-4 程序调试图主机程序:/* 发送程序 连线:两个单片机用3根线连起来,要共地,rxd,txd要交叉连接 程序效果:通过主机发送,从机接收 在主机中通过记下按键按下的次数,主机中显示最后 按下的六个数值,并发送给从机,从机也显示这六个数值 */ #include /头文件 #include /循环移位文件 #define uchar unsigned char/宏定义 #define uint unsigned intsbit key1=P14; /位声明sbit key2=P15; /位声明sbit key3=P16; /位声明 sbit key4=P17; /位声明 uchar count,cnt=0,k=0; void delay(uchar i) uchar x,y; for(x=i;x0;x-) for(y=255;y0;y-); void delay_10ms(void) /延时/ unsigned char i,j; for(i=0;i0;i-) for(j=248;j0;j-); /初始化子函数 void init() EA=1; /开总中断 ES=1; /允许串口中断 ET1=1; /允许定时器T1的中断 TMOD=0x20; /定时器T1,在方式3中断产生波特率 PCON=0x00;/ &= 0xef;/ 波特率不倍增 PCON=0x00; /SMOD=0 SCON=0x50; TH1=0xfd; /波特率设置为9600 TL1=0xfd; TR1=1; /开定时器T1运行控制位 /按键扫描子函数 void key_scan() if(key1=0) /判断是否有按键按下 delay_10ms();if(key1=0) while(!key1); /等待按键松手 SBUF=A; /送给缓冲区,发送 while(!TI); /等待发送完 TI=0; /发送完了,标志位清零 if(key2=0) /判断是否有按键按下 delay_10ms();if(key2=0) while(!key2); /等待按键松手 SBUF=B; /送给缓冲区,发送 while(!TI); /等待发送完 TI=0; /发送完了,标志位清零 if(key3=0) /判断是否有按键按下 delay_10ms();if(key3=0) while(!key3); /等待按键松手 SBUF=C; /送给缓冲区,发送 while(!TI); /等待发送完 TI=0; /发送完了,标志位清零 if(key4=0) /判断是否有按键按下 delay_10ms();if(key4=0) while(!key4); /等待按键松手 SBUF=D; /送给缓冲区,发送 while(!TI); /等待发送完 TI=0; /发送完了,标志位清零 void main() init(); /调用初始化子函数 while(1) key_scan(); /调用键盘扫描子函数 while(RI) /判断是否接受完 RI=0;/接受完了,标志位清零 k=SBUF; switch(k) case A :P0=0xfe;delay(200);P0=0xfF;delay(200);break;case B :P0=0xfD;delay(200);P0=0xfF;delay(200);break;case C :P0=0xfC;delay(200);P0=0xfF;delay(200);break;case D :P0=0xfF;delay(200);P0=0xfF;delay(200);break; 从机程序:#include /头文件 #include /循环文件 #define uchar unsigned char/宏定义 #define uint unsigned int sbit key1=P14; /位声明sbit key2=P15; /位声明sbit key3=P16; /位声明 sbit key4=P17; /位声明uchar count,cnt=0,k=0;void delay( uchar i) uchar x,y; for(x=i;x0;x-) for(y=255;y0;y-); void delay_10ms(void) /延时/ unsigned char i,j; for(i=0;i0;i-) for(j=248;j0;j-); /初始化子函数 void init() EA=1; /开总中断 ES=1; /允许串口中断 ET1=1; /允许定时器T1的中断 TMOD=0x20; /定时器T1,在方式3中断产生波特率 PCON=0x00;/ &= 0xef;/ 波特率不倍增 PCON=0x00; /SMOD=0 SCON=0x50; TH1=0xfd; /波特率设置为9600 TL1=0xfd; TR1=1; /开定时器T1运行控制位 void key_scan() if(key1=0) /判断是否有按键按下 delay_10ms();if(key1=0) while(!key1); /等待按键松手 SBUF=A; /送给缓冲区,发送 while(!TI); /等待发送完 TI=0; /发送完了,标志位清零 if(key2=0) /判断是否有按键按下 delay_10ms();if(key2=0) while(!key2); /等待按键松手 SBUF=B; /送给缓冲区,发送 while(!TI); /等待发送完 TI=0; /发送完了,标志位清零 if(key3=0) /判断是否有按键按下 delay_10ms();if(key3=0) while(!key3); /等待按键松手 SBUF=C; /送给缓冲区,发送 while(!TI); /等待发送完 TI=0; /发送完了,标志位清零 if(key4=0) /判断是否有按键按下 delay_10ms();if(key4=0) while(!key4); /等待按键松手 SBUF=D; /送给缓冲区,发送 while(!TI); /等待发送完 TI=0; /发送完了,标志位清零 /主函数 void main() init(); /调用初始化子函数 while(1) key_scan(); while(RI) /判断是否接受完 RI=0;/接受完了,标志位清零 k=SBUF; switch(k) case A :P0=0xfe;delay(200);P0=0xfF;delay(200);break;case B :P0=0xfD;delay(200);P0=0xfF;delay(200);break;case C :P0=0xfC;delay(200);P0=0xfF;delay(200);break;case D :P0=0xfF;delay(200);P0=0xfF;delay(200);break; 5.3 硬件调试硬件调试是一件重要而细微的工作,许多硬件错误往往是在软件调试时被发现的。通常,先排除明显的硬件故障,之后,再和测试软件结合起来调试。硬件调试可分为静态调试和动态调试两步。静态调试是在用户系统未工作时的一种硬件检测。检测步骤如下:目测:检查外部的各种元件或者是电路是否有断点,及焊点是否牢固,是否存在虚焊等现象;用万用表测试:先用万用表复核目测中有疑问的焊接点及可能在焊接过程中烧坏的元件,再检测各种电源线与地线之间是否有短路现象;加电检测:给板加电,检测所有插座或器件的电源是否符合要求;联机检测:要完成对用户系统的调试,需在单片机开发系统环境下进行。动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。动态调试的一般方法是由近及远、由分到合。由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的 器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合的调试既告完成。由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。六、心得体会近一段时间的实践和体验对我来说学到的不仅是那些知识,更多的是团队与合作。这项

温馨提示

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

最新文档

评论

0/150

提交评论