《《硬件综合设计》课程报告说明书EEPROM器件读写例程设计.doc》由会员分享,可在线阅读,更多相关《《硬件综合设计》课程报告说明书EEPROM器件读写例程设计.doc(16页珍藏版)》请在三一办公上搜索。
1、学 号: 0120810340631课 程 设 计题 目EEPROM器件读写例程设计学 院计算机科学与技术学院专 业计算机科学与技术班 级姓 名指导教师2011年6月23日课程设计任务书学生姓名: 专业班级: 计算机0806班 指导教师: 工作单位:计算机科学与技术学院题 目: EEPROM器件读写例程设计初始条件:1. 课程设计使用ZG211硬件综合实验平台(8051单片机),使用AT24C01接口芯片和辅助芯片以及器件;2. ZG211有程序设计集成开发环境,程序设计语言为C语言;3. ZG211硬件综合实验平台使用说明书;要求完成的主要任务: (包括课程设计工作量及其技术要求,撰写说明书
2、具体要求)1. 学习使用ZG211硬件综合实验平台,程序设计集成开发环境;2. 根据课程设计题目,进行需求分析,搞清楚课程设计需要设计需求和需要解决的设计内容。3. 查阅和学习课程设计题目需要的接口芯片资料,掌握I2C接口芯片的使用方法和编程要领。查阅和学习课程设计题目需要的辅助芯片以及器件资料。4. 设计接口芯片和辅助芯片以及器件与8051单片机连接硬件电路原理图。5. 设计与硬件电路原理图对应的C语言程序(或8051汇编语言)。给出程序流程图。在集成开发环境中调试程序。给出程序的详细注释。能够解释使用程序模拟电路时序信号和数据。6. 撰写课程设计报告,1)详细陈述以上的设计过程;2)详细陈
3、述电路的调试过程。时间安排:第17周:1. 熟悉ZG211硬件综合实验平台,KEILC UVISION2 集成开发环境;查阅接口芯片资料,熟悉接口芯片和它的使用方法。2. 设计硬件电路原理图,。第18周:1. 使用C语言或汇编语言设计和调试接口程序。2. 撰写计算机硬件综合设计报告。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日EEPROM器件读写例程设计1.实验目的掌握 IO 口操作;掌握显示及键盘芯片的运用;掌握 I2C 总线操作2.实验设备PC机一台,ZG-211单片机系统实验板一块,实验连接线若干,芯片:CH451,89S52,CD4052并口编程线一根,串口通讯线1
4、根,配套电源1 个 ZG-211 图片:3.实验要求1. 学习使用ZG211硬件综合实验平台,程序设计集成开发环境;2. 根据课程设计题目,进行需求分析,搞清楚课程设计需要设计需求和需要解决的设计内容。3. 查阅和学习课程设计题目需要的接口芯片资料,掌握接口芯片的使用方法和编程要领。查阅和学习课程设计题目需要的辅助芯片以及器件资料。4. 设计接口芯片和辅助芯片以及器件与8051单片机连接硬件电路原理图。5. 设计与硬件电路原理图对应的C语言程序(或8051汇编语言)。给出程序流程图。在集成开发环境中调试程序。给出程序的详细注释。能够解释使用程序模拟电路时序信号和数据。6. 能正常操作 LED
5、数码显示;能通过中断方式接收按键信息;能正确读写 EEPROM 芯片4.实验原理 单片机系统常用 EEPROM 芯片在掉电情况下保存一些重要数据。本实验板采用的芯片 是 AT24C02,可存储 256 个字节,重复擦写 1,000,000 次,数据保存 100 年以上。该芯 片通过I2C 总线接口进行操作,I2C 协议原理请看 2.3.5 节。其原理图如下:5.实验步骤5.1硬件连接将并口线插在实验板与PC机的并口插座上; CH451 与 CPU 连接实验线路见图2-2 ;按图 2-28 连接实验线路仔细检查无误后,接通电源。 (图中箭头表示需要接线的地方)5.2 软件设计进入 KEILC 开
6、发环境。首先根据 234 I2C 协议 内容,编写 I2C 函数,由于 AT24C02 的 I2C 接口大频率是 400KHZ,所以在程序中对一个 IO 口操作完后,请延时 2.5us(实验板 上 CPU 晶振为 11.0592MHZ,一个指令周期为 1.08us)。写好 I2C 读写函数后,可以对 AT24C02 进行操作。AT24C02 的写从地址为 0XA0,写时 WP 要置 0(打开写保护),写完后置为 1; 读从地址为 0XA1。先将 CD4052 的通道选为 2,连接 CPU 与 AT24C02。向 AT24C02 中地 址为 0X00 到 0X07 的单元,写入数据 0X01,
7、0X02, 0X03, 0X04, 0X05, 0X06, 0X07 后,再从 AT24C02 中读出,进行比较。如果一致则显示 1,错误则显示 0。5.3 编译下载程序编译成功后,打开联机下载软件,将HEX文件下载到89S52中,观看程序运行结果。 如有问题则修改程序,再次下载。(请注意:AT24C02的擦写次数有限,频繁擦写会影响其使用寿命。) 调试成功后,请将 I2C 读写程序、AT24C02 读写程序,写成函数,以供其他模块调用。6.实验成功标志按下 1 号按键,显示“001”,同时向 AT24C02 中指定位置写入数据;按下 2 号按键,从 AT24C02 中指定位置读出数据并显示,
8、应与写入数据一致;7. 简要调试过程1. 利用在线编程这个软件读入程序ExpBoard.hex2. 操作ZG-211单片机电路板上面的按钮,观察实验现象是否符合说明书3. 如果不符合,进入程序文件夹进行修改程序,直至得到理想的显示结果8. 程序代码主函数#include #include reg52.h#include def.h#include sub.h#include beep.h#include func.h#include display.h#include eeprom.hunsigned char key_data = 0;main()unsigned char eep_temp
9、2;unsigned char temp = 0;/MCU初始化InitMCU();set_8255();/开关蜂鸣器,表示开始工作speak_on();delay_1ms(50);speak_off();Display_TEST();eep_temp0 = 0x55;/测试值while(1)if(key_data!=0)/若有键按下temp = key_data;key_data = 0;switch(temp)case 0x40:/1/将测试值写入EEPROMAT24C02Write(eep_temp, 0, 1);display_int(int)(eep_temp0);break;cas
10、e 0x49:/2AT24C02Read(eep_temp, 0, 1);display_int(int)(eep_temp0);break;default:break;具体函数#include reg52.h#include def.h#include display.h#include sub.h#include func.hextern unsigned char key_print;extern unsigned char key_data;/*|函数名send_disp_data|函数功能向CH451芯片发送命令|参数comm:命令体|_data:命令参数|返回值无|*/void s
11、end_disp_data(unsigned char comm, unsigned char _data)unsigned char i; /送8BIT数据for(i=0;ii)&0x01;DCLK = 1;DCLK = 0;DCLK = 1;/送4BIT命令for(i=0;ii)&0x01;DCLK = 1;DCLK = 0;DCLK = 1;LOAD=1;LOAD=0;LOAD=1;/*|函数名send_comm|函数功能向CH451芯片发送命令|参数comm:命令体|返回值无|*/void send_comm(unsigned char comm)unsigned char i;/送4
12、BIT命令for(i=0;ii)&0x01;DCLK = 1;DCLK = 0;DCLK = 1;LOAD=1;LOAD=0;LOAD=1;/*|函数名disp_initialize|函数功能向CH451芯片发送初始化命令|参数无|返回值无|*/void disp_initialize()chang_4052(1); DIN=0;DIN=1;DCLK=1;LOAD=1;DOUT=1;send_disp_data( CH451_SETSYS, 0x03);/设定系统参数send_disp_data( CH451_SETDIS, 0x80);/设定显示参数/*|函数名key|函数功能中断函数,获取
13、当前按键状态|参数无|返回值无|*/void key() interrupt 0 unsigned char i,temp;EX0 = 0;/关中断key_data = 0;temp = 0;send_comm(CH451_KEY);for(i=0; i7; i+) temp = DOUT;key_data = key_data|(temp(6-i);DCLK=1;DCLK=0;DCLK=1;/*key_print = key_data;send_disp_data(CH451_LOAD0, 0x10);send_disp_data(CH451_LOAD1, 0x10);send_disp_d
14、ata(CH451_LOAD2, key_data/10);send_disp_data(CH451_LOAD3, key_data%10);*/EX0 = 1;/中断/*|函数名Display_TEST|函数功能测试显示LED数码管|参数无|返回值无|*/void Display_TEST()/初始化显示芯片disp_initialize();/延时delay_1ms(100);/送显“12345678”send_disp_data( CH451_LOAD0, 0x01);send_disp_data( CH451_LOAD1, 0x02);send_disp_data( CH451_LOA
15、D2, 0x03);send_disp_data( CH451_LOAD3, 0x04);send_disp_data( CH451_LOAD4, 0x05);send_disp_data( CH451_LOAD5, 0x06);send_disp_data( CH451_LOAD6, 0x07);send_disp_data( CH451_LOAD7, 0x08);delay_1ms(200);/display_int(555);/延时delay_1ms(200);/开中断,接受按键信息EX0=1;/-send_disp_data( CH451_LOAD0, 0x12);send_disp_
16、data( CH451_LOAD1, 0x12);send_disp_data( CH451_LOAD2, 0x12);send_disp_data( CH451_LOAD3, 0x12);send_disp_data( CH451_LOAD4, 0x12);send_disp_data( CH451_LOAD5, 0x12);send_disp_data( CH451_LOAD6, 0x12);send_disp_data( CH451_LOAD7, 0x12);/*send_disp_data( CH451_LOAD0, 0x08);send_disp_data( CH451_LOAD1,
17、 0x08);send_disp_data( CH451_LOAD2, 0x08);send_disp_data( CH451_LOAD3, 0x08);send_disp_data( CH451_LOAD4, 0x08);send_disp_data( CH451_LOAD5, 0x08);send_disp_data( CH451_LOAD6, 0x08);send_disp_data( CH451_LOAD7, 0x08);*/*|函数名display_int|函数功能显示一个整数|参数无|返回值无|*/void display_int(unsigned int m)send_disp_
18、data( CH451_LOAD0, 0x10);send_disp_data( CH451_LOAD1, 0x10);send_disp_data( CH451_LOAD2, 0x10);if (m/10000)send_disp_data( CH451_LOAD3, m/10000);elsesend_disp_data( CH451_LOAD3, 0x10);if (!(m/1000)%10)&(!(m/10000)send_disp_data( CH451_LOAD4, 0x10);elsesend_disp_data( CH451_LOAD4, (m/1000)%10);send_d
19、isp_data( CH451_LOAD5, (m/100)%10);send_disp_data( CH451_LOAD6, (m/10)%10);send_disp_data( CH451_LOAD7, m%10);9.心得体会通过以前所学的计算机组成原理、微机原理与接口技术,以及单片机的知识,并在老师的指导和同学的合作下,终于顺利地完成了本次课程设计。我觉得本次试验重点在于动手操作,经过几次上机调试,终于得到理想的显示结果,同时也对ZG211硬件综合实验平台有了更深的了解。设计初期,由于自己的专业知识不够全面,虽然有不少硬件方面的课程,但总的来说,自己懂的还是很少,对于单片机,芯片,还只
20、是停留的肤浅的认知上面,通过查阅一些资料以及与同学的交流,最终弄懂了其原理,实验圆满成功。 通过这次课程设计,也更让我感觉到c语言的重要性,作为一个可以操作底层硬件的语言,自己掌握的还是很少,这不像java语言那种平台无关性,这既是它的优点也是它的缺点,只注重表面的东西,在今后的一段时间,我会更加注意自己的c语言的学习,争取在毕业前有更大的提高。 最后我想说,此次课程设计,让我收获了许多,例如ZG211方面知识,同时它也让我认识到了自己的不足,例如对所学的知识不能灵活的运用到实验中,对单片机的知识不够了解,以后还有待加强。这些获益和认识到的不足对我以后的学习很有帮助。虽然本次硬件综合设计已经结束,但仍觉得有很多东西要学,我会在以后的学习生活中不断努力,争取更大的进步本科生课程设计成绩评定表班级:计科0806姓名:张军学号:0120810340631序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:2011年月日