下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【Word版本下载可任意编辑】 单片机的LED显示屏硬件设计方案 row = (+row)&0 x0f; P0 = (P0 & 0 xf0)|(row)& 0 xf); col = 0;SPDAT = SCR_BUF; 这样编写的屏体驱动, 应用只要在初始化屏体后,向屏幕缓冲区中写入要显示的数据即可, 而不必关心屏幕显示的细节。 3.2 UART 接口 UART 接口负责与上位机的数据收发, 尽管发送可以同步开展, 但接收必须异步开展。因而UART 接口的仍然应该是一个中断服务程序。 UART 接口的头文件uart.h 隐藏了接收缓冲区的信息, 用户可调用的函数只有初始化、发送和接收。 #if
2、ndef _UART_H_ #define _UART_H_ void uart_init(void); void uart_put_c(u8 ch); u8 uart_get_c(u8 *); #endif UART 的接口实现首先定义一个接收缓冲FIFO, 以及对FIFO 的读下标uart_rd 和写下标uart_wr, 他们都是文件内可见的静态变量: static u8 xdata uart_buf; static u8 uart_rd,uart_wr; bit fSend UART 的初始化包括开展FIFO 的初始化和UART格式、波特率、中断的初始化。代码略。 UART 的ISR 主
3、要是服务于接收, 无条件地将数据装入FIFO, 并调整写入指针。 static void uart_isr(void)interrupt 4 using 1 if(RI)RI = 0; uart_buf = SBUF; uart_wr &= 0 x0f; 提供应用户的发送程序首先检测发送结束标记, 如果为0, 表示上次发送尚未结束, 直接返回错误信息1。 否则将要发送的信息发送并清零发送结束标记。这样设计的发送程序, 其目的是将发送等待不限制在接口底层, 而是给上层一个决定是否等待发送结束的时机。 u8 uart_put_c(u8 ch) if(! TI)return 1; TI = 0;SB
4、UF = ch; return 0; 同样, 接收程序也给上层一个选择等待的时机。接收函数首先判断接收FIFO 是否为空, 如果为空或输入指针参数错误, 则直接返回错误, 否则才从FIFO 中读取数据并将数据存储到指针指向的地址, 然后返回成功。 u8 uart_get_c(u8 *ch) u8 i; if(! ch)return 1; if(i = (uart_rd+1)&0 x0f) = uart_wr)return 1; uart_rd = i; *ch = uart_buf;return 0; 3.3 闪存接口 闪存的存取有特殊的时序, 闪存的内部构造也和具体应用要求有很大的不同。因此
5、闪存的接口需要仔细设计。 K9F4008 闪存芯片的存储构造组织如图2所示。 K9F4008 闪存的存储以块为单位, 每个芯片共有128 块。每块有32 行, 每行有4 个帧, 每帧含有32 B.全部芯片为512 KB。 闪存接口提供的闪存初始化函数中就包括对这样情况的处理。初始化函数要从闪存的个块中读出一个块映射表, 该表下标是逻辑扇区, 表内每项存储的是该逻辑扇区对应的物理块编号。初始化函数在必要时对闪存开展读写校验, 然后将坏块从表中删除。再寻找新的良好块, 将其编号填入到对应逻辑扇区的表项中。这样对应用来说, 只见到连续的扇区编号, 而不知道扇区终究对应到那个块。 闪存的接口头文件fl
6、ash.h 如下: #ifndef _K9F4008_H_ #define _K9F4008_H_ void read_log_page(u8 sector,u8 page,u8 xdata *buf); u8 prog_log_page(u8 sector,u8 page,u8 xdata *buf); void erase_log_blk(u8 sector); bit flash_init(void); #endif 实现闪存的接口, 首先就是依据说明书的时序定义闪存的基本操作。这里是以宏定义实现基本操作的。 #define W_CMD(cmd_) bCLE=1; bWE=0; P2=(
7、cmd_); bWE=1; bCLE=0 #define W_ADDR(addr1_,addr2_,addr3_) bALE=1; bWE=0; P2=(addr1_); bWE=1; bWE=0; P2=(addr2_); bWE=1; bWE=0; P2=(addr3_); bWE=1; bALE=0 #define W_DAT(dat_) bWE=0; P2=(dat_); bWE=1 #define wait_RB while(! bRB) #define l2p(x_) fat_tbl 3.4 EEPROM 内部集成的EEPROM 是与程序空间分开的, 利用ISP/IAP 技术可将内部DATAFLASH 当EEPROM,擦写次数10 万次以上。EEPROM 可分为若干个扇区, 每个扇区包含512 B.使用时, 建议同修改的数据放在同一个扇区, 不是同修改的数据放在不同的扇区, 不一定要用满。数据存储器的擦除操作是按扇区开展的。 sfr IAP_DATA = 0 xC2; /Flash data register sfr IAP_ADDRH = 0 xC3; /Flash address HIGH sfr IAP_ADDRL = 0 xC4; /Flash address LOW sfr IAP_CMD = 0 xC5; /Flash command
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年舞蹈春晓教案
- 2025-2026学年食物food单元整体教学设计
- 航标工程安装施工方案及技术措施
- 7.4.2蛋白质 教学设计 高一下学期化学人教版(2019)必修第二册
- 2025-2026学年汽车专业教学设计
- 4.8.2 人体细胞获得氧气的过程教学设计-北师大版生物七年级下册
- 4.4电磁波谱 教学设计-2025-2026学年高二下学期物理人教版(2019)选择性必修第二册
- 2026年测绘自查报告范文(3篇)
- (2026年)年度招聘计划
- 2026年防溺水安全知识竞赛试题及答案珍藏
- DB11-T 2556-2026 城市轨道交通既有线改造技术要求
- 2026海南万宁市总工会招聘工会社会工作者11人(第1号)笔试备考试题及答案详解
- 2026年6月成都市锦江区国有企业招聘17人笔试参考试题及答案详解
- 2026年甘肃省金昌市公务员招聘笔试参考试题及答案详解
- 2026故宫博物院招聘应届毕业生(第二批)9人备考题库及1套完整答案详解
- 混凝土罐车安全培训
- 2026-2030中国人力资源服务行业全景调研与发展战略研究咨询报告
- 气相色谱-质谱联用法测定纺织品中多氯联苯残留量的不确定度评定报告
- 人教精通版小学英语3年级至6年级单词带音标
- 中型水力发电厂电气部分初步设计
- GB/T 273.1-2023滚动轴承外形尺寸总方案第1部分:圆锥滚子轴承
评论
0/150
提交评论