[电子电路]基于stc89c52单片机的数字时钟设计内容摘要:
} } 16 /******************DS18B20 驱动程序 *******************/ void delay_18b20(unsigned int i)//延时函数 { while(i)。 }//18b20 初始化函数 void Init_DS18B20(void) { unsigned char x=0。 DQ = 1。 //DQ 复位 delay_18b20(8)。 //稍做延时 DQ = 0。 //单片机将 DQ 拉低 delay_18b20(80)。 //精确延时 大于 480us DQ = 1。 //拉高总线 delay_18b20(10)。 x=DQ。 //稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败 delay_18b20(5)。 }//读一个字节 unsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat = 0。 for (i=8。 i0。 i) { DQ = 0。 // 给脉冲信号 dat=1。 DQ = 1。 // 给脉冲信号 if(DQ) dat|=0x80。 delay_18b20(5)。 } return(dat)。 }//写一个字节 void WriteOneChar(unsigned char dat) { unsigned char i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = datamp。 0x01。 delay_18b20(5)。 DQ = 1。 dat=1。 } delay_18b20(5)。 17 }//读取温度 unsigned int ReadTemperature(void) { unsigned int a=0。 unsigned int b=0。 unsigned int t=0。 float tt。 Init_DS18B20()。 WriteOneChar(0xCC)。 // 跳过读序号列号的操作 WriteOneChar(0x44)。 // 启动温度转换 delay_18b20(200)。 Init_DS18B20()。 WriteOneChar(0xCC)。 //跳过读序号列号的操作 WriteOneChar(0xBE)。 //读取温度寄存器等(共可读 9 个寄存器) 前两个就是温度 a=ReadOneChar()。 b=ReadOneChar()。 t=b。 t=8。 t=t|a。 tt=t*。 t=tt*10+。 return(t)。 } /************一级主界面显示函数 ************/ void first_interface() { LCD1602_write_string(0,0,20)。 LCD1602_write_data(Read1302(0x8d)/16+0x30)。 // 十年 LCD1602_write_data(Read1302(0x8d)%16+0x30)。 // 年 LCD1602_write_data(0)。 //显示自定义字符“年” LCD1602_write_data(Read1302(0x89)/16+0x30)。 // 十月 LCD1602_write_data(Read1302(0x89)%16+0x30)。 // 月 LCD1602_write_data(1)。 //显示自定义字符“月” LCD1602_write_data(Read1302(0x87)/16+0x30)。 // 十日 LCD1602_write_data(Read1302(0x87)%16+0x30)。 // 日 LCD1602_write_data(2)。 //显示自定义字符“日” if(Read1302(0xd7)) LCD1602_write_char(9,1,5)。 //显示自定义字符贪睡标志 else LCD1602_write_char(9,1,39。 39。 )。 LCD1602_write_string(12,0,week[Read1302(0x8b)1])。 //显示星期 if(Read1302(0xc7)||Read1302(0xcf)) LCD1602_write_char(10,1,3)。 //显示自定义字符闹钟标志 else LCD1602_write_char(10,1,39。 39。 )。 LCD1602_write_char(0,1,Read1302(0x85)/16+0x30)。 // 十时 18 LCD1602_write_data(Read1302(0x85)%16+0x30)。 // 时 LCD1602_write_data(39。 :39。 )。 LCD1602_write_char(3,1,Read1302(0x83)/16+0x30)。 // 十分 LCD1602_write_data(Read1302(0x83)%16+0x30)。 // 分 LCD1602_write_data(39。 :39。 )。 LCD1602_write_char(6,1,Read1302(0x81)/16+0x30)。 //十秒 LCD1602_write_data(Read1302(0x81)%16+0x30)。 //秒 temp=ReadTemperature()。 temp=temp。 temp1=temp/100。 temp2t=temp%100。 temp2=temp2t/10。 temp3=temp2t%10。 temp4=temp3%100/10。 LCD1602_write_char(11,1,temp1+0x30)。 //温度显示 LCD1602_write_data(temp2+0x30)。 LCD1602_write_data(0x2E)。 LCD1602_write_data(temp3+0x30)。 LCD1602_write_data(4)。 } /****************定时器 2 初始化函数 ***********停表 用 *************/ void init_timer2() { T2CON=0。 T2MOD=0。 RCAP2H=(6553610000)/256。 //10ms RCAP2L=(6553610000)%256。 TH2=(6553610000)/256。 //10ms TL2=(6553610000)%256。 EA = 1。 ET2 = 1。 TR2 = 1。 } /**************定时器 1 初始化函数 ************* 贪睡用 **************/ void init_timer1() { TMOD=0x10。 TH1=(6553610000)/256。 //10ms TL1=(6553610000)%256。 EA = 1。 ET1 = 1。 TR1 = 1。 } /************二级菜单显示函数 ************/ 19 void second_interface() { LCD1602_write_char(0,(menu_num*3)%2,0x7E)。 //三角形指示符号 LCD1602_write_char(0,!((menu_num*3)%2),39。 39。 )。 //清除残留显示三角形 if(!((menu_num*3)%2)) //判断是否要往液晶写入显示 ,menu_num 每跳变 2 时写一次 { LCD1602_write_string(1,0,menu[menu_num])。 // 1602 液晶第一行显示 LCD1602_write_string(1,1,menu[menu_num+1])。 // 1602 液晶第二行显示 } else if((menu_num*3)%2) //防止从三级界面回来时二级界面不显示了 { LCD1602_write_string(1,0,menu[menu_num1])。 // 1602 液晶第一行显示 LCD1602_write_string(1,1,menu[menu_num])。 // 1602 液晶第二行显示 } } /************三级菜单显示函数 ************/ void third_interface() { switch(menu_num) { case 0 : { if(!position1) //时间设置界面 ,仅进入三级菜单界面时刻显示一下 { LCD1602_write_string(0,0,20)。 LCD1602_write_data(Read1302(0x8d)/16+0x30)。 // 十年 LCD1602_write_data(Read1302(0x8d)%16+0x30)。 // 年 LCD1602_write_data(0)。 //显示自定义字符“年” LCD1602_write_data(Read1302(0x89)/16+0x30)。 // 十月 LCD1602_write_data(Read1302(0x89)%16+0x30)。 // 月 LCD1602_write_data(1)。 //显示自定义字符“月” LCD1602_write_data(Read1302(0x87)/16+0x30)。 // 十日 LCD1602_write_data(Read1302(0x87)%16+0x30)。 // 日 LCD1602_write_data(2)。 //显示自定义字符“日” LCD1602_write_string(12,0,week[Read1302(0x8b)1])。 //显示星期 LCD1602_write_char(0,1,Read1302(0x85)/16+0x30)。 // 十时 LCD1602_write_data(Read1302(0x85)%16+0x30)。 // 时 LCD1602_write_data(39。 :39。 )。 LCD1602_write_char(3,1,Read1302(0x83)/16+0x30)。 // 十分 LCD1602_write_data(Read1302(0x83)%16+0x30)。 // 分 LCD1602_write_data(39。 :39。 )。 LCD1602_write_char(6,1,Read1302(0x81)/16+0x30)。 //十秒 LCD1602_write_data(Read1302(0x81)%16+0x30)。 //秒 20 LCD1602_write_cmd(0x80+3)。 //第一次进入三级菜单时将光标放的位置 position1=1。 } }break。[电子电路]基于stc89c52单片机的数字时钟设计
相关推荐
____。 A、主页 B、搜索 C、收藏 D、历史 1 现在 Inter 上的电子书籍多数采用 PDF 格式存储和传递,这种格式的文件是用 ____软件来打开并阅读的。 A、 Microsoft Office B、 Real Player C、 Adobe Acrobat Reader D、 ACDsee 13 Outlook Express 可用来 ____邮件。 13 A、接收 B、发送 C
要素,以创造性的 人力资源 为依托的经济 . (填空 ) 2. 智商的英文缩写为 ( IQ) ,情商的英文缩写为 ( EQ ). (填空 ) 3. 体能强度是指与人的体力相关的生理学意义上的 (器官)或(系统发育)情况及(健康) 状况。 (填空 ) 4. 对于每个人的信念来说,能起支撑作用的,则是人的 (意志)与(毅力)。 (填空 ) 5. 人类的一些认识活动大多以思维的 (间接性) 作为基础。
师培养目标 专业特色 1. 2 卓越工程师培养目标 卓越工程师培养模式与机制设计臼哩其儿 诬绘言蔓驭批挥瞻浩斟漏热强糠辞吉悲俏霍桃霸梅傀枕眉斜鲜冕榜敌洞蚁褪援痔夷饲条悄辟咀晚黔截术律痛卷她鸣岔遥郎妹拓齿杏抵楼在 在本科培养阶段中,着力加强学生对工程实践的了解、专业知识与应用的结合。 注重培养学生建立良好的工程素养,优秀的学习能力以及较强的协作沟通能力。
=1864H,求下列每条指令执行后的结果是什么。 标志位CF 等于什么。 (1)AND AH,CL (2)OR BL,30H (3)NOT AXSPSP10500H……60H48HSP……10500H 10500H……48H60H12H87HSP48H60H12H87H10500HSP(4)XOR CX,0FFF0H (5)TEST DH,0FH (6)CMP CX,00H(7)SHR DX
成短路而烧毁电机的装置,主要是通过隔离腔连接井液与电机油来完成这一功能。 油气分离器 它安装在泵的液体吸入口处,先把气体分离出来,防止和减少气体进泵,保证电泵具有良好的工作 特性。 潜油电缆 作用:地面向井下机组传输电力。 二、影响电泵工作特性的因素分析 含气液体对电泵工作特性的影响 杨程 、排量及效率下降; 游离气体过多时,叶轮流道的大部分空间被气体占据,将会使离心泵停止供液。
最大弯矩(在 F点处)为: ; 最大剪力(在 F 点处)为: kN; 下横杆( EBF) 轴力为: kN(受压); 前斜拉杆( DF) 轴力为: kN(受拉); 中竖杆( BD)轴力为: kN(受压); 后斜拉杆( DE) 轴力为: kN(受拉); 集中力处下沉量约 15mm。 σ = M/W =253100/( 2180 106) =< [σ ]=200 MPa,拉应力满足要求; τ