单片机课程设计_多功能定时器(编辑修改稿)内容摘要:
//IIC_Delay_us(0)。 MDO = (dd amp。 0x80)7。 IIC_Delay_us(1)。 MCO = 1。 //IIC_Delay_us(3)。 dd = 1。 } MCO = 0。 } /*********************************************************************************** * 函数名 : IIC_Delay_us。 * 描述 : IIC 总线延时函数。 * 输入 : 延时参数 多功能定时装置 15 * 返回值 : none。 * 注释 : none。 ************************************************************************************/ void IIC_Delay_us(unsigned int times) { unsigned int i。 unsigned char DelayJs。 for (i=0。 itimes。 i++)DelayJs++。 } 主程序( Prj6) include include include include unsigned char CurrentTime[7]={55,59,21,6,23,04,11}。 unsigned char ClockSetSave1[3]={10,00,22},ClockSetSave2[3]={20,00,22}。 unsigned char code table[7]={0x53,0x4d,0x48,0x59,0x6d,0x44,0x57}。 unsigned char code table1[4]={0x20,0x53,0x4d,0x48}。 unsigned char KeyValue,ClockKeyValue,shijianzhi=0。 unsigned char SetMode=0。 unsigned char ShowMode=0。 unsigned char Clock=1,ClockSet=0,FinishClockSet1=0,FinishClockSet2=0,ClockEn1=0,ClockEn2=0。 unsigned int i=0。 void KeyProcess()。 void stop() { P1amp。 =0xf0。 P2|=0x0f。 P2amp。 =0xfe。 if((P1amp。 0x08)==0) { P2amp。 =0xfe。 } } void main() { PLLCONamp。 =0xf8。 //设置频率为 CFG848|=0x01。 //使用片内 xram 多功能定时装置 16 init()。 I2CCON=0xE8。 //配置 IIC 为软件主发送模式 SetTime(CurrentTime)。 SwitchRTC(1)。 write_(0x82)。 //写冒号 write_data(0x3A)。 write_(0x85)。 //写冒号 write_data(0x3A)。 write_(0xc2)。 //写短横线 write_data(0x2D)。 write_(0xc5)。 //写短横线 write_data(0x2D)。 write_(0xc8)。 //写短横线 write_data(0x2D)。 while(1) { stop()。 if(SetMode==0)ReadTime(CurrentTime)。 write_(0x80)。 write_data(CurrentTime[2]/10+48)。 //Hour write_data(CurrentTime[2]%10+48)。 write_(0x83)。 write_data(CurrentTime[1]/10+48)。 //Minute write_data(CurrentTime[1]%10+48)。 write_(0x86)。 write_data(CurrentTime[0]/10+48)。 //Second write_data(CurrentTime[0]%10+48)。 write_(0xc0)。 write_data(CurrentTime[6]/10+48)。 //Year write_data(CurrentTime[6]%10+48)。 write_(0xc3)。 write_data(CurrentTime[5]/10%10+48)。 //Month write_data(CurrentTime[5]%10+48)。 write_(0xc6)。 write_data(CurrentTime[4]/10%10+48)。 //Day write_data(CurrentTime[4]%10+48)。 switch(CurrentTime[3]) //Week { case 1:{write_(0xc9)。 write_data(0x4D)。 write_data(0x6f)。 write_data(0x6e)。 break。 }//显示 Mon case 2:{write_(0xc9)。 write_data(0x54)。 write_data(0x75)。 write_data(0x65)。 break。 }//显示 Tue case 3:{write_(0xc9)。 write_data(0x57)。 write_data(0x65)。 write_data(0x64)。 break。 }//显示 Wen 将十进制数转换为十六进制的 ASCII 值以便在LCD 上显示 ReadTime():把时间从芯片中读出 SetTime():把时间写入芯片 SwitchRTC(1):让时钟芯片走时 SwitchRTC(0):让时钟芯片暂停计时 多功能定时装置 17 case 4:{write_(0xc9)。 write_data(0x54)。 write_data(0x68)。 write_data(0x75)。 break。 }//显示 Thu case 5:{write_(0xc9)。 write_data(0x46)。 write_data(0x72)。 write_data(0x69)。 break。 }//显示 Fri case 6:{write_(0xc9)。 write_data(0x53)。 write_data(0x61)。 write_data(0x74)。 break。 }//显示 Sat case 7:{write_(0xc9)。 write_data(0x53)。 write_data(0x75)。 write_data(0x6e)。 break。 }//显示 Sun default: break。 } KeyProcess()。 if((CurrentTime[0]==ClockSetSave1[0]amp。 amp。 CurrentTime[1]==ClockSetSave1[1]amp。 amp。 CurrentTime[2]==ClockSetSave1[2])amp。 amp。 ClockEn1==1 || (CurrentTime[0]==ClockSetSave2[0]amp。 amp。 CurrentTime[1]==ClockSetSave2[1]amp。 amp。 CurrentTime[2]==ClockSetSave2[2])amp。 amp。 ClockEn2==1) //与闹铃时间相同则闹铃响 { PWM1H=62。 PWM1L=100。 PWMCON=0x31。 KeyDelay(333)。 PWM1H=0。 PWM1L=0。 PWMCON=0x00。 KeyDelay(333)。 } if(CurrentTime[0]==0amp。 amp。 CurrentTime[1]==0) //整点报时 { PWM1H=62。 PWM1L=100。 PWMCON=0x21。 //对闹铃响铃时长和音调等的设定 KeyDelay(333)。 PWM1H=0。 PWM1L=0。 PWMCON=0x00。 KeyDelay(333)。 } if(ClockEn1==1) //如果闹铃 1 被设置则显示 C1 { write_(0x8c)。 write_data(0x43)。 write_data(0x31)。 } else //否则清显 { write_(0x8c)。 write_data(0x20)。 write_data(0x20)。 } if(ClockEn2==1) //如果闹铃 2 被设置则显示 C1 { 多功能定时装置 18 write_(0x8e)。 write_data(0x43)。 write_data(0x32)。 } else //否则清显 { write_(0x8e)。 write_data(0x20)。 write_data(0x20)。 } } } void KeyProcess() //按键处理 ,启动按键扫描 { KeyValue=GetKey()。 switch(KeyValue) { case 0: //按键 0 进入设置模式 { write_(0xcf)。 write_data(table[SetMode])。 //显示被 设置项 if(SetMode==0)SwitchRTC(0)。 //进入设置,则停止计时 SetMode++。 if(SetMode7) //如果设置完了,则开始计时 { SetMode=0。 SetTime(CurrentTime)。 if(SetMode==0)SwitchRTC(1)。 write_(0xcf)。 write_data(0x20)。 } }break。 case 1: //按键 1:加 { switch(SetMode) //执行按键 1 是在进入设置的模式下 { case 1:write_(0xcf)。 write_data(0x53)。 CurrentTime[0]++。 if(CurrentTime[0]59)CurrentTime[0]=0。 break。 //miao case 多功能定时装置 19 2:write_(0xcf)。 write_data(0x4d)。 CurrentTime[1]++。 if(CurrentTime[1]59)CurrentTime[1]=0。 break。 //fen case 3:write_(0xcf)。 write_data(0x48)。 CurrentTime[2]++。 if(CurrentTime[2]23)CurrentTime[2]=0。 break。 //shi case 4:write_(0xcf)。 write_data(0x59)。 CurrentTime[6]++。 if(CurrentTime[6]99)CurrentTime[6]=0。 break。 //year case 5:write_(0xcf)。 write_data(0。单片机课程设计_多功能定时器(编辑修改稿)
相关推荐
( 4) 32C j k B ( 5) 03 e xp ( )B B j ( 6) 3C 和 1A 分别是微环共振滤波器的下行端 (drop) 和上行端 (throughput) 的滤波输出振幅。 联立以上六个公式求得微环谐振滤波器的归一化功率输出 : 2 241 2 240( 1 ) ( 1 2 c o s )1 2 ( 1 ) c o s ( 1 )t h rA k u uPk
的瞬间对电容充电,所以输入交流电流 i 波形严重畸变,呈脉冲状(在滤波电容 C=1000uF,负载电阻 R=100 时,脉宽为 4mS)。 脉冲状的输入电流,含有大量谐波,一方面使谐波噪声水平提高,同时 AC— DC 整流 电路输入端必需增加滤波器,成本高,体积、重量大。 如果把基波分量定为 100%,则电流的三次谐波分量达 %,而五次谐波分量也达到 %,…
图 降压-升压变换电路图 方案二、推挽式升压电路,该电路输出电压既可以低于输入电压又可以高出输入电压。 且输出端与输入端以及输出端与输出端之间可以实现直流隔离。 当输入电压和负载波动时输出电压可以得到很好的调节,变压器绕组上承受脉冲 电压,脉冲幅值由输入电压和次级绕组匝数决定。 反馈设计合理的话,当输入电压和负载波动时输出电压可以得到很好的调节。 根据设计要求,并结合斩波变换电路的特性
飞 速发展,至今已被广泛应用于需要电能变换的各个领域。 正是由于它的飞速发展,各类电力电子装置作为重要的电器设备广泛地应用于各个领域,如:交直流可调电源、电力供电系统、电气传动控制与电化学生产等,而大多数的电力电子装置都是通过变流器与电网相连,传统的相控变流器因其具有电路结构简单、技术成熟、价格低廉等优点,在工业现场有着广泛应用。 但也存在一些,如:①网侧功率因数低;②输入电流谐波成分高的问题。
晶振电路EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U1AT89S5212J
统。 电路 可分为温湿度测量电路,显示电路, 主控电路。 选用的主要器件有:单片机 AT89C52,温湿度传感器 DHT11, 1602LCD 显示 器。 系统整体简介 LCD 液晶模块负责显示温湿度数值,采用 LCD1602具有较好的显示效果。 温湿度传感器模块采用数字式温湿度传感器 DHT11,该传感器 应用专用的数字模块采集技术和温湿度传感技术 ,确保 系统