




免费预览已结束,剩余3页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
24C02存储芯片实验总结此实验内容是通过串口向存储芯片写数据,连续写多个字,按照一定的格式将数字,字符,汉字等存储到其中。而这个实验的目的就是解决无字库的显示器或者单片机的存储量太小的情况,存储那些固定的内容。实验想法的来源:用5110LCD、STC11F04E单片机和超声波模块做超声波测距仪时,由于5110LCD是无字库显示器,单片机的存储量又小。当在程序中写入的字库的信息量大时,单片机就根本装不下程序。此时就想到是否可以将字库信息存入到存储器中解决,于是就有必要进行这个实验的研究。解决方案:第一步,完成24C02的单字节读写实验1602LCD显示(1602比较熟悉,操作起来方便)。第二步,加上串口通信,通过PC机上的串口调试工具向单片机发送信息并将其存入但24C02中,并提取出数据显示出来。第三步,查阅资料(主要是数据手册)思考如何向存储其中连续写入多字节,连续读取多字节。第四步,完成通过串口通信向存储器中指定地址连续存储多字节,并显示存储的内容。第五步,完成如何向单片机发送地址,发送地址要存储的内容,如何设计发送格式,并显示发送地址中存储的发送内容(作判断用)。第六步,无字库,如何实现字存储。第七步,写入,读取分离进行测试(5110LCD测试)。第八步,完成存储英文字库。第九步,完成存储中文字库。实验过程:(1)程序设计的流程图:开始显示初始化的串口初始化判断串口中断是否接受数据成功是,存入存储器串口中断判断接受中断标志位为1,则清零暂存接受的数据判断是否接受了9个字节的数据是,给成功标记返回读取存储器,并显示存储的数据(2)第一步和第二步是很简单的,比较容易实现,网上这两步中涉及到的内容很多也很详细,效果很容就可以得到理想。然而当进行到第三步和第四步的时候就出现问题了,首先,不知道如何连续写入多字节,读取多字节,查阅了不少资料和程序就是不对,总是只能写入一个字节。这时想到的问题是24C02程序的时序不对,又查阅手册,在程序中定义字符串存入真确,没有问题排除。又提出问题,串口程序不对。先前自己认为串口调试工具发送多个字节是一次性发送到SBUF,那么我只需接受一次就可以,经过反复的思考和程序修正。图中修改之前temp数组时字符串tamp,也没有if判断。正是因为这个,我才只能写入一个,因为第一个字节后面的内容我更本就没去处理它们。修正后的程序代码如下:#includereg51.h#includebit Flag; unsigned char temp9,SenData,ReData,shu,m8,addr;void INIT_chuankou();void main (void) unsigned char cun8,i; lcd_init();INIT_chuankou();lcd_wcmd(weizhii); shu=0;while(1) if(Flag=1) Flag=0; write_nbyte(addr,m); read_nbyte(addr,cun); for(i=0;i8;i+)lcd_wdat(cuni); EA=1; ES=1; /* 串口初始化程序*/void INIT_chuankou() SCON = 0x50; /REN=1允许串行接受状态,串口工作模式1 TMOD= 0x20; /定时器工作方式2 PCON= 0x80; /波特率倍乘 /TH1 = 0xFD; /baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592) TH1 = 0xF3; / /baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)TL1 = 0xF3; TR1 = 1; /开启定时器T1 ES = 1; /开串口中断 EA = 1; / 开总中断 /* 串口中断程序*/void ser_int (void) interrupt 4 using 1unsigned char i; if(RI = 1) /RI接受中断标志 RI = 0; /清除RI接受中断标志tempshu= SBUF; /SUBF接受/发送缓冲器 shu+; if(shu%9=0) addr=temp0; for(i=1;i9;i+) mi-1=tempi; shu=0; Flag=1; EA=0; ES=0; 关于发送的格式设计,为了使用方便,把相应的地址也通过发送,数据也是必然要通过PC机发送才能达到设计的目的。所以发送格式如下:地址1字节2字节3字节4字节5字节6字节7字节8字节而像比24C02更大容量的存储芯片可以按照手册要求,能连续写16字节的就改为16字节。这里对较大的存储芯片能连续发送更多的字节,又要兼容发8字节的那么发送格式如下:地址发送的字节数1字节2字节3字节4字节5字节6字节7字节8字节那么连续向存储器中存8个字节,并读取出来显示在1602LCD上的效果:从串口调试助手向存储器00地址发送8字节(ASCALL码)显示从串口调试助手向存储器01地址发送8字节(ASCALL码)显示(3)字信息的存储。 因为5110LCD和12864LCD,1602LCD等都是点阵显示屏,字、字符都是有点构成。汉字一般采用16X16的点阵信息来显示。那么按照点阵显示,这里我采用输出格式为“从左到右从上到下”的数据排列顺序。取模方式采用“纵向8点下高位”。 如“我”字: 图1根据点阵信息得出“我”字的数据为: 图2图2中20就是就是图1中0x20,下是高位,很容易算出个列的十六进制数,分上下两行。有按照我从串口的输入格式:一个字要出入四次(24C02一次最多输入8字节,也可翻页写)。24C02的存储量为256K位,可存储8个汉字。实验使用的“欢迎您”三字进行测试。其三字的十六进制数据为:(4)将程序的写入和取出分离。这一步是很简单的,只需将前面的写和读分开即可。通过串口向24c02写起始地址和数据的程序如下:/*/* 串口发送存储地址和8字节数据 */* 串口数据发送格式第一位是存储器内部地址,后八位是八字节数据 */*/#includereg51.h#includebit Flag; unsigned char temp9,SenData,ReData,shu,m9,addr;unsigned char code MESSAGE= 存储成功!;void INIT_chuankou();void main (void) unsigned char a=0; INIT_chuankou();shu=0;while(1) a=0; if(Flag=1) shu=0; Flag=0; write_nbyte(addr,m); EA=1; ES=1;while(ma != 0) SBUF =ma; /SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器) while(!TI);/ 等特数据传送(TI发送中断标志)TI = 0;/ 清除数据传送标志a+;a=0;while(MESSAGEa != 0) SBUF =MESSAGEa; /SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器) while(!TI);/ 等特数据传送(TI发送中断标志)TI = 0;/ 清除数据传送标志a+; /* 串口初始化程序*/void INIT_chuankou() SCON = 0x50; /REN=1允许串行接受状态,串口工作模式1 TMOD= 0x20; /定时器工作方式2 PCON= 0x80; /波特率倍乘 /TH1 = 0xFD; /baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592) TH1 = 0xF3; / /baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)TL1 = 0xF3; TR1 = 1; /开启定时器T1 ES = 1; /开串口中断 EA = 1; / 开总中断 /* 串口中断程序*/void ser_int (void) interrupt 4 using 1unsigned char i; if(RI = 1) /RI接受中断标志 RI = 0; /清除RI接受中断标志 tempshu= SBUF; /SUBF接受/发送缓冲器 shu+; if(shu%9=0)addr=temp0;for(i=1;i9;i+)mi-1=tempi; m8=0; Flag=1; EA=0; ES=0; 5110读取24c02中字库程序如下:这里的读取一定要所取字节数,读取出来的字节要如何放置,并显示。#includereg51.h#includelcd_5110.h#includeL24c02.hvoid display(unsigned char j,unsigned char x,unsigned char y);void main() unsigned char k=0,ju=0; LCD_init(); /5110LCD初始化/读取24C02中的数据,并显示while(1)LCD_display(); /5110LCD初始化显示for(k=0;k3;k+) /实现连续显示多个汉字ju=k*16; display(k,ju,2);delay_s();LCD_clear(); /*读取24c02中的中文字库,5110汉字显示程序*/*j表示显示第几个字0对第一个字,x,y表示显示的字的位置*/void display(unsigned char j,unsigned char x,unsigned char y) unsigned char jilu8,i,addr=0; for(i=0;i32;i+) if(i%8=0) addr=j*32+i; read_nbyte(ad
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 8.2.5 生物的变异 说课稿-2025-2026学年鲁科版(五四学制)生物八年级下册
- Chapter1 Study tours教学设计-2025-2026学年小学英语6B香港朗文版
- 第三节 DNA通过复制传递遗传信息教学设计-2025-2026学年高中生物浙科版2019必修2 遗传与进化-浙科版2019
- 十六 项脊轩志教学设计-2025-2026学年高中语文高一下册华东师大版
- 2025年中考数学试题分类汇编:圆的有关位置关系(9大考点51题) (第1期)解析版
- 2025年采购与供应链管理岗位职业技能资格知识考试题与答案
- 1.3地球的历史教学设计2023-2024学年高中地理人教版(2019)必修第一册
- 2025年体育学科专业知识教师招聘考试押题卷及答案(一)
- 一年级语文上册 第7单元 课文3 11 项链说课稿 新人教版
- 蓄水池防溺水知识培训课件
- 什么是朗诵艺术与技巧
- 跨境电商理论与实务PPT完整全套教学课件
- C语言开发基础教程(Dev-C++)(第2版)PPT完整全套教学课件
- 卡通开学季收心班会幼儿开学第一课小学一二三年级开学第一课PPT通用模板课件开学主题班会
- 玻璃熔化工艺公开课课件
- 喷漆房安全操作规程
- 机床数控技术PPT完整全套教学课件
- 中国饮食文化PPT完整全套教学课件
- 金属技术监督管理制度
- 企业工会制度大全
- NB-T 10316-2019 风电场动态无功补偿装置并网性能测试规范
评论
0/150
提交评论