欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载
     

    SS8051高级单片机实验手册 机械学院.doc

    • 资源ID:4193361       资源大小:2.06MB        全文页数:86页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    SS8051高级单片机实验手册 机械学院.doc

    SS-8051高级单片机实验手册北京海天创新电子有限公司Http:/Email:lclxy2005年10月目 录一 概要3二 SS-8051高级单片机实验仪可直接使用的电路单元3三 SS-8051高级单片机实验仪系统配备3附录一:SS-8051高级单片机实验指导书 4附录二:51单片机硬件开发支持 66附录三:微型打印机及其与单片机接口 73附录四:ISD4004系列单片语音录放IC资料 78附录五:HD61202液晶显示控制驱动器的应用资料82附录六:SS-8051高级单片机实验仪原理图 86一概要:一般的单片机实验仪通常为固定线路,再有配合该实验线路的教材,学习者只能依照该实验仪做实验,无法自行创作线路,甚至无法改变外围器件的地址,实验者知其然而不知其所以然。另一种没有实验仪,初学者就按电路图自行在面包板上或在万用板上焊接电路,花费很多时间在接线及硬件排错上,软件练习往往不够。有鉴如此,北京海天创新电子有限公司特开发一种开放式组合电路的单片机SS-8051高级单片机实验仪,其特性如下:1 可做MCS51系列单片机的实验或其它MCU的的实验;2 可配任何厂家的仿真器,也可以自仿真;3 系统采用CPU独立和组合均可的方式;4 提供20多种单元电路;5 全部电路可由使用者以线连接,弹性组合;6 无需焊接,节省时间,如同面包板或万用板实验;7 配备开关电源;8 可配合各种单片机书籍。二SS-8051高级单片机实验仪可直接使用的电路单元1 微型打印机接口电路;2 8031/51/2051高级接口电路;3 8255电路;4 SRAM电路;5 74LS138译码器电路;6 接点延伸区;7 拨码开关电路;8 8X8点阵显示电路;9 动态七段数码管电路;10 8个LED输出(二组电路);11 键盘电路;12 RS232串行通信电路;13 D/A电路;14 A/D电路;15 步进电机实验电路;16 直流电机实验电路;17 点阵图形液晶实验电路;18 ISD4004语音芯片实验电路;19 7279键盘与数码管显示芯片电路;20 模拟量输入单元电路。三、SS-8051高级单片机实验仪系统配备1实验机箱一台2使用说明书一份3连接线 若干4程序光盘 一张 5仿真器一台附录一:SS-8051高级单片机实验指导书目 录第一部分软件练习实验一:从外部数据存储器传送到内部存储器 5实验二:从外部数据存储器传送到内部RAM中 6实验三:求16个学生的年龄之和 6实验四:求两省人口之和 7实验五:求八个无符号数的最大值 7实验六:求Y=Sign X的 8实验七:求两个16位无符号数之积 8实验八:将一个字节BCD码转换成二进制数 9实验九:将一个字节二进制数转换成十进制数 9实验十:自编实验 9第二部分硬件与接口实验一:P1口实验一(输入输出实验、最小系统)10实验二:P1口实验二13实验三:外中断实验 15实验四:定时/计数器实验17实验五:点阵显示屏实验 21实验六:8255键盘、数码显示实验23实验七:数/模转换实验27实验八:模/数转换实验29实验九:微型打印机实验 32实验十:HD7279A键盘显示控制实验 34实验十一:直流电动机的控制实验40实验十二:步进电动机的控制实验42实验十三:点阵图形液晶显示器的控制实验 45实验十四:ISD系列语音芯片的单片机控制实验53实验十五:单片机与PC机串行通信实验63第一部分 软件练习实验一 实验系统简介:1 SS-8051高级仿真实验系统的主要特点:SS-8051高级仿真实验系统的主要特点在于它是一个几乎完全真实的项目开发环境。它的所有电路单元均是独立的(除了电源和地线之外),复杂的电路可以用排线搭建起来,整个系统给学习者一个真实的开发环境,对于小型的实验和大型的课程设计均可应用,此外还可以作为开发新产品的实验系统。2 调试软件的启动、操作与退出:万利调试软件的启动很简单,在WINDOWS操作系统下,只要用鼠标单击“开始|程序|MedWin|MedWin.exe”程序即可启动。退出调试环境象所有的WINDOWS程序一样,用鼠标单击“文件|退出”菜单或单击右上角的“X”均可退出程序。万利调试软件的操作与编程器的操作以及硬件开发的整个过程概述可以参考“附录二:51单片机的硬件开发支持”。二 操作练习与程序执行:实验一:练习从外部数据存储器传送到内部寄存器中第一部分“软件练习”实验均可以在脱机模拟状态下调试运行,也可以连上仿真器与实验仪在线仿真调试运行。1 模拟调试状态下:(以万利仿真器为例)启动“MedWin.exe”万利仿真器调试软件,进入“模拟调试”状态。建立一个项目,在项目中添加一个新的文件(以.ASM作为后缀名),将后面的程序清单输入,按Ctrl+F8编译并装载,排除所有的错误直到编译通过。打开外部数据区窗口(XDATA)、寄存器窗口和特殊功能寄存器窗口,将外部数据区的00H,01H单元的内容改为54H,55H,单步或全速运行调试程序,观察寄存器A,B,DPTR,R1,R2,R3的值是不是如程序所希望的那样变化,最后看R3的值是不是54H+55H=A9H。2 连机状态下:本实验要连机运行调试,需在实验仪上进行相应的连线。先用数据线将仿真器和仿真头连起来,把仿真头缺口朝上插入2单元的51单片机插座(千万注意不要插反)。然后连接4单元存储电路与2单元单片机电路。它们之间具体的连线如下表所示(将对应的网络标号用排线连接起来):2单元4单元P00-P07DB0-DB6P20 -P20A8-A15P36WEBP37OEBALEALECEB连GND3 线连好以后,打开仿真器和实验仪的电源,其余操作和模拟调试状态下相同。实验的源程序如下所示:ORG 00H;程序从00H处开始运行AJMP START;跳转到START的位置ORG 30H;START从30H开始START:MOVA,#56H;在A寄存器中放置56H,这句程序执行完毕后可以看看A寄存;器中的值是否为78HMOV B,#78H;在B寄存器中放置78H,这句程序执行完毕后可以看看B寄存;器中的值是否为78HMOV DPTR,#00H;给DPTR赋值00H,表示是数据寄存在00H的地址MOVX A,DPTR;将外部数据区00H的数据放进寄存器AMOVR1,A;将A中的数据放入R1寄存器INCDPTR;将DPTR增1,变为01HMOVXA,DPTR;将外部数据区01H的数据放进寄存器AMOVR2,A;将A中的数据放入R2寄存器ADDA,R1;将A中的数据与R2中的数据相加,和在A中MOVR3,A;将结果保存在R3中HERE:AJMPHERE;死循环END;程序结束标志实验二:练习从外部数据存储器传送到内部RAM中本实验也可以在模拟调试和连机状态下两种方式下进行实验。在连机实验时的连线与“实验一”完全相同。程序运行之前,将外部数据存储器(XDATA)和内部数据存储器(DATA)窗口打开,并在XDATA窗口从00H单元开始连续键入30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,40H,41H,42H,43H,44H,45H,然后程序单步或全速运行,停下来后观察内部数据区窗口(DATA)从30H开始的数据是否跟上述数据相同。实验的源程序如下:ORG00H;程序从00H处开始运行START:MOVDPTR,#00H;给DPTR赋值00H,表示是数据存放在00H的地址MOVSP,#80H;给SP赋值80H,程序运行过程中我们可以看看SP的变化MOVR0,#30HMOVR7,#10HLOOP:MOVXA,DPTRMOVR0,AINCR0INCDPTRDJNZR7,LOOPHERE:SJMP$;死循环END;程序结束标志实验三:求16个学生的年龄之和,数据放在20H单元程序运行之前,先将16个学生的年龄放在内部数据区20H单元开始的地方,码制为BCD码,程序运行结束时,16个学生的年龄和放在寄存器A和B中(B为高位,A为低位)。程序清单如下所示:ORG00H;程序从00H处开始运行SJMPSTART;跳转到START的位置ORG30H;START从30H开始START:MOVR0,#20HMOVR7,#16MOVA,#00HMOVB,ALOOP:ADDA,R0DAAJNCNEXTINCBNEXT::INCR0DJNZR7,LOOPHERE:SJMPHERE;死循环END;程序结束标志实验四:求两省人口之和以四个字节长度存放两省人口数,该程序涉及到多字节的加减法。程序运行前将两省的人口数放入外部数据区(XDATA)从00H和10H开始的单元。如从00H开始依次放入32H,54H,76H,98H,从10H开始依次放入34H,12H,32H,54H(从低字节往高字节排列),程序运行完毕,观察程序运行结果是不是等于98765432+54321234=0153086666。程序清单如下:ORG00H;程序从00H处开始运行SJMPSTART;跳转到START的位置ORG30H;START从30H开始START:MOVR7,#4MOVR0,#30HMOVDPTR,#0000HLP1:MOVXA,DPTRMOVR0,AINCR0INCDPTRDJNZR7,LP1MOVR1,#40HMOVDPTR,#0010HMOVR7,#4LP2:MOVXA,DPTRMOVR1,AINCR1INCDPTRDJNZR7,LP2MOVR6,#4MOVDPTR,#0020HMOVR0,#30HMOVR1,#40HCLRCLP3:MOVA,R0ADDCA,R1DAAMOVXDPTR,AINCR0INCR1INCDPTRDJNZR6,LP3MOV20H,CHERE:SJMPHERE;死循环END;程序结束标志实验五:求8个无符号数的最大值给定8个无符号数,将其放入内部数据区(DATA)中,地址从20H开始,运行下列程序,看看是否将8个数的最大值存储在A寄存器和内部数据区41H单元中。程序清单如下:ORG00H;程序从00H处开始运行SJMPSTART;跳转到START的位置ORG30H;START从30H开始START:MOVR0,#20HMOVR6,#08HMOVA,R0DECR6LOOP:INCR0MOV40H,R0CJNEA,40H,CHKCHK:JNCLOOP1MOV41H,AHERE:SJMPHERE;死循环END;程序结束标志实验六:给定8位有符号数X,求Y=SIGN X之值给定8个有符号数,放至内部数据区(DATA)30H单元开始的地方,求其符号,并将结果送入寄存器R1,程序适合单步执行,每执行一句观察一下R1是否真实反映有符号数的符号。程序清单如下:ORG00H;程序从00H处开始运行SJMPSTART;跳转到START的位置ORG30H;START从30H开始START:MOVR0,#30HMOVA,R0ANLA,R0JZZEROJNBACC.7,NEXTMINUS:MOVR1,#0FFHSJMPEXITZERO:MOVR1,#0SJMPEXITNEXTMOVR1,#1EXIT:SJMPEXIT;死循环END;程序结束标志实验七:求两个16位无符号数之积程序清单如下:ORG00H;程序从00H处开始运行AJMPSTART;跳转到START的位置ORG30HSTART:MOVR5,#11H;乘数高字节MOVR4,#78H;乘数低字节MOVR3,#11H;被乘数高字节MOVR2,#11H;被乘数低字节MOVR1,#30HDUMUL:MOVA,R1MOVR6,AMOVR7,#04CLEAR:MOVR1,#0HINCR1DJNZR7,CLEARMOVA,R6MOVR1,AMM:MOVA,R2MOVB,R4MULABACALLADDMMOVA,R2MOVB,R5ACALLADDMMOVA,R3MOVB,R4MULABDECR1ACALLADDMMOVA,R3MOVB,R5MULABACALLADDMMOVA,R6MOVR1,AHERE:SJMPHERE;死循环ADDM:ADDA,R1;子程序MOVR1,AMOVA,BINCR1ADDCA,R1MOVR1,AINCR1MOVA,R1ADDCA,#0MOVR1,ADECR1RET;子程序返回END;程序结束标志实验八:将一个字节BCD码转换成二进制数ORG00H;程序从00H处开始运行AJMPSTART;跳转到START的位置ORG30H;START从30H开始START:MOVR2,#99HACALLDTOBHERE:SJMPHERE;死循环DTOB:MOVA,R2ANLA,#0F0HSWAPAMOVB,#10MULABMOVR3,AMOVA,R2ANLA,#0FHADDA,R3MOVR3,AMOV20H,ARETEND;程序结束标志实验九:将一个字节二进制数转换成十进制数ORG00H;程序从00H处开始运行SJMPSTART;跳转到START的位置ORG30H;START从30H开始START:MOVR2,0FFHACALLBTODHERE:SJMPHERE;死循环ORG100H;将二进制数转换成十进制数的子程序放在100H的位置BTOD:MOVA,R2;二进制数转换成十进制数的子程序MOVB,#100DIVABMOVR6,AMOVA,#10XCHA,BDIVABSWAPAADDA,BMOVR5,ARET;二进制数转换成十进制数的子程序返回END;程序结束标志实验十:自编实验,上机调试通过第二部分 硬件及接口实验实验一:P1口实验一一 实验题目:P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。二 实验目的:1 学习P1口作为输出口的使用方法。2 学习延时子程序的编写和使用。三 有关说明:P1口为准双向口,P1口的每一位都能独立的定义为输出线或输入线。作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。再来看一下延时程序的实现,现常用的有两种方法:一是用定时器中断来实现,二是用指令循环来实现。在系统时间允许的情况下,可以采用后一种方法。以12M晶振为例,一个机器周期为12/12=1uS,现要写一个延时0.1S的程序,可大致写出如下:MOVR7,#200DE1:MOVR6,#XDE2:DJNZR6,DE2DJNZR7,DE1上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需2uS,现求出X值:(X*2+2+2)*200+2=100,000求出X=248,代入上式可知约延时(248*2+2+2)*200+2=100,002uS,已经很精确了。四 实验电路: L1 VCC P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.78051 L8 VCC五 连线方法:电路单元第2单元第11单元连接1P1.0-P1.7L1-L8六 程序框图:开始初始化,A=0A P1A左循环一位延时1S结束七 程序清单:(汇编)ORG00H;程序从00H开始AJMPSTART;跳转到START位置ORG30H;开始程序从30H开始,将00H到30H之间的START:MOVSP,#60H;将堆栈指针设为60HMOVA,#0FEH;将A赋值为0FEHLOOP:MOVP1,A;点亮1个灯ACALLDELAY;调用延时程序RLA;将A循环移动一位LJMPLOOP;跳转到LOOP,程序循环执行。DELAY:MOVR1,#10;延时子程序,10个100MS,一共1SDEL1:MOVR2,#200DEL2:MOVR3,#248DEL3:DJNZR3,DEL3DJNZR2,DEL2DJNZR1,DEL1RET;延时程序返回END;程序结束程序清单:(C51):#include <reg51.h>#include <intrins.h>void delayms(unsigned char ms)/*延时子程序*/unsigned char i;while(ms-)for(i = 0; i < 250; i+);unsigned char LED;void main(void)LED = 0xfe;P1 = LED;while(1)delayms(250);LED = _crol_(LED,1);/*循环右移1位,点亮下一个LED*/P1 = LED;实验二:P1口实验二一 实验题目:P1口做输入口,接八个拨码开关,以P0口做输出口,编写程序读取开关状态,在二极管上显示出来。二 实验目的:学习P1口作为输入口的使用方法。三 有关说明:P1口为准双向口,P1口的每一位都能独立的定义为输出线或输入线。作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。四 实验电路:P1.0 P0.0P1.1 P0.0P1.2 P0.0P1.3 P0.08051P1.4 P0.0P1.5 P0.0P1.6 P0.0P1.7 P0.7 GND L1 VCC S1 L8 VCC S8五 连线方法:电路单元第2单元第11单元第1单元连接1P0.0-P0.7L1-L8连接2P1.0-P1.7S0-S7六程序框图:开始初始化将P1口置0FFH从P1口读开关量将开关量送P0口结束七程序清单(汇编):ORG00H;程序从00H开始AJMPSTART;跳转到STARTSTART:MOVSP,#60H;将堆栈指针设置为60HMOVP1,#0FFH;先将P1设置为0FFHLOOP:MOVA,P1;将开关量输入到变量A中MOVP0,A;将变量A中的数据送到P0口输出LJMPLOOP;跳转到LOOP循环执行程序END;程序结束程序清单(C51):#include <reg51.h>#include <intrins.h>void delayms(unsigned char ms)/*延时子程序*/unsigned char i;while(ms-)for(i = 0; i < 250; i+);unsigned char LED;void main(void)LED = 0xfe;P1 = LED;while(1)delayms(250);LED = _crol_(LED,1);/*循环右移1位,点亮下一个LED*/P1 = LED;实验三:外中断实验一 实验题目使用单脉冲作中断源,每按一次按钮,点亮的发光二极管向右移动一位二 实验目的1 学习外中断的使用;2 学习中断处理程序的编程方法。三 实验电路 P1.0INT1 P1.1 P1.2 P1.3 P1.4 P1.5P1.6P1.78051 L1 VCC 单脉冲源 L8 VCC四 连线方法电路单元第2单元第11单元第1单元连接1P10-P17L1-L8连接2P33/INT1S0五 程序清单(汇编):ORG00H;程序开始地址从00H开始AJMPSTART;跳转到STARTORG13H;外部中断1的中断入口地址AJMPINTI;INT1入口地址ORG30H;主程序从30H开始,将00H与30H中间的中断向量地址留出来START:MOVSP,#60H;将堆栈地址SP置成60HMOVA,#0FEH;点亮第一个灯泡SETBIT1;开外部中断1MOVIE,#10000100B;开INT1中断和总中断MOVP1,A;在P1口显示一个一个灯HERE:NOP;空操作指令SJMPHERE;死循环INTI:MOVP1,A;外部中断服务程序RLA;A循环移动一位CLRIE1;清中断标志位RETI;外部中断1中断程序返回END;程序结束程序清单(C51):#include <reg51.h>#include <intrins.h>unsigned char LED;void delayms(unsigned char ms)/*延时子程序*/unsigned char i;while(ms-)for(i = 0; i < 250; i+);void Int1Main1(void) /*non-bounce*/ IE=0; /*屏蔽所有中断*/ IT1=1; /*设置中断:下降沿*/ EX1=1; /*开INT1中断*/ EA=1; /*开所有中断*/*中断1*/void One_INT1ISR (void) interrupt 2 using 3 EX1=0;/*屏蔽INT1*/ LED = _crol_(LED,1);/*循环右移1位,点亮下一个LED*/ delayms(250); EX1=1;/*打开INT1*/ IE1=0;void main(void)Int1Main1();LED=0xfe;while(1)P1 = LED; 实验四:定时器实验一 实验题目连线并编制程序,使用定时器1中断,按方式1工作,将单排LED灯循环点亮。二 实验目的1 定时器中断的使用;2学习定时器中断间隔时间的计算;3进一步学习中断处理程序的编程方法。三 原理简述1定时器/计数器的输入脉冲周期与机器周期一样,为振荡器频率的1/12。本实验中时钟频率为12M,现要采用中断方法来实现1秒延时,要在定时器1中设置一个时间常数,使其每隔0.05秒产生一次中断,CPU响应中断后R0中计数值减一,令(R0)=14H,即可实现1秒的延时,时间常数可按下法确定:机器周期=12/晶振频率=12/12=1uS定时器需设初值为X,则(216X)*1=50000uS求出X=15536化为十六进制:X=3CB0H,故初始值为:TH1=3CH,TL1=B0H。2 初始化程序包括定时器初始化和中断系统初始化,主要对IP,IE,TCON,TMOD的相应位进行正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP不必设置。注意一点:定时器1初始化时建议用如下的指令:ANLTMOD,#0FHORLTMOD,#10H3 设计中断服务程序和主程序中断服务程序除了要完成记述减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序亮灭。四 实验电路本实验电路与实验一完全相同,不同的是编程序时延时采用定时器中断而非软件延时。 L1 VCC P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.78051 L8 VCC五 连线方法:电路单元第2单元第11单元连接1P1.0-P1.7L1-L8入口置首显示代码(A),初始化地址偏移量(R1),计数器初值(R0)定时器1初始化设计数初值开放EA,ET1及TR1R1为0?装计数初值于R1将显示的数据(R0)送入(A)带进位左移(A)将(A)再送入显示数据(R0)中将显示数据送入P1显示六 程序框图主程序框图: N Y中断入口关闭计数器控制位计数值减一装入时间常数开放计数控制位RETI中断子程序框图:七 程序清单(汇编)ORG00H;程序从00H开始AJMPSTART;跳转到START的位置ORG1BH;定时中断的起始地址AJMPTI;中断子程序名字ORG30H;主程序的开始地址从30H开始START:MOVIE,#00H;屏蔽所有的中断MOVSP,#60H;将堆栈指针SP设置为60HMOVP1,#0FEH;将P1设置为0FEH,点亮一个灯MOV

    注意事项

    本文(SS8051高级单片机实验手册 机械学院.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开