ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:34.35KB ,
资源ID:16616869      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-16616869.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(串口通信接收LCD1602显示.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

串口通信接收LCD1602显示.docx

1、串口通信接收LCD1602显示串口通信接收LCD1602显示注意:晶振使用11.0592MHz 波特率9600 /* * 文件名:串口接收试验.c * 描述 : 该程序从串口接收数据,通过LCD显示数据。在LCD的第一行显示出来, 当数据过多时(超过16个字符),LCD第一行将会被覆盖。 该试验使用的晶振是11.0592,如果使用12M晶振,会出现串口接收 不正常的情况。原因是用12M晶振,波特率9600时的误差率达 8%。 */ #include #include #define uchar unsigned char #define uint unsigned int /*LED_Buff

2、er16用来存储串口发送的数据,com_dat用来记录串口发送的个数*/ ucharLED_Buffer16, *q, com_dat; /从串口接收的数据 /这三个引脚参考资料 sbit E=P27; /1602使能引脚 sbit RW=P26; /1602读写引脚 sbit RS=P25; /1602数据/命令选择引脚 /* * 名称 : Delay(uint del) * 功能 : 延时10ms * del * 输入 : 无 * 输出 : 无 */ void Delay(uintdel) uinti,j; for(i=0; idel; i+) for(j=0; j1827; j+) ;

3、/* * 名称 : delay() * 功能 : 延时,延时时间大概为140US。 * 输入 : 无 * 输出 : 无 */ void delay() inti,j; for(i=0; i=10; i+) for(j=0; j=2; j+) ; /* * 名称 : Convert(ucharIn_Date) * 功能 : 因为电路设计时,P0.0-P0.7接法刚好了资料中的相反,所以设计该函数。 * 输入 : 1602资料上的值 * 输出 : 送到1602的值 */ uchar Convert(ucharIn_Date) uchari, Out_Date = 0, temp = 0; for(

4、i=0; ii) & 0x01; Out_Date |= (temp (7 - i); return Out_Date; /* * 名称 : enable(uchar del) * 功能 : 1602命令函数 * 输入 : 输入的命令值 * 输出 : 无 */ void enable(uchardel) P0 = Convert(del); RS = 0; RW = 0; E = 0; delay(); E = 1; delay(); /* * 名称 : write(uchar del) * 功能 : 1602写数据函数 * 输入 : 需要写入1602的数据 * 输出 : 无 */ void

5、write(uchardel) P0 = Convert(del); RS = 1; RW = 0; E = 0; delay(); E = 1; delay(); /* * 名称 : L1602_init() * 功能 : 1602初始化,请参考1602的资料 * 输入 : 无 * 输出 : 无 */ void L1602_init(void) enable(0x01); enable(0x38); enable(0x0c); enable(0x06); enable(0xd0); /* * 名称 : L1602_char(ucharhang,ucharlie,char sign) * 功能

6、 : 改变液晶中某位的值,如果要让第一行,第五个字符显示b ,调用该函数如下 L1602_char(1,5,b) * 输入 : 行,列,需要输入1602的数据 * 输出 : 无 */ void L1602_char(ucharhang,ucharlie,char sign) uchar a; if(hang = 1) a = 0x80; if(hang = 2) a = 0xc0; a = a + lie - 1; enable(a); write(sign); /* * 名称 : L1602_string(ucharhang,ucharlie,uchar *p) * 功能 : 改变液晶中某位

7、的值,如果要让第一行,第五个字符开始显示ab cd ef ,调用该函数如下 L1602_string(1,5,ab cd ef;) * 输入 : 行,列,需要输入1602的数据 * 输出 : 无 */ void L1602_string(ucharhang,ucharlie,uchar *p) uchar a; if(hang = 1) a = 0x80; if(hang = 2) a = 0xc0; a = a + lie - 1; enable(a); while(1) if(*p = 0) break; write(*p); p+; /* * 名称 : Com_Int() * 功能 :

8、串口中断子函数 * 输入 : 无 * 输出 : 无 */ void Com_Int(void) interrupt 4 EA = 0; if(RI = 1) /当硬件接收到一个数据时,RI会置位 LED_Buffercom_dat = SBUF; /把从串口读出的数存到数组 RI = 0; com_dat+; if(com_dat = 16) com_dat = 0; /当com_dat = 16时,清0,防止数组溢出 EA = 1; /* * 名称 : Com_Init() * 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中断 * 输入 : 无 * 输出 : 无 */

9、 void Com_Init(void) TMOD = 0x20; /定时器工作在定时器1的方式2 PCON = 0x00; /不倍频 SCON = 0x50; /串口工作在方式1,并且启动串行接收 TH1 = 0xFd; /设置波特率 9600 TL1 = 0xFd; TR1 = 1; /启动定时器1 ES = 1; /开串口中断 EA = 1; /开总中断 /* * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 */ void Main() uchari = 0, com_dat = 0; L1602_init(); Delay(100); Com_Init(); P2 = 0x00; while(1) q = LED_Buffer; L1602_string(1,1,q); com_dat = 0; Delay(100);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2