基于PIC16F877A单片机的温度,时间显示_第1页
基于PIC16F877A单片机的温度,时间显示_第2页
基于PIC16F877A单片机的温度,时间显示_第3页
基于PIC16F877A单片机的温度,时间显示_第4页
基于PIC16F877A单片机的温度,时间显示_第5页
已阅读5页,还剩40页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于PIC16F877A单片机的温度,时间显示以及闹钟设置,硬件和软件配备一,硬件图INCLUDE_CONFIG0X3B31DEFINERSRD0DEFINERWRD1DEFINEENRD2DEFINEBEEPRD3DEFINES1RA0DEFINES2RA1DEFINES3RA2DEFINES4RA3DEFINEUINTUNSIGNEDINTDEFINEUCHARUNSIGNEDCHARSIGNEDCHARSET_TIME70,58,23,6,1,5,12/秒分时星期日月年SIGNEDCHARREAD_TIME70,0,0,0,0,0,0SIGNEDCHARSHI7,FEN15,ALARM_TIME1,REAPEAT_FEN2,CENT/闹钟时,闹钟分,闹铃响分钟,闹铃响间隔UCHARS1_NUM,S2_NUMCONSTUCHARALARM“ALARMTIME“CONSTUCHARMODE“MODE“CONSTUCHARRPT“RPT“CONSTUCHARMIN“MIN“VOIDPORT_INITTRISA0XFF/A口设置为输入ADCON10X06/RA口上电复位为模拟输入口TRISC31/SCL和SDA设置为输入TRISC41TRISD0X00/D口设置为输出VOIDIIC_INITSSPCON0X28STAT_SMP0SSPADD4VOIDDELAYMSUINTZ/延时函数UINTX,YFORXZX0XFORY110Y0YVOIDDELAYUSUINTKWHILEKVOIDWRITE_BYTE_LOWUCHARR1,UCHARFLAG0/写一个字节的低4位,FLAG0为指令/数据选择位/,0为写指令,1为写数据UCHARLOWRSFLAG0LOWR1LOWLOW4WRITE_BYTE_LOWDAT_HIGH,FLAG1DAT_LOWDATWRITE_BYTE_LOWDAT_LOW,FLAG1NOPVOIDWRITE_STRINGUCHARADDRESS,UCHARCONSTSTR/往指定的地址写字符串UCHARI0LCD_WRITEADDRESS,0WHILESTRI0LCD_WRITESTRI,1DELAYUS5IVOIDLCD_INIT/初始化函数RW0EN0DELAYMS20WRITE_BYTE_LOW0B0011,0DELAYMS1WRITE_BYTE_LOW0B0011,0DELAYUS10WRITE_BYTE_LOW0B0011,0DELAYUS10WRITE_BYTE_LOW0B0010,0DELAYMS1LCD_WRITE0X28,0DELAYMS5LCD_WRITE0X0C,0DELAYMS5LCD_WRITE0X01,0DELAYMS5LCD_WRITE0X06,0DELAYMS5VOIDNAOLINGUCHARIFORI0I20IBEEP1DELAYUS5BEEP0DELAYUS5VOIDIIC_SENDUCHARNUMSSPBUFNUMWHILESTAT_RW1/等待发送结束WHILESSPIF0WHILEACKSTAT1/等待应答SIGNEDCHARREAD_TEMP/读温度SIGNEDCHARTEMPSEN1WHILESEN1IIC_SEND0B10011010IIC_SEND0RSEN1WHILERSEN1IIC_SEND0B10011011RCEN1WHILERCEN1/SSPIF0/WHILESSPIF0/等待接收结束TEMPSSPBUFPEN1WHILEPEN1RETURNTEMPVOIDDISPOSE/BCD数据处理UCHARI,TEMP1,TEMP2FORI0I7ITEMP1SET_TIMEI/10TEMP2SET_TIMEI10SET_TIMEITEMP116TEMP2VOIDTIME_CSH/时间初始化UCHARIDISPOSEFORI0I7ISEN1/起始信号WHILESEN1/检测起始信号是否已完成IIC_SEND0XD0IIC_SENDIIIC_SENDSET_TIMEIPEN1/停止信号WHILEPEN1VOIDREAD_DS1307/读时间UCHARKFORK0K8KSEN1/起始信号WHILESEN1IIC_SEND0XD0IIC_SENDKPEN1/停止信号WHILEPEN1RSEN1/重新启动WHILERSEN1IIC_SEND0XD1SSPIF0RCEN1WHILESSPIF0/等待接收结束READ_TIMEK1SSPBUFNOPNOPPEN1/停止信号WHILEPEN1VOIDDISPLAY_TIMELCD_WRITE0X80,0LCD_WRITE0X32,1LCD_WRITE0X30,1LCD_WRITE0X30READ_TIME6/16,1/年LCD_WRITE0X30READ_TIME616,1LCD_WRITE,1LCD_WRITE0X30READ_TIME5/16,1/月LCD_WRITE0X30READ_TIME516,1LCD_WRITE,1LCD_WRITE0X30READ_TIME4/16,1/日LCD_WRITE0X30READ_TIME416,1LCD_WRITE0X800X0D,0SWITCHREAD_TIME3CASE1LCD_WRITEM,1LCD_WRITEO,1LCD_WRITEN,1BREAKCASE2LCD_WRITET,1LCD_WRITEU,1LCD_WRITEE,1BREAKCASE3LCD_WRITEW,1LCD_WRITEE,1LCD_WRITED,1BREAKCASE4LCD_WRITET,1LCD_WRITEH,1LCD_WRITEU,1BREAKCASE5LCD_WRITEF,1LCD_WRITER,1LCD_WRITEI,1BREAKCASE6LCD_WRITES,1LCD_WRITEA,1LCD_WRITET,1BREAKCASE7LCD_WRITES,1LCD_WRITEU,1LCD_WRITEN,1BREAKLCD_WRITE0X800X40,0LCD_WRITE0X30READ_TIME2/16,1/时LCD_WRITE0X30READ_TIME216,1LCD_WRITE,1LCD_WRITE0X30READ_TIME1/16,1/分LCD_WRITE0X30READ_TIME116,1LCD_WRITE,1LCD_WRITE0X30READ_TIME0/16,1/秒LCD_WRITE0X30READ_TIME016,1NOPNOPCENTREAD_TEMPLCD_WRITE0X800X4B,0LCD_WRITE0X30CENT/10,1LCD_WRITE0X30CENT10,1LCD_WRITE0XDF,1LCD_WRITEC,1IFSHIREAD_TIME2/1610READ_TIME216IFSHIREAD_TIME2/1610READ_TIME216IFSHIREAD_TIME2/1610READ_TIME216IFSHIREAD_TIME2/1610READ_TIME216IFSHIREAD_TIME2/1610READ_TIME216VOIDSETTING_TIMEUCHARL,S2_VALUE,SETTING_FLAGIFS20DELAYMS10IFS20S2_VALUESETTING_FLAG1WHILES20/松手检测FORL0L7L/存储当前时间数据/年星期月日时分秒SET_TIMELREAD_TIMEL/1610READ_TIMEL16WHILESETTING_FLAGIFS20DELAYMS5IFS20S2_VALUEWHILES20/松手检测IFS2_VALUE1LCD_WRITE0X83,0/指向年份LCD_WRITE0X0F,0/显示游标并闪烁IFS30DELAYMS5IFS30SET_TIME6IFSET_TIME6100SET_TIME60LCD_WRITE0X82,0LCD_WRITE0X30SET_TIME6/10,1LCD_WRITE0X30SET_TIME610,1LCD_WRITE0X83,0/指向年份WHILES30IFS40DELAYMS5IFS40SET_TIME6IFSET_TIME61SET_TIME699LCD_WRITE0X82,0LCD_WRITE0X30SET_TIME6/10,1LCD_WRITE0X30SET_TIME610,1LCD_WRITE0X83,0/指向年份WHILES40IFS2_VALUE2LCD_WRITE0X86,0/指向月份IFS30DELAYMS5IFS30SET_TIME5IFSET_TIME513SET_TIME51LCD_WRITE0X85,0LCD_WRITE0X30SET_TIME5/10,1LCD_WRITE0X30SET_TIME510,1LCD_WRITE0X86,0/指向月份WHILES30IFS40DELAYMS5IFS40SET_TIME5IFSET_TIME50SET_TIME512LCD_WRITE0X85,0LCD_WRITE0X30SET_TIME5/10,1LCD_WRITE0X30SET_TIME510,1LCD_WRITE0X86,0/指向月份WHILES40IFS2_VALUE3LCD_WRITE0X89,0/指向日IFS30DELAYMS5IFS30SET_TIME4IFSET_TIME432SET_TIME41LCD_WRITE0X88,0LCD_WRITE0X30SET_TIME4/10,1LCD_WRITE0X30SET_TIME410,1LCD_WRITE0X89,0/指向日WHILES30IFS40DELAYMS5IFS40SET_TIME4IFSET_TIME40SET_TIME431LCD_WRITE0X88,0LCD_WRITE0X30SET_TIME4/10,1LCD_WRITE0X30SET_TIME410,1LCD_WRITE0X89,0/指向日WHILES40IFS2_VALUE4LCD_WRITE0X8F,0/指向星期IFS30DELAYMS5IFS30SET_TIME3IFSET_TIME38SET_TIME31SWITCHSET_TIME3CASE1LCD_WRITE0X8D,0LCD_WRITEM,1LCD_WRITEO,1LCD_WRITEN,1BREAKCASE2LCD_WRITE0X8D,0LCD_WRITET,1LCD_WRITEU,1LCD_WRITEE,1BREAKCASE3LCD_WRITE0X8D,0LCD_WRITEW,1LCD_WRITEE,1LCD_WRITED,1BREAKCASE4LCD_WRITE0X8D,0LCD_WRITET,1LCD_WRITEH,1LCD_WRITEU,1BREAKCASE5LCD_WRITE0X8D,0LCD_WRITEF,1LCD_WRITER,1LCD_WRITEI,1BREAKCASE6LCD_WRITE0X8D,0LCD_WRITES,1LCD_WRITEA,1LCD_WRITET,1BREAKCASE7LCD_WRITE0X8D,0LCD_WRITES,1LCD_WRITEU,1LCD_WRITEN,1BREAKLCD_WRITE0X8F,0/指向星期WHILES30IFS40DELAYMS5IFS40SET_TIME3IFSET_TIME30SET_TIME37SWITCHSET_TIME3CASE1LCD_WRITE0X8D,0LCD_WRITEM,1LCD_WRITEO,1LCD_WRITEN,1BREAKCASE2LCD_WRITE0X8D,0LCD_WRITET,1LCD_WRITEU,1LCD_WRITEE,1BREAKCASE3LCD_WRITE0X8D,0LCD_WRITEW,1LCD_WRITEE,1LCD_WRITED,1BREAKCASE4LCD_WRITE0X8D,0LCD_WRITET,1LCD_WRITEH,1LCD_WRITEU,1BREAKCASE5LCD_WRITE0X8D,0LCD_WRITEF,1LCD_WRITER,1LCD_WRITEI,1BREAKCASE6LCD_WRITE0X8D,0LCD_WRITES,1LCD_WRITEA,1LCD_WRITET,1BREAKCASE7LCD_WRITE0X8D,0LCD_WRITES,1LCD_WRITEU,1LCD_WRITEN,1BREAKLCD_WRITE0X8F,0/指向星期WHILES40IFS2_VALUE5LCD_WRITE0X800X41,0/指向小时IFS30DELAYMS5IFS30SET_TIME2IFSET_TIME224SET_TIME20LCD_WRITE0X800X40,0LCD_WRITE0X30SET_TIME2/10,1LCD_WRITE0X30SET_TIME210,1LCD_WRITE0X800X41,0/指向小时WHILES30IFS40DELAYMS5IFS40SET_TIME2IFSET_TIME21SET_TIME223LCD_WRITE0X800X40,0LCD_WRITE0X30SET_TIME2/10,1LCD_WRITE0X30SET_TIME210,1LCD_WRITE0X800X41,0/指向小时WHILES40IFS2_VALUE6LCD_WRITE0X800X44,0/指向分钟IFS30DELAYMS5IFS30SET_TIME1IFSET_TIME160SET_TIME10LCD_WRITE0X800X43,0LCD_WRITE0X30SET_TIME1/10,1LCD_WRITE0X30SET_TIME110,1LCD_WRITE0X800X44,0/指向分钟WHILES30IFS40DELAYMS5IFS40SET_TIME1IFSET_TIME11SET_TIME159LCD_WRITE0X800X43,0LCD_WRITE0X30SET_TIME1/10,1LCD_WRITE0X30SET_TIME110,1LCD_WRITE0X800X44,0/指向分钟WHILES40IFS2_VALUE7LCD_WRITE0X800X47,0/指向秒IFS30DELAYMS5IFS30SET_TIME0IFSET_TIME060SET_TIME00LCD_WRITE0X800X46,0LCD_WRITE0X30SET_TIME0/10,1LCD_WRITE0X30SET_TIME010,1LCD_WRITE0X800X47,0/指向分钟WHILES30IFS40DELAYMS5IFS40SET_TIME0IFSET_TIME01SET_TIME059LCD_WRITE0X800X46,0LCD_WRITE0X30SET_TIME0/10,1LCD_WRITE0X30SET_TIME010,1LCD_WRITE0X800X47,0/指向分钟WHILES40IFS2_VALUE8/这里注意S2_VALUE0LCD_WRITE0X0C,0SETTING_FLAG0TIME_CSHVOIDNAOZHONGWRITE_STRING0X80,ALARMLCD_WRITE0X30SHI/10,1LCD_WRITE0X30SHI10,1LCD_WRITE,1LCD_WRITE0X30FEN/10,1LCD_WRITE0X30FEN10,1WRITE_STRING0X800X40,MODELCD_WRITE0X30ALARM_TIME,1WRITE_STRING0X800X47,RPTLCD_WRITE0X30REAPEAT_FEN/10,1LCD_WRITE0X30REAPEAT_FEN10,1WRITE_STRING0X800X4D,MINUCHARS1_SCANIFS10DELAYMS5IFS10S1_NUMIFS1_NUM2S1_NUM0S2_NUM0LCD_WRITE0X0C,0WHILES10LCD_WRITE0X01,0IFS1_NUM1NAOZHONGLCD_WRITE0X0F,0RETURNS1_NUMVOIDSETTING_NAOZHONGIFS20DELAYMS5IFS20S2_NUMIFS2_NUM4S2_NUM0WHILES20SWITCHS2_NUMCASE0LCD_WRITE0X8C,0IFS30DELAYMS5IFS30SHIIFSHI24SHI0LCD_WRITE0X8B,0LCD_WRITE0X30SHI/10,1LCD_WRITE0X30SHI10,1LCD_WRITE0X8C,0/指向小时WHILES30IFS40DELAYMS5IFS40SHIIFSHI1SHI23LCD_WRITE0X8B,0LCD_WRITE0X30SHI/10,1LCD_WRITE0X30SHI10,1LCD_WRITE0X8C,0/指向小时WHILES40BREAKCASE1LCD_WRITE0X8F,0IFS30DELAYMS5IFS30FENIFFEN60FEN0LCD_WRITE0X8E,0LCD_WRITE0X30FEN/10,1LCD_WRITE0X30FEN10,1LCD_WRITE0X8F,0/指向小时WHILES30IFS40DELAYMS5IFS40FENIFFEN1FEN59LCD_WRITE0X8E,0LCD_WRITE0X30FEN/10,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论