ImageVerifierCode 换一换
格式:DOCX , 页数:49 ,大小:239.28KB ,
资源ID:16523173      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16523173.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PROTUES单片机实验Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PROTUES单片机实验Word下载.docx

1、数码显示管51单片机的Proteus实验51单片机的一个I/O口接4个开关,再通过另一个I/O口控制7段数码显示管显示想要的数字。单片机AT89C51,共地的7段数码显示管7SEG-COM-AN-GRN,开关SW-SPST。汇编程序源码汇编后139字节。 sjmp STARTorg 30h mov P1,#0FFh ;st1: mov P2,#0FFh ;准备读数(开关状态) mov A,P2 ;读数 anl A,#0Fh ;取低四位 acall SEG7 ;调用显示码子程序 mov P1,A ;将得到的显示码送数显管显示 sjmp st1 ;循环SEG7: inc A ;该子程序实现将数字转

2、换为显示码 movc A,A+pcret DB 0c0h,0F9h,0a4h,0b0h DB 99h,92h,82h,0F8h DB 80h,90h,88h,83h DB 0c6h,0a1h,86h,8ehC语言程序源码用C语言写了一下实现同样功能的程序,编译后1.39K,代码如下:#includeint main() P1 = 0xff; while(1) P2 = 0xff; ACC = P2; ACC &= 0xf; switch(ACC) case 0: P1 = 0xc0; break; case 1: P1 = 0xf9; case 2: P1 = 0xa4; case 3: P1

3、 = 0xb0; case 4: P1 = 0x99; case 5: P1 = 0x92; case 6: P1 = 0x82; case 7: P1 = 0xf8; case 8: P1 = 0x80; case 9: P1 = 0x90; case 10: P1 = 0x88; case 11: P1 = 0x83; case 12: P1 = 0xc6; case 13: P1 = 0xa1; case 14: P1 = 0x86; case 15: P1 = 0x8e; while(1);用数组实现,更大(1.51K),代码如下: int ledNum16 = 0xc0,0xf9,0

4、xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; P1 = ledNumACC;蜂鸣器51单片机的Proteus实验51单片机的一个I/O口接7个按钮,再通过另一个I/O口控制蜂鸣器发出声音。单片机AT89C51,蜂鸣器speaker,按钮button。晶振12M,已在Proteus下测试,听起来声音差不多。 ORG 0 SJMP STARTDLY: MOV R2,#20 ;延时程序D1: MOV R3,#248 DJNZ R3,$ DJNZ R2,D1 RET ORG 30H MOV TMOD,#1 ;

5、定时器0方式1 MOV P3,#0FFH ;P3准备读数 JNB P3.0,DODO ACALL DLY JNB P3.1,RERE JNB P3.2,MIMI JNB P3.3,FAFA JNB P3.4,SOSO JNB P3.5,LALA JNB P3.6,XIXI JNB P3.7,DO2DO2DODO: LJMP DORERE: LJMP REMIMI: LJMP MIFAFA: LJMP FASOSO: LJMP SO LALA: LJMP LAXIXI: LJMP XIDO2DO2: LJMP DO2DO: MOV TH0,#0FBH MOV TL0,#44H SETB TR0

6、;开启定时器 JNB TF0,$ ;等待定时到 CLR TF0 ;清除中断 CPL P2.7 ;喇叭 JNB P3.0,DO CLR TF0RE: MOV TL0,#88H SETB TR0 JNB TF0,$ CPL P2.7 JNB P3.1,REMI: MOV TL0,#0CCH JNB P3.2,MIFA: MOV TH0,#0FCH MOV TL0,#00H JNB P3.3,FA LJMP STARTSO: JNB P3.4,SOLA: JNB P3.5,LAXI: JNB P3.6,XIDO2: MOV TH0,#0FDH JNB P3.7,DO2 CLR TF0 附上蜂鸣器发声

7、的简单程序1.汇编 ORG 0 CPL P2.7 ;蜂鸣器 LCALL DELAY LJMP STARTDELAY: MOV R7,#0FFH DJNZ R7, $2.C语言void delay(unsigned int z);/声明延时函数sbit beep=P27;void main()数 beep=0;/蜂鸣器响 delay(1);/调用1ms延时 beep=1;/蜂鸣器不响/调用1ms延时 void delay(unsigned int z)/1ms延时,通过z值改变延时 unsigned int x; for(;z0;z-) for(x=110;xx-);蜂鸣器演奏祝你平安51单片机

8、的Proteus实验51单片机的一个I/O口控制speaker发声,演唱祝你平安歌曲。单片机AT89C51,蜂鸣器speaker。晶振12M,已在Proteus下测试,好像有点失真。程序是从网上照的,感觉不是很对劲,删除了一部分之后还是没有变化。部分注释是我后加上去的。;- 蜂鸣器演奏-祝你平安 功能:蜂鸣器-蜂鸣器奏乐-祝你平安 SPK bit P2.7 ;以后SPK就是speaker了 ORG 0000H ORG 000BH INC 20H ;T0中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M晶振,形成10毫秒中断 RETI MOV TL0,#0

9、EFH MOV TMOD,#01H MOV IE,#82H ;10000010B开T0中断MUSIC0: NOP MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0MUSIC1: CLR A MOVC A,A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 ;只要A不等于FF,一直执行MUSIC5 LJMP MUSIC3 ;当A到FF的时候,执行MUSIC3MUSIC5: MOV R6,A ;代码送R6 INC DPTR取节拍代码送R7 MOV R7,A SETB TR0 ;启动计数MUSIC2: C

10、PL SPK MOV A,R6 ;按R6(代码)延时 MOV R3,A ; LCALL DEL ;利用代码(R6)来调用延时 CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?不等,则继续循环 MOV 20H,#00H ;等于,则取下一代码 INC DPTR LJMP MUSIC1MUSIC3: CLR TR0 ;休止100毫秒 MOV R2,#0DHMUSIC4: MOV R3,#0FFH LCALL DEL DJNZ R2,MUSIC4END0: MOV R2,#64H ;歌曲结束,延时1秒后继续MUSIC6: MOV R3,#00H DJNZ R2,MUSIC6 LJM

11、P MUSIC0DEL: ;DEL子程序利用R3来延时一定时间 DEL3: MOV R4,#02HDEL4: DJNZ R4,DEL4 DJNZ R3,DEL3DAT:祝你平安db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20hdb 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20hdb 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20hdb 30h,20h,30h

12、,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20hdb 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10hdb 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20hdb 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20hdb 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h

13、,1ch,20h,20h,20hdb 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10hdb 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80hdb 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20hdb 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20hdb 39h,20h,26h,10h,2

14、bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10hdb 20h,10h,2bh,10h,26h,30h,30h,80h,00H END ;程序结束蜂鸣器演奏兰花草51单片机的Proteus实验51单片机的一个I/O口控制speaker发声,演奏兰花草。 SPK EQU P2.7 ;位定义 ORG 0 ORG 0030H ;伪指令,指定程序从0030H开始存放 MOV R3,#00H ;R3清零(作为查表偏移)NEXT: MOV A,R3 MOV DPTR,#TABLE ;查表 MOVC A,A+DPTR JZ START ;如果A是0就重来 MOV R

15、7,A ;R7是查表的来的代码字节 INC R3 ;读下一个代码字节 MOV A,R3 MOVC A,A+DPTR MOV R2,A ACALL SONG INC R3 SJMP NEXT歌曲播放子程序SONG: MOV A,R2 ;取出节拍 RL A ;左移节拍 JNZ KEEP ;如果节拍为0就让它等于1 MOV A,#01HKEEP:REPEAT: ACALL EIGHTH DJNZ R2,REPEAT产生1/8拍延时子程序EIGHTH: MOV A,R7 ;查表取出廷时参数,保存到R4 MOV DPTR,#DELAY_T MOV R4,A查表取出1/8拍周期数,保存到R5 MOV DP

16、TR,#S_PARA MOV R5,ANEXTCYC: ACALL SOUND DJNZ R5,NEXTCYC= 发声子程序 =SOUND: SETB SPK ACALL SDELAY CLR SPK延时子程序SDELAY: MOV A,R4 ; 廷时值在R4内 MOV R0,AXL2: MOV R1,#03HDL1: DJNZ R1,DL1 DJNZ R0,XL21/8拍周期表S_PARA:DS 1DHDB 15H,16H,00DB 19H,00H,1CH,00H,1FH,21H,00H,25HDB 00H,29H,2CH,00H,31H,34H,37H,00HDB 3EH,41H,00H,

17、49H,00H,52H,57H,00HDB 62H延时参数表DELAY_T:DB 7EH,77H,00HDB 6AH,00H,5EH,00H,54H,4FH,00H,46HDB 00H,3FH,3BH,00H,35H,32H,2FH,00HDB 2AH,27H,00H,23H,00H,1FH,1DH,0C0HDB 1AH歌曲表TABLE:DW 2202H,2902H,2902H,2902H,2906H,2702H ;我从山中来DW 2502H,2702H,2502H,2402H,2208H ;带着兰花草DW 2E02H,2E02H,2E02H,2E02H,2E06H,2C02H ;种在小园中D

18、W 2902H,2C02H,2D02H,2A02H,2908H ;祈祷花开早DW 2902H,2E02H,2E02H,2C02H,2906H,2702H ;一日看三回DW 2502H,2702H,2502H,2402H,2206H,1D02H ;看得花时过DW 1D02H,2502H,2502H,2402H,2206H,2902H ;兰花却依然DW 2702H,2502H,2402H,2002H,2208H ;苞也无一个DW 0000HEND蜂鸣器演奏老鼠爱大米51单片机的Proteus实验51单片机的一个I/O口控制speaker发声,演奏老鼠爱大米。C语言的程序代码更好读一些,相比较前面两

19、个汇编的蜂鸣器程序,这个程序比较好理解。/* 蜂鸣器-蜂鸣器奏乐-老鼠爱大米*/#include#define uint unsigned int#define uchar unsigned char#define ulong unsigned long /蜂鸣器输出引脚uchar th0_f; /中断装载T0高8位uchar tl0_f; /T0低8位uchar code freq36*2= /音阶码表0xf7,0xd8, /440hz , 1 /00xf8,0x50, /466hz , 1# /10xf8,0xbc, /494hz , 2 /20xf9,0x26, /524hz , 2#

20、/30xf9,0x85, /554hz , 3 /40xf9,0xe5, /588hz , 4 /50xfa,0x3d, /622hz , 4# /60xfa,0x92, /660hz , 5 /70xfa,0xdd, /698hz , 5# /80xfb,0x29, /740hz , 6 /90xfb,0x70, /784hz , 6# /100xfb,0xb0, /830hz , 7 /110xfb,0xef, /880hz , 1 /120xfc,0x29, /932hz , 1# /130xfc,0x62, /988hz , 2 /140xfc,0x95, /1046hz, 2# /1

21、50xfc,0xc7, /1108hz, 3 /160xfc,0xf5, /1174hz, 4 /170xfd,0x20, /1244hz, 4# /180xfd,0x4c, /1318hz, 5 /190xfd,0x72, /1396hz, 5# /200xfd,0x97, /1480hz, 6 /210xfd,0xbb, /1568hz, 6# /220xfd,0xdc, /1662hz, 7 /230xfd,0xfb, /1769hz, 1 /240xfe,0x18, /1864hz, 1# /250xfe,0x34, /1976hz, 2 /260xfe,0x4e, /2092hz, 2# /270xfe,0x67, /2218hz, 3 /280xfe,0x7d, /2350hz, 4 /290xfe,0x94, /2488hz, 4# /300xfe,0xa8, /2639hz, 5 /310xfe,0xbc, /2794hz, 5# /320xfe,0xcf, /2960hz, 6 /330xfe,0xe0, /3136hz, 6# /340xfe,0xf1, /3322hz, 7 /35;uchar code diaodata30= /音调代码0x10,0x0e,0x0c,0x10,0x0e,0x0c,0x10,0x0e,0x10,0x0c,0x10,0x15

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1