求单片机实验七段数码管显示实验程序

求单片机实验七段数码管显示实验程序,第1张

/* ch03-3-4.c - 七段LED数码管实验程序 */

//==声明区=================================================

#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 segment

buf 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 谢谢请采纳


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12557895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存