基于51单片机和ds12c887时钟芯片的c语言程序内容摘要:
write_sfm(7,afen)。 write_sfm(10,amiao)。 } } } } void write_ds(uchar add,uchar date) {//写 12C887 函数 dscs=0。 dsas=1。 dsds=1。 dsrw=1。 P0=add。 //先写地址 dsas=0。 dsrw=0。 P0=date。 //再写数据 dsrw=1。 dsas=1。 dscs=1。 } uchar read_ds(uchar add) {//读 12C887 函数 uchar ds_date。 dsas=1。 dsds=1。 dsrw=1。 dscs=0。 P0=add。 //先写地址 dsas=0。 dsds=0。 P0=0xff。 ds_date=P0。 //再读数据 dsds=1。 dsas=1。 dscs=1。 return ds_date。 } /*首次操作 12C887 时给予寄存器初始化 void set_time() {//首次上电初始化时间函数 write_ds(0,0)。 write_ds(1,0)。 write_ds(2,0)。 write_ds(3,0)。 write_ds(4,0)。 write_ds(5,0)。 write_ds(6,0)。 write_ds(7,0)。 write_ds(8,0)。 write_ds(9,0)。 } */ void read_alarm() {//读取 12C887 闹钟值 amiao=read_ds(1)。 afen=read_ds(3)。 ashi=read_ds(5)。 } void main()//主函数 { init()。 //调用初始化函数 while(1) { keyscan()。 //按键扫描 if(flag_ri==1)//当闹钟中断时进入这里 { di()。 delay(100)。 di()。 delay(500)。 } if(flag==0amp。 amp。 flag1==0)//正常工作时进入这里 { keyscan()。 //按键扫描 year=read_ds(9)。 //读取 12C887 数据 month=read_ds(8)。 day=read_ds(7)。 week=read_ds(6)。 shi=read_ds(4)。 fen=read_ds(2)。 miao=read_ds(0)。 write_sfm(10,miao)。 //送液晶显示 write_sfm(7,fen)。 write_sfm(4,shi)。 write_week(week)。 write_nyr(3,year)。 write_nyr(6,month)。 write_nyr(9,day)。 } } } void exter() interrupt 2//外部中断 1服务程序 { uchar c。 //进入中断表 示闹钟时间到, flag_ri=1。 //设置标志位,用以大程序中报警提示 c=read_ds(0x0c)。 //读取 12C887 的 C寄存器表示响应了中断 } 代码 2: include include /**********************模式选择 *******************/ void keyscan1() { if(s4==0)。 { delay(5)。 if(s4==0) { s4num++。 while(!s4)。 switch(s4num) { case 1: flag1=~flag1。 if(flag1==1) //打铃时间间隔设置标志位(防止在设置时显示时间) { //把闹铃的寄存器作为打铃的寄存器使用 read_alarm()。 //先读取闹铃时间 miao=amiao。 //在把闹铃值赋给时间值用以调节 fen=afen。 shi=ashi。 write_(0x80+0x40)。 write_date(39。 R39。 )。 //显示标志 write_date(39。 i39。 )。 write_(0x80+0x40+3)。 display(0x40+4,ashi)。 //显示间隔时间 display(0x40+7,afen)。 display(0x40+10,amiao)。 } break。 /************************************/ case 2: flag1=~flag1。 if(flag1==0) //清除标志位 { flag=0。 write_(0x80+0x40)。 write_date(39。 39。 )。 //清除打铃时间间隔标志位 write_date(39。 39。 )。 write_(0xc0)。 write_ds(1,miao)。 //储存间隔时间 write_ds(3,fen)。 write_ds(5,shi)。 } /***********************/ flag_paobiao=~flag_paobiao。 miao_pb=0。 //先把跑表值都赋为 0 fen_pb=0。 tt=0。 while(!s2)。 if(flag_paobiao==1) { init_paobiao()。 } /************************************/ break。 case 3: flag_paobiao=~flag_paobiao。 if(flag_paobiao==0) { write_(0x80+0x40)。 write_date(39。 39。 )。 write_date(39。 39。 )。 } /******。基于51单片机和ds12c887时钟芯片的c语言程序
相关推荐
,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1, 0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xFF,0xC7,0xFF,0xC7,0xFF,0x00,0x00,0x00,0x00,
即通信信道。 发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射信号。 接收端将接收到的信号装成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制信号后输出。 常用的有通过脉冲宽度来实现信号调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制( PPM)两种方法。 简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输
if(h2==4amp。 amp。 h1==2) { h2=0。 h1=0。 } write_(0x80+0x40+0x01)。 write_date(table2[h1])。 write_date(table2[h2])。 write_ds(0x84,h1*16+h2)。 //向 ds1302中写入时 } } else if(temp==0x0b) { delay(5)。
2) 电机速度采集算法 本系统中电机速度采集是一个非常重要的部分,它的精度直接影响到整个控制的精度。 在设计中采用了 红外 传感器做为测速装置,其计算公式为: 这里主要是采集圆盘边缘上凹槽数的多少决定 的,圆盘有 4 个凹槽,每转一圈便会产生4 个脉冲,通过上面的等式就可得出电机的转速。 主 程序流程 主流程图如图 11 所示: 9 图 11 主程序流程图 其中中断初始化中设置为定时器 TO
就具体专题设计的单科课程 课程单元 课程的章节或单元模块 2020116 Private and Confidential 17 课程体系设计 M3 高级经理人培训 M2 中级经理人培训 管理技能 M1 初级经理人培训 市 客 专 生 人 财 行 场 户 业 产 力 务 政 营 服 业 作 资 管 文 销 务 务 业 源 理 秘 专业技能 系 系 系 系 系 系 系 列列 列列 列列 列列 列列
精心设计的课堂提问主动积极地阅读语篇信息,理解语言现象,解决语言问题。 在这一过程中,学生始终是学习的主体,因而会有强烈的成就感,从而激发学生学习英语的浓厚兴趣,进而培养了学生自主学习英语的方法和习惯。 教师的提问要讲究技巧,应尽量避免学生机械回答的简单问题,多提一些能让学生开动脑筋的启发性问题。 ( 2)、小组交流和讨论。 待学生熟练掌握了 课文内容、对课文的理解达到一定的深度后