硬件课程设计报告书_第1页
硬件课程设计报告书_第2页
硬件课程设计报告书_第3页
硬件课程设计报告书_第4页
硬件课程设计报告书_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学 号: 08课 程 设 计题 目实时时钟显示设计学 院计算机科学与技术学院专 业计算机科学与技术班 级计算机0608班姓 名欧阳志刚指导教师王 莹2009年12月31日课程设计任务书学生姓名: 欧阳志刚 专业班级: 计算机00608班 指导教师: 王 莹 工作单位: 计算机科学与技术学院题 目: 实时时钟显示设计初始条件:1. 课程设计使用ZG211硬件综合实验平台(8051单片机),配有课程设计接口芯片和辅助芯片以及器件;2. ZG211有程序设计集成开发环境,程序设计语言为C语言;3. ZG211硬件综合实验平台使用说明书;要求完成的主要任务: (包括课程设计工作量及其技术要求,撰写说明

2、书具体要求)1. 学习使用ZG211硬件综合实验平台,程序设计集成开发环境;2. 根据课程设计题目,进行需求分析,搞清楚课程设计需要设计需求和需要解决的设计内容。3. 查阅和学习课程设计题目需要的接口芯片资料,掌握接口芯片的使用方法和编程要领。查阅和学习课程设计题目需要的辅助芯片以及器件资料。4. 设计接口芯片和辅助芯片以及器件与8051单片机连接硬件电路原理图。5. 设计与硬件电路原理图对应的C语言程序(或8051汇编语言)。给出程序流程图。在集成开发环境中调试程序。给出程序的详细注释。能够解释使用程序模拟电路时序信号和数据。6. 撰写课程设计报告,1)详细陈述以上的设计过程;2)详细陈述电

3、路的调试过程。时间安排:第17周:1. 熟悉ZG211硬件综合实验平台,KEILC UVISION2 集成开发环境;查阅接口芯片资料,熟悉接口芯片和它的使用方法。2. 设计硬件电路原理图,。第18周:1. 使用C语言或汇编语言设计和调试接口程序。2. 撰写计算机硬件综合设计报告。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日实时时钟显示设计一、 设计目的 掌握IO 口操作; 掌握显示及键盘芯片的运用; 了解中断的运用;了解I2C 总线操作。二、 设计设备 PC 机一台;ZG-211 单片机系统实验板一块;实验连接线若干芯片:CH451,89S52,CD4052,PCF8563

4、 配套并口编程线一根配套电源一个三、 需求分析 能正常操作LED 数码显示 能通过中断方式接收按键信息 能通过I2C 总线方式与PCF8563 芯片交换数据 能正确解释并显示从PCF8563 芯片取出的日期和时间数据四、 设计原理在单片机应用系统中的实时时钟信号,一般都由专门的时钟芯片来提供,单片机只需要定期读取时钟芯片中固定地址中的时钟信息即可。本实验板采用的是PCF8563 时钟芯片。PCF8563 芯片的引脚说明见表1。 表1 PCF8563 引脚说明该芯片有16 个位寄存器:一个可自动增量的地址寄存器,一个内置32.768KHZ 的振荡器(带有一个内部集成的电容),一个分频器(用于给实

5、时时钟RTC 提供源时钟),一个可编程时钟输出,一个定时器,一个报警器和一个掉电检测器。 所有16 个寄存器设计成可寻址的8 位并行寄存器,但不是所有位都有用。前两个寄存器(内存地址00H,01H)用于控制寄存器和状态寄存器,内存地址02H08H 用于时钟计数器(秒年计数器),地址09H0CH 用于报警寄存器(定义报警条件),地址0DH 控制CLKOUT 管脚的输出频率,地址0EH 和0FH 分别用于定时器控制寄存器和定时器寄存器。PCF8563 芯片在第一次运行时需要设置控制寄存器和状态寄存器,见表2,一般均设置为0。 表2 PCF8563 控制/状态寄存器描述在PCF8563 芯片中,秒、

6、分钟、小时、日、月、年编码格式为BCD。星期不以BCD 格式编码。具体格式见表3。 表3 PCF8563 寄存器位描述实验只使用PCF8563 的时间读取功能,只需对该芯片地址02H-08H 的内存进行读写操作,其它地址的内存保持为默认值,实验板上提供电池,可以在掉电后保持时钟正常工作。实验板上PCF8563 的相关连接原理图如图1 所示。其中CD4052 芯片的操作见表4表4 CD4052 功能说明 图1 PCF8563 原理图五、 I2C 协议I2C 总线用两条线(SDA 和SCL)在芯片和模块间传递信息。SDA 为串行数据线,SCL为串行时钟线。1只有在总线空闲时才允许启动数据传送。2在

7、数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态不允许。有跳变时钟线为高电平时,数据线的任何电平变化将被看作总线的起始或停止信号。起始信号:时钟线保持高电平期间,数据线电平从高到低的跳变作为I2C 总线的起始信号。停止信号:时钟线保持高电平期间,数据线电平从低到高的跳变作为I2C 总线的停止信号。图2 总线时序图3 写周期时序图4 起始/停止时序器件寻址:主器件通过发送一个起始信号启动发送过程,然后发送它所要寻址的从器件的地址。8位从器件地址的高4 位固定为1010。 接下来的3 位A2 A1 A0 为器件的地址位,用来定义哪个器件以及器件的哪个部分被主器件访问。从器件8 位地址的最

8、低位, 作为读写控制位。“1” 表示对从器件进行读操作,“0” 表示对从器件进行写操作。在主器件发送起始信号和从器件地址字节后,PCF8563 监视总线并当其地址与发送的从地址相符时响应一个应答信号(通过SDA 线)。PCF8563 再根据读写控制位(R/W)的状态进行读或写操作。应答信号:I2C 总线数据传送时每成功地传送一个字节数据后,接收器都必须产生一个应答信号,应答的器件在第9 个时钟周期时将SDA 线拉低,表示其已收到一个8 位数据。PCF8563 在接收到起始信号和从器件地址之后响应一个应答信号,如果器件已选择了写操作,则在每接收一个8 位字节之后响应一个应答信号。当PCF8563

9、 工作于读模式时,在发送一个8 位数据后释放SDA 线并监视一个应答信号,一旦接收到应答信号,PCF8563 继续发送数据,如主器件没有发送应答信号,器件停止传送数据并,等待一个停止信号主器件。图5 应答时序图图6 从器件地址位其中A0、A1 和A2 对应24C02的管脚1、2 和3,PCF8563的从地址读操作时为0A3H,写操作时为0A2H。写操作:1.字节写在字节写模式下,主器件发送起始命令和从器件地址信息(R/W 位置零)给从器件,在从器件产生应答信号后,主器件发送PCF8563 的字节地址,主器件在收到从器件的另一个应答信号后,再发送数据到被寻址的存储单元。PCF8563 再次应答,

10、并在主器件产生停止信号后开始内部数据的擦写,在内部擦写过程中PCF8563 不再应答主器件的任何请求。图7 字节写时序图2页写用页写,PCF8563 可以一次写入16 个字节的数据,页写操作的启动和字节写一样,不同在于传送了一字节数据后并不产生停止信号。主器件被允许发送P(PCF8563:P=15;)个23额外的字节。每发送一个字节数据后PCF8563 产生一个应答位并将字节地址低位加1, 高位保持不变。如果在发送停止信号之前主器件发送超过P+1 个字节,地址计数器将自动翻转,先前写入的数据被覆盖。接收到P+1 字节数据和主器件发送的停止信号后,芯片启动内部写周期将数据写到数据区,所有接收的数

11、据在一个写周期内写入PCF8563。 图8 字节写时序图应答查询:可以利用内部写周期时禁止数据输入这一特性,一旦主器件发送停止位指示主器件操作结束时,PCF8563 启动内部写周期,应答查询立即启动,包括发送一个起始信号和进行写操作的从器件地址。如果PCF8563 正在进行内部写操作,不会发送应答信号。如果PCF8563已经完成了内部自写周期,将发送一个应答信号,主器件可以继续进行下一次读写操作。写保护:写保护操作特性可使用户避免由于不当操作而造成对存储区域内部数据的改写,当WP管脚接高时整个寄存器区全部被保护起来而变为只可读取。读操作:PCF8563读操作的初始化方式和写操作时一样,仅把(R

12、/W) 位置为1,有三种不同的读操作方式:立即地址读、选择读和连续读。立即地址读:PCF8563 的地址计数器内容为最后操作字节的地址加1。也就是说,如果上次读/写的操作地址为N,则立即读的地址从地址N+1 开始。如果N=E(这里对24C02,E=255;对PCF8563,E=16),则计数器将翻转到0 且继续输出数。PCF8563 接收到从器件地址信号后(R/W 位置1),它首先发送一个应答信号,然后发送一个8 位字节数据。主器件不需发送一个应答信号,但要产生一个停止信号。图9 立即地址读时序图选择性读:操作允许主器件对寄存器的任意字节进行读操作,主器件首先通过发送起始信号、从器件地址和它想

13、读取的字节数据的地址执行一个伪写操作。在PCF8563 应答之后,主器件重新发送起始信号和从器件地址,此时R/W 位置1, PCF8563 响应并发送应答信号,然后输出所要求的一个8 位字节数据,主器件不发送应答信号但产生一个停止信号。图10 选择读时序图连续读:连续读操作可通过立即读或选择性读操作启动。在PCF8563 发送完一个8 位字节数据后,主器件产生一个应答信号来响应,告知PCF8563 主器件要求更多的数据,对应每个主机产生的应答信号PCF8563 将发送一个8 位数据字节。当主器件不发送应答信号而发送停止位时结束此操作。从PCF8563 输出的数据按顺序由N 到N+1 输出。读操

14、作时地址计数器在PCF8563 整个地址内增加,这样整个寄存器区域在可在一个读操作内全部读出。当读取的字节超过E(对于PCF8563,E=16;对24C02, E=255)计数器将翻转到零并继续输出数据字节。图11 连续读时序图六、 实验步骤硬件连接 将并口线插在实验板与PC 机的并口插座上;按图13连接实验线路(CH451 与CPU 连接实验线路见图12);CH451CPU89S52J23_CH451LOADDCLKDINDOUTJ5_89S52P34P15P33P32 图12 连接实验线路仔细检查无误后,接通电源。(图中箭头表示需要接线的地方) 图13 连接实验线路软件设计进入KEILC

15、开发环境编写程序。首先根据第5节I2C 协议内容,编写I2C 函数。在编写I2C 函数时,应注意代码的可重用性,方便其它函数调用。例如:编写起始信号函数时,可以将它独立出来,VOID BEGIN()程序代码PCF8563 的I2C 接口最大频率是400KHZ,在程序中对一个IO 口操作完后,需要延时2.5毫秒(本实验板CPU 晶振为11.0592MHZ,一个指令周期为1.08 毫秒)。写好I2C 读写函数后,可对PCF8563 进行操作。先将CD4052 的通道选为0,这样CPU 与PCF8563 物理联接起来了。第一次操作需要对PCF8563 进行初始化设置。先将0X00 分别写入PCF85

16、63 中地址为0X0,0X01的寄存器中,接着将要设置的时间按:年、月、星期、日、小时、分、秒的顺序,以BCD码格式写入地址为0X08-0X02 的寄存器中,具体见表2、表3。在将时间按:年、月、星期、日、小时、分、秒读出后,按“XX-XX-XX”格式分两屏显示出来。在进行I2C 总线操作时,将所有中断关闭,以防中断程序,打乱其时序,操作完成再将中断恢复。七、 主要程序代码:main()unsigned char temp = 0;unsigned char TimeFLAG = 0;/MCU初始化InitMCU();/开关蜂鸣器,表示开始工作speak_on();delay_1ms(50);

17、speak_off();Set_8563_Register();Display_TEST();while(1)if(key_data!=0)/若有键按下temp = key_data;key_data = 0;switch(temp)case 0x40:disp_time(0);break;case 0x49:disp_time(1);break; default:break;void speak_on()PC8255 &= 0xF7;/将8255PC口的第3位置0/*|函数名speak_off |函数功能关闭蜂鸣器 |参数无 |返回值无 |*/void speak_off()PC8255 |

18、= 0x08;/将8255PC口的第3位置1void send_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 c

19、har comm)unsigned char i;/送4BIT命令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);

20、/设定显示参数/*|函数名key|函数功能中断函数,获取当前按键状态|参数无|返回值无|*/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|(temp4;/年time1 = temp_time6&0x0f;time2 = temp_time54;/月time3 = temp_time5&0x0f;time4 = temp_time34;/日time5

21、 = temp_time3&0x0f;time6 = temp_time24;/时time7 = temp_time2&0x0f;time8 = temp_time14;/分time9 = temp_time1&0x0f;time10 = temp_time04;/秒time11 = temp_time0&0x0f;return i; 八、 测试结果及分析程序编译成功后,打开联机下载软件,将HEX 文件下载到89S52 中,观看程序运行结果,如有问题则修改程序,再次下载。调试成功后,将I2C 读写程序、设置时间程序和读取时间程序,各写成一个函数,以供其他模块调用。实验运行后,按下1号键,显示获得的日期,按下2号键,显示获得的时间。通过对实验结果的观察,实验获得成功。九、 心得体会通过本次对实时时钟显示的设计,对各种芯片有了深入的了解,对硬件的运作有了进一步的认识,将以往学过的知识,譬如数字逻辑,接口技术

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论