资源描述
生产实习报告 单片机的电子钟设计报告
———————————————————————————————— 作者:
———————————————————————————————— 日期:
17
个人收集整理 勿做商业用途
东北石油大学
实习总结报告
实习类型 生产实习
实习单位 电子科学学院实习基地
实习起止时间 2010年7月12日至2010年7月31日
指导教师
所在院(系) 电子科学学院
班 级 电信07-4
学生姓名
学 号
2010年 7月 31日
单片机的电子钟设计报告
一、实验目的
这次学校组织的大三课程实习是专业理论和实践知识最重要的补充和延伸。单片机系统实训的目的是通过对单片机硬件和软件的综合训练,让学生掌握单片机的硬件知识及设计方法,同时掌握C语言软件程序设计技能。增进学生对电子工艺的感性认识,了解电子产品发展进程,熟悉电子产品(系统)的设计、装配、生产制造工艺及过程,学习现代电子设计与制造、单片机及接口技术、传感器技术、机电控制技术等相关工程应用技术,获得安全用电、锡焊接技术、电子元器件、PCB板设计与制作技术、电子产品(系统)设计、装配技术、调试与检测技术以及电子技术文件的制订等基础知识,全面提高学生的实践动手能力和分析问题、解决实际问题的能力,培养其创新精神。
二、 实验原理和分析
2。1设计原理
如图1—1 单片机编程,用单片机设计电路,由于使用软硬件结合的方式,所以电路结构简单、调试也相对方便。需要调节时间时,按动调节按钮,六位数码管显示实时时间。
2.2元器件选择
STC89C52;7407;数码管(双位共阴);按键;电阻排;蜂鸣器;石英晶振11。5200M;30PF;0.1UF;10UF电容。
2.3时钟电路工作原理
在STC89C52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
2.4共阴极数码管
LED数码管是由发光二极管构成的,亦称半导体数码管。将条状发光二极管按照共阴极(负极)或共阳极(正极)的方法连接,组成“8”字,再把发光二极管另一电极作笔段电极,就构成了LED数码管。若按规定使某些笔段上的发光二极管发光,就能显示从0~9的…系列数字。同荧光数码管(VFD)、辉光数码管(NRT)相比,它具有:体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能与TTL、CMOS电路兼容等的数显器件。+、—分别表示公共阳极和公共阴极。A~G是7个笔段电极,DP为小数点.另有一种字高为7.6MM的超小型LED数码管,管脚从左右两排引出,小数点则是独立的。
本系统利用4位LED数码管显示时间,共阴极结构.LED数码管由7段发光二极管组成,当要显示某个数字时只要将数字所对应的引脚送入低电平.
数码管管脚图,可以忽略型号,基本通用.
数字对应数码管显示控制转换字节
显示--HGFE,DCBA--编码(共阴编码)
0 --0011,1111--0X3F;
1 --0000,0110--0X06;
2 --0101,1011--0X5B;
3 --0100,1111--0X4F;
4 --0110,0110--0X66;
5 --0110,1101--0X6D;
6 --0111,1101--0X7D;
7 --0000,0111--0X07;
8 --0111,1111--0X7F;
9 --0110,1111--0X6F;
2。5 STC89C52单片机
兼容标准MCS—51指令系统的STC89C52 单片机是一个低功耗、高性能CHMOS的单片机,在线可编程FLASH存储器的单片机。它与通用8051系列单片机的指令系统和引脚兼容。STC89C52单片机片内的FLASH可允许在线重新编程,也可用通用非易失性存储编程器编程;片内数据存储器内含128字节的RAM;有40个引脚,32个外部双向输入/输出(I/O)端口;具有两个16位可编程定时器;中断系统是具有6个中断源、5个中断矢量、2级中断优先级的中断结构.
2。6按键
本设计中主要有三个控制按键,按键功能为:
(1)P3。2为调时间模式,长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3。3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。
(2)按P3.3进入设定闹时状态: 12:00: ,可进行分设定,按P3。4分加1,再按P3。2为时调整,按P3.4时加1,按P3.3调闹钟结束。在闹铃时可按P3。2停闹,不按闹铃1分钟.
(3)按下P3.4进入秒表状态:再按P3。4秒表又启动,按P3.4暂停,再按P3。4秒表清零,按P3。4退出秒表回到时钟状态。
2.7 测试与分析
(1) 测试数码管:把万用表调到测二极管的档,用红表笔触行输入端,用黑表笔触列输入端.注意观察256个点是否正常亮.
(2) 测试按键:直接连接按键到单个可用LED发光二极管(这里采用实验板上发光二极管),按下每个按键看LED是否可亮,若亮,说明按键可用.
(3)程序测试:通过KEILC51V750A_FULL进行下载程序和编写程序.
(4)调试:建立一个新工程,输入源程序,最后编译得到一个LICH1.HEX目标文件,用编程器把LICH1。HEX写入单片机STC89C52中,插到实验板,把电路板与+5V稳压电源连接,把芯片插入电路板,打开电源,六个数码管分别显示时、分和秒的十位和个位,通过电路把六个数码管调为零,通过两个开关分别调时分的十位,个位。调时调为23,把分调59,秒调为59,然后等一秒钟,如果显象管的时分的十位、个位和秒位都显示为0,那就说明调试成功,在测试工程中,不但要认真观察和检测,还要认真记录,包括记录观察的现象,测量的数据,通过数据才能把实际观察的现象和理论预计的结果加以定量比较,从中发现问题,加以改进,最终完成设计.在这个设计中主要测试时间是否正确,是否能符合设计的要求。
详述:STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程FLASH 存储器。使用ATMEL 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容.片上FLASH允许程序存储器在系统可编程,亦适于常规编程器.在单芯片上,拥有灵巧的8 位CPU 和在系统可编程FLASH,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案.STC89C52具有以下标准功能:8K字节FLASH,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器。一个6向量2级中断结构,全双工串行口及时钟电路。另外,STC89C52 可降至0HZ 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止.
2.8实验设计程序
#INCLUDE <REG51。H>
#INCLUDE <INTRINS.H>
UNSIGNED CHAR DATA DIS_DIGIT;
UNSIGNED CHAR KEY_S, KEY_V;
UNSIGNED CHAR CODE DIS_CODE[11]={0XC0,0XF9,0XA4,0XB0, // 0, 1, 2, 3
0X99,0X92,0X82,0XF8,0X80,0X90, 0XFF};// 4, 5, 6, 7, 8, 9, OFF
UNSIGNED CHAR DATA DIS_BUF[8];
UNSIGNED CHAR DATA DIS_INDEX;
UNSIGNED CHAR HOUR,MIN,SEC;
UNSIGNED CHAR SEC100;
SBIT K1 = P3^2;
SBIT K2 = P3^3;
//SBIT JJ=P2^0;
BIT SCAN_KEY();
VOID PROC_KEY();
VOID INC_SEC();
VOID INC_MIN();
VOID INC_HOUR();
VOID DISPLAY();
VOID DELAYMS(UNSIGNED CHAR MS);
VOID MAIN(VOID)
{
P0 = 0XFF;
P1 = 0XFF;
TMOD = 0X11; // 定时器0, 1工作模式1, 16位定时方式
TH1 = 0XDC;
TL1 = 0;
TH0 = 0XFC;
TL0 = 0X17;
HOUR = 00;
MIN = 00;
SEC = 00;
SEC100 = 0;
DIS_BUF[0] = DIS_CODE[HOUR / 10]; // 时十位
DIS_BUF[1] = DIS_CODE[HOUR % 10]; // 时个位
DIS_BUF[3] = DIS_CODE[MIN / 10]; // 分十位
DIS_BUF[4] = DIS_CODE[MIN % 10]; // 分个位
DIS_BUF[6] = DIS_CODE[SEC / 10]; // 秒十位
DIS_BUF[7] = DIS_CODE[SEC % 10]; // 秒个位
DIS_BUF[2] = 0XBF; // 显示”-”
DIS_BUF[5] = 0XBF; // 显示"—”
DIS_DIGIT = 0XFE;
DIS_INDEX = 0;
TCON = 0X01;
IE = 0X8A; // 使能TIMER0,1 中断
TR0 = 1;
TR1 = 1;
KEY_V = 0X03;
WHILE(1)
{
IF(SCAN_KEY())
{
DELAYMS(10);
IF(SCAN_KEY())
{
KEY_V = KEY_S;
PROC_KEY();
}
}
}
}
BIT SCAN_KEY()
{
KEY_S = 0X00;
KEY_S |= K2;
KEY_S <<= 1;
KEY_S |= K1;
RETURN(KEY_S ^ KEY_V);
}
VOID PROC_KEY()
{
EA = 0;
IF((KEY_V & 0X01) == 0) // K1
{
INC_HOUR();
// JJ=1;
}
ELSE IF((KEY_V & 0X02) == 0) // K2
{
MIN++;
// JJ=0;
IF(MIN > 59)
{
MIN = 0;
}
DIS_BUF[4] = DIS_CODE[MIN / 10]; // 分十位
DIS_BUF[3] = DIS_CODE[MIN % 10]; // 分个位
}
EA = 1;
}
VOID TIMER0() INTERRUPT 1
// 定时器0中断服务程序, 用于数码管的动态扫描
// DIS_INDEX ——— 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
// DIS_DIGIT --— 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0XFE时,
// 选通P2。0口数码管
// DIS_BUF —-- 显于缓冲区基地址
{
TH0 = 0XFC;
TL0 = 0X17;
P1 = 0XFF; // 先关闭所有数码管
P0 = DIS_BUF[DIS_INDEX]; // 显示代码传送到P0口
P1 = DIS_DIGIT; //
DIS_DIGIT = _CROL_(DIS_DIGIT,1); // 位选通值左移, 下次中断时选通下一位数码管
DIS_INDEX++; //
DIS_INDEX &= 0X07; // 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
}
VOID TIMER1() INTERRUPT 3
{
TH1 = 0XDC;
SEC100++;
IF(SEC100 >= 100)
{
SEC100 = 0;
INC_SEC();
}
}
VOID INC_SEC()
{
SEC++;
IF(SEC 〉 59)
{
SEC = 0;
INC_MIN();
}
DIS_BUF[1] = DIS_CODE[SEC / 10]; // 秒十位
DIS_BUF[0] = DIS_CODE[SEC % 10]; // 秒个位
}
VOID INC_MIN()
{
MIN++;
IF(MIN 〉 59)
{
MIN = 0;
INC_HOUR();
}
DIS_BUF[4] = DIS_CODE[MIN / 10]; // 分十位
DIS_BUF[3] = DIS_CODE[MIN % 10]; // 分个位
}
VOID INC_HOUR()
{
HOUR++;
IF(HOUR 〉 23)
{
HOUR = 0;
}
IF(HOUR 〉 9)
DIS_BUF[7] = DIS_CODE[HOUR / 10]; // 时十位
ELSE
DIS_BUF[7] = 0XFF; // 当小时的十位为0时不显示
DIS_BUF[6] = DIS_CODE[HOUR % 10]; // 时个位
}
VOID DELAYMS(UNSIGNED CHAR MS)
// 延时子程序
{
UNSIGNED CHAR I;
WHILE(MS-—)
{
FOR(I = 0; I < 120; I++);
}
}
三、 附录:流程图,电路原理图
小时编辑键
K1
数码管
复位起始
STC89C52
分钟编辑键
K2
图1-1 流程示意图
图1-2 实验原理图
四、 总结及体会
在这两周的生产实习中,我们了解了PCB板的设计绘制与手工制作基本工艺及方法。学习和认识了许多电子器件的理论知识和使用方法,将以前学到的数电和模电知识结合起来应用到实际电路设计中.真正地体会到“实践出真知"的道理!真所谓的“知识是发展的动力”在现在社会的发展中的深深的印证!随着社会发展,我们的生活对数字电子产品的需求日趋强烈.通过这次对单片机发展前景的展望,充分认识到单片机在我们生活和工业领域应用的重要性。特别是对单片机实验板的亲手焊接,认识到理论与实践之间的差距,同时更加坚信自己要学好数电和模电的理论知识!了解硬件开发的学者都知道“程序是硬件的灵魂”。要使硬件系统能实现完美的功能展显,就要有一套健壮的程序做支撑。此次单片机硬件功能的测试,采用我们以前学过的C语言来实现.C语言要求学生必须熟练记忆和灵活掌握,同时要注意程序编写的技巧和调试技能.编程环境采用了KEIL C51集成开发环境,它的操作相对简单,易于学习掌握和便于对单片机硬件电路的调试,以及了解并掌握到单片机芯片的烧写方法与步骤,进一步加深了对单片机常用指令的理解与运用。这次生产实习中,感谢老师的悉心指导和严格要求,让我们获得了丰富的电子工艺理论知识,极大地提高了实践动手能力.特别是单片机领域对我今后进一步学习硬件设计方面的知识有极大的帮助。同时,我也认识到团队的重要性,只有一个团结奋发向上的团队才能取得更优异的成绩。在今后工作中,要培养自己的耐心和信心,加强团队的合作意思,搞好协作精神,把握好成功的风帆!文档为个人收集整理,来源于网络个人收集整理,勿做商业用途
指导教师评语及成绩评定:
成绩: 指导教师签字:
年 月 日
展开阅读全文