焊接控制技术服务资讯平台         中软创芯电子 | 发布信息 | 设为首页 | 加入收藏

     

首页   焊接专栏   产品展示   技术频道   资讯快递   技术应用   供求信息   开发案例   联系我们
 点焊机控制器|焊接设备控制器|控制板开发订制
站内搜索:
推荐文章
基于NiosⅡ的直流电机PID调速控..
基于ARM的单相电力计量装置现场..
基于单片机C8051F130的远程在线..
基于VB与单片机技术的温度测控..
基于混沌蚁群的神经网络速度辨..
基于CANOPEN协议的智能消防水炮..
CC2430与DS18B20的粮库温度传感..
声传感器网络节点的硬件系统设..
基于Lonworks现场总线的机房监..
基于Windows CE的超市预收款系..
基于单片机及CPLD技术的B超检测..
施耐德QUANTUM PLC在炼钢转炉..
变频器在中央空调和采暖通风空..
嵌入式以太网数字语音广播系统..
基于μC/OS-Ⅱ的线控转向Fle..

 首页 >> 技术频道 >> 单片机技术
单片机数字时钟设计程序(采用AT89C51)
焊接技术网   时间:2009-12-24

;***************************************************************************************
;******** time_set 设置时间 *******************************************************
; *                                        *
; *    检测用户按键,1-> 设置时单元 2-> 设置分单元,3->设置增减方式      *
; *    如果需要增加 时,先将方式设置为 增加(默认为减),即,按下 KEY3一下,  *
; *    然后按 KEY1 ,如果要减少时单元,需要再次按下KEY3,然后按KEY1;      *
; *    分的设置也是如此。                           *
;***************************************************************************************
  time_set:mov p0,#00h         ;禁止数码管显示
       mov p2,#255         ;防止按键时闪烁
       lcall pro_key        ;查找用户按键情况
       mov a,key          ;查找键值
       jz tsend          ;如果等于0,表示没用按键,直接返回
       cjne a,#1,tset1       ;是否等于1?没有到下一个处理程序
       mov key,#00h        ;等于1,表示设置时 请零,否则会引起重复设置
       jb timset,tset10      ;时间设置标志位,1 ->减少,0->增加
       mov a,t_h          ;标志位 0 ,增加,取得时单元
       cjne a,#23,ts1       ;如果时单元不等于23,转移到增加操作
       jmp tsend          ;等于23 直接返回
     ts1:inc t_h           ;时单元增加1
       jmp tsend          ;返回
   tset10: mov a,t_h          ;这里处理为减少的情况
       jz tsend           ;如果时单元为0,直接返回
       dec t_h           ;否则,数据减1
       jmp tsend          ;返回,以下关于分的设置一样
    tset1:cjne a,#2,tset2       ;如果按键不是 2 则 转移到下一个处理
       mov key,#00h        ;是2,表示设置 分
       jb timset,tset20      ;其余同上
       mov a,t_m
       cjne a,#59,
       ts2 jmp tsend
     ts2:inc t_m
       jmp tsend
   tset20:mov a,t_m
       jz tsend
       dec t_m
       jmp tsend
    tset2:cjne a,#3,tsend       ;等于 3 表示设置标志
       mov key,#00h        ;清零
       cpl timset         ;标志取反
    tsend:ret             ;返回
;********* 按键处理 读取键盘 *************************
;参见有关键盘查询的说明,和前面的有关程序
   pro_key:              ;键盘查询子程序
       setb key1           ;首先输出高电平,检测低电平的到来
       setb key2          ;不同电路,可能检测方式不一样
       setb key3
       jb key1,ke1        ;如果用户没有按第一个键,到第下个处理部分,
       mov key,#1         ;表示用户按了第一个键
       lcall delay20ms       ;软件延时,防止干扰
       jmp pro_key         ;重新查询,直到用户释放按键
     ke1:jb key2,ke2        ;处理第二个按键,如果没有到下一个处理部分
       mov key,#2         ;以下和第一个处理单元相似。
       lcall delay20ms
       jmp pro_key
     ke2:jb key3,ke3
       mov key,#3
       lcall delay20ms
       jmp pro_key
     ke3:ret
;**************************************
;******** 定时器 T0 设置 **************
;定时器工作在方式1,为提高精度,总定时时间为50ms,
;定时器溢出20次为1秒,

  pro_timer:mov tmod,#01h        ;设置定时器为定时方式1
       mov th0,#0ffh        ;初始化定时初值
       mov tl0,#0a1h        ;
       setb ea           ;总中断允许
       setb et0           ;定时器0 允许
       setb tr0           ;开始定时
       ret              ;返回
; *****************************************
; *************** 软件延时 *************
    delay:push psw          ;保存原来的寄存器内容
       clr psw.3          ;
       clr psw.4          ;设置新的寄存器组
       mov r0,#2          ;延时参数1
       mov r1,#250         ;延时参数2
       mov r2,#2          ;延时参数3
     dl1:djnz r0,dl1         ;延时循环1
       mov r0,#250         ;
     dl2:djnz r1,dl1         ;延时循环2
       mov r0,#240         ;
       mov r1,#248         ;
     dl3:djnz r2,dl1         ;延时循环3
       nop             ;定时精度调整
       pop psw           ;恢复原来的寄存器
       ret             ;返回
;*****************************************
;*************** 键盘延时 ***************
  delay20ms:push psw
       clr psw.3
       clr psw.4
       mov r0,#250
       mov r1,#40
     d20:djnz r0,d20
       mov r0,#250
       djnz r1,d20
       pop psw
       ret
;**************************************
;*********** 延时 5ms ****************
  delay5ms:push psw
       clr psw.3
       setb psw.4
       mov r0,#250
       mov r1,#10
     d5:djnz r0,d5
       mov r0,#250
       djnz r1,d5
       pop psw
       ret
;************************************************************************************
;这是数字显示表格,其中 带小数点的数字比不带小数点的数字大16
; 比如 0 的显示代码为 0;那么 0.的显示代码为 16;如此类推
   tab_nu:db 0c0h, 0f9h, 0a4h, 0b0h, 99h , 92h , 82h, 0f8h   ;数字0-7 不带小数点代码
       db 80h , 90h, 88h , 83h , 0c6h, 0a1h, 86h, 8eh    ;数字8-f 不带小数点代码
       db 40h , 79h, 24h , 30h , 19h , 12h , 02h, 78h    ;数字0-7 带小数点代码
       db 00h , 10h, 08h , 03h , 46h , 21h , 06h, 0eh    ;数字8-f 带小数点代码
       end ;

 
第1页 第2页
>>上一篇: 专家详解闪存盘数据丢失原因
>>下一篇: 交通灯控制系统的设计_AT学习方法
打印】 【关闭
【资讯版权声明】
 1. 本站所提供资源均为原文章或程序作者提供和网友推荐收集整理而来,仅供学习和研究使用,不得用于商业用途。
 2. 本网转载自其它媒体的信息,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
 3. 未经本站明确许可,任何网站不得非法盗链软件下载连接及抄袭本网站原创内容资源。
 4. 违反上述声明者,本网将追究其相关法律责任。谢谢!

关于创芯  开发案例  版权声明  友情连接  联系我们 
Copyright©2006-2012 焊接技术网 | 中软创芯 版权所有
电话:0755-33370966 传真:0755-33373106 E-mail:szbase@126.com QQ:1092081589
致力于焊接控制技术应用推广|点焊机控制器|对焊机控制器|缝焊控制器|电阻焊控制器|控制器设计订制
本站资源仅供学习参考,部分内容来源于网络,如侵犯您的版权,请通知本站即撤
ICP备案序号:粤ICP备10019209号