电子琴软件设计源程序.doc
《电子琴软件设计源程序.doc》由会员分享,可在线阅读,更多相关《电子琴软件设计源程序.doc(17页珍藏版)》请在沃文网上搜索。
1、data segment;-进度条字符-st_load db 10 ;起始行db 4 ;起始列db 0bh ;字体颜色db *db 00;-字符定义-start_col db ? ;存储起始行text db 14 ;起始行db 2 ;起始列db 0fh ;字体颜色db AUTOMATION 0902 herun ,0ffh,0ffh ;显示字db happy new year!,0ffh ;以0ffh来判断是否换行db -1-2-3-4-5-6-7-,0ffhdb H q w e r t y u p: play,0ffhdb M a s d f g h j enter: stop,0ffhdb
2、 L z x c v b n m Esc: exit,0ffhdb 1/2: speed down/up,0ffhdb 00;-白色琴键坐标-st_lx dw 50,61,72,83,94,105,116 ;起点横坐标dw 127,138,149,160,171,182,193dw 204,215,226,237,248,259,270st_y dw 50 ;起点纵坐标ed_lx dw 60,71,82,93,104,115,126 ;终点横坐标dw 137,148,159,170,181,192,203dw 214,225,236,247,258,269,280ed_y dw 90 ;终点纵
3、坐标;-黑色琴键坐标-bt_x dw 57,68,90,101,112 ;起点横坐标dw 134,145,167,178,189dw 211,222,244,254,265bt_y dw 50 ;起点纵坐标bd_x dw 64,75,97,108,119 ;终点横坐标dw 141,152,174,185,196dw 218,229,251,262,273bd_y dw 70 ;终点纵坐标;-音乐频率值-tune dw 220,247,278,294,330,371,416 ;低音dw 441,495,556,589,661,742,833 ;中音dw 882,990,1112,1178,132
4、2,1484,1655 ;高音soundcolor dw 0 ;音色缓存,用于改变播放或弹奏时琴上音响和琴面上点阵的颜色key_tune dw 0 ;按键状态缓存,用于判断是否有手动按键,1为有,0为无keynum dw 1 ;按键编号缓存,用于提取对应的按键位置delay_time dw 7000 ;延时缓存,用于播放时存入bx中来计数;-自动演奏的歌曲频率和延时-新年好mus_freq dw 441,441,441,330,556,556,556,441 dw 441,556,661,661,589,556,495 dw 495,556,589,589,556,495,556,441 dw
5、 441,556,495,330,416,495,441 dw -1 ;以后以-1来判断是否结束;-声音节拍部分,32为一拍-mus_time dw 4,4,8,8,4,4,8,8dw 4,4,8,8,4,4,16dw 4,4,8,8,4,4,8,8dw 4,4,8,8,4,4,32data ends ;*代码段*code segmentassume ds:data,cs:code;-主程序-;-依次调用:开场效果-初始化-键盘扫描-按键处理程序-main proc farstart: call show_load ;调用进度条显示程序;-延时20*waitf-push bx mov bx,2
6、0del: call waitfdec bxjnz delpop bx;-重新开始-restart: ;自动播放音乐时,按enter键或音乐完全结束后会返回这里call init ;调用初始化程序new_scan: ;键盘扫描程序没有检测到功能键被按下时,会返回这里call scan_key ;调用键盘扫描程序,扫描所按下的键;-按键处理-call do_key;-重新扫描-jmp new_scan ;重新扫描有无键按下,直到按下esc键main endp;*矩形绘制宏*draw macro start_x,start_y,end_x,end_y,colorlocal draw_next;lo
7、cal:避免宏重复调用时?56946 .标号的重复;功能:画填充的矩形;使用条件:start_x end_x ,start_y end_ypush ax ;堆栈push bxpush cxpush dxmov ah,0ch ;12号功能,像素mov al,color ;取颜色值mov bh,0 ;页号0mov cx,start_x ;列起始点mov dx,start_y ;行起始点draw_next:int 10h ;画点inc cx ;画横线cmp cx,end_x ;比较行是否画完jne draw_next ;画另一行mov cx, start_x ;另一行的起始点inc dx ;下一行c
8、mp dx,end_y ;比较列是否画完jne draw_next ;未完继续画pop dx ;出栈pop cxpop bxpop axendm;*矩形点阵绘制宏*draw_point macro start_x,start_y,end_x,end_y,colorlocal draw_next;local:避免宏重复调用时,标号的重复;功能:画矩形点阵;使用条件:start_x end_x ,start_y 80htest al,80h ;al和80h相与,影响标志位jz wait1 ;未放开则继续延时mov al,ah ;恢复8255端口61h的状态,关扬声器out 61h,al;-pop
9、di ;恢复寄存器状态pop dxpop cxpop bxpop ax;-retplay_hand endp;*自动播放发声程序*;-功能:自动播放音乐时发声。play_auto proc near;-push ax ;保存寄存器状态push bxpush cxpush dxpush di;-mov al,0b6h ;在8253的43端送出一个控制字0b6h(10110110b)out 43h,al ;从而对定时器2初始化,准备接收计数初值mov dx,12h ;1.1931Mhz/给定频率=12348h/给定频率=计数初值mov ax,348ch ;12348h存入DX:AX中,作32位运算
10、,商存入AX,余数存入DXdiv di ;di中存放给定频率out 42h,alin al,61h ;给定时器2写入AX中存放的计数初值mov al,ahout 42h,alin al,61hmov ah,al ;把8255输出端的61h的0、1两位置1,并把端口状态存入ahor al,3 ;打开扬声器out 61h,al;-音响和琴面点阵闪烁程序-cmp soundcolor,1 ;取音色缓存值:与1比,为0则用color1方案,为1则用color2方案jnz color1 ;跳到color1方案jmp color2 ;跳到color2方案;-color1方案-color1:draw_poi
11、nt 40,52,44,92,0fh ;调用矩形点阵宏,绘制音响孔左draw_point 288,52,292,92,0fh ;调用矩形点阵宏,绘制音响孔右draw_point 150,34,282,38,07h ;调用矩形点阵宏,绘制正面音孔mov soundcolor,1 ;此时音色缓存值从0变1jmp wait2 ;延时;-color2方案-color2:draw_point 40,52,44,92,07h ;调用矩形点阵宏,绘制音响孔左draw_point 288,52,292,92,07h ;调用矩形点阵宏,绘制音响孔右draw_point 150,34,282,38,0fh ;调用
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子琴 软件设计 源程序