多功能万年历组装与调试

合集下载

万年历组装实训报告

万年历组装实训报告

—實訓報告—(单片机实训报告)学院系别:机电工程学院专业班级:电信BK31901设计学生:张欢指导老师:陈老师、阎老师设计时间:2012年10月19日万年历组装与调试及单片机实训报告2012-10-219| 电信BK31901班张欢一、实习时间:2012年10月15日至2012年10月19日二、实习地点:机电实训楼三、实习目的与要求:1熟练C语言中if语句、for语句、while语句的使用。

2.掌握万年历的基本原理,学会分析基本的电路原理图。

3.学会利用Keil软件和proteus软件进行设计。

四、实习内容:1.利用Keil软件对数码管(秒表)液晶(时钟)编程,并进行编译和链接。

2.掌握AT89C51芯片I/O口的功能及作用。

3.灵活运用C语言对中断、定时计数器及数码管进行编程设计。

4认真掌握proteus仿真软件,并用proteus画出电路图软件进行仿真。

5.掌握万年历的工作原理,学会贴片电容,贴片电阻,晶振集成块的识别与测试,进一步掌握和熟练焊接技术。

五、运用Keil软件对数码管及液晶进行编程设计并用proteus仿真1.用数码管显示0—60的源程序:#include<reg51.h>#define uint unsigned char#define uchar unsigned intsbit K1=P3^7;uchar i,Second_Counts,Key_Flag_Idx;bit Key_State;uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void DelayMS(uint x){ uchar t;while(x--)for(t=0;t<500;t++);}void Key_Byent_Handle(){ if(Key_State==0){Key_Flag_Idx=(Key_Flag_Idx+1)%3;switch(Key_Flag_Idx){case 1:EA=1;ET0=1;TR0=1;break;case 2:EA=0;ET0=0;TR0=0;break;case 0:P0=0x3f;P2=0x3f;i=0;Second_Counts=0; }}} void main(){P0=0x3f;P2=0x3f;i=0;Second_Counts=0;Key_Flag_Idx=0;Key_State=1;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;while(1){if(Key_State!=K1){DelayMS(10);//开关消抖Key_State=K1;Key_Byent_Handle();}}}void DSY_keyfresh() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(++i==2){i=0;Second_Counts++;P0=DSY_CODE[Second_Counts/10];P2=DSY_CODE[Second_Counts%10];if(Second_Counts==60)Second_Counts=0;}}2.用液晶显示年、月、日、字符串的源程序:#include<reg52.h>unsigned char code tab[]="welcome BK31901"; unsigned char code tab1[] ="2012-10-19"; unsigned char num;sbit RS=P1^2;sbit RW=P1^1;sbit E =P1^0;void delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=0;y<150;y++);}void write_com(unsigned char cmd){RS=0;RW=0;E=1;P2=cmd;E=0;delay(2);}void write_data(unsigned char dat){RS=1;RW=0;E=0;P2=dat;E=0;delay(2);}void init(){write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x0f);write_com(0x06);}int main(){init();write_com(0x80);for(num=0;num<17;num++){write_data(tab[num]);}write_com(0x80-0x42);for(num=0;num<11;num++){ write_data(tab1[num]);}while(1);return 0;}3.用proteus画出电路图软件进行仿真六、作品实物图片七、心得体会在本次单片机实训中,我们从焊接贴片电阻、贴片电容、电子元器件开始,到组装、调试、检验合格,完成了万年历的整个过程。

电子万年历组装实训报告

电子万年历组装实训报告

一、实训目的本次实训旨在通过实际操作,让学生掌握电子万年历的组装流程,熟悉电子元器件的识别与使用,了解电路原理图的阅读与理解,以及电子产品的调试与故障排除。

通过本次实训,提高学生的动手能力、实践能力和团队协作精神,为后续相关课程的学习打下坚实基础。

二、实训内容1. 实训时间:2023年X月X日至2023年X月X日2. 实训地点:XX职业学院电子实验室3. 指导老师:XXX老师4. 实训目的:(1)掌握电子万年历的组装流程。

(2)熟悉电子元器件的识别与使用。

(3)了解电路原理图的阅读与理解。

(4)学会电子产品的调试与故障排除。

(5)培养团队协作精神。

5. 实训内容:(1)电子万年历的组装1)准备所需材料:STC89C52RC单片机、DS1302时钟芯片、LCD1602液晶显示屏、电阻、电容、晶体振荡器、按键、电源模块等。

2)根据电路原理图,连接各个电子元器件,确保连接正确。

3)调试电路,检查电路是否正常工作。

(2)电子万年历的程序编写1)了解STC89C52RC单片机的编程环境,如Keil uVision。

2)学习C语言编程,编写电子万年历的程序。

3)将程序烧录到单片机中,调试程序,确保程序正常运行。

(3)电子万年历的调试与故障排除1)观察电子万年历的显示效果,确保显示日期、星期、时间等无误。

2)检查电路连接是否牢固,排除虚焊、短路等故障。

3)优化程序,提高电子万年历的稳定性和可靠性。

三、实训过程1. 组装电子万年历(1)按照电路原理图,将各个电子元器件连接到单片机上。

(2)检查电路连接是否正确,确保没有短路、虚焊等故障。

(3)通电测试电路,确认电路正常工作。

2. 编写程序(1)学习C语言编程,了解电子万年历的程序结构。

(2)编写程序,实现日期、星期、时间的显示。

(3)调试程序,确保程序正常运行。

3. 调试与故障排除(1)观察电子万年历的显示效果,确保显示日期、星期、时间等无误。

(2)检查电路连接是否牢固,排除虚焊、短路等故障。

数字万年历组装实训报告

数字万年历组装实训报告

一、实训背景随着科技的发展,电子产品在我们的日常生活中扮演着越来越重要的角色。

为了提高学生的动手能力和实际操作技能,同时也为了加深对数字电路知识的理解,我们选择了数字万年历的组装作为实训项目。

数字万年历是一种具有日历、星期、日期、农历、节假日等多种功能的电子设备,它集成了数字电路、微控制器、液晶显示屏等元件,能够直观地显示日期和时间信息。

二、实训目的1. 通过组装数字万年历,使学生掌握数字电路的基本原理和实际应用。

2. 培养学生的动手能力、团队协作能力和创新意识。

3. 加深对微控制器、液晶显示屏等电子元件的理解和认识。

4. 学会使用电子工具和仪器,提高实际操作技能。

三、实训内容1. 硬件准备:数字万年历的硬件主要包括微控制器、液晶显示屏、时钟模块、按键、电源模块等。

2. 元件识别:学习各种电子元件的外观、符号、规格等,了解它们在电路中的作用。

3. 电路设计:根据数字万年历的功能要求,设计电路图,包括电路元件的连接方式和电路参数。

4. 电路焊接:按照电路图,将各个电子元件焊接在一起,确保电路的连通性。

5. 软件编程:编写微控制器的程序,实现万年历的各项功能,如时间显示、日期设置、农历查询等。

6. 系统调试:检查万年历的各项功能是否正常,对出现的问题进行调试和修复。

四、实训过程1. 硬件准备:首先,我们准备了一套数字万年历的组装套件,包括微控制器、液晶显示屏、时钟模块、按键、电源模块等。

2. 元件识别:在指导老师的讲解下,我们学习了各种电子元件的外观、符号、规格等,了解了它们在电路中的作用。

3. 电路设计:根据数字万年历的功能要求,我们设计了电路图,包括电路元件的连接方式和电路参数。

电路图设计完成后,我们将其打印出来,作为焊接的依据。

4. 电路焊接:按照电路图,我们将各个电子元件焊接在一起。

在焊接过程中,我们注意以下几点:a. 焊接前,检查元件的规格和引脚是否正确;b. 焊接时,控制好焊接时间,避免过热损坏元件;c. 焊接完成后,检查焊接点是否牢固,是否有虚焊现象。

项目二 数字万年历电路的组装与调试

项目二  数字万年历电路的组装与调试

项目一 调频收音机、对讲机的组装与调试 1. 识读电路原理图、装配图、印制板图
Байду номын сангаас2.根据电路图安装电路
1)核对元器件
2)检测元器件
(2)安装电路
(2)安装电路
(3)整机装配
• • • • • • • • •
• •
• •
3.调试电路 (1)通电前对电路板进行安全检测。 1)根据安装图检查是否有漏装的元器件或连接导线。 2)根据安装图或原理图检查三极管、耦合电容的极性安装是否正确。 3)检测信号源、12V直流电源是否正常。 4)测量直流稳压电源电路12V 直流电源连接点之间的电阻值。 5)完成以上检查后,接好信号源、12V直流电源即可进行测试。 (2)电路故障检测与分析 按信号流程顺序检测各个功能单元电路的输入信号、输出信号。若输 入信号正常,输出信号不正常说明该单元有故障。(检测信号电压或 波形) (3)示波器检测 首先检测直流电源、信号源工作是否正常。放大电路输入端有信号, 输出端无信号说明放大电路不工作。 (4)万用表检测 用万用表检测三极管发射极、基极、集电极的电位值,检测发射结、 集电极与发射机之间的电压,检测集电极电流。

数字万年历的焊接、安装3

数字万年历的焊接、安装3
学习活动
及课时
学习内容
学生活动
教师活动
考评方法与
考评要素
教学活动1
下发工作任务,收集装配调试相关资料:
根据电子技术工艺基础完成稳压电源的制作
1.电子元器件分类
2.收集资料
①电子装配的准备工艺②手工焊接工艺③焊接质量检查
④电子线路的检测方法
3.准备工作
①工具,材料,图纸
②仪器,仪表
明确工作任务
查找电子技术工艺相关资料
3.检查焊接质量:目视检查,手触检查
4.整体外观检查,并修整:有无漏焊、错焊
5.电子线路检查:使用万用表测量各元器件连接性
6.通电检测,调试:有无输出,输出是否可调
7.清理现场
根据工作计划和工艺要求完成安装焊接。
检查焊接质量,检查电路是否正确,无安全隐患
在教师指导下通电检查,调试
工作完成后各小组安排清理现场
2.制定工作计划
3.进行装配、调试
4.成品验收、展示
5.总结与评价
作业布置
根据已完成的电路与原理图对照,复习工作原理,反思整体工作过程,加以改进
课后反思
在观察学生焊接工艺,其焊接手法与技巧还不熟练,没有达到预想的效果,训练不足。电子元器件安装有些学生不符合要求。学生对收集的资料和实操理解不够,需要在以后的工作中纠正和加强。
指导学生演示成品
根据学生展示,叙述的情况给予评价
教学活动5
总结与评价
1.各组总结工作过程,计划实施情况。
2.各组提出问题或改进意见
3.评价
小组成员讨论并总结工作
提问题,或者自己在工作中解决了哪些未考虑到的问题
自评、互评
听取学生总结,互相讨论评价

多功能万年历组装与调试

多功能万年历组装与调试

一、实训目的与要求:(1)、学会基本电子元器件的识别,熟悉一些常用电子器件的功能与作用。

(2)、掌握液晶显示电子万年历的组成和工作原理,学会分析基本的电路原理图。

(3)、学会利用电路原理图检查、处理电路故障、调试。

二、实训内容:(1)、掌握电烙铁的正确使用方法和基本的焊接技术,学会识别不同的元器件及其安装方法。

(2)、掌握液晶显示电子万年历的工作原理,学会识别电路原理图与印刷图、电容、电阻的识别与测试,进一步掌握和熟练焊接技术。

(3)、测试各元件的好坏,安装元件到电路板上,焊接断电并测试。

整机调试与验收。

三、软件和硬件设计:3、1 软件调试平台Keil for C51是美国Keil Software公司出品的C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,Keil C51软件还提供了丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率非常高,且容易理解。

C51开发中除了必要的硬件外,同样离不开软件,我们写的源程序要变为C51可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,但现在已极少使用手工汇编。

Keil提供了包括C编译器、宏汇编、连接线、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision2)将这些部分组合在一起。

如图下图所示。

3、2 系统软件程序(1)LCD1602液晶显示程序#include<reg51.h>sbit rs=P1^2;sbit rw=P1^1;sbit en=P1^0;sbit s1=P3^4;sbit s2=P3^5;sbit s3=P3^6;char miao,shi,fen;unsigned char code tab[]=" 2012-10-19 MON";unsigned char code tab1[]=" 00:00:00";void delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=0;y<150;y++);}void write_com(unsigned char cmd){rs=0;rw=0;en=1;P2=cmd;en=0;delay(2);//当不检测忙标志信号时,每次至少需要2ms }void write_data(unsigned char dat){rs=1;rw=0;en=1;P2=dat;en=0;delay(2);//当不检测忙标志信号时,每次至少需要2ms }void init(){unsigned char num;write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x0f);write_com(0x06);write_com(0x80);for(num=0;num<16;num++){write_data(tab[num]);}write_com(0x80+0x42);for(num=0;num<13;num++){write_data(tab1[num]);}TMOD=0X01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;}void main(){init();while(1);}3、3 系统硬件设计(1)LCD1602液晶显示四、LCD1602介绍:4、1 LCD1602引脚功能4、2 LCD1602硬件应用图4、3 LCD1602操作时序4、5 LCD1602内部RAM地址4、6LCD1602读/写操作时序图五、电子万年历功能状态说明:5、1 整点闹铃设置在正常时间状态下,按住“UP”键2秒以上将切换整点闹铃的关与开;注意低于2秒将显示年份。

数字万年历安装与调试

数字万年历安装与调试

数字万年历安装与调试数字万年历安装与调试正确插件、良好焊接,优质元件、成熟电路是组装成功的保障。

1.安装顺序与要求:首先安装43只电阻和7个二极管,用剪下来的电阻或二极管的脚制作15条过线并焊接在板上,再焊圆片电容、三极管、数码管……;三只电解电容器和三端稳压器(7805)这四个件不能高过数码管的高度,所以应让这四个件平躺在电路板上焊接。

最后焊CPU芯片,焊CPU芯片时最好是断电焊接。

以防感应电压击穿CPU。

2.连接:①大板与小板用5P线连接,注意大、小板之间的连线要1连1、2连2……②用两条细线连大板与喇叭。

③变压器副边的两条线焊在标有AC12V的两个焊盘上,原边与电源线连接好,并用胶布包好确保安全。

3.通电调试:焊接完毕后,先不要装入机壳,平放在桌面上,将圆片电池推入电池卡,注意正极和电池卡连接,负极与其下边的一条过线连接。

接通电源,这时数码管显示出时间、喇叭也会给您播放一曲。

但是所显示的时间不是当时的时间,很可能显示:03年月日……。

这时按小板上的设置键,会看到“年份”闪烁,再按修改键,将年份调到当时的年份。

再按设置键,“月份”闪烁,按修改键将月份调正确。

再按设置键,“日期”闪烁,按修改键将日期调正确。

再按设置键,“小时”闪烁,按修改键将小时调正确。

再按设置键,“分钟”闪烁,按修改键将分钟调正确。

再按一下设置键,即时间调整完毕。

这时中间的两个发光管闪烁,即秒闪。

农历和星期自动跟踪。

4.定闹设定:按定闹键进入定闹设定状态,这时按设置键“小时”闪烁,按修改键设定小时。

再按设置键“分钟”闪烁,按修改键设定分钟,再按退出键恢复正常显示这时定闹指示灯常亮即定闹设置完毕。

5.取消定闹:按定闹键显示设定的定闹时间,这时连续按修改键直到时间显示“-:--”再按退出键定闹指示灯熄灭即定闹被取消恢复正常显示。

6.整点报时:在正常状态下按修改键,整点指示灯亮,表示整点报时已设定完毕。

再按一下修改键整点指示灯熄灭表示整点报时被取消。

多功能液晶显示万年历、温度计

多功能液晶显示万年历、温度计

实验报告实验名称:多功能液晶显示万年历、温度计的制作所在专业:测控技术与仪器学生姓名:班级学号:任课教师:陆婷2014 /2015 学年第一学期摘要:多功能液晶显示万年历、温度计具有造型美观、经济实用,性能稳定、耗电少等优点。

实验内容为学习PCB板的设计和绘制方法,完成一个多功能万年历、温度计的装配及调试。

一、设计目的:1. 了解并掌握多功能液晶显示万年历、温度计的主要工作原理,更好的理解和掌握平时所学的电子电路理论知识;2.认识贴片元件,学习贴片元件的装配方法和PCB板的设计和绘制方法;2.通过自己亲自动手装配,锻炼动手能力,提高学生解决实际电路问题的能力。

还能激发学生的好奇心。

二、基本功能说明:(1)液晶同屏显示年、月、日、星期、时、分、秒,正常走时状态下,外围电路设有一LED秒指示灯,每秒闪烁一次。

(2)开机画面显示3秒,显示相关制作信息3秒,清屏后进入正常走时状态。

(3)整点报时功能,早8点到晚10点,多首歌曲在整点时刻循环播放,每首歌曲的长度均控制在一分钟以内。

(4)公历和农历所有的节日提醒,均在屏幕最下面一行显示。

如果当天是某个节日,则显示相关节日信息,若当天无任何节日,则可显示当天的各个时段信息,如:凌晨、早晨、上午、中午、下午、晚上、夜里、深夜等。

(5)实时温度显示,精确到小数点后一位。

(6)时间调整:在正常走时状态下,按SET键进入时间调整界面,可以依次调节年、月、日、星期、时、分等信息,按CLK键退出当前的调整状态,恢复正常走时。

(7)闹钟调整:在正常走时状态下,按CLK键,进入闹钟设置界面,可以依次调节闹钟小时、闹钟分、闹钟开启和闹钟关闭。

当想要设置闹钟时,设置好小时、分之后,再按此键至闹钟开启,按SET键即可退出闹钟设定界面,闹钟设置完成,若不想使用闹钟,就按CLK 键至闹钟关闭状态时,再按SET键退出界面,则闹钟被关闭。

(8)外部电路设有扬声器开关,用户可根据需要自行开关扬声器。

多功能电子万年历的设计与实现

多功能电子万年历的设计与实现

多功能电子万年历的设计与实现
随着科技的不断发展,电子产品的功能也越来越丰富,电子万年历也不例外。

在这篇文章中,我将介绍一款多功能电子万年历的设计与实现。

首先,我们需要确定这款电子万年历的主要功能,包括日期显示、时间显示、闹钟、倒计时器、计时器、温度计、天气预报等功能。

在确定主要功能后,我们需要选择合适的电子元件,并进行电路设计。

电路设计完成后,我们需要进行电路布局,并将电路板进行制造。

制造完成后,我们需要将电子元件焊接到电路板上,并进行测试,确保电子万年历的各项功能正常运行。

接下来,我们需要对电子万年历进行外壳设计。

在外壳设计中,我们需要考虑到电子万年历的外观、材质、尺寸等因素。

我建议选择轻质、坚固的材料制作外壳,并在外部加上透明塑料保护层,以防止碰撞和刮伤。

另外,我们还可以在外壳上添加按钮、开关等控制元素,使电子万年历更加易于使用。

最后,我们需要对电子万年历进行软件设计。

在软件设计中,我们需要实现日期、时间的显示,以及闹钟、倒计时器、计时器、温度计、天气预报等功能。

在软件设计中,我们需要考虑到用户的使用习惯,设计出简单易用、功能强大的界面,并加入音乐、提示等元素,以方便用户使用电子万年历。

总的来说,多功能电子万年历的设计与实现需要进行电路设计、外壳设计、软件设计等多个环节,并需要选择合适的电子元件、
材料等。

在设计过程中,我们需要不断地优化和改进,以满足用户的需求和期望。

最终,我们将获得一款外观精美、功能强大的多功能电子万年历。

万年历硬件软件调试

万年历硬件软件调试

硬件调试:1:观察检查原理图和焊接实物是否相同,观察焊点有无短路现象。

2:空板测试在没有放置任何芯片的基础上(除焊接上去的),将万用表调到电阻档,先测量电源和地两个引脚之间的电阻(大约在千欧级别以上),若电阻很小则返回检查硬件电路有无问题软件仿真测试用PROTUES对其进行仿真,其效果和实物很接近。

在编写软件时,和搭积木一样。

先做人机接口,这样对程序的控制、流程走向、会出现的软件错误都会有个大概了解。

比如在做1602时,先在指定的位置显示自己想要的字符,再做成函数形式,可供其他函数调用。

18B20是一个对时序要求非常严格的器件,所以在编写18B20的时序时,参考了其数据手册,也参考了网上很多的程序,最终自己编写出比较合适的程序。

在指定的位置显示了当前的温度,也可以测负温度的,这个是网上很少有的。

DS1302也是一个对时序要求很严格的器件,也参考了数据手册和一定的源程序。

还有一个要注意的地方就是DS1302内存储的时间、日期都是二进制BCD码,为此需要编写二进制码和BCD码互相转换的函数。

加上3V备份电池后就可以掉电保护数据并按照指定的格式显示时间和日期。

后来也想在里面添加一个闹钟功能,也就在程序里加了这一块。

具体的要和按键模块连接起来。

3:软硬件联调通过下载器把软件下载到单片机中,并对进行检测,一开始在笔记本上还是很稳定的,不过后来用了手机充电器做了电源,发现时间乱码了,然后又拿到笔记本的USB口进行操作,一会儿稳定一会儿乱码。

想了很久都想不通,最后在网站论坛里发了帖子等待回复,最终在网友的提示下,突然发现仿真非常稳定,而实物有问题,然后把问题集中在DS1302上了,还是在找了很多网页的基础上,在DS1302的数据口加了10K的上拉电阻,然后用了手机充电器做电源,虽然1602显示的有点暗,不过数据非常稳定的在跳动。

就此,系统调试整机完成,剩下的就是对程序做一些更详细的注释,格式的调整。

看似简单的一个万年历,实现起来却费了好大的功夫,不仅是在硬件设计上,还是在软件设计与调试上,都有着很多的技巧在里面。

电子技能实训 项目12 数字万年历的安装与调试

电子技能实训 项目12 数字万年历的安装与调试
电阻器—普通二极管—电容器—发光二极管—数码管—芯片电路
4、电阻器、普通二极管一般采用卧式安装;发光二极管采用立式 安装,不要太高;电解电容器安装时为了不影响面板安装需要躺 着装;导线注意提前镀锡。数码管安装时要考虑方向,使小数点 朝向右下侧。晶体振荡器需要卧式安装在芯片的元件面。
实训步骤
Step3.电源的焊接 1、认真阅读电源板组装作业指导书,根据工艺要求进行焊接。 2、电源小板安装时,元器件的极性需要检测与识别清楚。 3、焊接顺序: 电阻器—整流二极管—发光二极管—光耦—电容器—变压器—导线
实物图
发光线段分布图
发光线段组成数字图
一、基基础础知知识识
数码管内部的发光二极管电路如图11-3所示,其接线方式一般分 为共阳极和共阴极两种。共阳极接法的输入低电平有效,共阴极接法 的输入高电平有效。
内部发光二极管电路
一、基基础础知知识识
2.石英晶体振荡器
石英晶体振荡器简称石英晶振,俗称晶振。它具有谐振特性,可 以用来稳定和选择频率,可以代替线圈L和电容C构成的谐振回路、滤 波器电路。其外形、结构、符号如下图。从外观上观察,正常的石英晶 振表面整洁光亮、无裂纹,引脚牢固可靠。
外形
结构
符号
一、基基础础知知识识
3.三端固定稳压器
三端固定稳压器有输入端、输出端和公共引出端共三个端钮,一 般分为正电压输出和伏电压输出两类。CW78XX系列是正电压输出的, CW79XX系列是负电压输出的,后两位数字代表输出电压的大小,例如: CW7812表示输出+12V,CW7905表示是输出-5V。其外形和型号含义如 下图。
实训步骤
Step5.功能调试
1、如果焊接组装没有问题,接下来就是功能调试。

项目四数字万年历制作与调试

项目四数字万年历制作与调试

项目四数字万年历的制作与调试一、项目要求:⑴熟悉元器件的特点、规格,性能指标、外形尺寸、识别标志以及包装形式。

⑵分析电路原理,绘图设计PCB板。

⑶注意元件的极性,合理调试。

二、项目目标:⑴熟练掌握焊接技术,保证质量,了解自动焊接技术。

⑵掌握手工焊接SMT元器件的要求与条件步骤、SMT元器件的焊接与手工拆焊工艺。

⑶掌握浸焊、波峰焊、回流焊SMT焊接检查设备及工艺方法。

⑷掌握电子产品生产操作的基本技能及其调试方法。

⑸培养自身安全意识。

二.知识链接1.集成电路:定义:集成电路是利用半导体工艺、厚薄膜工艺、薄膜工艺,将有源器件、无源器件按照设计要求连接起来,制作在同一硅片上,形成具有特定功能的电路,并封装在管壳之中,英文为缩写为IC,也俗称芯片。

特点:体积小,重量轻,功耗低,成本低,可靠性低,性能稳定。

分类:按照制作工艺分为:半导体集成电路,薄膜集成电路,厚膜集成电路,混合集成电路;按照功能分为:模拟集成电路,数字集成电路,微波集成电路;按照集成规模分为:小规模(SSI),中规模(MSI),大规模(LSI),超大规模(VLSI);按照电路中晶体管的类别分为:双极型集成电路,单极性集成电路。

封装:封装形式:指安装半导体集成电路芯片用的外壳封装作用:起着安装、固定、密封、保护芯片等方面的作用常用的封装材料:塑料,陶瓷,金属。

金属封装特点:散热性好,可靠性高,但安装使用不方便,成本高。

一般高精密度集成电路或大功率器件均以此形式封装。

按国家标准有T和K型两种;陶瓷封装特点:散热性差,但体积小,成本低。

陶瓷封装的形式可分为扁平型和双列直插式型;塑料封装特点:这是目前使用最多的封装形式。

)圆形分装:将管底对准集成电路,引脚编号按顺时针方向排列(现应用较少)单列直插式封装(SIP):集成电路引脚朝下,以缺口、凹槽或色点作为引脚参考标记,引脚编号顺序一般从左到右排列双列直插是封装(DIP):集成电路引脚朝上,以缺口或色点等标记为参考标记,引脚编号按顺时针方向排列;反之,引脚按逆时针方向排列三脚封装:正面(印有型号商标的一面)朝向集成电路,引脚编号顺序自左向右方向排列。

数字万年历套件装配教学设计

数字万年历套件装配教学设计
1、学生听取教师对评分细则的讲解。
2、每个小组进行任务汇报,讲解完成任务的过程,遇到的问题,及解决的方法。
3、每个小组回答教师提出的问题。
4、小组长对每个小组的完成情况进行打分,并进行总结。
1、教师讲解评价评分细则及注意事项。
2、教师听取每个小组的回报,对汇报中存在的问题,进行记录。
3、教师对每个小组的情况进行点评、打分和提问进行提醒。
方案设计:
1讲解任务书使用方法
2.明确以小组为单位开展
3.巡回指导,协助学生完成
4.引导学生归纳小结
任务实施:
1明确实施方案
2指导学生完成任务
评价教师根据各组活动情况打分
利用教师提供的资料共同完成任务书要求。
头、
根据任务是的要求制作电路
1各小组汇报
2学生回答老师提出的问题。
结束
1、完成实习报告内容。
学生根据某一电阻阻值读出色环,依据万用表正确测量,并能正确安装在电路板上。
2、学生在电路板上焊接电阻
3、二极管的识读、测量、安装与焊接
学生根据电路板上要装的二极管看清参数,从元件袋中找到该元件,依据万用表进行质量检测及极性判断并能安装在电路板上。
4、电容的识读、测量与安装
学生根据电路板上要装得电容,从元件袋中找到该元件,依据万用表进行质量检测,电解电容要进行极性判断并能安装在电路板上。
4、教师对整个评价过程进行小结。
1、各个小组分工合作完成整个任务,锻炼学生的团队合作能力。
2、组长汇报本组方案,回答教师的问题,锻炼学生的沟通能力,总结归纳能力。
3、教师对每个小组的情况进行总结,锻炼学生的判断、分析问题等综合能力。
教学总结
(10分钟)
1、学生认真总结自己和表现优秀的学生之间的差距。

AT89C52的电子万年历课程设计报告

AT89C52的电子万年历课程设计报告

基于89c52多功能万年历设计报告班级:电子信息工程2班学院:电子信息工程学号:**********姓名:***一、设计任务:设计一个具有多功能的电子万年历。

二、基本要求:1、能够显示阳历年、月、日、星期、小时、分、显示模块采用LCD液晶显示,要求能用按键调整时间。

2、能显示阴历月、日3、具有定时报警功能,能够进行整点语音报时。

4、具有闹钟设定的功能。

发挥部分:1、掉电存储功能,可存储掉电前用户定时设置。

2、具有日程管理,可以设定指定日期的日程,可以设置日成的提醒时间,并可用语音进行提示。

三、方案设计与论证方案一:按照系统设计的功能的要求,初步确定系统由主控模块、时钟模块、显示模块、语音模块各键盘接口模块共5个模块组成,电路系统构成框图如图1所示。

主控芯片使用52系列AT89C52单片机,时钟芯片使用美国DALLAS公司推出的一款高性能、低功耗、带RAM的实时时钟DS1302。

采用DS1302作为计时芯片,可以做到计时准确。

更重要的是,DS1302可以在很小电流的后备电源(2.5V--5.5V 电源,在2。

5V时耗电小于300nA)下继续计时,而且DS1302可以编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本功不耗电。

显图1 电子万年历电路系统构成框图方案二:按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,语音模块,电源电路、复位电路、晶振电路几个模块,系统框图如图2所示。

主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间和设定闹钟,显示模块采用LCD12864,时钟电路模块采用DS1302实时时钟实现对时间,日期的操作。

图2 基于AT89C52单片机的电子万年历系统框图方案三:按照系统设计的要求和功能,将系统分为主控制器模块、显示模块、按键开关模块、蜂鸣器电路模块。

系统框图如图3所示,主控制模块采用AT89C52单片机为控制中心,显示模块采用液晶LCD12864显示,计时使用AT89C52单片机自带的定时器功能,实现对时间、日期的操作,通过按键盘开关实现对时间、日期的调整。

万年历的安装、调试与维修 任务书活动页

万年历的安装、调试与维修 任务书活动页

万年历的安装、调试与维修任务书活动页1.了解万年历的原理和基本结构,能读懂电路原理图;2.认识识别电子元件,会筛选电子元件,会正确处理和使用电子元件,进一步熟悉电子元件的主要参数;3.认识实物AT89S52单片机芯片,了解其封装形式。

清楚AT89S52双列直插式芯片引脚分类、特点、功能;4.会正确使用常用电工工具和仪表;5.掌握焊接技术,能正确进行万年历的组装,做到无虚焊,无错装漏装、焊点大小合适、美观,无虚焊、无器件丢失损坏;6.了解万年历的调试方法,能对组装电路进行测试和调整,使数字时钟能正常工作;7.通过对万年历的安装、焊接、调试,了解电子产品的装配过程,简易调试,及整机工艺;60课时随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

而单片机在数字化高速发展的时代扮演着极为重要的角色。

电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。

所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。

本课题利用单片机来设计一个万年历电路。

设计要求:1、时间以二十四小时为周期。

2、能够显示年、月、日、时、分、秒。

3、有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间。

4、计时过程具有鸣报功能,当时间达到整点前5秒进行蜂鸣报时。

5、实时监测环境温度(可根据需要启动高温报警功能);6、为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。

学习活动1:明确任务学习活动2:制定计划学习活动3:万年历电路的组装、调试与维修学习活动4:成果展示、评价总结、经验交流学习活动1 明确任务学习目标:1.能正确的识读万年历电路原理图,装配图;2.能简述万年历的组成及工作原理学习课时:12学时学习过程:一、明确工作任务根据本次任务的要求及安排完成下表的填写:要求:总体方案实现:二、识读电路图,安装图本系统以AT89S52单片机为控制核心,通过与DS1302和DS18B20通信获取实时时间和实时环境温度,并将得到的数据通过1602液晶显示出来,同时通过相应的按键调整相应的值。

多功能万年历实训报告

多功能万年历实训报告

【实训报告】多功能万年历一、实训目标本次实训的目标是设计并实现一个多功能万年历。

通过这个实训项目,我们可以学习和掌握以下技能:1.熟悉日历的计算和展示方式;2.掌握界面设计和用户交互的相关知识;3.学会使用编程语言实现各种功能。

二、实训内容1.日历的计算和展示我们首先需要实现日历的算法,在给定年份和月份的情况下,计算并展示整个月的日期。

我们可以使用计算机编程语言来实现这个算法,具体的实现方式可以根据需求自行选择。

2.界面设计为了使用户能够方便地使用该多功能万年历,我们需要为其设计一个用户友好的界面。

界面设计可以包括以下几个方面:-外观设计:选择合适的颜色和布局,使界面看起来美观大方。

-功能按钮:根据实际需求,设计相应的功能按钮,例如切换到下一个月、上一个月的按钮,选择年份和月份的下拉菜单等。

-提示信息:在界面上显示一些提示信息,如当前选中的日期、当前是星期几等,以方便用户使用。

3.用户交互为了提升用户体验,我们需要实现一些用户交互的功能。

例如,当用户点击一些日期时,我们可以展示该日期的详细信息,如农历日期、节假日等;当用户选择了特定的年份和月份时,我们需要实时更新日历的展示。

三、实训过程1.分析需求:我们首先需要明确实训的目标和需求,并且将其分解为一个个具体的任务。

2. 设计界面:根据需求,我们设计和绘制出界面的原型图。

可以使用工具如Axure RP、Sketch等完成。

3.编码实现:根据界面设计和功能需求,我们使用编程语言对其进行编码实现。

具体的编程语言可以根据个人的喜好和方便程度来选择。

4.调试测试:在完成编码后,我们需要进行功能测试和调试,以确保整个万年历的功能正常。

5.优化改进:在测试中发现问题或不足之处时,我们需要进行相应的优化和改进,使其更加完善。

6.完成报告:最后,我们需要撰写实训报告,总结整个实训项目的过程和经验。

四、实训心得通过这次实训,我学习了如何设计和实现一个多功能万年历。

实验报告——多功能万年历

实验报告——多功能万年历

单片机实验工程中期报告多功能万年历课程名称:单片机原理及应用组别:第二十组小组成员:****************班级:****************一、总体设计由于我们实验是在网上购置的现成的开发板来学习和使用的,故在方案的选择上也只能限于开发板设计好的电路和芯片。

系统分为主控模块、时钟电路模块、温度检测模块,按键扫描模块,LCD显示模块,电源电路、复位电路、晶振电路等模块。

该设计采用STC89C52 芯片实现单片机万年历功能。

设计应具有时间显示,年月日显示等功能。

依据需求可扩展实现农历显示功能。

运用能。

焊接并完成作品调试。

二、详细设计1、各模块、元器件的型号及功能主控模块采用AT89C52单片机,STC89C52,ATMEL的51系列单片机。

支持串口下载,使用非常方便,且具有很大的价格优势。

缺点是仅支持串口下载,不支持在线下载,使用中会有些不方便。

按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对时间、日期的操作,温度模块使用18B20实现度温度的操作。

2、流程图3、软件仿真电路图4、实物连接图三、目前实现的功能〔录制视频〕四、小组分工情况彪:连接电路,进展程序的烧写。

王进:收集资料,参与相关连接。

于红红:程序读写,对实物的介绍。

五、进度安排〔截止时间12月23日〕工程实验已完成近70%,有些功能还不能实现,有待完善,预计二十号完成。

六、附录〔程序〕#include <reg52.h> //调用单片机头文件#define uchar unsigned char //无符号字符型宏定义变量围0~255#define uint unsigned int //无符号整型宏定义变量围0~65535#include "eeprom52.h"#include "nongli.h"bit flag_200ms ;bit flag_100ms ;sbit beep = P3^7; //蜂鸣器定义bit flag_beep_en;uint clock_value; //用作闹钟用的sbit dq = P3^1; //18b20 IO口的定义sbit hw_P32=P3^2; //红外遥控IO口的定义bit flag_jiema_en = 0; //红外解码成功标志位uchar hw_table[4]; //红外解码数据缓冲区uint t_high = 300,t_low = 100;uint temperature ; //温度变量uchar flag_nl; //农历阳历显示标志位/********红外遥控器按键的操作码************** 红外遥控对应的数据字节hw_table[2]45 46 4744 40 4307 15 0916 19 0d0c 18 5e08 1c 5a42 52 4a*******************************************/uchar menu_1,menu_2;uchar key_time,flag_value; //用做连加的中间变量bit key_500ms ;uchar n_nian,n_yue,n_ri; //农历显示的函数#include "ds1302.h"#include "lcd1602.h"/***********100us的延时函数***12M晶振**************/void delay_100us(uchar z){ //12Muchar x,y;for(x=0;x<z;x++)for(y=0;y<20;y++);}/******************把数据保存到单片机部eeprom中******************/ void write_eeprom(){SectorErase(0x2000);byte_write(0x2000, fen1);byte_write(0x2001, shi1);byte_write(0x2002, open1);byte_write(0x2003, t_high % 256);byte_write(0x2004, t_high / 256);byte_write(0x2005, t_low % 256);byte_write(0x2006, t_low / 256);byte_write(0x2058, a_a);}/******************把数据从单片机部eeprom中读出来*****************/ void read_eeprom(){fen1 = byte_read(0x2000);shi1 = byte_read(0x2001);open1 = byte_read(0x2002);t_high = byte_read(0x2004);t_high <<= 8;t_high |= byte_read(0x2003);t_low = byte_read(0x2006);t_low <<= 8;t_low |= byte_read(0x2005);a_a = byte_read(0x2058);}/**************开机自检eeprom初始化*****************/void init_eeprom()read_eeprom(); //先读if(a_a != 43) //新的单片机初始单片机问eeprom{fen1 = 3;shi1 = 8;open1 = 1;t_high = 350;t_low = 100;a_a = 34;write_eeprom(); //保存数据}}/***********************18b20初始化函数*****************************/ void init_18b20(){bit q;dq = 1; //把总线拿高delay_uint(1); //15usdq = 0; //给复位脉冲delay_uint(80); //750usdq = 1; //把总线拿高等待delay_uint(10); //110usq = dq; //读取18b20初始化信号delay_uint(20); //200usdq = 1; //把总线拿高释放总线}/*************写18b20的数据***************/void write_18b20(uchar dat){uchar i;for(i=0;i<8;i++){ //写数据是低位开场dq = 0; //把总线拿低写时间隙开场dq = dat & 0x01; //向18b20总线写数据了delay_uint(5); // 60usdq = 1; //释放总线dat >>= 1;}}/*************读取18b20的数据***************/ uchar read_18b20(){uchar i,value;for(i=0;i<8;i++){dq = 0; //把总线拿低读时间隙开场value >>= 1; //读数据是低位开场dq = 1; //释放总线if(dq == 1) //开场读写数据value |= 0x01;delay_uint(5); //60us 读一个时间隙最少要保持60us的时间}return value; //返回数据}/*************读取温度的值读出来的是小数***************/uint read_temp(){uint value;uchar low; //在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否那么会影响到18b20的时序init_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0x44); //启动一次温度转换命令delay_uint(50); //500usinit_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0xbe); //发出读取暂存器命令EA = 0;low = read_18b20(); //读温度低字节value = read_18b20(); //读温度高字节EA = 1;value <<= 8; //把温度的高位左移8位value |= low; //把读出的温度低位放到value的低八位中value *= 0.625; //转换到温度值小数return value; //返回读出的温度带小数}/******************1ms 延时函数*******************/void delay_1ms(uint q){uint i,j;for(i=0;i<q;i++)for(j=0;j<120;j++);}/******************写星期函数*******************/void write_week(uchar hang,uchar add,uchar week)//写星期函数{if(hang==1)write_(0x80+add);elsewrite_(0x80+0x40+add);switch(week){case 1:write_data('M');//星期数为1时,显示write_data('O');write_data('N');break;case 2:write_data('T');//星期数据为2时显示write_data('U');write_data('E');break;case 3:write_data('W');//星期数据为3时显示write_data('E');write_data('D');break;case 4:write_data('T');//星期数据为4是显示write_data('H');write_data('U');break;case 5:write_data('F');//星期数据为5时显示write_data('R');write_data('I');break;case 6:write_data('S');//星期数据为6时显示write_data('T');write_data('A');break;case 7:write_data('S');//星期数据为7时显示write_data('U');write_data('N');break;}}/*************时钟显示***************/void init_1602_ds1302(){write_sfm2_ds1302(1,1,shi); //显示时write_sfm2_ds1302(1,4,fen); //显示分write_sfm2_ds1302(1,7,miao); //显示秒write_week(2,12,week);// write_sfm1(1,14,week); //显示星期write_sfm3_18B20(1,11,temperature); //显示温度if(flag_nl == 0) //显示阳历{write_sfm2_ds1302(2,2,nian); //显示年write_sfm2_ds1302(2,5,yue); //显示月write_sfm2_ds1302(2,8,ri); //显示日}else //显示农历{write_sfm2_ds1302(2,2,n_nian); //显示年write_sfm2_ds1302(2,5,n_yue); //显示月write_sfm2_ds1302(2,8,n_ri); //显示日}}/*************定时器0初始化程序***************/ void init_time0(){EA = 1; //开总中断TMOD = 0X01; //定时器0、工作方式1ET0 = 1; //开定时器0中断TR0 = 1; //允许定时器0定时}/*************闹钟报警函数***************/void menu_dis(){static uchar mm,value;if(flag_100ms == 1) //100ms执行一次{flag_100ms = 0;if(open1 == 1) //如果闹钟翻开{if((miao == 0) && (fen == fen1) && (shi == shi1)){flag_beep_en = 1; //有报警翻开蜂鸣器响的标志位}if(flag_beep_en == 1) //闹钟以被翻开{clock_value++;if(clock_value <= 30)beep = ~beep; //蜂鸣器叫3秒// 1 分钟后自动关闭闹钟value ++;if(value >= 10){value = 0;mm++;if(mm >= 60){mm = 0;flag_beep_en = 0;beep = 1;}}}}}}/********************独立按键程序*****************/uchar key_can; //按键值void key() //独立按键程序{static uchar key_new;key_can = 20; //按键值复原P3 |= 0x78; //对应的按键IO口输出为1 if((P3 & 0x78) != 0x78) //按键按下{delay_1ms(1); //按键消抖动if(((P3 & 0x78) != 0x78) && (key_new == 1)){ //确认是按键按下key_new = 0;switch(P3 & 0x78){case 0x70: key_can = 4; break; //得到按键值case 0x68: key_can = 3; break; //得到按键值case 0x58: key_can = 2; break; //得到按键值case 0x38: key_can = 1; break; //得到按键值}// write_sfm2(1,0,key_can); //显示按键值}}elsekey_new = 1;}/**********************设置函数************************/void key_with(){if(key_can == 1) //设置键{menu_1++;if(menu_1 == 4) //设置时间{menu_2 = 1;write_string(1,0," - - W: ");write_string(2,0," 20 - - ");}if(menu_1 == 2) //设置闹钟{menu_2 = 1;write_string(1,0," set clock ");write_string(2,0," Y 00:00 ");}if(menu_1 == 3) //设置温度上下限{menu_2 = 1;write_string(1,0," set wendu ");write_string(2,0,"H: . L: . ");write_zifu(2,6, 0xdf); //显示度write_zifu(2,14,0xdf); //显示度}if(menu_1 > 2) //回到正常显示{menu_1 = 0;write_guanbiao(1,2,0); //关闭光标init_1602_dis_csf(); //初始化液晶显示}if(key_can == 5){menu_1 = 0;write_guanbiao(1,2,0); //关闭光标init_1602_dis_csf(); //初始化液晶显示}if(key_can == 2) //选择键{flag_200ms = 1;if(menu_1 == 1) //设置时间{menu_2 ++;if(menu_2 > 7)menu_2 = 1;}if(menu_1 == 2) //设置闹钟{menu_2 ++;if(menu_2 > 3)menu_2 = 1;}if(menu_1 == 1){if(menu_2 == 1) //设置时{if(key_can == 3) //加{shi+=0x01;if((shi & 0x0f) >= 0x0a)shi = (shi & 0xf0) + 0x10;if(shi >= 0x24)shi = 0;}if(key_can == 4) //减{if(shi == 0x00)shi = 0x24;if((shi & 0x0f) == 0x00)shi = (shi | 0x0a) - 0x10;shi -- ;}if(menu_2 == 2) //设置分{if(key_can == 3) //加{fen+=0x01;if((fen & 0x0f) >= 0x0a)fen = (fen & 0xf0) + 0x10;if(fen >= 0x60)fen = 0;}if(key_can == 4) //减{if(fen == 0x00)fen = 0x5a;if((fen & 0x0f) == 0x00)fen = (fen | 0x0a) - 0x10;fen -- ;}}if(menu_2 == 3) //设置秒{if(key_can == 3) //加{miao+=0x01;if((miao & 0x0f) >= 0x0a)miao = (miao & 0xf0) + 0x10;if(miao >= 0x60)miao = 0;}if(key_can == 4) //减{if(miao == 0x00)miao = 0x5a;if((miao & 0x0f) == 0x00)miao = (miao | 0x0a) - 0x10;miao -- ;}}if(menu_2 == 4) //设置星期{if(key_can == 3) //加{week+=0x01;if((week & 0x0f) >= 0x0a)week = (week & 0xf0) + 0x10;if(week >= 0x08)week = 1;}if(key_can == 4) //减{if(week == 0x01)week = 0x08;if((week & 0x0f) == 0x00)week = (week | 0x0a) - 0x10;week -- ;}}if(menu_2 == 5) //设置年{if(key_can == 3) //加{nian+=0x01;if((nian & 0x0f) >= 0x0a)nian = (nian & 0xf0) + 0x10;if(nian >= 0x9a)nian = 1;}if(key_can == 4) //减{if(nian == 0x01)nian = 0x9a;if((nian & 0x0f) == 0x00)nian = (nian | 0x0a) - 0x10;nian -- ;}}if(menu_2 == 6) //设置月{if(key_can == 3) //加{yue+=0x01;if((yue & 0x0f) >= 0x0a)yue = (yue & 0xf0) + 0x10;if(yue >= 0x13)yue = 1;}if(key_can == 4) //减{if(yue == 0x01)yue = 0x13;if((yue & 0x0f) == 0x00)yue = (yue | 0x0a) - 0x10;yue -- ;}}if(menu_2 == 7) //设置日{if(key_can == 3) //加{ri+=0x01;if((ri & 0x0f) >= 0x0a)ri = (ri & 0xf0) + 0x10;if(ri >= 0x32)ri = 0;}if(key_can == 4) //减{if(ri == 0x01)ri = 0x32;if((ri & 0x0f) == 0x00)ri = (ri | 0x0a) - 0x10;ri -- ;}}write_sfm2_ds1302(1,2,shi); //显示时write_sfm2_ds1302(1,5,fen); //显示分write_sfm2_ds1302(1,8,miao); //显示秒write_sfm1(1,14,week); //显示星期write_sfm2_ds1302(2,3,nian); //显示年write_sfm2_ds1302(2,6,yue); //显示月write_sfm2_ds1302(2,9,ri); //显示日switch(menu_2) // 光标显示{case 1: write_guanbiao(1,2,1); break;case 2: write_guanbiao(1,5,1); break;case 3: write_guanbiao(1,8,1); break;case 4: write_guanbiao(1,14,1); break;case 5: write_guanbiao(2,3,1); break;case 6: write_guanbiao(2,6,1); break;case 7: write_guanbiao(2,9,1); break; }write_time(); //把时间写进去}/***************设置闹钟*********************/ if(menu_1 == 2){if(menu_2 == 1) //设置闹钟开关{if(key_can == 3){open1 = 1; //闹钟开}if(key_can == 4){open1 = 0; //闹钟关}}if(menu_2 == 2) //设置闹钟时{if(key_can == 3) //加{shi1+=0x01;if((shi1 & 0x0f) >= 0x0a)shi1 = (shi1 & 0xf0) + 0x10;if(shi1 >= 0x24)shi1 = 0;}if(key_can == 4) //减{if(shi1 == 0x00)shi1 = 0x5a;if((shi1 & 0x0f) == 0x00)shi1 = (shi1 | 0x0a) - 0x10;shi1 -- ;}}if(menu_2 == 3) //设置秒{if(key_can == 3) //加{fen1+=0x01;if((fen1 & 0x0f) >= 0x0a)fen1 = (fen1 & 0xf0) + 0x10;if(fen1 >= 0x60)fen1 = 0;}if(key_can == 4) //减{if(fen1 == 0x00)fen1 = 0x5a;if((fen1 & 0x0f) == 0x00)fen1 = (fen1 | 0x0a) - 0x10;fen1 -- ;}}if(open1 == 1)write_string(2,4,"Y");elsewrite_string(2,4,"N");write_sfm2_ds1302(2,7,shi1); //显示闹钟时write_sfm2_ds1302(2,10,fen1); //显示闹钟分switch(menu_2) // 光标显示{case 1: write_guanbiao(2,4,1); break;case 2: write_guanbiao(2,7,1); break;case 3: write_guanbiao(2,10,1); break;}write_eeprom(); //保存闹钟时间}}/***********红外遥控程序**************/void hongwai_dis(){if(flag_jiema_en == 1){flag_jiema_en = 0;beep = 0; //蜂鸣器叫一声delay_1ms(50);beep = 1;switch(hw_table[2]){case 0x40: key_can = 1; break; //得到按键值case 0x44: key_can = 2; break; //得到按键值case 0x15: key_can = 3; break; //得到按键值case 0x07: key_can = 4; break; //得到按键值case 0x43: key_can = 5; break; //得到按键值}key_with();hw_table[2] = 0; //把数据清零}}/***********外部中断0初始化程序****************/void init_int0() //外部中断0初始化程序{EX0=1; //允许外部中断0中断EA=1; //开总中断IT0 = 1; //外部中断0负跳变中断}/*****************主函数********************/void main(){beep = 0; //开机叫一声delay_1ms(150);P0 = P1 = P2 = P3 = 0xff; //单片机IO口初始化为1 init_ds1302(); //ds1302初始化init_1602(); //lcd1602初始化init_1602_dis_csf(); //lcd1602初始化显示init_eeprom(); //开场初始化保存的数据temperature = read_temp(); //先读出温度的值delay_1ms(650);temperature = read_temp(); //先读出温度的值while(1){key(); //按键程序if(key_can < 10){if(flag_beep_en == 0) //只有闹钟关了的时候才能进入设置key_with();else{flag_beep_en = 0; //按下任意键可关闭闹钟beep = 1;clock_value = 0;read_time();}if(menu_1 == 0){if(key_can == 4) //减键{flag_nl = ~flag_nl; //切换农历和阳历的显示标志位if(flag_nl == 0)write_string(2,0,"2021");elsewrite_string(2,0,"N ");}}}hongwai_dis(); //红外遥控程序if(flag_200ms == 1){flag_200ms = 0;if(menu_1 == 0){read_time(); //读时间temperature = read_temp(); //先读出温度的值init_1602_ds1302(); //显示时钟}}menu_dis(); //闹钟报警函数delay_1ms(1);}}/**************定时器0中断程序*****************/ void time0() interrupt 1{static uchar value;TH0 = 0X3C;TL0 = 0XB0; //50msvalue ++;if((value % 2) == 0) //100msflag_100ms = 1;if(value >= 6) //200ms{value = 0;flag_200ms = 1;}}/*****************红外解码程序********************/void int0() interrupt 0{unsigned char i,j;delay_100us(40); //防止干扰if(hw_P32 == 0){ //引导码9+4.5=13.5mswhile(hw_P32 == 0); //等待9ms的低电平过完delay_100us(27); //2.7msif(hw_P32 == 1) //引码完毕{delay_100us(20); //2.7ms+2.0ms=4.7ms 说明4.5ms的高电平已经过完引导码已经完毕for(i=0;i<4;i++)for(j=0;j<8;j++){while(hw_P32 == 0); //等待过完0.56msdelay_100us(9);if(hw_P32 == 0) //数据0的时间=0.56+0.565=1.125ms{ //数据1的时间=0.56+1.685=2.245mshw_table[i] >>= 1; //低位在前}else{delay_100us(10); //0.9+1.0=1.9ms 延时让1.685高电平的时间过完hw_table[i] >>= 1; //低位在前hw_table[i] |= 0x80; //1.9ms过完后数据线已经是低电平了}}flag_jiema_en = 1; //红外解码成功}}}。

万年历的装配实习报告

万年历的装配实习报告

实习报告实习时间:xxxx年xx月xx日至xxxx年xx月xx日实习单位:xxxx科技有限公司实习内容:万年历的装配与调试一、实习背景随着科技的发展,人们对于时间管理的需求越来越高,万年历作为一种传统的时间管理工具,以其简洁、实用的特点受到了广大用户的喜爱。

为了更好地了解万年历的装配过程,提高自己的实践能力,我选择了xxxx科技有限公司进行为期一个月的实习,主要参与万年历的装配与调试工作。

二、实习过程1. 装配前的准备在实习开始前,公司技术人员对我进行了详细的培训,介绍了万年历的工作原理、装配流程及注意事项。

同时,我还学习了相关的装配工具的使用方法,如螺丝刀、扳手等。

2. 装配过程根据培训内容,我开始了万年历的装配工作。

首先,我需要将万年历的各个零部件按照图纸要求进行组装。

这个过程需要仔细阅读图纸,确保零部件的安装位置和方向正确。

在装配过程中,我遇到了一些问题,如零部件的拆卸和安装顺序、装配精度的控制等。

在请教技术人员后,我逐步掌握了正确的装配方法。

3. 调试与检测装配完成后,需要对万年历进行调试和检测。

我学会了使用专业的检测设备和方法,如使用游标卡尺测量零部件的尺寸、使用功能测试仪检测万年历的性能等。

在调试过程中,我发现了一些问题,如零部件的磨损、装配不良等。

针对这些问题,我采取了相应的措施,如更换零部件、重新装配等,确保万年历的性能达到要求。

4. 质量控制与改进在装配和调试过程中,我深刻认识到质量控制的重要性。

为了保证万年历的质量,我严格遵循公司的质量管理体系,做好每一道工序的记录和检查。

同时,我还积极参与质量改进活动,提出了几点建议:(1)优化装配流程,减少装配误差;(2)加强零部件的检验和筛选,确保原材料的质量;(3)加强员工培训,提高装配技能和质量意识。

三、实习收获通过这次实习,我对万年历的装配过程有了深入的了解,从零部件的选购、装配、调试到质量控制等环节都积累了宝贵的经验。

同时,我也学会了与同事沟通、协作,提高了解决问题的能力。

中职电子装配教案:电子万年历的装配与调试(全2课时)

中职电子装配教案:电子万年历的装配与调试(全2课时)

江苏省XY中等专业学校2022-2023-1教案教学内容图4-1 电子万年历实物图【电子成年历原理图】图4-2是电子万年历原理图(见教材)。

【装配准备】在装配之前,将工具、元器件进行准备。

1.工具的准备装配电子万年历所需要的焊接工具主要是电烙铁、海绵、松香、镊子、斜口钳、十字起子、一字起子和焊锡丝,如图4-3所示。

教学内容2.元器件、材料的准备装配前将电子万年历的元器件按元件清单整理、归类,以便进行检测与焊接。

3.印制电路板检查对照图4-4所示的印制电路板,检查印制电路板两面有无铜箔短路、短路,孔位尺寸存在缺陷的地方。

图4-4 电子万年历印制电路板活动1:识别与检测元器件在制作之前,应对照清单将电子万年历的元器件进行识别与清点,检查有无漏、错、损坏等现象,见表4-1(见教材)。

教学内容1.STC11F04E单片机单片机是单片微型计算机的简称,是采用超大规模集成电路技术把具有数据处理能力的微处理器CPU、数据存储器RAM、程序存储器ROM、多种I/O 接口和中断系统、定时器/计时器等功能(还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块芯片上,组成的一个小巧而完善的微型计算机系统,如图4-5所示为STC11F04E 单片机实物图。

STC11F04E单片机,内置复位电路和振荡电路。

STC11系列单片机是一种单时钟/机器周期(1T)的单片机,它的优点是具有高速、低功耗、超强抗干扰的能力。

板书设计教后札记江苏省XY中等专业学校2022-2023-1教案编号:备课组别电子课程名称电子装配所在年级二年级主备教师授课教师授课系部授课班级授课日期课题项目4 电子万年历的装配与调试2教学目标1.知道电子产品的手工装配方法;2.知道产品中的特殊器件及相关应用。

重点会依照工艺文件装配电子万年历;难点会依照工艺文件调试电子万年历。

教法观察演示法. 讲授法.教学设备一体机、套件教学环节教学活动内容及组织过程个案补充教学内容2.DS1302芯片如图4-6所示为DS1302芯片实物图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实训目的与要求:
(1)、学会基本电子元器件的识别,熟悉一些常用电子器件的功能与作用。

(2)、掌握液晶显示电子万年历的组成和工作原理,学会分析基本的电路原理图。

(3)、学会利用电路原理图检查、处理电路故障、调试。

二、实训内容:
(1)、掌握电烙铁的正确使用方法和基本的焊接技术,学会识别不同的元器件及其安装方法。

(2)、掌握液晶显示电子万年历的工作原理,学会识别电路原理图与印刷图、电容、电阻的识别与测试,进一步掌握和熟练焊接技术。

(3)、测试各元件的好坏,安装元件到电路板上,焊接断电并测试。

整机调试与验收。

三、软件和硬件设计:
3、1 软件调试平台
Keil for C51是美国Keil Software公司出品的C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,Keil C51软件还提供了丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率非常高,且容易理解。

C51开发中除了必要的硬件外,同样离不开软件,我们写的源程序要变为C51可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,但现在已极少使用手工汇编。

Keil提供了包括C编译器、宏汇编、连接线、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision2)将这些部分组合在一起。

如图下图所示。

3、2 系统软件程序
(1)LCD1602液晶显示程序
#include<reg51.h>
sbit rs=P1^2;
sbit rw=P1^1;
sbit en=P1^0;
sbit s1=P3^4;
sbit s2=P3^5;
sbit s3=P3^6;
char miao,shi,fen;
unsigned char code tab[]=" 2012-10-19 MON";
unsigned char code tab1[]=" 00:00:00";
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=0;y<150;y++);
}
void write_com(unsigned char cmd)
{
rs=0;
rw=0;
en=1;
P2=cmd;
en=0;
delay(2);//当不检测忙标志信号时,每次至少需要2ms }
void write_data(unsigned char dat)
{
rs=1;
rw=0;
en=1;
P2=dat;
en=0;
delay(2);//当不检测忙标志信号时,每次至少需要2ms }
void init()
{
unsigned char num;
write_com(0x38);
write_com(0x08);
write_com(0x01);
write_com(0x0f);
write_com(0x06);
write_com(0x80);
for(num=0;num<16;num++)
{
write_data(tab[num]);
}
write_com(0x80+0x42);
for(num=0;num<13;num++)
{
write_data(tab1[num]);
}
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1);
}
3、3 系统硬件设计
(1)LCD1602液晶显示
四、LCD1602介绍:
4、1 LCD1602引脚功能
4、2 LCD1602硬件应用图
4、3 LCD1602操作时序
4、5 LCD1602内部RAM地址
4、6LCD1602读/写操作时序图
五、电子万年历功能状态说明:
5、1 整点闹铃设置
在正常时间状态下,按住“UP”键2秒以上将切换整点闹铃的关与开;注意低于2秒将显示年份。

5、2 时间调整说明
(1)、正常时间调整
在正常时间状态下,按住“SET(℃/℉)”键2秒后,年份闪烁,按“UP”或“DOWN”键调整该项;此后没按一次此键(低于2秒)屏幕将依次闪烁:月→日→时→分→退回正常时间状态,在任一项目闪烁时,可按“UP”或“DOWN”调整该项。

(2)、闹铃时间调整
在闹铃时间状态下,按住“SET(℃/℉)”键2秒后,“OF”闪烁,按“UP”或“DOWN”调整该项;此后没按一次此键(低于2秒)屏幕将依次闪烁:时→分→退回正常时间状态,在任一项目闪烁时,可按“UP”或“DOWN”调整该项。

注意:“OF”表示闹铃关,“ON”表示闹铃开。

5、3 闹铃铃声选择
在闹铃时间状态下,按住“UP”键可选择闹铃响闹时的铃声,共有六种铃声选择。

六、心得体会:
通过一个星期的学习,使我对电子工艺的理论有了初步的系统了解。

不仅是对我们课本所学知识的考查,更是对我们的自学能力和收集资料能力及动手能力的考验,本次实训使我们对一个项目整体设计有了初步认识。

再有对电路板的制作有了一定的了解。

并学会了使用keil软件设计。

本次实训使我们意识到实验的更重要性,在硬件制作和软件调试过程中,出现了很多问题,最终都是通过实验的方法来解决的。

还有以前对程序只是一个模糊的概念。

通过这次实训极大的锻炼了我们的思考和分析问题能力。

并对单片机有利益更深的认识。

总之,实训过程中,无论是对学习方法还是理论知识,我们都有了新的认识。

受益匪浅。

这将激励我们今后再接再励,不断完善自己的理论知识提高实践运作能力。

相关文档
最新文档