//==声明区=================================================
#include<reg51.h>//定义8051寄存器的头文件,P2-17~19
#define SEG P0 //定义七段LED数码管接至Port 0
/*声明七段LED数码管驱动信号数组(共阳)*/
char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99, //数字0-4
0x92,0x83,0xf8,0x80,0x98}//数字5-9
void delay(int) //声明延迟函数
//==主程序==========================================
main() //主程序开始
{ unsigned char i//声明无符号变量i
while(1)//无穷循环,程序一直跑
for(i=0i<10i++) //显示0-9,共10次闭虚族
{ SEG=TAB[i]//显示数字
delay(500) //延迟500×1m=0.5秒
} //for循环结束
} //主程序结束
//==子程序==========================================
/* 延迟函数,延迟约x×1ms */
void delay (int x) //延迟函数誉逗开始
{int i,j //声明整形变量i,j
for (i=0i<xi++) //计数x次,延迟x×1ms
for (j=0j<160j++) //计数120次,延迟1ms
} //延迟函数结束轿弊
data segmentbuf db " __ ",13,10
db "| |",13,10
db " ",196,196," ",13,10
db "| |",13,10
db " ",196,196," ",13,10,36
res db 31 dup(?)
table db 1,6,8,13,18,20,25
led db 0EEh,24H,0BAH,0B6H,74H,0D4H,0DEH,0A4H,0FEH,0F6H,0FCH,5EH,0CAH,3EH,0DAH,0D8H
timer db 5
data endscode segment
assume cs:code,ds:data,es:data
main proc near
start:
mov ax,data
mov ds,ax
mov es,axagain:
lea si,buf
lea di,res
mov cl,31
cld
rep movsb
mov ah,06h
xor al,al
mov bh,7
xor cx,cx
mov dx,186Fh
int 10h
mov bh,0
mov dx,0
mov ah,2
int 10h
xor bx,bx
mov bl,timer
and bl,0fh
mov al,led[bx]
inc bl
mov timer,bl
mov cl,7
lea di,table
move:
rol al,1
jc next
mov bl,[di]
mov si,bx
mov res[si],20h
mov res[si+1],20h
next:
inc di
loop move
lea dx,res
mov ah,09h
int 21h
mov ah,0bh
int 21h
cmp al,0
jnz exit
mov bl,5
N: mov cx,33144
call time
dec bl
jnz N
jmp again
exit:
mov ah,4ch
int 21h
main endptime:
T1:
in al,61h
and al,10h
cmp al,ah
je T1
mov ah,al
loop T1
ret
code ends
end start
1.题目及要求1.1题目:七段码电子表显示程序
1.2要求
1.七段码电子表显示程序
2.菜单选择:设置时,分,秒,开始,退出等
3.模拟七段码管显示时,分,秒
4.要求界面美
2.功能设计
说明:esc键退出 s键设置时间
数据段
(1)Disptime , showtime 显示时钟
(2)定义定义0-9十个图形数字,以便模拟七段码显示时钟
宏定义
(1)Clear定义清屏宏
(2)rowcol 定义光标定位宏
(3)crlf 回车换行宏
(4)display显示字符串宏
(5)change 计算时间宏
函数
(1) main 主函数
(2) play 主要完成显示七段码电子表显示
(3) prog0 到prog10完成七段码到一般显示的转换
(4) moveshape 显示七段码电子表
(5) delay 延迟函纳扒肢数
(6) exit 返回DOS函数
3.设此卜计详细
3.1设计方法
(1)Clears清屏宏 用到了BIOS中断06H。
(2)rowcol光标定位宏 用到了BIOS中断02H。
(3) crlf 回车换行宏 用到了DOS中断的0ah, 0dh
(4) display显示字符串宏 用到了DOS中断的09h
(5) change 计算时间宏 用户自己定义的宏,方便以后使用
(6)main 主函数 主要调用子函数实现功能
(7)delayr 延迟函数 用双重循环实现,根据不同机子设置不同的参数
(8)exit 返回DOS函数 ,也就是结束函数。调用int 21h中的04h
(9) moveshape 显示七段码电子表函数。利用int 21h中的09h
目 录
1题目及要求2
2功能设计2
3详细设计2
3.1设计方法2
3.2流程洞世图2
3.3重点,难点6
4总结心得体会7
5参考文献7
6附:源程序7 谢谢请采纳
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)