




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于at89s51控制的数字时钟摘要本系统采用msc-51系列单片机以at89s51为中心器件来设计多功能数字时钟。文中详细介绍了51单片机应用中的数据转换显示,数码管显示原理,动态扫描显示原理,单片机的定时中断原理。该时钟系统能实现时钟日历的功能:能进行时、分、秒的显示;也具有日历计算、显示和时钟,日历的校准、定时时间的设定,实现秒表,整点报时等功能。1.引言1.1 设计的意义近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新.在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以
2、及针对具体应用对象特点的软件结合,加以完善.本文通过用对一个能实现定时,日历显示功能的时间系统的设计学习,详细介绍了51单片机应用中的数据转换显示,数码管显示原理,动态扫描显示原理,单片机的定时中断原理、从而达到学习,了解单片机相关指令在各方面的应用。1.2 设计所要做的工作系统at89s51、led数码管、按键、发光二极管,电容,电阻,蜂鸣器,晶震等部分构成,能实现的功能有:时间显示、日期显示、定时、整点报时、秒表、报警。左键:切换功能显示,按一下显示日期,再按一下显示定时时间,再按一下显示秒表。中键:进行位置选择,按一下则选择最右边两位,再按一下则选择中间两位,再按一下则选择左边两位,再按
3、一下则选择下一功能左边两位,如此循环。当选择某个数的时候,按左键加一,秒的时候则直接清0。当有选择某个数的时候或显示日期、定时时间的时候按右键则返回显示时间。右键:定时时间到时会放音乐,按右键时就停止播放。右上角按键和指示灯:显示是否有定时功能,亮时则有定时功能,按一下按键则灯灭取消定时功能,再按下开启定时功能。当显示秒表的时候:按中间键进行开始计时和暂停,按右键清0。按左键时回到显示时间。2.硬件电路原理分析2.1.电路原理分析 时钟电路驱动电路显示电路复位电路aaat89s51定时音乐播放键盘电 路 图2-1总体方案方框图图2-2电路原理图电路中单片机的p1口送数据,p2口送地进行选择某位
4、数码管。用74ls245进行驱动,p3.0接蜂鸣器,p3.2,p3.3,p3.4,p3.5接按键,0.1uf电容起抗干扰作用。2.1.1电路显示原理23456电路原理图见图2。由两个四位的数码管组成时、分、秒、年、月、日的显示。p1口的8条数据线p1.0 至p1.7 分别与第一片74ls245译码的a0-a7口相接,p2口的 p2.0至p2.7分别与第二片74ls245 a0-a7相接。这样通过p0 口送出一个存储单元的高位、低位代码,通过p2口送出扫描选通代码地址,就会将要显示的数据在数码管中显示出来。从p1口输出的代码是段选码,从p2口输出的就是位选码。这是扫描显示原理。2.1.2内部震荡
5、电路1:图2-3晶体震荡电路at89s51中有一个构成内部震荡器的高增益反向放大器,引脚xtal1和xtal2分别是放大器的输入端和输出端,这个放大器与作为反馈元件的石英晶体构成自激震荡电路。外接石英晶体及电容c1,c2接在放大器的反馈回路中构成并联震荡电路。2.1.3键盘消抖原理1310键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动。2.1.4复位电路原理【2】9复位电路的基本功能是:系统上电时提供
6、复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。下图所示的rc复位电路可以实现上述基本功能,sm为手动复位开关。图2-4复位电路图2.2四位数码管原理图4810图2-5 数码管管脚图2.3 at89s51的管脚说明2: 图2-6 at89s51管脚图vcc 电源电压.gnd 接地.rst 复位输入.当rst变为高电平并保持2个机器周期时,将使单片机复位.wdt溢出将使该引脚输出高电平,设置sfr auxr的disrto位(地址8eh)可打开或关闭该功能.diskrto位缺省为reset输出
7、高电平打开状态.xtal1 反向振荡放大器的输入及内部时钟工作电路的输入.xtal2 来自反向振荡放大器的输出.p0口 一组8位漏极开路型双向i/o口.也即地址/数据总线复用口.作为输出口用时,每位能驱动8个ttl逻辑门电路,对端口写1可作为高阻抗输入端用.在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻.在flash编程时,p0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻.p1口 一个带内部上拉电阻的8位双向i/o口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路.对端口写1,通过内部的上拉电
8、阻把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil).flash编程和程序校验期间,p1接收低8位地址. p2口 一个带内部上拉电阻的8位双向i/o口.p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路.对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil).在访问外部程序存储器或16位地址的外部数据存储器时,p2口送出高8位地址数据.在访问8位地址的外部数据存储器时,p2口线上的内容在整个访问期间不改变.flash编程
9、和程序校验期间,p2亦接收低8位地址.p3口 一个带内部上拉电阻的8位双向i/o口.p3的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路.对p3口写1时,它们被内部的上拉电阻把拉到高电并可作输入端口.作输入端口使用时,被外部拉低的p3口将用上拉电阻输出电流(iil).p3口除了作为一般的i/o口线外,更重要的用途是它的第二功能,如下图所示.p3口还接收一些用于flash闪速存储器编程和程序校验期间的控制信号.psen/ 程序储存允许输出是外部程序存储器的读先通信号,当at89s51由外部程序存储器取指令(或数据)时,每个机器周期两次psen/有效,即输出两个脉冲.当访问外部数据存储器,
10、没有两次有效的psen/信号.ea/vpp 外部访问允许.欲使cpu仅访问外部程序存储器,ea端必须保持低电平,需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态.flash存储器编程时,该引脚加上+12v的编程电压vpp.3.数字时钟各个功能实现的设计思路3.1数据与代码转换148由前述可知,从p2口输出位选码,从p1口输出段选码,led就会显示出数字来。但p1口的输出的数据是要bcd码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到p1口去驱动led数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过bcd
11、码行转换后,将各个单元数据的段选代码送入p1口,给74ls245译码后去驱动数码管显示。具体转换过程如下:我们先将要显示的数据装入数据指针累加器a中,再将a中的数据转换成高低两位,再放回a中,然后将通过movc a,a+dptr查表将a中的值输出。如:有一个单元存储了45这样一位数,则需转换成高低两位放在两个地址中,然后通过查表取得5, p1口送出数据, p2口送出地址。延时1毫秒后同样的道理将高位4送出。高位4,低位5先后送入译码器中,译码后45字就在led中显示出来。3.2计时功能的实现与中断服务程序2 时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器t0打开后,进入计时
12、,满10毫秒后,重装定时。中断一次,满一秒后秒进位,满60秒后即为1分钟,分钟单元进位,60分到了后,时单元进位,24小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送led中一位一位显示出来,实现时钟计时功能。累加是用指令inc来实现的。 进入中断服务程序以后,执行push psw和push a将程序状态寄存器psw的内容和累加器a中的数据保存起来,这便是所谓的保护现场。以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内ram中的任一区间设定,而堆栈的数据存取与一般的ram存取又有区别,对它的操作,要遵循
13、i后进先出i的原则。3.3定时,音乐播放控制功能与比较指令12系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入ram某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条steb 12h指令,将对应的那路置为高电位,开启,定时时间到,调用音乐播放子程序;如果当前计时时间与执行设备设定的关闭时间相等,就执行clr对应的12h置低电位,关闭,音乐播放停止。实现此控制功能用到的比较指令为cjne a,#direct,rel,其转移条件是累加器a中的值与立即数不等则转移。3.4整点报时控制功能当时
14、间的秒开始进入到59分55秒时,开蜂鸣器,56秒时关蜂鸣器,57秒开蜂鸣器,58秒关蜂鸣器,59秒开蜂鸣器,60秒关掉。这样实现了整点报时功能。如果有播放音乐则不进行整点报时,这点也在程序中加以控制,以免产生混乱。3.5秒表功能的实现秒表是通过定时100毫秒的时间。将0.1秒位通过cjne 的不等转移的比较指令和10比较,如果不等,则0.1秒位继续每100毫秒加1;如果等于10,0.1秒位清0,秒位则加1。秒位通过cjne 的不等转移的比较指令和60比较,如果不等,则秒位继续每1毫秒加1;如果等于60,秒位清0,分位加1。分位则也是通过cjne 的不等转移的比较指令和60比较,如果不等,则分位
15、继续每60秒加1;如果等于60,分位清0,秒位清0,0.1秒位清0,停止计数。4软件设计4.1程序流程图图4-1 主程序流程图图4-2定时器0流程图图4-3 外部中断0流程图图4-4 外部中断1流程图5调试中的问题与解决方法数字时钟设计刚完成时,我经过检查,发现了一些问题147:1 刚弄好电路板并烧写程序进去后发现数码管不能正确显示时间,每个数码管中显示的数字几乎一样。经过询问老师,自己查阅资料,终于找出问题的原因:由于我在电路中采用的是动态数码管显示,需准确地调整延时子程序del1ms。我在程序中采取的延时时间为1毫秒。2整点报时不准确,本来我是定在55秒开始启动蜂鸣器报警,却提前了两秒钟,
16、经过检查程序后发现是报时程序里错写成了53秒,才造成提前报时。3复位电路中的开关不能使电路复位到初始状态即12:00:00,经过认真检查电路后我发现我是开关的管脚没接对。测试后重新接下开关的管脚就可以了。6结束语经过调试之后,我发现我做的基于at89s51设计的数字时钟,经过调试,一天的时间里面,差不多在1秒,计时、定时时间是相对准确。而且该设计的成本不高,硬件电路简单,可以用在对时间精度要求不高的场合. 由于时钟电路的重要性,时钟电路在很多应用系统中必不可少,用软件方法可以实现,但误差很大。在对时间精度要求很高的情况下,通常采用时钟芯片来实现。典型的时钟芯片有:ds1302,ds12887,
17、x1203等都可以满足精度要求。附录org 0000hljmp main ;跳到主程序org 0003hljmp int0 ;跳到外部中断0org 000bh ljmp t0 ;跳到定时器0org 0013hljmp int1 ;跳到外部中断1org 001bhljmp t1 ;跳到定时器1org 0100hmain: ;主函数clr p3.0 ;关蜂鸣器acall initial ;调用初始化函数done:jnb 00h,done1 ;是否显示时间mov r0,#73h ;显示时间acall convert ;把时间存储器转化到显示存储器ajmp test ;是否处于调整状态done1:jn
18、b 01h,done2 ;是否显示日期mov r0,#70h ;显示日期acall convert ;转化ajmp test ;是否处于调整状态done2:jnb 02h,done3 ;是否显示定时时间mov r0,#63h ;显示定时时间acall convert ;转化ajmp test ;done3:mov r0,#60h ;显示秒表acall convert ;转化ljmp disp ;跳到显示函数test: ;判断是否处于调整状态 jnb 18h,test10 ;是否按键已经按下 jnb p3.5,test7 ;按键是否已经释放 ajmp test11test10:jb 16h,te
19、st8 ;判断是否有按键按下 jb p3.5,test7 setb 16h ajmp test7test8:jb p3.5,test9 setb 18h ajmp test7 test11:clr 18h cpl 17h mov c,17h mov p0.0,c clr 16h clr 12h ;定时结束 clr tr1 ;关定时器1 clr p3.0 ;关蜂鸣器 clr 13h ; mov 59h,#00h ; mov 58h,#01h ajmp test7 test9:clr 16h test7:jnb 12h,test6 jb p3.4,test6 clr 12h ;定时结束 clr t
20、r1 ;关定时器1 clr p3.0 ;关蜂鸣器 clr 13h ; mov 59h,#00h ; mov 58h,#01h ;test6:jnb 01h,test5 ;是否处于日期状态 jb p3.4,test4 ;案键3是否按下 mov 20h,#01h ; 返回时间状态 mov 21h,#00h ljmp disp test5:jnb 02h,test4 ;是否处于定时时间状态 jb p3.4,test4 ;按键3是否按下 mov 20h,#01h ;返回时间状态 mov 21h,#00h ljmp disp test4:jnb 15h,do ;闪烁标志是否有效 ljmp disp ;无
21、效则进入显示函数do: mov a,21h ; cjne a,#00h,test2 ;是否在调整状态 ljmp disp ;不处于调整状态则进入显示函数 test2: jb p3.4,test3 mov 20h,#01h mov 21h,#00h ljmp disp test3:jnb 08h,done4 ;是否秒位置处于调整状态 mov 78h,#11 ;不显示 mov 79h,#11 ;不显示 ljmp disp ;进入显示函数 done4:jnb 09h,done5 ;是否分位置处于调整状态 mov 7bh,#11 ;不显示 mov 7ch,#11 ;不显示 ljmp disp ;进入显
22、示函数 done5:mov 7eh,#11 ;时位置不显示 mov 7fh,#11 ;时位置不显示 ljmp disp ;进入主函数convert: ;转化成数码管显示所对应的存储器mov a,r0 ;把r0存储的地址所对应的存储器的内容转化到秒位置的存储器mov b,#10 ;div ab ;mov 79h,a ;高位存储?mov 78h,b ;地位存储inc r0 ;地址加一mov a,r0 ;取数据mov b,#10 ;div ab ;mov 7ch,a ;高位存储mov 7bh,b ;低位存储inc r0 ;地址加一mov a,r0 ;取数据mov b,#10 ;div ab ;mov
23、 7fh,a ;高位存储mov 7eh,b ;低位存储retinitial: mov 7fh,#1 ;数码管显示12:00:00 mov 7eh,#2 mov 7dh,#10 mov 7ch,#0 mov 7bh,#0 mov 7ah,#10 mov 79h,#0 mov 78h,#0 mov 75h,#12 ;初始化时间 12:00:00 mov 74h,#0 mov 73h,#0 mov 72h,#08 ;初始化日期 08.3.20 mov 71h,#3 mov 70h,#20 mov 65h,#12 ;初始化定时时间 12:00:20 mov 64h,#0 mov 63h,#20 mov
24、 62h,#00 ;初始化秒表00:00.00 mov 61h,#00 mov 60h,#00 mov 50h,#100 ;1s定时100*10ms mov 51h,#20 ;200ms闪烁计时 mov 52h,#10 ;秒表计数器 mov 53h,#5 ;每放一个音时延时5ms mov 58h,#1 ;存放音乐表的指针 mov th0,#0d8h ;t0定义为10ms中断 mov tl0,#0f0h mov tmod,#11h ;定时器工作在方式1 mov ip,#2 ;定时器0高优先级 mov ie,#8fh ;开中断 setb it0 ;外部中断为边缘触发 setb it1 ;外部中断为
25、边缘触发 setb tr0 ;开定时器0 mov 20h,#0 ; setb 00h ;设置成处在时间显示状态 00h为时间显示标志,01h为日期显示标志,02h为定时时间显示标志,03h秒表显示标志 ;08h为秒位置选择标志,09h为分位置选者标志,0ah为时位置选择标志 ;10h为秒表开始或暂停标志,11h为,12h为是否正在放音乐标志,13h为是否延时标志,15h为闪烁标志,16h,17h为判断定时按键标志 mov 21h,#0 ;位存储器初始化 mov 22h,#0 ; setb 17h ; 开定时器 setb p0.0 ;开定时器指示灯retdisp: ;显示函数 mov r0,#7
26、8h ;显示第一 个位置 mov dptr,#tab ;mov r7,#0feh ;第一位有效next: mov a,r0 ; movc a,a+dptr ;把十进制数转化成数码管对应的数据 mov p1,a ;数据送出端口 mov p2,r7 ;地址送出端口 acall del1ms ;延时一毫秒 mov a,r7 ; rl a ;地址位左移到下一位 mov r7,a ; inc r0 ;数据地址加1 cjne r0,#80h,next ;是否已经显示完ljmp donetab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,40h,00h ;0 1 2
27、 3 4 5 6 7 8 9 - 空del1ms: ;延时1毫秒函数 mov r6,#2 del1:mov r5,#250 djnz r5,$ djnz r6,del1rett0: ;定时器0函数 push dph push dpl push psw push acc mov th0,#0d8h ;定时时间设置为10毫秒 mov tl0,#0f0h djnz 50h,miao1 ;是否已经延时1秒 ajmp next5 ; miao1:ljmp miaobiao ;一秒还没到,进入秒表 next5:mov 50h,#100 ; 重新循环100次,即一秒 inc 73h ;秒加一 mov a,7
28、3h ; cjne a,#60,miao2 ;是否已经加到60 ajmp next6 ; miao2:ljmp miaobiao ;没到60,进入秒表 next6:mov 73h,#0 ;已经加到60,秒清0 inc 74h ;分加一 mov a,74h ; cjne a,#60,miao3 ;分是否已经加到60 ajmp next7 ; miao3:ljmp miaobiao ;没到60,进入秒表 next7:mov 74h,#0 ;已经到60,分清0 inc 75h ;时加1 mov a,75h ; cjne a,#24,miao4 ;是否已加到24 ajmp next8 ; miao4:
29、ljmp miaobiao ;没到24则进入秒表 next8:mov 75h,#0 ;时清0 inc 70h ;日加1 mov a,70h ; cjne a,#29,month ;是否是29 mov a,71h ; cjne a,#2,miao5 ;是否是2月 ajmp next9 ;miao5:ljmp miaobiao ;不是2月,进入秒表next9:mov 71h,#3 ;月份为3 mov 70h,#1 ;日为1 ljmp miaobiao ;month: mov a,70h ; cjne a,#31,month1 ;是否是日是31 mov a,71h ; cjne a,#4,month
30、6 ;是否是4月 mov 71h,#5 ;月份为5 mov 70h,#1 ;日为1 ajmp miaobiao ; month6:mov a,71h ; cjne a,#6,month9 ;是否是6月 mov 71h,#7 ;月份为7 mov 70h,#1 ;日为1 ajmp miaobiao ; month9:mov a,71h ; cjne a,#9,month11 ;是否是 9月 mov 71h,#10 ;月分为10 mov 70h,#1 ;日为1 ajmp miaobiao ; month11:mov a,71h ; cjne a,#11,miaobiao ;是否是11月 mov 71
31、h,#12 ;月份为12 mov 70h,#1 ; 日为1 ajmp miaobiao ;month1: mov a,70h ; cjne a,#32,miaobiao ;是否日是32 mov a,71h ; cjne a,#12,month0 ;是否是 12月 inc 73h ;年加1 mov 70h,#1 ;月为1 mov 71h,#1 ;日为1 ajmp miaobiao ; month0:inc 71h ;不是12月,月加1 mov 70h,#1 ;日为 ajmp miaobiao ;miaobiao: ;秒表函数 jnb 03h,dingshi ;是否进入计时 jnb 10h,din
32、gshi ;是否开始计时 djnz 52h,dingshi ;是否100毫秒已到 mov 52h,#10 ; jnb p3.4,clear ;按键按下时清0 inc 60h ;0.1秒位加1 mov a,60h ; cjne a,#10,dingshi ;是否已加到10 mov 60h,#0 ;0.1秒位清0 inc 61h ;秒位加1 mov a,61h ; cjne a,#60,dingshi ;秒是否已经加到60 mov 61h,#0 ;秒位清0 inc 62h ;分加1 mov a,62h ; cjne a,#60,dingshi ;是否是60分 mov 62h,#0 ;分为清0 aj
33、mp dingshi ; clear:mov 60h,#0 ;清0 mov 61h,#0 ; mov 62h,#0 ; clr 10h ;停止计数 ajmp dingshi ;dingshi: ;定时函数 jb 17h,ystart ;定时器有效 ljmp baoshi ;定时器无效 ystart:jb 12h,start ;是否已经在放音乐 mov a,63h ; cjne a,73h,bao1 ;是否时已到 ajmp next10 ; bao1:ljmp baoshi ; next10:mov a,64h ; cjne a,74h,bao2 ;是否分已到 ajmp next11 ; bao
34、2:ljmp baoshi ; next11:mov a,65h ; cjne a,75h,bao3 ;是否秒已到 ajmp next12 ; bao3:ljmp baoshi ; next12:setb 12h ;设置定时已到 mov 55h,#10h ;第一个节拍 mov 57h,#0fbh ;第一个音调高位 mov 56h,#8bh ;第一个音调低位 setb tr1 ;启动定时器1start:djnz 55h,bao4 ;节拍是否已结束 ajmp next13 ;bao4: ljmp baoshi ;next13: cpl 13h ; jb 13h,delay50ms ;进入延时50毫
35、秒 mov a,58h ; inc a ;表地址加1 mov 58h,a ; getnext:mov dptr,#dat ; movc a,a+dptr ;取音调 cjne a,#00h,dsq1 ;是否已经结束 clr 12h ;定时结束 clr tr1 ;关定时器1 clr p3.0 ;关蜂鸣器 clr 13h ; mov 59h,#00h ; mov 58h,#01h ; ajmp baoshi ; dsq1:cjne a,#01h,dsq2 ; mov a,55h ; inc a ; inc a ; mov 55h,a ; ajmp getnext ; dsq2:cjne a,#0ffh,dsq3 ;是否播放空音调 clr tr1 ;关定时器1 clr p3.0 ;关蜂鸣器 ajmp dsq4 ; dsq3:mov b,#20 ;把音调转化成定时器1所对应定时存储器 mul ab ; mov 59h,a ; mov a,#0ffh ; subb a,59h ; mov 56h,a ; mov 59h,b ; mov a,#0ffh ; subb a,59h ; mov 57h,a ; setb tr1 ; dsq4:mov a,5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆金川矿业有限公司堆浸场扩建技改项目环评报告
- 工业园区环境风险防控策略
- 工业废弃地绿化改造实践
- 工业污染治理与废水处理
- 工业机器人与智能自卸车的协同作业研究
- 工业机器人与汽车行业智能制造
- 工业机器人技术的实践与应用
- 工业物联网技术的未来发展趋势预测
- 工业物联网的实时监控与预警系统
- 工业涂装中的节能技术与设备优化
- 护理网格化管理制度
- 国家开放大学《管理学基础》期末机考题库
- 浙江省温州市乐清市2023-2024学年四年级下学期数学期末考试试卷(含答案)
- 2025中考英语书面表达终极押题(附范文)
- 计算机网络与信息安全(2024年版)课件全套 李全龙 第01-10章 计算机网络与信息安全概述- 网络安全协议与技术措施
- (正式版)JBT 14449-2024 起重机械焊接工艺评定
- 超声波流量计、流量计算机气相色谱仪说明书-17.encal3000色谱仪-elster
- 教育家办学:中小学校长专业标准解读课件
- 茶叶企业营销课件
- 《高等数学》全册教案教学设计
- DB14T1049.3-2021 山西省用水定额 第3部分:服务业用水定额
评论
0/150
提交评论