《单片机电子计数stc89s52课程设计毕业论文》由会员分享,可在线阅读,更多相关《单片机电子计数stc89s52课程设计毕业论文(73页珍藏版)》请在金锄头文库上搜索。
1、一实习目的与要求1、实习目的:a切实培养单片机应用系统的实践设计开发能力:采用软件仿真与硬件仿真手段,培养理论联系实际的能力,借助实训项目的学习与实作,巩固理论知识,提高实作能力及系统的开发设计能力。b培养自主学习的能力:通过实训发现理论学习的不足,借助仿真软件,自主学习抽象的理论概念,切实打下坚实的基础。2、实习要求:(1) 设计一个基于单片机的电子计数器,并且能够实现暂停,继续,复位功能。(2) Protel专用软件绘制单片机原理图; (3) 设计出软件编程方法,并写出源程序;(4)用C语言实现程序设计。;(5)用Keil软件编写HEX等相关文件;(6)程序的各功能模块要清楚,有序。二、单
2、片机开发板原理及各部分功能说明 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软件的能力。单片机原理图1.STC89C52芯片 STC89C52引脚图2.时钟电路:DS1302 (1)实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进
3、行计 数 ;(2) 用于高速数据暂存的 31*8 位的 RAM ;(3) 最少引脚的串行 I/O ;(4) 2.5-5.5V 的电压工作范围;(5) 2.5V 时耗电小于 300nA ;(6) 用于时钟或 RAM 数据读 / 写的单字节或多字节(脉冲方式)数据传送方式;(7) 简单的 3 线接口;(8) 可选的慢速充电(至 Vcc1 )的能力。DS1302 时钟芯片包括实时时钟 / 日历和 31 字节的静态 RAM 。它经过一个简单的串行接口与微处理器通信。实时时钟 / 日历提供秒、分、时、日、周、月和年等信息。对于小于 31 天的月和月末的日期自动进行调整,包括闰年校正的功能。时钟的运行可以
4、采用 24h 或带 AM (上午) /PM (下午)的 12h 格式。采用 三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多字节的时钟信号或RAM 数据。 DS1302 有主电源和后备电源双电源引脚: Vcc1 在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份; Vcc2 在双电源系统中 提供主电源,在这种运用方式中, Vcc1 连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。 DS1302 由较大者供电。当 Vcc2 大于 Vcc1+0.2V 时 , Vcc2给 DS1302 供电;当 Vcc2 小于 Vcc1 时, DS1302 由 Vcc1 供电。
5、DS1302 在任何数据传送时必须先初始化,把 RST 脚置为高电平,然后把 8位地址和命令字装入移位寄存器,数据在 SCLK 的上升沿被输入。无论是读周期还是写周期,开始 8 位指定 40 个寄存器中哪个被访问到。在开始 8 个时钟周期 ,把命令装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作 时写入数据。时钟脉冲在单字节方式下为 8 加 8 ,在多字节方式下为 8 加字节数,最大可达 248 个字节数。如果在传送过程中置 RST 脚为低电平,则会中止本次数据传送,并且 I/O引脚变为高阻态。上电运行时,在 Vcc 2.5V 之前, RST 脚必须保持低电平 .只有在 SCLK
6、 为低电平时 , 才能将 RST 置为高电平。 DS1302引脚图3 电源电路 电源电路图该电路由USB输入+5V电源,后接6脚按钮开关,LED电源指示。4.晶振电路 晶振电路图5复位电路 复位电路图 6232电平转换电路 电平转换电路图7 LCD显示电路通过调节R4来改变液晶的对比度。P0口接并行数据传送,P1.0接数据命令选择端,P1.1口接液晶读写选择端,P1.2为液晶使能信号输入端。 液晶显示电路图8.掉电存储模块 存储模块电路图9.按钮调节电路 按钮调节电路 三、硬件调试硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及测 试结果如下:(1)检查电源与地线是否全部连接上,
7、用万用表对照电路原理图测试各导线是否完全连接,测试结果所有连接线都已连接好;(2)检验 DS1302 和单片机的晶振是否起振,用示波器观察波形,测试结果波形都很好;(3)检查各芯片的功能是否正常,检测按键的导通情况。测试结果正常。四、软件开发软件调试的主要内容是对C语言程序的编译、方针、下载阶段,这个阶段非常重要。本课题的C语言的程序如下:#include #define ledport P0#define keyport P3unsigned char keynum;void delay_ms(unsigned int nms)unsigned int i,j;for(i = 0; i nm
8、s; i + )for(j = 0; j = 2;i &= 0x0f;return i;return 0;void led_shanshuo(unsigned char cnt) /闪烁函数,cnt为次数unsigned char i;for(i = 0; i cnt; i +)ledport = 0;delay_ms(500);ledport = 0xff;delay_ms(500);ledport = 0xff;void led_jcshanshuo(unsigned char cnt)/交错闪烁函数,cnt为次数unsigned char i;for(i = 0; i cnt; i +)
9、ledport = 0xaa;delay_ms(500);ledport = 0x55;delay_ms(500);ledport = 0xff;void led_cycrun_yang(unsigned char cnt)unsigned char i,j,k;for(i = 0; i cnt; i +)k = 0x01;for(j = 0; j 7; j +)ledport = k;delay_ms(150);k = 1;k = 0x80;for(j = 0; j = 1;ledport = 0xfe;delay_ms(150);ledport = 0xff;void led_cycrun
10、_yin(unsigned char cnt)unsigned char i,j,k;for(i = 0; i cnt; i +)k = 0x01;for(j = 0; j 7; j +)ledport = k;delay_ms(150);k = 1;k = 0x80;for(j = 0; j = 1;ledport = 0x01;delay_ms(150);ledport = 0xff; /*void led_donghua1_yang(unsigned char cnt)unsigned char i,j,k;for(i = 0; i 8; i +)for(j = 0; j ( 8 - i
11、); j+ )if(i = 0 & j = 0 )k = 0x01;else (i % 2 = 0) ? (k = 1);switch (i)case 1 : ledport = (k | 0x80); case 2 : ledport = (k | 0x81); case 3 : ledport = (k | 0xc1); case 4 : ledport = (k | 0xc3); case 5 : ledport = (k | 0xe3);case 6 : ledport = (k | 0xe7); case 7 : ledport = (k | 0xf7); */void main()P2 &= (0x80);/开启ledwhile(1)keynum = key_scan();if(keynum = 0x01)led_shanshuo(5);if(keynum = 0x02)led_jcshanshuo(5);if(keynum = 0x04)led_cycrun_yang(2);if(keynum = 0x08)led_cycrun_yin(2);/*led_shanshuo(5);led_jcshanshuo(6);led_cycrun_yang(2);led_cycrun_yin(2);*