ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:214KB ,
资源ID:4311224      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4311224.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(单片机串口通信及液晶显示.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

单片机串口通信及液晶显示.doc

1、CDIO二级项目1、CDIO设计目的u 通过虚拟串口实现下位机与上位机之间的相互通信。u 通过设计将串口通信的各种方式进行进一步的了解。u 将接收的数字与发送的数字在LCD上进行显示,从而熟悉液晶显示屏LCD1602的具体操作。u 熟练掌握C语言在单片机上的编程应用。u 将各学科之间的的知识进行综合运用,并能够实现所需的功能设计。2、CDIO设计正文2.1串口通信原理串行通信是CPU与外界交换信息的一种基本通信方式。通信时仅需一到两根传输线,且每次只能传送一位,适用于长距离传输,但速度较慢。MCS51串行口是一个可编程的全双工串行通信接口,其对应的引脚为P3.0(10脚)和P3.1(11脚),

2、分别为RXD和TXD,通过软件编程它可以作通用异步收发器用,也可以做同步移位寄存器使用,其帧格式有8位、10位和11位3种,并能设置各种波特率。MCS51串行口有两个独立的缓冲器,即发送缓冲器和接收缓冲器,且共用一个地址99H(SBUF)。同时,MSC51串行口可以用软件设置成4种不同的工作方式。2.1.1串行口的工作原理通过对特殊功能寄存器串行口控制寄存器中SM0、SM1两位的操作,MCS51单片机串口通信工作方式有4种,与串行口有关的特殊功能寄存器有串行口控制寄存器SCON、电源控制寄存器PCON和定时器T1,主要确定了串口通信的工作方式和波特率的计算方法。(1)串行口数据缓冲器SBUFS

3、BUF是两个在物理上相互独立的接收,发送缓冲器,可同时发送,接收数据,两个缓冲器共用一个字节地址,为99H,可字节寻址,不可位寻址,复位值为00H。可通过编程对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。CPU写SBUF,就是修改发送缓冲器; CPU读SBUF,就是读接收缓冲器,在硬件结构上,串行口对外有两条独立的收发信号线RXD和TXD,因此可以同时发送,接收数据,实现全双工传送。(2)串行口控制寄存器SCONSCON寄存器用于确定串行通信的工作方式、接收和发送控制、串行口的中断状态标志,它既可以是字节寻址,也可以是位寻址,字地址为98H,其复位值为00H。SM0,SM1

4、工作方式控制位,可构成4种通信工作方式,分别为:方式0-同步移位寄存器;方式1-10位异步收发;方式2-11位异步收发;方式3-11位异步收发。SM2多机通信控制位,用于主一从式多机通信控制,因多机通信是在方式2和方式3下进行,因此SM2位主要用于方式2和方式3。若SM2=1,则允许多机通信。若SM2=0,则不属于多机通信情况,接收到一帧数据后,无论第9位(D8)是0还是1,都置中断标志RI=1,接收到的数据装入接收/发送缓冲器(SBUF)中。在工作方式1时,若SM2=1,则只有接收到有效停止位时中断标志RI才置1,以便接收下一帧数据;在工作方式0时,SM2必须为0。REN允许接收控制位,用软

5、件置1或清零,REN=1,允许接收;REN=0,禁止接收。 TB8发送数据位8,在方式2和方式3时,TB8是要发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据,TB8=1为地址,该位由软件置位或清零,此外,该位还可以作为数据的奇偶检验位。 RB8接收数据位8,在工作方式2和工作方式3种,它是接收到的第9位数据位,既可以作为约定好的奇偶检验位,也可以作为多机通信时的地址帧或数据帧标志。在工作方式1中若SM2=0,则RB8是接收到的停止位,在工作方式0种不使用RB8。TI发送中断标志位,在工作方式0中,发送完8位数据后,由硬件置1,向CPU申请接收中断

6、,CPU响应中断后,必须用软件清零;在其他方式下,在发送停止位前,由硬件置位。RI接收中断标志位。在工作方式0种,接收完8位数据后,由硬件置1,向CPU申请发送中断,CPU响应中断后,必须用软件清零;在其他方式下,在接收到停止位的中间时刻由硬件置1,中断响应后也必须用软件清零。串行发送中断标志位TI和接受中断标志位RI是同一个中断源,在全双工通信中,必须用软件来判别是发送中断请求还是接收中断请求。(3)电源控制寄存器PCON PCON主要是为CHMOS型单片机上实现电源控制而设置的专用寄存器,单元地址为87H其中只有一位SMOD与串行口工作有关。SMOD称为波特率选择位。在工作方式1,2,3中

7、若SMOD=1,则波特率提高一倍;若SMOD=0,则波特率不加倍。除了以上3种特殊功能寄存器以外,串口的工作还与定时器T1和中断允许寄存器IE有关,定时器T1主要在工作方式1,工作方式2中用于计算波特率,而IE主要用于接收/发送中断的允许控制,ES=0,禁止串行中断,ES=1,允许串行中断。2.1.2串行通信的波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。51芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率可以达到1M。模式2的波特率是固定在fosc

8、/64或fosc/32,具体用那一种就取决于PCON寄存器中的SMOD位,如SMOD为0,波特率为focs/64,SMOD为1,波特率为focs/32。模式1和模式3的波特率是可变的,取决于定时器1或2(52芯片)的溢出速率。计算这两个模式的波特率可以用以下的公式去计算。波特率(2SMOD32)定时器1溢出速率 (1)上式中如设置了PCON寄存器中的SMOD位为1时就可以把波特率提升2倍。通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值,这个定时模式下,定时器溢出后,TH1的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确

9、。在这个定时模式2下定时器1溢出速率的计算公式如下:溢出速率(计数速率)/(256TH1) (2) 上式中的“计数速率”与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速率就为1M。通常用11.0592M晶体是为了得到标准的无误差的波特率。如我们要得到9600的波特率,晶振为11.0592M和12M,定时器1为模式2,SMOD设为1,分别看看那所要求的TH1为何值。代入公式:11.0592M9600(232)

10、(11.0592M/12)/(256-TH1)TH125012M9600(232)(12M/12)/(256-TH1)TH1249.49上面的计算可以看出使用12M晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。本次设计中为了得到精确地波特率,采用的晶振频率为11.0592MHz,此外定时器工作在方式2,即八位自动重装载,串口工作在方式1.2.2接收与发送数据显示下位机发送的数据与上位机接受的数据都是通过LCD1602来进行显示的,其引脚图如图1所示。图1 LCD1602引脚图下位机发送的数据与上位机接受的数据都是通过LCD1

11、602来进行显示的。1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示: 表1:引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚

12、:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。2.2.1 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表2所示:表2:控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01

13、清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,

14、光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵

15、字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。表3:基本操作时序表读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无对LCD进行些操作时的时序图如图2所示图2 写操作时序2.2.2 1602LCD的RAM地址映射液晶显示模块是一个慢显示

16、器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3是1602的内部显示地址。例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。图3

17、1602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。2.2.3 1602LCD的一般初始化过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以

18、后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置2.3软件设计本次设计过程中当接收到数据后CPU响应中断,对接接收到得数据进行显示后退出中断,主函数以及中断函数的流程图如图4与图5所示。是开始初始化液晶初始化串口将下位机发送的数转换为ASCII,并送入LCD显示将要发送的数,送入单片机的SBUFTI是否为1?否将原来发送的数加1将TI置0进入中断将SBUF的值赋给temp将temp转换为ASCII并送LCD显示将RI清0退出中断图4 主函数流程图 图5中断流程图2.4硬

19、件仿真及调试图6硬件设计总体仿真电路图由于本次设计只是仿真,并没有进行硬件电路的搭建,因此仿真时采用的是虚拟串口,通过软件增加了一对虚拟串口COM1,COM4,其设置界面如图7所示。图7 虚拟串口调试设置界面当仿真开始后下位机发送的数进过虚拟串口发送上位机通过串口调试助手进行数据的发送与接收,其,仿真时下位机与上位机的波特率均设置为9600,串口调试助手工作时界面如图8所示。图8 串口调试助手仿真界面3、CDIO设计总结本次设计住实现了上位机与下位机之间简单的通信,上位机通过串口调试助手发送一个十六进制的数经过虚拟串口,可以被下位机接收,并在LCD进行显示。在老师讲述单片机课程的时候,对单片机

20、的串口通信知识进行了原理上的简单了解,对实际应用过程中应考虑的一些问题并没有过多的了解,通过本次设计,对单片机串口通信这部分的内容进行了更深层次的学习,知道了很多可是跟你学不到的东西。另外本次设计中,对收发的数据进行显示时用到了LCD液晶1602,刚开始学习是觉得液晶显示很神奇,再设计过程中,通过自己看教学视频进行学习,对液晶的原理,以及操作命令等有了比较详细的了解。一开始进行操作时由于对液晶显示的时序不是很清楚,知识把液晶显示的代码简单的堆在了一起,结果运行时,液晶不能显示。后来,自己仔细对1602的时序图进行学习后,才发现液晶初始化时,每条命令都是有先后顺序的。总之,通过本次设计锻炼了我查

21、找错误时的耐力,也是我对与C语言在单片机上的编程变得更加熟练,为以后进一步学习打下了坚实的基础。4、参考文献1 康华光主编,电子技术基础(数字部分)M北京:高等教育出版社,2000.62 谢自美主编,电子线路设计/实验/测试M武汉:华中科技大学出版社,2000.73胡汉才单片机原理与其接口技术(第二版)M北京:清华大学出版社,20044彭伟,单片机C语言程序设计实例100例.电子工业出版社.2009,06CDIO设计评 语课程设计成 绩指导教师(签字) 年 月 日代码:#include#define uchar unsigned char#define uint unsigned intuch

22、ar table10=send data:;uchar table113=receive data:;sbit lcden=P22;sbit lcdrs=P20;sbit lcdrw=P21;uchar num,flag;uchar c;void delay(uint z)uint x,y;for(x=z;x0;x-) for(y=110;y0;y-);/ 写命令子函数void write_cmd(uchar cmd) lcdrs=0;lcden=0; P0=cmd; lcdrw=0; delay(5); lcden=1; delay(5); lcden=0;delay(5); /写数据子函数

23、 void write_data(uchar dataa) lcdrs=1; P0=dataa;/lcdrw=0; delay(5); lcden=1; delay(5); lcden=0; /液晶初始化 void init() lcden=0; write_cmd(0x38);/ 设置16*2显示,5*7的点阵,8位数据口 write_cmd(0x0c);/开显示,不显示光标 write_cmd(0x06); write_cmd(0x01);/清屏 write_cmd(0x80);/初始化数据指针 for(num=0;num10;num+) write_data(tablenum);dela

24、y(5); write_cmd(0x80+0x40); for(num=0;num14;num+) write_data(table1num);delay(5); void change()uchar m,n;m=c/16; if(m10) m=m+0x30; else m=m+0x37;n=c%16; if(n10) n=n+0x30; else n=n+55;write_cmd(0x80+0x0a);delay(5);write_data(m);delay(20); write_cmd(0x80+0x0b); delay(5); write_data(n); delay(20);void

25、change1(uchar s) uchar p,q; q=s/16;if(q10) q=q+0x30;else q=q+0x37; write_cmd(0x80+0x40+0x0d); delay(5); write_data(q); delay(20); p=s%16;if(p10) p=p+0x30;else p=p+0x37; write_cmd(0x80+0x40+0x0e); delay(5); write_data(p); delay(20);/*串行口初始化程序*/void init1()SM0=0;SM1=1;/设置为串行口工作方式1REN=1;/ 允许串行口接收TI=0;RI=0;PCON=0;TH1=0xFD;TL1=0XFD;TMOD=0X20;/用作定时器,工作在方式2EA=1;ET1=0;ES=1;TR1=1;/主函数void main() init(); init1(); while(1)change();TI=0; SBUF=c; while(!TI);TI=0; delay(200); c+; void intrr() interrupt 4 uchar temp; temp=SBUF;change1(temp); RI=0; 第 14 页 共 10 页

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服