找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4947|回复: 1
打印 上一主题 下一主题
收起左侧

急需高手帮助

[复制链接]
跳转到指定楼层
楼主
ID:24640 发表于 2010-6-22 12:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
急求单片机课程设计 要求:用4位数码管显示,范围从00.00-99.99s 三个按键:1、开始2、暂时3、复位,用AT89C51实现,用汇编语言做程序,谢谢各位!~~~必重谢!~~ 一定要事汇编啊!~~~~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:23004 发表于 2010-6-22 17:15 | 只看该作者

哥们给个两位显示的给你瞧瞧吧!!!

/*数码管的显示,动态显示,数码管显示两位精确秒计时,从这个例子可以学习定时器的使用,也可从这个例子扩展一个时钟程序*/
/*效果:精确的秒计时,数码管显示两位计数,可扩展成时钟*/

 

;----------------定义数据RAM空间-------------------------------
 LDB EQU 36H ;定义一个变量存放显示值
 LCC EQU 37H ;定义一个变量存放计数值
;-----------数据存放----------------------
ORG 0100H
TABLE: DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;表:共阳数码管 0-9

ORG 0000H
LJMP MAIN
ORG 000BH ;定时器中断入口
LJMP TIMER

ORG 0200H
MAIN: MOV TMOD,#01H ;设置定时器1为1模式,即16位计算模式
 MOV TH0,#3CH ;给计数寄存器复值,50毫秒时间
 MOV TL0,#0B0H
 MOV IE,#82H ;开总中断和T0中断
 SETB TR0 ;启动定时器0
 MOV LDB,#0 ;显示缓冲清0
 MOV LCC,#0 ;计数缓冲清0
 
M1: MOV A,LCC
 CJNE A,#20,M2 ;计数20次50毫秒即为1秒
 MOV LCC,#0 
 INC LDB  ;显示缓存加1
 MOV A,LDB ;
 CJNE A,#100,M2 ;如果加到100,则清0
 MOV LDB,#0
M2: MOV A,LDB ;用A来传递数据显示
 LCALL DISPLAY
 LJMP M1 


TIMER: INC LCC  ;定时中断产生,计数加1
 MOV TH0,#3CH ;重新装入定时器值50毫秒
 MOV TL0,#0B0H
 RETI  


DISPLAY:MOV DPTR,#TABLE ;数码管显示子程序
 MOV B,#10
 DIV AB 
 CLR P1.0 ;选择十位数码管,即第二位数码管,当然也可以选择其它位
 SETB P1.1 
 SETB P1.2
 MOVC A,@A+DPTR ;查表输出定义好的数码管段值与P0口,显示相应的0-9
 MOV P2,A
 LCALL DELAY ;延时,停留一会,让人眼感触到它的亮度
 MOV P2,#0 ;清除数码管显示

 SETB P1.0 ;选择个位数码管,即第一位数码管,当然也可以选择其它位
 SETB P1.1 
 SETB P1.2
 MOV A,B  ;个位显示
 MOVC A,@A+DPTR ;查表输出定义好的数码管段值与P0口,显示相应的0-9
 MOV P2,A
 LCALL DELAY ;延时,停留一会,让人眼感触到它的亮度
 MOV P2,#0 ;清除数码管显示
 RET

DELAY: MOV R7,#10 ;延时子程序
 DJNZ R7,$
 RET
END

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表