




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子时钟实验报告全部代码在文档末尾:51单片机,LCD1602液晶显示屏平台下编程实现,可直接编译运 行目录:一, 实验目的1二,实验要求1三,实验根本原理 2四,实验设计分析2五,实验要求实现3A.电路设计31 .整体设计32 .分块设计32.1 输入局部32.2 输出局部32.3 晶振与复位电路 3B.程序设计38.1 程序总体设计 38.2 程序主要模块 4五.实验总结及感想5一,实验目的20世纪末,电子技术获得了飞速的开展,在其推动下,现代电子产品几乎 渗透了社会的各个领域,有力地推动了社会生产力的开展和社会信息化程度的 提升,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越
2、来越 快.现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等 号.对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来 非常大的麻烦,所以电子钟是以其小巧,价格低廉,走时精度高,使用方便, 功能多,便于集成化而受广阔消费的喜爱,得到了广泛的使用.1 .学习8051定时器时间计时处理、按键扫描及 LCD液晶显示的设计方法.2 .设计任务及要求利用实验平台上LCD1602液晶显示屏,设计带有闹铃功能的数字 时钟二,实验要求A.根本要求:1 .在LCD1602液晶显示屏上显示当前日期,时间.2 .利用按键可对时间及闹玲进行设置,并可显示设置闹玲的时间.闹玲时间到蜂鸣器发出
3、声响,一分钟后闹铃停止.B.扩展局部:1 .日历功能能对年,月,日,星期进行显示,分辨平年,闰年以及各月天数,并调整实 现年月日时分秒的调整,星期准确的随着日期改变而改变进行显示.2 .定时功能设定一段时间长度,定时到后,闹铃提示C.可扩展局部:1 .闹铃重响功能闹铃被停止后,以停止时刻开始,一段时间后闹铃重响,且重响时间的间隔可调2 .可进行备忘录提示,根据年月日,可在设定的某年某月进行闹铃提示.三,实验根本原理利用单片机定时器完成计时功能, 定时器0计时中断程序每隔 0.05s中断一次并当作一 个计数,设定定时1秒的中断计数初值为 20,每中断一次中断计数初值加 1,当减到20时, 那么表
4、示1s到了,秒变量加1,同理再判断是否 1min钟到了,再判断是否 1h到了,是否一天 到了,是否一个月到了,是否一年到了.将时间在LCD液晶屏上显示,降低了程序的编写难度.LCD的固定显示特性是我们省去了数码管的动态扫描显示.四,实验设计分析针对要实现的功能,采用 AT89S52片机进彳T设计,AT89S52单片机是一款低功耗,高性能CMO漪单片机,片内含4K琼线可编程ISP的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失f存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构.这样,既能做到经济合理又能实现预期的功能.在程序方面,采用分块设计的方法,这样既减
5、小了编程难度、 使程序易于理解,又能便于添加各项功能.程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等.运用这种方法,关键在于各模块的兼容和配合,假设各模块不匹配会出现意想不到的错误.首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部存放器、 存储单元的用法,否那么,编程无从下手,电路也无法设计.这是前期准备工作. 第二局部是硬件局部:依据想要的功能分块设计设计,比方输入需要开关电路, 输出需要显示驱动电路和数码管电路等.第三局部是软件局部:先学习理解C语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完
6、成程序设计.第四局部是软件画图局部:设计好电路后进行画图, 包括电路图和仿真图的绘制.第五局部是软件仿真局部:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功.第六局部是硬件实现局部:连接电路并导入程序检查电路,假设与设计的完全一样一般能实现想要的功能.最后进行功能扩展,在已经正确的设计根底上,添加额外的功能!五,实验要求实现A.电路设计1 .整体设计此次设计主要是应用单片机来设计电子时钟,硬件局部主要分以下电路模块:显示电路用lcd1602显示,年份,月份,星期,小时、分钟和秒日,使电路更加简单.单片机采用AT89S51系歹U,这种单片机应用
7、简单,适合电子钟设计.电路的总体设计框架如下:2 .分块设计模块为:率氏局部2.1输入局部输入精提租要催各种由工式选择少翁出局部、复, 单 片 机卜整信号,立和晶振电路=O输出局部由按键开关提供.以下为输入局部样例:在本实验中主要用用 p3口输入按银信还用到了特殊的P0口.对于P0口,由于其存在高阻状态,为了实现开关功能,给其添加上拉电阻1具体如下列图所示2.2 输出局部本电路的输出信号LCD勺写入命令和写入数据,闹铃脉冲信号闹铃由P1.5端输出,模块如下:日期时间由LCD1602俞出,模块如下:2.3 晶振与复位电路本实验单片机时钟用内部时钟,模块如下:复位电路为手动复位构成,模块如下:B.
8、程序设计B.1程序总体设计本实验用汇编程序完成程序总的流程图如下:B.2程序主要模块中断效劳程序:/*一秒定时中断函数*/void timer0() interrupt 1 using 1 ET0=0;TR0=0;jiamiao+;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;/关闭定时器T0中断允许位关闭定时器T0设定每次中断间隔50ms启动定时器T0翻开定时器T0中断允许位本实验中,计数器T0有运用,其中T0中断为时钟定时所用,T1中断用于秒表的准确性保证.断,T0的定时长度为0.05s,工作于方式1,计数1次,时长1us,
9、故计数器计数20次,进入中装满定时器需要0.05s的时间,从而20次中断为一秒,一秒之后,判断是否到60秒,假设不到那么秒加一,然后返回,假设到,那么秒赋值为0,分加一,依次类推.包括日期显示的功能也是如此.另外,由于要实现倒计时功能,因此在中断程序中还要参加加一的存放器, 时将其进行显示.程序中日历的实现较为复杂,要考虑平年,闰年,特殊的2月,每月的天数的不尽相同.具体的逻辑判断方法为:首先,要考虑年份是不是闰年,闰年的判断方法是:将年份除以100,假设能整除,那么将年份除以 400,假设还能整除,那么为闰年,假设不能,那么为平年;假设不能被 100 整除,那么判断是否能被4整除,假设能,那
10、么为闰年,假设不能那么为平年.只有2月与平、闰年相关, 因此在闰年和平年的子程序中,要判断是不是2月,假设是那么在相应的年中进行日期的增加,假设不是那么转入平时的月份.其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月为每月30天.显小子程序:/*刷新液晶屏显示内容子函数 */void brush_lcd() static uchar old_second=0x01;if(dis_val6!=old_second) old_second=dis_val6;/刷新原来的"秒"为新"秒"值in_command(0x80);/设定A行字符串起
11、始显示位置in_data('2');/年的千位in_data('0');/年的百位in_data(num_tabdis_val0/16);/显示"年"in_data(num_tabdis_val0%16);in_data('-');/显示分隔符in_data(num_tabdis_val1/16);/显示"月"in_data(num_tabdis_val1%16);in_data('-');/显示分隔符in_data(num_tabdis_val2/16);/显示"日"i
12、n_data(num_tabdis_val2%16);in_data('');/显示分隔符in_data('');/显示分隔符week_disp(dis_val3);/LCD1602显示星期值in_data('');/显示分隔符in_command(0xc0);/设定第二行字符串起始显示位置in_data('-');/显示分隔符in_data('-');/显示分隔符in_data('-');/显示分隔符in_data('-');/显示分隔符in_data(num_tabdis_val
13、4/16);/显示"时"in_data(num_tabdis_val4%16);in_data(':');/显示分隔符in_data(num_tabdis_val5/16);/显示"分"in_data(num_tabdis_val5%16);in_data(':');/显示分隔符in_data(num_tabdis_val6/16);/显示"秒"in_data(num_tabdis_val6%16);in_data('-');/显示分隔符in_data('-');/显示分
14、隔符in_data('-');/显示分隔符in_data('-');/显示分隔符)本程序通过Keil单片机开发平台实现程序的编译,链接,生成HEXt件.程序再编译过程中可以发现错位,并及时改正,在设计时非常重要,使错误被扼杀在摇篮中.五,实验总结及感想一分耕耘,一分收获.只有亲自用实践来验证这句话,在能得其要领.经过这次单片机课程设计,我从一个单片机实践的门外汉,已经越升为略知一二的新手.虽然还有很多有关单片机的应用有待学习,但万变不离其宗,只要深入了解单片的原理,全部知识点,各个细节,一切设计皆有可能.在实验的开始几天,根本上没有收获,不知何从下手,不知所措.
15、为了看得更远,不妨站在前人的肩膀上, 我在整体思路模糊的情况下, 在网上大量招资粮, 各种与电子时钟相关的文章,我阅读了不少.随着涉猎的点滴积累, 我对电子时钟的设计方案已经慢慢酝酿而成.有了方向和不少知识储藏后,在接下来的几天,几乎每天都有突破,虽然有时只是一句 程序的修改或诞生,但那种收获的感觉很暖人心.实验中遇到了不少问题,接下来总结一下,共同探讨.1, P0口开关问题.P0口比拟特殊,它存在高阻态,要使其输入不是高电平就是低电平,就要接上拉电阻,给其高电平输入.以上就是实验中遇到的主要问题,根本上都找到了相应的解决之道.整个实验的过程 就是一个解决问题的过程,每天都解决一些问题,我的实
16、验也就解决了,当然结果不重要, 功利化的追求结果,会使人急躁,还是享受那份疑难迎刃而解的快感吧!全部完整代码:此代码未经本人优化,可以根据自己的需求优化代码.盗版不究,可直接引用./*/基于STC89S52单片机以及液晶1602显示的万年历工程/*/#include<reg52.h>#include<intrins.h>#define uchar unsigned char/* 液晶 1602 相关参数#define data_port P0sbit rs=P1A0;存器,rs=1时选择数据存放器#define uint unsigned int*/液晶屏指令、数据通信
17、接口液晶屏读写选择接口rw=0时选择写入,液晶屏使能接口 en=0时通信接口中断,液晶屏存放器选择接口 rs=0时选择指令寄sbit rw=P1A1;rw=1时选择读出sbit en=P1A2;en=1时通信接口接通uchar code line1_str="-Welcome!-"/液晶屏第一行要显示的字符串uchar code line2_str=" made by: MCU "/ 液晶屏第二行要显示的字符串/*按键设置的相关参数 */sbit timer=P1A5;蜂鸣器sbit sound=P3A4;/进入闹铃设置状态键uchar sflag=0,
18、ssflag=0;闹铃设置标志位;闹铃工作标志位sbit set_key=P3A7;/ 进入设置sbit up_key=P3A6;加号键sbit cancle_key=P3A5;完成设置键uchar set=0;是否进行了设置uchar flag=0;设置选择标志uchar year=0x00;uchar month=0x01;uchar day=0x01;uchar week=0x06;uchar hour;uchar minite;uchar second;uchar jiamiao=0;uchar fen1,fen2;uchar shi1,shi2;液晶屏要显示的数字表"年&q
19、uot;存放器"月"存放器"日"存放器"星期"存放器"时"存放器"分存放器"秒存放器加秒参数/ 数据交换分定时存放器/ 数据交换时定时存放器依次存储:年,月,日,星期,时,分,秒uchar dis_val7=0x00,0x01,0x01,0x06,0x00,0x00,0x00;/*子函数局部 */初始化1602液晶欢送界面向液晶屏输入命令向液晶屏输入数据/施时函数按键设置函数星期计算函数/LCD1602显示星期值子函数声明液晶屏显示一串字符子函数声明刷新液晶屏显示内容子函数声明万年历正常运行函数
20、void lcd_int();void welcome();void in_command(uchar com);void in_data(uchar dat);void delay(uint ms);void key();uchar calculate_week();void week_disp(uchar x);void lcd_disp_string(uchar str);void brush_lcd();void run();/*/ void main()/0000 0001使用定时器T0的模式1 16位模式设定每次中断间隔 50msTMOD=0x01;TH0=(65536-50000
21、)/256;TL0=(65536-50000)%256;jiamiao=1;EA=1;ET0=1;TR0=1;lcd_int();welcome();delay(1000);while(1)key();if(jiamiao=20) second+;翻开总中断允许翻开定时器T0中断允许位启动定时器T0dis_val6=(second/10)<<4)|(second%10);刷新"秒"jiamiao=0;run();)if(flag=0) (if(dis_val0=0x00 &a dis_val1=0x01 &a dis_val2=0x01)/200
22、0日为星期六dis_val3=0x06;brush_lcd();刷新液晶屏显示内容if(hour=shi2 && minite=fen2 &&ssflag=1)timer=0; elsetimer=1;/*延时子函数*/void delay(uint ms) uchar i;while(ms-)for(i=0;i<244;i+);/*LCD初始化 */void lcd_int()delay(30);/延时15MS,等待LCD初始化in_command(0x01);in_command(0x38);in_command(0x0c);in_command(0x
23、06);清显示屏/8位通彳t, 2行显示,5*7点阵开显示,关光标,关闪烁字符不动,光标右移动,地址加一/*液晶屏显示一串字符 */void lcd_disp_string(uchar str) uchar i=0;while(stri!='0')in_data(stri);i+;显示数据(字符)/*欢送界面函数*/void welcome() uchar i;in_command(0x80);while(line1_stri!='0') /设定第一行字符串起始显示位置delay(100);in_data(line1_stri);i+;显示数据(字符)i=0;i
24、n_command(0xc0);while(line2_stri!='0') /设定第二行字符串起始显示位置)/*delay(100);in_data(line2_stri); i+;显示数据(字符)向液晶屏输入命令子函数*/void in_command(uchar com) delay(2);en=0;/关闭通信,为设置参数做准备rs=0;/选择指令存放器rw=0;/写入液晶_nop_();data_port=com;en=1;/开始通信_nop_();en=0;/关闭通信,为设置参数做准备)/*向液晶屏输入数据子函数*/void in_data(uchar dat)del
25、ay(2);en=0;/关闭通信,为设置参数做准备rs=1;/选择数据存放器rw=0;/写入液晶_nop_();data_port=dat;_nop_();en=1;/开始通信_nop_();en=0;/关闭通信,为设置参数做准备 uchar calculate_week() (/*计算星期值子函数*/uint days_number; 存储天数值uchar i;if(year>=1) (days_number=(year-1)/4)+1);从 00 年至U year-1 年的闰年个数days_number=days_number+(year*365); /从 00 年至U year-1
26、 年的总天数 ) else (days_number=0;)for(i=1;i<month;i+)(switch(i)(case 1:case 3:case 5:case 7:case 8:case 10:case 12:days_number+=31;大月 31 天break;case 4:case 6:case 9:case 11:days_number+=30;/小月 30 天 break;case 2: if(year%4=0) 闰年 2 月 29 天days_number+=29;else/平年2月28天days_number+=28;break;)days_number+=d
27、ay;力口上本月日期if(days_number+5)%7=0)/计算现在的星期值,并返回其值return(7);elsereturn(days_number+5)%7);/*LCD1602显示星期值子函数*/void week_disp(uchar x)switch(x)case 1: lcd_disp_string("MON");显示"星期一"break;case 2: lcd_disp_string("TUE"); 显示"星期二"break;case 3: lcd_disp_string("WED&
28、quot;);显示"星期三"break;case 4: lcd_disp_string("THU");显示"星期四"break;case 5: lcd_disp_string("FRI"); 显示"星期五" break;case 6: lcd_disp_string("SAT");显示"星期六"break;case 7: lcd_disp_string("SUN"); 显示"星期日" break;/*按键设置函数*/
29、void key()if(set_key=0)检测"设置"键是否按下delay(5);延时消抖if(set_key=0)ET0=0;翻开定时器T0中断允许位TR0=0;启动定时器T0if(flag<6) flag+; else flag=0; switch(flag) case 0: ifset=1/检测时间是否更改(set=0;/时间更改标志复位dis_val0=(year/10)<<4)|(year%10);刷新"年"dis_val1=(month/10)<<4)|(month%10);/刷新"月"d
30、is_val2=(day/10)<<4)|(day%10);/刷新"日"dis_val3=week;/刷新"星期"dis_val4=(hour/10)<<4)|(hour%10);/刷新"时"dis_val5=(minite/10)<<4)|(minite%10);刷新"分"dis_val6=(second/10)<<4)|(second%10);/刷新"秒"case 1:in_command(0x0c); break;in_command(0x8
31、3); in_command(0x0d);/开显示,关光标,关闪烁/设定显示光标位置-"年"低位闪烁 开显示,关光标,开闪烁year=(dis_val0>>4)*10)+(dis_val0&0x0f); 预设调节变量初始值为当前时刻month=(dis_val1>>4)*10)+(dis_val1&0x0f); day=(dis_val2>>4)*10)+(dis_val2&0x0f);hour=(dis_val4>>4)*10)+(dis_val4&0x0f);minite=(dis_val5
32、>>4)*10)+(dis_val5&0x0f);second=(dis_val6>>4)*10)+(dis_val6&0x0f); break;case 2: in_command(0x86); break;case 3: in_command(0x89); break;case 4: in_command(0xc5); break;case 5: in_command(0xc8); break;case 6: in_command(0xcb); break; while(set_key=0); if(up_key=0 && flag!
33、=0)(delay(5);if(up_key=0) (/设定显示光标位置-"月"低位闪烁/设定显示光标位置-"日"低位闪烁/设定显示光标位置-"时"低位闪烁/设定显示光标位置-"分"低位闪烁设定显示光标位置-"秒"低位闪烁/检测"设置时间"启动时,"上升"键是否按下延时消抖switch(flag) (case 1: if(sflag=1) break; if(year<99) year+; else year=0; if(year%4!=0 &
34、;& month=2)/ 平年的 2 月 if(day>28) day=28;in_command(0x88);设定显示(光标)位置"日"Wj便in_data(num_tabday/10); 修正"日" in_data(num_tabday%10); week=calculate_week(); / 计算星期值 in_command(0x8c);设定显示(光标)位置-"星期"week_disp(week); /LCD1602 显示星期值 in_command(0x82);设定显示(光标)位置-"年"高
35、位in_data(num_tabyear/10); 显示正在调节的"年" in_data(num_tabyear%10); in_command(0x83);设定显示(光标)位置-"年"低位闪烁.break;case 2: if(sflag=1)break;if(month<12)month+;elsemonth=1;if(month=4 | month=6 | month=9 | month=11)if(day>30)day=30;in_command(0x88);/设定显示(光标)位置-"日"高位in_data(num
36、_tabday/10); 修正"日" in_data(num_tabday%10);if(month=2)if(year%4!=0)/平年(if(day>28)(day=28;日"高位日"高位in_command(0x88);设定显示(光标)位置-1in_data(num_tabday/10);/修正"日"in_data(num_tabday%10);else闰年(if(day>29)(day=29;in_command(0x88);设定显示(光标)位置-1in_data(num_tabday/10);/修正"日
37、"in_data(num_tabday%10);week=calculate_week();/ 计算星期值in_command(0x8c); /设定显示(光标)位置-"星期"week_disp(week); /LCD1602 显示星期值in_command(0x85); /设定显示(光标)位置-"月"高位in_data(num_tabmonth/10); 显示正在调节的"月"in_data(num_tabmonth%10);in_command(0x86); /设定显示(光标)位置-"月"低位闪烁 bre
38、ak;case 3: if(sflag=1)break;if(month=4 | month=6 | month=9 | month=11)if(day<30)day+;elseday=1;else if(month=2)if(year%4!=0) /平年设置前的状态if(day<28) day+; elseday=1; elseif(day<29) day+; elseday=1;elseif(day<31) day+; else day=1;闰年week=calculate_week();/ 计算星期值in_command(0x8c);/设定显示(光标)位置-&qu
39、ot;星期"week_disp(week); /LCD1602 显示星期值 in_command(0x88);/设定显示(光标)位置-"日"高位in_data(num_tabday/10);显示正在调节的"日"in_data(num_tabday%10);in_command(0x89); break;case 4: if(hour<23)if(sflag=1)/设定显示光标位置-"日"低位闪烁完成闹钟状态下的数值变换,并保存shi1=hour; hour+;shi2=hour;/设定显示光标位置-"时&qu
40、ot;高位 else hour+; else hour=0; in_command(0xc4);in_data(num_tabhour/10);显示正在调节的"时"in_data(num_tabhour%10); in_command(0xc5); /设定显示(光标)位置-"时"低位闪烁 break; case 5: if(minite<59)if(sflag=1) 完成闹钟状态下的数值变换,并保存设 置前的状态 fen1=minite; minite+; fen2=minite; else minite+; else minite=0; in_c
41、ommand(0xc7); /设定显示(光标)位置-"分"高位 in_data(num_tabminite/10); 显示正在调节的"分" in_data(num_tabminite%10); in_command(0xc8); /设定显示(光标)位置-"分"低位闪烁 break;case 6: if(second<59) second+; else second=0; in_command(0xca); /设定显示(光标)位置-"秒"高位 in_data(num_tabsecond/10); 显示正在调节的
42、"秒" in_data(num_tabsecond%10);in_command(0xcb); /设定显示(光标)位置-"秒"低位闪烁 break; set=1;/时间更改标志置位while(up_key=0); if(sound=0 && flag!=0)/ 启动定时状态标志 sflag=1; if(cancle_key=0 && flag!=0)/检测"设置时间"启动时,"完成"键是否按下 delay(5);延时消抖if(cancle_key=0)set=0;flag=0;in_
43、command(0x0c);while(cancle_key=0); if(sflag=1)(时间更改标志复位/设置按键状态值复位/开显示,关光标,关闪烁判断是否进行过闹钟定时设置minite=fen1;hour=shi1;ssflag=1; 启动闹钟工作标志sflag=0;关闭闹钟定时状态标志)ET0=1;TR0=1;翻开定时器启动定时器T0中断允许位T0)刷新液晶屏显示内容子函数*/*刷新原来的"秒"为新"秒"值void brush_lcd()(static uchar old_second=0x01;if(dis_val6!=old_second)
44、(old_second=dis_val6;in_command(0x80);in_data('2');in_data('0');in_data(num_tabdis_val0/16);in_data(num_tabdis_val0%16);in_data('-');in_data(num_tabdis_val1/16);in_data(num_tabdis_val1%16); in_data('-');in_data(num_tabdis_val2/16);in_data(num_tabdis_val2%16);in_data('');in_data('');week_disp(dis_val3);in_data('');in_command(0xc0);in_data('-'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人食堂承包协议书
- 单片机原理与应用练习题与参考答案
- 人防租赁转让合同范本
- 热工基础 模拟试题
- 万年牢说课稿
- 一周学习总结
- 一防水合同范例
- 兼职定金合同范本
- 《荆棘鸟》读书心得
- 制作甲方合同范本
- 热力管网运行工施工工序标准详细流程培训
- 驾驶员心理健康与安全驾驶
- 基于强化学习的特征选择技术
- 灌入式半柔性复合抗车辙路面施工工法
- 小班第一学期教学进度表
- 材料性能学课件:材料的热学性能-2-热传导-热稳定性-
- 幼儿园优质公开课:中班数学《寻宝小勇士》课件
- 监理单位工程项目总监及监理人员名册
- 《市场营销》课程标准
- 声乐第2版(学前教育专业)PPT完整全套教学课件
- 苏科版六年级下册《劳动》全一册全部公开课PPT课件(共9课)
评论
0/150
提交评论