电子语音播放万年历说明

合集下载

电子设计多功能电子万年历

电子设计多功能电子万年历

多功能电子万年历摘要本设计以单片机AT89s52和时钟芯片DS1302为核心,设计了一款多功能电子万年历。

不同于单片机提供的定时计数器,DS1302时钟芯片具有涓细电流充电功能,可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能。

最重要的是,相对于单片机的定时计数器,DS1302在时间的读写方面误差要小很多。

设计对多功能电子万年历采用LCD12864实现数字和文字的同步显示,可以显示年、月、日、星期、时、分、秒和温度等信息,与此同时通过内部程序指令还具有时间校准功能。

关键词:时钟电钟;DS1302;DS18B20;LCD12864;单片机~~~~~~目录~~~~~~一、设计要求与方案论证 (4)1.1 设计要求 (4)1.2 系统基本方案选择和论证 (4)1.2.1单片机芯片的选择方案和论证 (4)1.2.2 显示模块选择方案和论证 (4)1.2.3 时钟芯片的选择方案和论证 (4)1.2.4 温度传感器的选择方案与论证 (5)1.3 电路设计最终方案决定 (5)二.系统的硬件设计与实现 (5)2.1 电路设计框图 (5)2.2 系统硬件概述 (5)2.3 主要单元电路的设计 (6)2.3.1单片机主控制模块的设计 (6)2.3.2时钟电路模块的设计 (6)2.3.3温度采集模块设计 (7)2.3.4 电路原理及说明 (7)2.3.5 显示模块的设计 (9)三、系统的软件设计 (10)3.1程序流程框图 (10)3.2子程序的设计 (12)3.2.1 DS18B20温度子程序 (12)3.2.2 读/写DS1302子程序 (14)3.2.3 LCD12864显示子程序 (16)四. 指标测 (19)4.1 测试仪器 (19)4.2硬件测试 (20)4.3软件测试 (20)4.4测试结果分析与结论 (20)4.4.1 测试结果分析 (20)4.4.2 测试结论 (20)五、作品心得总结 (21)六、致谢词 (22)参考文献 (22)附录一:系统电路图 (23)附录二:系统使用说明书 (24)附录三:系统程序清单 (25)一、设计要求与方案论证1.1 设计要求:(1)能显示阳历年、月、日、星期、小时、分、秒,当年是闰年是会显示闰年。

万年历时钟蓝牙ble语音芯片KT1025A使用说明

万年历时钟蓝牙ble语音芯片KT1025A使用说明

万年历时钟蓝牙语音芯片KT1025A使用说明一、简介传统的万年历产品,基本都是靠按键的方式去设置时间。

如果在生产阶段也是工人一个一个的手工校准,效率非常的地下。

这里我们推荐使用蓝牙更新时间,批量的时候使用U盘更新时间或者设置方法KT1025A支持非常多的功能,蓝牙双模BLE和SPP数据透传,支持读写U盘或者TF卡里面的txt文件,支持用户自己录音。

芯片支持外挂spiflash,用来存储音乐或者语音。

支持通过芯片的USB端口直接拷贝MP3文件至外挂的spiflash中,实现方式是将spiflash虚拟成U盘,像拷贝U盘一样拷贝文件进去。

无需驱动,无需任何上位机。

BT301或者BT321F模块测试板,需要flash,这需要自己焊上flash,然后贴上电阻即可。

注意只要贴上了flash,TF卡功能就不能用了。

只能二选一。

因为他们共用了IO口Spiflash在这里可以作为语音报时,或者用户设置语音提示等等支持的U盘,可以作为MP3播放设备二、Spiflash和设备的使用说明1、这里spiflash的管理,在我们的方案中,其实和TF卡、U盘是一样的,都可以称之为设备。

2、当切换至spiflash之后,那么芯片会释放掉TF卡或者U盘的驱动资源,全部资源就去加载spiflash的驱动(1)、如文件系统的读写接口,切换至spiflash(2)、音频解码的读接口,也切换至spiflash。

3、所以都可以串口AT指令去控制,比如:下一曲、上一曲、播放暂停、按照物理序号指定播放等等。

和TF卡以及U 盘的操作方式是一模一样4、如果需要使用spiflash,需要指定模式为spiflash即可,看看手册的CM指令5、切换至flash之后,就可以正常操作了。

注意,一定是要支持spiflash的版本才可以。

GC056A万年历操作说明书

GC056A万年历操作说明书

GC056A万年历功能简介及操作说明书主要特点:1.IC驱动能力强,外围电路简单,不要74LS1642.整机功耗低,可采用小功率变压器。

2.超强抗干扰能力。

3.驱动效率高,相同的电流比同类IC数码管亮度增加一倍。

4.IC适应电压范围广,便于数码管选用。

一. 功能简介:1.50年同步显示公历年、月、日、上午、下午、时、分、秒、星期、农历月、日、摄氏温度。

2.12/24小时制转换(24小时制时,上/下午的LED指示灯都不亮)3.四种星期显示方式由硬件选择:越南星期(2~8);7个LED星期(外销用途);国内星期(1~6,8),俄罗斯星期(1~7)。

具有年隐含功能(年显示,表示按原理图的位置正常显示年份;年隐含,表示年的四位数平时不显示出来,只在调整年份时显示在时与分上).4.IC功能选择:由原理图中的C1、C2、C3、R1来决定。

特别注意:C1,C2,C3、R1的参数不要随意改动。

C1、C2、C3、R1都不装:年显示,中国星期;C1装,C2、C3、R1都不装:年显示,越南星期;C2装,C1、C3、R1都不装:年显示,星期1~7;C1,C2都装,C3、R1都不装:年显示,7个LED星期;C1、C2都不装,C3、R1都装:年隐含,中国星期;C2不装,C1、C3、R1都装:年隐含,越南星期;C1不装,C2、C3、R1都装: 年隐含,星期1~7;C1、C2、C3、R1都装:年隐含,7个LED星期;5.内置锂电池,市电停电,LED显示关闭,万年历内部能正常走时,功耗是uA级,一块锂电池,可以连续运行6年以上。

重新来电时万年历不需重新设置。

6.温度测量范围:-9到48度,精度为正负1度。

时间误差一天小于1秒。

7.三个按键 S1:快速退出/即时播报键, S2:设置/移动键,S3:修改/ 闹钟开关键。

另提供一个可以选用的硬件复位键。

8.共4组闹钟,共用1个闹钟指示LED,可以在闹钟设置时单独开启或关闭单个闹钟。

第四组闹钟是学生闹钟,设定开启时只有在周一到周五响闹,周六和周日不响。

基于51单片机控制的语音报时万年历

基于51单片机控制的语音报时万年历

基于51单片机控制的语音报时万年历-----20/11/2013 SDU(WH)一.实验要求运用单片机及相关外设实现以下功能:1)万年历及时钟显示2)时间日期可调3)可对时间进行整点报时和随机报时二.方案分析根据实验要求,选用STC公司的8051系列,STC12C5A16S2增强型51单片机。

此单片机功能强大,具有片内EEPROM、1T分频系数、片内ADC转换器等较为实用功能,故选用此款。

实验中,对日期和时间进行显示,显示的字符数较多,故选用12864LCD屏幕。

该屏幕操作较为便捷,外围电路相对简单,实用性较强。

为了实现要求中的时间日期可调,故按键是不可缺少的,所以使用了较多的按键。

一方面,单片机的I/O口较为充足;另一方面,按键较多,选择的余地较大,方便编程控制。

实验中,并未要求对时间和日期进行保存和掉电续运行,所以并未添加EEPROM和DS12C887-RTC芯片。

实际上,对万年历来说,这是较为重要的,但为了方便实现和编程的简单,此处并未添加,而是使用单片机的定时器控制时间,精度有差别。

且上电默认时间为2014-01-01 09:00:00 之后需要手动调整为正确时间。

要求中的语音报时功能,这里选用ISD1760芯片的模块来帮助实现。

此模块通过软件模拟SPI协议控制。

先将所需要的声音片段录入芯片的EEPROM区域,之后读出各段声音的地址段,然后在程序中定义出相应地址予以控制播放哪一声音片段。

三.电路硬件设计实际效果图四.程序代码部分Main.h#ifndef _MAIN_H#define _MAIN_H#include "reg52.h"#include "INTRINS.H"#include "math.h"#include "string.h"#include "key.h"#include "led.h"#include "12864.h"#include "main.h"#include "isd1700.h"#include "sound.h"extern unsigned int count;extern unsigned int key_time[8]; extern unsigned char key_new; extern unsigned char key_old; extern unsigned char stop_flag; extern unsigned char key_follow[8]; extern unsigned int key_num[8];sbit BEEP=P3^7;sbit ISD_SS=P0^7;sbit ISD_MISO=P0^4;sbit ISD_MOSI=P0^5;sbit ISD_SCLK=P0^6;extern unsigned char date_show[]; extern unsigned char time_show[]; extern unsigned char sec;extern unsigned char min;extern unsigned char hour;extern unsigned char day;extern unsigned char month;extern unsigned char year_f;extern unsigned char year_l;extern unsigned char leap_year_flag; extern unsigned char update_flag; extern unsigned char adjust_flag; extern unsigned char key;unsigned char report();#endifMain.c#include "main.h"unsigned int count=0;unsigned int key_num[8]=0;unsigned char key_new=0;unsigned char key_old=0;unsigned char stop_flag=0;unsigned char key_follow[8]=0; unsigned char sec=1;unsigned char min=0;unsigned char hour=9;unsigned char day=1;unsigned char month=1;unsigned char year_f=20;unsigned char year_l=14;unsigned char leap_year_flag=0; unsigned char date_show[]="2014-01-01"; unsigned char time_show[]="09:00:00"; unsigned char update_flag=1;unsigned char key=0;unsigned char adjust_flag=0;unsigned char adjust_pos=0;unsigned char report_flag=0;void main(){unsigned char i;P2=0XFF;BEEP=0;init();initinal(); //调用LCD字库初始化程序TMOD=0x01; //使用定时器T0TH0=(65536-1000)/256; //定时器高八位赋初值TL0=(65536-1000)%256; //定时器低八位赋初值 */ EA=1; //开中断总允许ET0=1; //允许T0中断TR0=1; //启动定时器T0while(1){if(update_flag){lcd_pos(1,0);for(i=0;i<10;i++)write_dat(date_show[i]);lcd_pos(2,4);for(i=0;i<8;i++)write_dat(time_show[i]);update_flag=0;}if(key!=keyscan_nor()){key=keyscan_nor();if(key==8&&!adjust_flag)adjust_flag=1;if(key&&adjust_flag){if(key==1){adjust_pos++;if(adjust_pos==14)adjust_pos=0;}else if(key==2){if(!adjust_pos)adjust_pos=13;elseadjust_pos--;}else if(key==6){if(!adjust_pos)sec++;else if(adjust_pos==1)sec=sec+10;else if(adjust_pos==2)min++;else if(adjust_pos==3)min=min+10;else if(adjust_pos==4)hour++;else if(adjust_pos==5)hour=hour+10;else if(adjust_pos==6)day++;else if(adjust_pos==7)day=day+10;else if(adjust_pos==8)month++;else if(adjust_pos==9)month=month+10;else if(adjust_pos==10)year_l++;else if(adjust_pos==11)year_l=year_l+10;else if(adjust_pos==12)year_f++;else if(adjust_pos==13)year_f=year_f+10; }else if(key==7){if(!adjust_pos)sec--;else if(adjust_pos==1)sec=sec-10;else if(adjust_pos==2)min--;else if(adjust_pos==3)min=min-10;else if(adjust_pos==4)hour--;else if(adjust_pos==5)hour=hour-10;else if(adjust_pos==6)day--;else if(adjust_pos==7)day=day-10;else if(adjust_pos==8)month--;else if(adjust_pos==9)month=month-10;else if(adjust_pos==10)year_l--;else if(adjust_pos==11)year_l=year_l-10;else if(adjust_pos==12)year_f--;else if(adjust_pos==13)year_f=year_f-10;}else if(key==3)adjust_flag=0;if(key==6||key==7){if(sec>=80)sec=0;if(min>=80)min=0;if(hour>=40)hour=0;if(month>30)month=1;if(day>50)day=0;if(year_f>=120)year_f=0;if(year_l>=120)year_l=0;}}}if(key==3)report_flag=1;if(report_flag){clrram();Dingwei(2,1);lcd_mesg("REPORTING!!!");report();clrram();}}}void time0() interrupt 1{static unsigned char timer=0;TH0=(65536-50000)/256; //定时器高八位赋初值TL0=(65536-50000)%256; //定时器低八位赋初值timer++;if(timer==20){sec++;time_show[6]=sec/10+48;time_show[7]=sec%10+48;if(sec>=60){sec=0;min++;time_show[6]=sec/10+48;time_show[7]=sec%10+48;time_show[3]=min/10+48;time_show[4]=min%10+48;}if(min>=60){min=0;hour++;time_show[3]=min/10+48;time_show[4]=min%10+48;time_show[0]=hour/10+48;time_show[1]=hour%10+48;}if(hour>=24){hour=0;day++;time_show[0]=hour/10+48;time_show[1]=hour%10+48;date_show[8]=day/10+48;date_show[9]=day%10+48;}if((day>=29&&!leap_year_flag&&month==2)||(day==30&&leap_year_flag&&month==2 )||(day==31&&(month==4||month==6||month==9||month==11))||(month==32)){day=1;month++;date_show[8]=day/10+48;date_show[9]=day%10+48;date_show[5]=month/10+48;date_show[6]=month%10+48;}if(month>=13){month=1;year_l++;date_show[5]=month/10+48;date_show[6]=month%10+48;date_show[0]=year_f/10+48;date_show[1]=year_f%10+48;date_show[2]=year_l/10+48;date_show[3]=year_l%10+48;}if(year_l>=100){year_l=0;year_f++;if(((!((year_f*100+year_l)%4))&&((year_f*100+year_l)%100))||(!((year_f*100+ year_l)%400)))leap_year_flag=1;elseleap_year_flag=0;date_show[0]=year_f/10+48;date_show[1]=year_f%10+48;date_show[2]=year_l/10+48;date_show[3]=year_l%10+48;}timer=0;update_flag=1;if(adjust_flag){time_show[7]=sec%10+48;time_show[6]=sec/10+48;time_show[4]=min%10+48;time_show[3]=min/10+48;time_show[1]=hour%10+48;time_show[0]=hour/10+48;date_show[9]=day%10+48;date_show[8]=day/10+48;date_show[6]=month%10+48;date_show[5]=month/10+48;date_show[3]=year_l%10+48;date_show[2]=year_l/10+48;date_show[1]=year_f%10+48;date_show[0]=year_f/10+48;}}if(adjust_flag&&timer==10){if(!adjust_pos)time_show[7]=' ';else if(adjust_pos==1)time_show[6]=' ';else if(adjust_pos==2)time_show[4]=' ';else if(adjust_pos==3)time_show[3]=' ';else if(adjust_pos==4)time_show[1]=' ';else if(adjust_pos==5)time_show[0]=' ';else if(adjust_pos==6)date_show[9]=' ';else if(adjust_pos==7)date_show[8]=' ';else if(adjust_pos==8)date_show[6]=' ';else if(adjust_pos==9)date_show[5]=' ';else if(adjust_pos==10)date_show[3]=' ';else if(adjust_pos==11)date_show[2]=' ';else if(adjust_pos==12)date_show[1]=' ';else if(adjust_pos==13)date_show[0]=' ';update_flag=1;}if(!min&&!sec&&!adjust_flag)report_flag=1;}unsigned char report(){PlaySoundTick(11);long_delay();if(!min){if(hour<=10){PlaySoundTick(hour);short_delay();PlaySoundTick(12);short_delay();PlaySoundTick(14);short_delay();}else if(hour>10&&hour<20){PlaySoundTick(10);short_delay();PlaySoundTick(hour-10);short_delay();PlaySoundTick(12);short_delay();PlaySoundTick(14);short_delay();}else if(hour==20){PlaySoundTick(2);short_delay();PlaySoundTick(10);short_delay();PlaySoundTick(12);short_delay();PlaySoundTick(14);short_delay();else{PlaySoundTick(2);short_delay();PlaySoundTick(10);short_delay();PlaySoundTick(hour-20);short_delay();PlaySoundTick(12);short_delay();PlaySoundTick(14);short_delay();}}else{if(hour<=10){PlaySoundTick(hour);short_delay();PlaySoundTick(12);short_delay();}else if(hour>10&&hour<20){PlaySoundTick(10);short_delay();PlaySoundTick(hour-10);short_delay();PlaySoundTick(12);short_delay();}else if(hour==20){PlaySoundTick(2);short_delay();PlaySoundTick(10);short_delay();PlaySoundTick(12);short_delay();}elsePlaySoundTick(2);short_delay();PlaySoundTick(10);short_delay();PlaySoundTick(hour-20);short_delay();PlaySoundTick(12);short_delay();}if(min<=10){PlaySoundTick(min);short_delay();PlaySoundTick(13);short_delay();}else if(min>10&&min%10){PlaySoundTick(min/10);short_delay();PlaySoundTick(10);short_delay();PlaySoundTick(min-10*(min/10));short_delay();PlaySoundTick(13);short_delay();}else{PlaySoundTick(min/10);short_delay();PlaySoundTick(10);short_delay();PlaySoundTick(13);short_delay();}}report_flag=0;time_show[7]=sec%10+48;time_show[6]=sec/10+48;time_show[4]=min%10+48;time_show[3]=min/10+48;time_show[1]=hour%10+48;time_show[0]=hour/10+48;date_show[9]=day%10+48;date_show[8]=day/10+48;date_show[6]=month%10+48;date_show[5]=month/10+48;date_show[3]=year_l%10+48;date_show[2]=year_l/10+48;date_show[1]=year_f%10+48;date_show[0]=year_f/10+48;return 0;}Isd1700.h#ifndef _ISD1760_H#define _ISD1760_H#include "main.h"#define ISD1700_PU 0x01 #define ISD1700_STOP 0X02 #define ISD1700_REST 0x03 #define ISD1700_CLR_INT 0x04 #define ISD1700_RD_STAUS 0x05 #define ISD1700_RD_PLAY_PTR 0x06 #define ISD1700_PD 0x07 #define ISD1700_RD_REC_PTR 0x08 #define ISD1700_DEVID 0x09#define ISD1700_PLAY 0x40 #define ISD1700_REC 0x41 #define ISD1700_ERASE 0x42 #define ISD1700_G_ERASE 0x43 #define ISD1700_RD_APC 0x44 #define ISD1700_WR_APC1 0x45 #define ISD1700_WR_APC2 0x65#define ISD1700_WR_NVCFG 0x46 #define ISD1700_LD_NVCFG 0x47 #define ISD1700_FWD 0x48 #define ISD1700_CHK_MEM 0x49 #define ISD1700_EXTCLK 0x4A #define ISD1700_SET_PLAY 0x80 #define ISD1700_SET_REC 0x81#define ISD1700_SET_ERASE 0x82#define NULL 0x00#define ISD_LED 0x10extern unsigned char data ISD_COMM_RAM_C[7];extern void init(void);extern void delay_isd(int x);extern void comm_sate(void);extern void rest_isd_comm_ptr(void);extern unsigned char T_R_comm_byte(unsigned char comm_data );extern void isd1700_par2_comm(unsigned char comm_par, unsigned int data_par); extern void isd1700_Npar_comm(unsigned char comm_par,comm_byte_count);extern void isd1700_7byte_comm(unsigned char comm_par, unsigned int star_addr, unsigned int end_addr);extern void spi_pu (void);extern void spi_stop (void);extern void spi_Rest ( void );extern void spi_CLR_INT(void);extern void spi_RD_STAUS(void);extern void spi_RD_play_ptr(void);extern void spi_pd(void);extern void spi_RD_rec_ptr(void);extern void spi_devid(void);extern void spi_play(void);extern void spi_rec (void);extern void spi_erase (void);extern void spi_G_ERASE (void);extern void spi_rd_apc(void);extern void spi_wr_apc1 (void);extern void spi_wr_apc2 (void);extern void spi_wr_nvcfg (void);extern void spi_ld_nvcfg (void);extern void spi_fwd (void);extern void spi_chk_mem(void);extern void spi_CurrRowAddr(void);extern void seril_back_sate(unsigned char byte_number);extern void spi_set_opt(unsigned char spi_set_comm);void init(void);#endifIsd1700.c//#pragma src#include "isd1700.h"#include "sound.h"#define uchar unsigned char#define uint unsigned intsbit DAC_sync=P2^0;sbit DAC_sclk=P2^1;sbit DAC_din =P2^2;bit re_fig;uchar data comm_temp;uchar data ISD_COMM_RAM[7];uchar data ISD_COMM_RAM_C[7];uchar data *isd_comm_ptr;uchar data *back_data_ptr;void init(void);void isd_delay(int x);void comm_sate(void);void rest_isd_comm_ptr(void);uchar T_R_comm_byte( uchar comm_data );void isd1700_par2_comm(uchar comm_par, uint data_par);void isd1700_Npar_comm(uchar comm_par,comm_byte_count); //no parameter comm void isd1700_7byte_comm(uchar comm_par, uint star_addr, uint end_addr);void spi_pu (void);void spi_stop (void);void spi_Rest ( void );void spi_CLR_INT(void);void spi_RD_STAUS(void);void spi_RD_play_ptr(void);void spi_pd(void);void spi_RD_rec_ptr(void);void spi_devid(void);void spi_play(void);void spi_rec (void);void spi_erase (void);void spi_G_ERASE (void);void spi_rd_apc(void);void spi_wr_apc1 (void);void spi_wr_apc2 (void);void spi_wr_nvcfg (void);void spi_ld_nvcfg (void);void spi_fwd (void);void spi_chk_mem(void);void spi_CurrRowAddr(void);void seril_back_sate(uchar byte_number); void spi_set_opt(uchar spi_set_comm);void comm_sate(void){uchar sate_temp;uint apc_temp;if(RI){ sate_temp=SBUF;if(sate_temp==0x09){ spi_devid();}if(sate_temp==0x44){spi_rd_apc();}if(sate_temp==0x40){spi_play();}if(sate_temp==0x04){spi_CLR_INT();}if(sate_temp==0x05){spi_RD_STAUS();}if(sate_temp==0x43){ spi_G_ERASE();}if(sate_temp==0x01){ spi_pu ();}if(sate_temp==0x02){ spi_stop();}if(sate_temp==0x03){ spi_Rest ();}if(sate_temp==0x06){spi_RD_play_ptr();}if(sate_temp==0x07){spi_pd();}if(sate_temp==0x08){ spi_RD_rec_ptr();}if(sate_temp==0x41){ spi_rec();}if(sate_temp==0x42){ spi_erase();}if(sate_temp==0x45){spi_wr_apc1 ();}if(sate_temp==0x65){ spi_wr_apc2 ();}if(sate_temp==0x46){ spi_wr_nvcfg ();}if(sate_temp==0x47){ spi_ld_nvcfg ();}if(sate_temp==0x48){ spi_fwd ();}if(sate_temp==0x49){ spi_chk_mem();}if(sate_temp==0x60){ spi_CurrRowAddr();} if(sate_temp==0x80){spi_set_opt(ISD1700_SET_PLAY|ISD_LED);//spi_set_opt(ISD1700_SET_PLAY);}if(sate_temp==0x81){spi_set_opt(ISD1700_SET_REC|ISD_LED);//spi_set_opt(ISD1700_SET_REC);ISD_COMM_RAM_C[0]=ISD1700_SET_REC ;seril_back_sate(1);}if(sate_temp==0x82){spi_set_opt(ISD1700_SET_ERASE|ISD_LED);//spi_set_opt(ISD1700_SET_ERASE);}if(sate_temp==ISD1700_WR_APC2){RI=0;while(!RI);apc_temp=SBUF;apc_temp=apc_temp<<8;RI=0;while(!RI);apc_temp|=SBUF;RI=0;ISD_SS=0;isd1700_par2_comm(ISD1700_WR_APC2,apc_temp); ISD_SS=1;}RI=0;}if(re_fig){rest_isd_comm_ptr();sate_temp=0;do{SBUF=*back_data_ptr++;while(!TI);TI=0;}while(++sate_temp<=2);re_fig=0;}}void spi_set_opt(uchar spi_set_comm){uint start_addr,end_addr;RI=0;while(!RI);start_addr=SBUF;start_addr=start_addr<<8;RI=0;while(!RI);start_addr|=SBUF;RI=0;while(!RI);end_addr=SBUF;end_addr=start_addr<<8;RI=0;while(!RI);end_addr|=SBUF;RI=0;ISD_SS=0;isd1700_7byte_comm(spi_set_comm, start_addr, end_addr); ISD_SS=1;}void spi_pu (void){ISD_SS=0;isd1700_Npar_comm(ISD1700_PU,2);ISD_SS=1;}void spi_stop (void){ISD_SS=0;isd1700_Npar_comm(ISD1700_STOP,2);ISD_SS=1;ISD_COMM_RAM_C[0]=ISD1700_STOP ;seril_back_sate(1);}void spi_Rest (void){ISD_SS=0;isd1700_Npar_comm(ISD1700_REST,2);ISD_SS=1;}void spi_CLR_INT(void){ISD_SS=0;isd1700_Npar_comm(ISD1700_CLR_INT,2);ISD_SS=1;}void spi_RD_STAUS(void){ uchar i;ISD_SS=0;isd1700_Npar_comm(ISD1700_RD_STAUS,3);ISD_SS=1;i=ISD_COMM_RAM_C[1];//j=ISD_COMM_RAM_C[2];ISD_COMM_RAM_C[1]=ISD_COMM_RAM_C[0];ISD_COMM_RAM_C[0]=i;seril_back_sate(3);}void spi_CurrRowAddr(void){ uchar i;ISD_SS=0;isd1700_Npar_comm(ISD1700_RD_STAUS,3);ISD_SS=1;i=ISD_COMM_RAM_C[1];ISD_COMM_RAM_C[1]=ISD_COMM_RAM_C[0]>>5|ISD_COMM_RAM_C[1]<<3; ISD_COMM_RAM_C[0]= i >>5;seril_back_sate(3);}void spi_RD_play_ptr(void){ uchar i;ISD_SS=0;isd1700_Npar_comm(ISD1700_RD_PLAY_PTR,4);ISD_SS=1;i=ISD_COMM_RAM_C[3]&0x03;ISD_COMM_RAM_C[3]=ISD_COMM_RAM_C[2];ISD_COMM_RAM_C[2]=i;seril_back_sate(4);}void spi_pd(void){ISD_SS=0;isd1700_Npar_comm(ISD1700_PD,2);ISD_SS=1;}void spi_RD_rec_ptr(void){ uchar i;ISD_SS=0;isd1700_Npar_comm(ISD1700_RD_REC_PTR,4);ISD_SS=1;i=ISD_COMM_RAM_C[3]&0x03;ISD_COMM_RAM_C[3]=ISD_COMM_RAM_C[2];ISD_COMM_RAM_C[2]=i;seril_back_sate(4);}void spi_devid(void){ISD_SS=0;isd1700_Npar_comm(ISD1700_DEVID,3);ISD_SS=1;ISD_COMM_RAM_C[2]=ISD_COMM_RAM_C[2]&0xf8;seril_back_sate(3);}void spi_play(void){ISD_SS=0;isd1700_Npar_comm(ISD1700_PLAY|ISD_LED,2);ISD_SS=1;}void spi_rec (void){ISD_SS=0;isd1700_Npar_comm(ISD1700_REC|ISD_LED,2);ISD_SS=1;ISD_COMM_RAM_C[0]=ISD1700_REC ;seril_back_sate(1);}void spi_erase (void){ISD_SS=0;isd1700_Npar_comm(ISD1700_ERASE|ISD_LED,2);ISD_SS=1;}void spi_G_ERASE (void){ISD_SS=0;isd1700_Npar_comm(ISD1700_G_ERASE|ISD_LED,2);ISD_SS=1;}void spi_rd_apc(void){ISD_SS=0;isd1700_Npar_comm(ISD1700_RD_APC,4);ISD_SS=1;seril_back_sate(4);}void spi_wr_apc1 (void){}void spi_wr_apc2 (void){ISD_SS=0;isd1700_par2_comm(ISD1700_WR_APC2, 0x0400);ISD_SS=1;}void spi_wr_nvcfg (void){ISD_SS=0;isd1700_Npar_comm(ISD1700_WR_NVCFG,2);ISD_SS=1;}void spi_ld_nvcfg (void){ISD_SS=0;isd1700_Npar_comm(ISD1700_LD_NVCFG ,2);ISD_SS=1;}void spi_fwd (void){ISD_SS=0;isd1700_Npar_comm(ISD1700_FWD,2);ISD_SS=1;}void spi_chk_mem(void){ISD_SS=0;isd1700_Npar_comm(ISD1700_CHK_MEM,2);ISD_SS=1;}void seril_back_sate(uchar byte_number){uchar sate_temp;rest_isd_comm_ptr();sate_temp=0;do{SBUF=*back_data_ptr++;while(!TI);TI=0;}while(++sate_temp<byte_number);}void rest_isd_comm_ptr(void){isd_comm_ptr=ISD_COMM_RAM;back_data_ptr=ISD_COMM_RAM_C;}void isd1700_Npar_comm (uchar comm_par,comm_byte_count) {uchar i;i=0;ISD_COMM_RAM[0]=comm_par;isd_comm_ptr=&ISD_COMM_RAM[1];do{*isd_comm_ptr++=NULL;}while(++i<comm_byte_count-1);rest_isd_comm_ptr();i=0;do{*back_data_ptr++=T_R_comm_byte(*isd_comm_ptr++);i++;}while(i<comm_byte_count);}void isd1700_par2_comm(uchar comm_par, uint data_par){uchar i;ISD_COMM_RAM[0]=comm_par;ISD_COMM_RAM[1]=data_par;ISD_COMM_RAM[2]=data_par>>8;rest_isd_comm_ptr();i=0;do{*back_data_ptr++=T_R_comm_byte(*isd_comm_ptr++);i++;}while(i<3);}void isd1700_7byte_comm(uchar comm_par, uint star_addr, uint end_addr) {uchar i;ISD_COMM_RAM[0]=comm_par;ISD_COMM_RAM[1]=NULL;ISD_COMM_RAM[2]=star_addr;ISD_COMM_RAM[3]=star_addr>>8;ISD_COMM_RAM[4]=end_addr;ISD_COMM_RAM[5]=end_addr>>8;ISD_COMM_RAM[6]=NULL;rest_isd_comm_ptr();i=0;do{*back_data_ptr++=T_R_comm_byte(*isd_comm_ptr++);i++;}while(i<=7);}uchar T_R_comm_byte( uchar comm_data ){uchar bit_nuber;uchar temp;bit_nuber=0;temp=0;do{ISD_SCLK=0;isd_delay(1);if((comm_data>>bit_nuber&0x01)!=0){ISD_MOSI=1;}else{ISD_MOSI=0;}if(ISD_MISO){temp=(temp>>1)|0x80;}else{temp=temp>>1;}ISD_SCLK=1;isd_delay(1);}while(++bit_nuber<=7);ISD_MOSI=0;return (temp);}void isd_delay(int x){uchar i;for(; x>=1; x--){for(;i<=20;i++);}}void init(void){TMOD=0x21;SCON=0x50;TL0=0x00; //25msTH0=0x70; //25msTH1=0xE8;TL1=0xE8; //波特率:1200bps(12MHz:0xE6 11.0592MHz:0xE8)ET0=1;EA=1;TR1=1;IT0 = 0;EX0 = 0;spi_pu();spi_devid();}12864.h#ifndef _12864_H#define _12864_H#include "main.h"sbit RS =P3^2;sbit RW=P3^3;sbit EN=P3^4;void buzy();void TransferData(char data1,bit DI);void Dingwei(unsigned char line,unsigned char row); void delayms(unsigned int n);void delay(unsigned int m);void lcd_mesg(unsigned char code *adder1);void displayonechar(unsigned int data2);void initinal(void) ; //LCD字库初始化程序void clrram(void);void lcd_pos(unsigned char ,unsigned char );void write_dat(unsigned char);extern unsigned char time_show[];extern unsigned int aaa;#endif12864.c#include "12864.h"#define DataPort P1void initinal(void) //LCD字库初始化程序{TransferData(0x30,0); //8BIT设置,RE=0: basic instruction setTransferData(0x08,0); //Display on ControlTransferData(0x10,0); //Cursor Display Control光标设置TransferData(0x0C,0); //Display Control,D=1,显示开TransferData(0x01,0); //Display Clear}void buzy(){DataPort=0xff;RW=1;RS=0;EN=1;while(DataPort&0x80);EN=0;}void Dingwei(unsigned char line,unsigned char row) //定位在哪行哪列显示{unsigned int i;switch(line){case 1: i=0x80+row;break;case 2: i=0x90+row;break;case 3: i=0x88+row;break;case 4: i=0x98+row;break;default: i=0x80;break;}TransferData(i,0);delay(1);}void lcd_mesg(unsigned char code *addr) //传送一个字符串{while(*addr>0){TransferData(*addr,1);addr++;}}void TransferData(char data1,bit DI) //传送数据或者命令,当DI=0,传送命令,当DI=1,传送数据.{buzy();RW=0;RS=DI;DataPort=data1;EN=1;EN=0;}void delayms(unsigned int n) //延时10×n毫秒程序{unsigned int i,j;for(i=0;i<3*n;i++)for(j=0;j<2000;j++);}void delay(unsigned int m) //延时程序,微妙级{while(m--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}void write_cmd(unsigned char cmd){RS=0;RW=0;EN=0;P1=cmd;delayms(1);EN=1;delayms(1);EN=0;}void write_dat(unsigned char dat){RS=1;RW=0;EN=0;P1=dat;delayms(1);EN=1;delayms(1);EN=0;}void lcd_pos(unsigned char x,unsigned char y){unsigned char pos;if(x==0)x=0x80;else if(x==1)x=0x90;else if(x==2)x=0x88;else if(x==3)x=0x98;pos=x+y;write_cmd(pos);}void clrram(void){write_cmd(0x30);write_cmd(0x01);}Sound.h#ifndef _SOUND_H#define _SOUND_H#include "main.h"//以下为语音信息对应播放起始地址定义,A为开始,B为结束#define sound_0A 0x0012#define sound_0B 0x0017#define sound_1A 0x0019#define sound_1B 0x0025#define sound_2A 0x0027#define sound_2B 0x002e#define sound_3A 0x002f#define sound_3B 0x0039#define sound_4A 0x003b#define sound_4B 0x0048#define sound_5A 0x004a#define sound_5B 0x004f#define sound_6A 0x0052#define sound_6B 0x0159#define sound_7A 0x005c#define sound_7B 0x0062#define sound_8A 0x0065#define sound_8B 0x0131#define sound_9A 0x006f#define sound_9B 0x015F#define sound_10A 0x0079#define sound_10B 0x015E#define sound_11A 0x0082#define sound_11B 0x018A#define sound_12A 0x0091#define sound_12B 0x0100#define sound_13A 0x009f#define sound_13B 0x0100#define sound_14A 0x00ac#define sound_14B 0x0100void GetSound(unsigned char soundtick); void PlaySoundTick(unsigned char number);void delay_isd(unsigned int time);void short_delay();void long_delay();#endifSound.c#include "sound.h"void GetSound(unsigned char soundtick){ISD_SS=0;switch(soundtick){case 0:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_0A, sound_0B); }break;case 1:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_1A, sound_1B); }break;case 2:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_2A, sound_2B); }break;case 3:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_3A, sound_3B); }break;case 4:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_4A, sound_4B); }break;case 5:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_5A, sound_5B); }break;case 6:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_6A, sound_6B); }break;case 7:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_7A, sound_7B); }break;case 8:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_8A, sound_8B); }break;case 9:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_9A, sound_9B); }break;case 10:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_10A, sound_10B); }break;case 11:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_11A, sound_11B); }break;case 12:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_12A, sound_12B); }break;case 13:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_13A, sound_13B); }break;case 14:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_14A, sound_14B); }break;default: break;}ISD_SS=1;}void PlaySoundTick(unsigned char number) {spi_stop ();delay_isd(30000);GetSound(number);}void delay_isd(unsigned int time){while(time--!=0);}void short_delay(){delay_isd(30000);delay_isd(30000);delay_isd(30000);delay_isd(30000);delay_isd(30000);delay_isd(30000);delay_isd(30000);delay_isd(30000);delay_isd(30000);}void long_delay(){short_delay();short_delay();short_delay();short_delay();}Key.h#ifndef _KEY_H#define _KEY_H#include "main.h"sbit KEY1=P2^0;sbit KEY2=P2^1;sbit KEY3=P2^2;sbit KEY4=P2^3;sbit KEY5=P2^4;sbit KEY6=P2^5;sbit KEY7=P2^6;sbit KEY8=P2^7;sbit KEY_SURE=P3^6;void key_delay(unsigned char z); unsigned char keyscan_nor();#endifKey.c#include "key.h"unsigned char keyscan_nor(){if(!KEY1){key_delay(20);if(!KEY1){LED1=0;return 1;}}if(!KEY2){key_delay(20);if(!KEY2){LED2=0;return 2;}}if(!KEY3){key_delay(20);if(!KEY3){LED3=0;return 3;}}if(!KEY4){key_delay(20);if(!KEY4){LED4=0;return 4;}}if(!KEY5){key_delay(20);if(!KEY5){LED5=0;return 5;}}if(!KEY6){key_delay(20);if(!KEY6){LED6=0;return 6;}}if(!KEY7){key_delay(20);if(!KEY7){LED7=0;return 7;}}if(!KEY8){key_delay(20);if(!KEY8){LED8=0;return 8;}}return 0;}void key_delay(unsigned char z){unsigned char x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}五.参与制作人员ZYL(注:可编辑下载,若有不当之处,请指正,谢谢!)。

康巴丝LED万年历使用说明书

康巴丝LED万年历使用说明书

坚守精品文档主页地址:/afeidoc81坚守精品文档主页地址:/afeidoc81 康巴丝LED万年历使用说明书LED万年历使用说明书X年一、功能简介:1、显示公历年、月、日,时、分秒,星期。

农历月、日,温度,24节气(24个灯会有闪烁及流动效果等)。

2、中文语音报时,优美和弦音乐,美妙生日提醒。

3、中文和弦音乐报时:当整点报时指示灯亮时,每天的7-21点,整点报时,报“现在时刻几点几分”,再放一段和弦音乐。

4、 8组不同的和弦音乐闹钟。

5、 1224小时制可切换。

6、温度测量范围为:-9-50摄氏度。

7、市电停电,数码管显示关闭,芯片内部正常走时,来电时不需重新设置。

8、亮度自动调整:晚上10:00到第二天早上7:00之间,亮度自动降为一半,其它时间段正常显示。

二、电气参数1、输入电压:交流220伏2、静态电流:不大于7UA3、工作温度:-1-70摄氏度三、操作说明1、按键说明(分两种)A设置键、B上调键、C定闹键、D报时键退出键A设置键、B上调键、C+下调定闹键、D报时键退出键注:有部分机型,只有三键,D键取消。

在任何设置状态下,如果超过30秒无操作,将自动退出设置状态;按D键可退出设置状态;按住A键不放3秒也可退出设置状态,所设定过的数据都是有效的。

2、时间调整:正常走时状态下,按A键进入时间状态设置,同时年份闪烁,可按B或“C+”修改年份,修改好后按A键将闪烁位移到公历“月”,按B或C+键修改月份,同祥的方法可对日、时、分、秒设置。

当最后设定好后,再按A键退出时间设置,回到正常时间状态。

3、 1224小时制切换:在正常走时状态,按住B键不放3秒钟,则可进行1224时制切换。

4、开关整点报时:在正常走时状态,按一下B键,整点报时指示灯亮,表示已打开整点报时功能;再按一下B键,则关闭整点报时。

5、闹钟:(1)闹钟设定:在正常走时状态下,按C键或C+键进入“定闹查询状态”,定闹指示灯点亮,在温度位显示“A1”,表示当前你看到的是第一组定闹信息,在小时、分钟显示“――:――”,表示定闹无效;显示“XX:XX”的具体时间,表示定闹有效,按B键可以切换“有效”“无效”,按A键进入定闹时间设定,且小时位闪烁,按B或C+键修改闪烁位的内容,再按A键硧认并退出定闹时间设定,再按C键或C+键进入下一组闹铃状态,其设置与第一组定闹相同,依此类推即可设定所有定闹。

第七组电子语音万年历

第七组电子语音万年历
getch();
}
2.程序运行说明(包括结果说明)
运行程序:
输入2004运行结果:
运行说明:运行程序后,先出现一黑色背景,上面有一句话:"Input the year:"输入一个整数值作为要查询的年份值,显示出该年的所有月份日期,对应的星期。
结果说明:第一行“The calendar of the year 2004”表明这是2004年的日历。之后的每两个月份并排显示,首行是月份,第二行是星期,日期按其是周几实际情况与上面的星期数垂直对齐。
(1)电路工作原理;
本电路包括基本的时钟电路模块、液晶显示模块、语音报时模块、温度传感器模块。各功能模块通过控制芯片连接起来,完成本设计要求。
电路实现的基本功能是电子万年历。通过液晶LCD12864,可显示年月日、时分秒、星期等基本信息。增强功能是具备时钟语音报时功能。即每到整点,系统会自动语音报时,报时信息包括日期及时间。同时具备显示环境温度的功能。
printf("%-4d",date[i+1][j][k]);
else printf("%4s","");
printf("%4s\n","");}
printf("===========================\t===========================\n");
}
puts("\n");
2.通过高级语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。

电子报时器万年历床头电子小闹钟中文语音报时器说明书

电子报时器万年历床头电子小闹钟中文语音报时器说明书

一、产品概述1.1产品介绍1.2主要特点1)中文语音报时功能,清晰准确;2)万年历功能,显示年、月、日;3)小闹钟功能,可设置多个闹钟;4)光感传感器,自动调节亮度;5)记忆功能,保留设置时钟信息。

二、产品外观2.1主机外观该电子报时器万年历床头电子小闹钟外观小巧玲珑,简约大方。

主机采用高质量塑料材料制作,表面涂有耐磨的亮面漆,光滑且易于清洁。

2.2显示屏该产品配有2.8寸高清彩色显示屏,能够清晰显示时间、日期以及相关设置信息。

显示屏的背光采用LED灯源,保证观察时间的清晰度,同时根据环境光线自动调节亮度。

三、产品功能3.1报时功能该电子报时器万年历床头电子小闹钟为用户提供准确的时间信息。

通过设置,每整点、半点、1分钟、5分钟或10分钟,都会发出中文语音报时。

用户也可以根据需要,选择关闭或开启报时功能。

3.2万年历功能万年历功能能够显示当前的年、月、日信息。

通过操作按钮,用户可以切换显示的日期信息,确保了准确的时间参考。

3.3小闹钟功能该产品配有多个小闹钟功能,用户可根据个人需求设置不同时间的闹钟,以提醒重要的事情。

每个闹钟都可以单独设置时间和日期,同时还可以设置闹钟的音量。

3.4光感传感器为了满足用户的不同需求,该产品采用了光感传感器。

根据环境光线的变化,自动调节背光的亮度,保证在不同光照条件下的清晰可见度。

3.5记忆功能产品具备记忆功能,可以保留设置的时钟信息。

即使断电或者关闭产品,再次打开时,之前设置的时间和日期信息仍然可以保留,方便用户的使用。

四、使用说明4.1电源该产品采用AC220V电源供电,用户只需将电源线插入家庭电源插座即可。

4.2设置时间和日期在产品的底部设置区,有相关的设置按钮,用户可以通过长按或短按不同的按钮进行设置时间和日期。

具体操作流程,请参照产品附带的说明书。

4.3设置报时功能用户可以根据个人需求设置报时功能,并选择报时的时间间隔。

同时还可以设置报时的音量大小。

具体操作流程,请参照产品附带的说明书。

多功能电子万年历讲解

多功能电子万年历讲解

兰州理工大学第六届大学生电子设计竞赛题目:多功能电子万年历学院:计算机与通信学院班级:xxxxxxxx12级1班姓名:xxxx、xxxxxx、xxxxxx学号:12xx0xxx、12xx01xx、12xx01xx兰州理工大学目录摘要 (2)1 系统方案 (3)1.1比较与选择 (3)1.1.1 界面显示和语音提示: (3)1.1.2 时间的实现 (3)1.1.3 处理器的选择 (3)1.2方案描述 (4)2 理论分析与计算 (4)2.1日程设定与日期计算 (4)2.1.1 日期计算 (4)3 电路与程序设计 (7)3.1硬件设计 (7)3.1.1 硬件系统分析 (7)3.1.2 硬件描述 (7)3.2软件系统设计 (12)3.2.1 软件流程图 (12)3.2.2 各模块功能主程序设计 (14)4 测试方案与测试结果 (17)4.1各模块调试方案 (17)4.1.1 STC89C52主芯片调试 (17)4.1.2 DS1302时钟芯片调试 (18)4.1.3 蜂鸣器调试 (19)4.1.4 AT24C08数据存储器调试 (20)4.1.5 12864LCD显示模块调试 (20)4.1.6 总体调试 (21)结论 (22)系统功能 (22)操作说明: (23)参赛总结 (23)参考文献 (24)附录 (25)附录一系统原理图 (25)附录二原程序代码 (26)多功能电子万年历摘要电子万年历是一种非常广泛日常计时工具。

它可以对年、月、日、周日、时、分、秒进行精确计时,同时可显示闰年农历温度信息,在日常生活中极为实用,DS1302是常用的时钟芯片,价格低廉,精度高且对于数字电子万年历采用直观的数字显示,还具有时间校准等功能。

该系统以STC89C52单片机作为系统控制处理器,采用具有涓细电流充电能的低功耗实时时钟电路DS1302。

它可以对年、月、日、周日、时、分、秒进行计时。

同时通过蜂鸣器进行半整点报时和闹钟提示,并采用AT24C08数据存储器实现掉电数据存储功能.系统各个界面通过LCD12864显示。

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

电子语音播放万年历
1.功能描述
对日期时间计时、温度测量。

LCD显示年月日、时分秒,温度值。

可设置时间,可将当前时间、温度值语音播放。

2. 产品模块配置
①EDM314-±12V,±5V直流电源模块。

②EDM315-变压器。

③EDM001-MCS51主机
④EDM605-12864点阵液晶
⑤EDM103-温度传感器18B20
⑥EDM403-8位独立按键
⑦EDM313-AK040语音
⑧EDM503-扬声器
3. 单元模块电路及功能
4.产品模块连线
各模块连好5V电源
EDM605-12864点阵液晶与EDM001-MCS51连接:DB0-DB7---连---P0.0-P0.7、RST-BL-NC---连---P2.7-P2.0
EDM403-8位独立按键:→-F2----连----- EDM001-MCS51:P3.7-P3.0 EDM103-温度传感器18B20:OUT—连—P1.7
EDM-313-AK040语音模块与EDM001-MCS51连接:RESET—
连—P1.0、PULSE—连—P1.1、BUSY--连—P1.2.
EDM-313-AK040语音模块:OUT--连--EDM503-扬声器:SP- EDM503-扬声器:SP+--连5V
EDM001-MCS51拨码开关5678拨到ON.
5.产品电路总图
6.调试方法及步骤
连好线开机后,液晶显示亚龙LOGO,大约6秒后进入主界面,此时按“F1”
键会播放当前温度, 按“F2”键会播放当前时间和当前温度。

按“SET”键会进入时间设置界面,->和<-移位,↑和↓加1和减一。

OK键保存修改,同时退出。

7.测试点参数。

相关文档
最新文档