单片机实验PPT优秀PPT.ppt
单片机原理及应用试验信息学院第一部分第一部分 51 51系统部分及仿真器运用说明系统部分及仿真器运用说明n一、一、5151单片机仿真部分运用说明单片机仿真部分运用说明n 系统专配的仿真器是一个支持系统专配的仿真器是一个支持keil keil c51c51设计软件的软件断点仿真机。该仿真设计软件的软件断点仿真机。该仿真器运用一片器运用一片SST89C58SST89C58单片机和一片单片机和一片AT90S8515AT90S8515单片机来实现仿真功能单片机来实现仿真功能(主主CPU CPU 和用户和用户CPU)CPU),两片,两片CPUCPU之间通过一根之间通过一根I/OI/O引脚通讯引脚通讯(通讯速率在通讯速率在3333兆晶振时约兆晶振时约100KBPS)100KBPS),主,主CPUCPU负责跟负责跟keil c51keil c51通讯,通讯,用户用户CPUCPU只跟只跟 主主CPUCPU通讯,仿真器结构框通讯,仿真器结构框图如下图如下:1 1、仿真机的连接、仿真机的连接1 1)将随机配备的专用仿真器按标记字符向)将随机配备的专用仿真器按标记字符向上的方向插到上的方向插到51CPU51CPU仿真区的仿真区的JFZJFZ位置;位置;2 2)仿真器上的)仿真器上的8 8位开关位开关1 1和和8 8在在ONON位置,其位置,其余在余在OFFOFF位置。位置。2 2、运用、运用USBUSB接口的仿真器特殊说明接口的仿真器特殊说明1 1)先运行)先运行 USB_DRV.EXE USB_DRV.EXE程序,以安装程序,以安装USBUSB驱动;驱动;2 2)打开电源;)打开电源;3 3)将随机配备的)将随机配备的USBUSB通信线一头连仿真器,通信线一头连仿真器,另一头连电脑;另一头连电脑;4 4)电脑显示找到新设备,让系统自己找驱)电脑显示找到新设备,让系统自己找驱动并且安装。动并且安装。5 5)安装完成后,到限制面板)安装完成后,到限制面板-系统系统-硬件硬件-设备管理器设备管理器-端口端口 里面确认一下里面确认一下USBUSB转串口的转串口的COMCOM端口号,以备在端口号,以备在KEIL CKEIL C软件软件中做相应的设置。中做相应的设置。5 5、Keil C Keil C 软件的运用软件的运用1 1)设置)设置Keil C51Keil C51仿真机的工作参数仿真机的工作参数这里拿这里拿keil c51 V6.14keil c51 V6.14来说明(来说明(keil c51 keil c51 v6.02v6.02,v6.10v6.10,v6.12v6.12的设置跟的设置跟v6.14v6.14是一是一样的)。样的)。.打开一个工程文件。假如你没有工程文件打开一个工程文件。假如你没有工程文件就要先建立一个。这里拿就要先建立一个。这里拿keil c51keil c51供应的供应的hello.prjhello.prj为例子说明。为例子说明。(1 1)用鼠标点击菜单的)用鼠标点击菜单的projectproject,选,选择择open projectopen project。如图。如图(2 2)选择)选择keilc51exampleshellohellokeilc51exampleshellohello,点击打开,如图:点击打开,如图:(3 3)选择菜单的)选择菜单的Project-Option for Project-Option for TargetSimulatorTargetSimulator,如图:,如图:(3.13.1)选择)选择C51C51栏的设置如图栏的设置如图:删掉删掉define:define:里的里的MONITOR51MONITOR51这几个字母这几个字母,假如假如definedefine栏是空的,可以跳过这一步栏是空的,可以跳过这一步:(4 4)选择)选择debugdebug栏的设置项目:栏的设置项目:Use:Keil Monitor-51 DriverUse:Keil Monitor-51 Driver 。Load Application at Start:选择这项之后,keil才会自动装载你的程序代码。Go till main:Go till main:调试c语言程序时可以选择这一项,pc会自动运行到main程序处。(5 5)点击上图的)点击上图的SettingsSettings,打开新的窗口:,打开新的窗口:Port:Port:设置你的串口号,在设置你的串口号,在“运用运用USBUSB接口的接口的仿真器特殊说明仿真器特殊说明”中的第四点里确认的中的第四点里确认的串口号。串口号。Baudrate:Baudrate:设置为设置为5760057600,仿真机固定运用,仿真机固定运用57600bps57600bps跟跟keilkeil通讯。通讯。Serial Interrupt:Serial Interrupt:选中它。选中它。Cache Options:Cache Options:可以选也可以不选,举荐选可以选也可以不选,举荐选它,这样仿真机会运行的快一点。它,这样仿真机会运行的快一点。最终点击最终点击okok后确定,再关闭你的设置窗口。后确定,再关闭你的设置窗口。(6 6)编译你的程序,选择)编译你的程序,选择Project-Project-Rebuild all target filesRebuild all target files(7 7)编译完毕之后,选择)编译完毕之后,选择Debug-Debug-Start/Stop Debug SessionStart/Stop Debug Session,就进入仿真了。,就进入仿真了。(8 8)装载代码之后,在左下角显示如图:)装载代码之后,在左下角显示如图:Connected to Monitor-51 V1.0Connected to Monitor-51 V1.0表示连接到仿真机,仿真机的版本号为表示连接到仿真机,仿真机的版本号为1.0 1.0。其次部分 试验指导试验一试验一 单片机单片机I/OI/O口应用试验口应用试验 (P3.3 P3.3口输入口输入 P1 P1口输出)口输出)1 1、试验原理图试验原理图2、试验步骤1)P3.3用插针连至K1,JU2(P1.0P1.7)用8芯线连至JL(L0L7)。2)调试、运行程序test1中的MCUIO.ASM。3)开关K1每拨动一次,L0L7发光二极管按16进制方式加一点亮。思索题:流水灯程序设计思索题:流水灯程序设计 ORG 0000H MOV A,#0FEH ;点亮第点亮第1个个LED的的初值初值 LOOP:MOV P1,A ;点亮一位点亮一位LED ACALL DELAY_100MS;延时延时100ms RL A ;左移一位,为下次显示作左移一位,为下次显示作准备准备 AJMP LOOP ;跳回去循环跳回去循环DELAY_100MS:MOV R1,#199 ;延时子程延时子程序序 DL2:MOV R2,#250 DL1:DJNZ R2,DL1 ;内循环内循环 DJNZ R1,DL2 ;外循环外循环 RET END试验二试验二 单片机单片机I/OI/O口应用试验口应用试验 (工业依次限制)(工业依次限制)1 1、试验内容试验内容80318031的的P1.0P1.0P1.6P1.6限制注塑机的七道工序,限制注塑机的七道工序,现模拟限制七只发光二极管的点亮,高现模拟限制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延电平有效,设定每道工序时间转换为延时,时,P3.4P3.4为开工启动开关,低电平启动。为开工启动开关,低电平启动。P3.3P3.3为外故障输入模拟开关,为外故障输入模拟开关,P3.3P3.3为为0 0时时不断告警,不断告警,P1.7P1.7为报警声音输出。为报警声音输出。n2 2、试验电路图、试验电路图修改程序:修改程序:ORG 0000H AJMP MAIN ORG 0013H ;INT1中断入口中断入口 LJMP INT1PRO ORG 0030HMAIN:SETB EA ;INT1中断初始中断初始化化 SETB EX1 SETB IT1 JB P3.4,$;当当K1为低电平常运为低电平常运行行 MOV A,#0FEH ;点亮第点亮第1个个LED的初的初值值LOOP:MOV P1,A ;点亮一位点亮一位LED ACALL DELAY_100MS;延时延时100ms RL A ;左移一位,为下次显示作左移一位,为下次显示作准备准备 AJMP LOOP ;跳回去循环跳回去循环nINT1PRO:SETB P2.7 ;int1中断服务程序(蜂鸣器响)中断服务程序(蜂鸣器响)n ACALL DELAYn CLR P2.7n ACALL DELAYn JNB P3.3,INT1PRO n RETIn nDELAY_100MS:MOV R1,#199 ;延时子程序n DL2:MOV R2,#250 n DL1:DJNZ R2,DL1 ;内循环n DJNZ R1,DL2 ;外循环n RETnDELAY:MOV R1,#50 ;短延时子程序n D2:MOV R2,#50 n D1:DJNZ R2,D1 ;内循环n DJNZ R1,D2 ;外循环n RET n 试验三试验三 继电器限制试验继电器限制试验一、一、试验原理试验原理 本试验接受本试验接受JZC23FJZC23F型继电器,其限制型继电器,其限制电压为电压为5V5V。继电器电路中一般要在继电。继电器电路中一般要在继电器的线圈两头加一个二极管以吸取继电器的线圈两头加一个二极管以吸取继电器线圈断电时产生的反电势,防止干扰。器线圈断电时产生的反电势,防止干扰。二、试验内容与步骤二、试验内容与步骤 利用利用P1P1口输出凹凸电平,限制继电器的口输出凹凸电平,限制继电器的开合,以实现对外部装置的限制。开合,以实现对外部装置的限制。1 1、把、把80318031的的P1.0P1.0插孔接到插孔接到JINJIN端。端。2 2、把继电器的、把继电器的JZJZ(中心轴头)接(中心轴头)接VCCVCC,JBJB常闭开关接常闭开关接L1L1,JKJK常开开关接常开开关接L2L2。3 3、编制程序,使、编制程序,使P1.0P1.0电平变更,低电平常电平变更,低电平常继电器吸合,常开触点接上继电器吸合,常开触点接上L1L1熄灭,熄灭,L2L2点亮,高电平常继电器不工作,常闭触点亮,高电平常继电器不工作,常闭触点闭合,点闭合,L1L1点亮,点亮,L2L2熄灭。熄灭。4 4、调试运行程序中的、调试运行程序中的JDQ.ASMJDQ.ASM,L1L1、L2L2交交替亮灭。替亮灭。附:参考程序 ORG 0000H AJMP START ORG 0030HSTART:SETB P1.0 LCALL DELAY CLR P1.0 LCALL DELAY SJMP STARTDELAY:MOV R7,#0FFHDELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET END;实现按键限制继电器通断 ORG 0000H AJMP START ORG 0030HSTART:JNB P1.7,JZD ;P1.7-K1 SETB P1.0 ;高电平常闭 SJMP START JZD:CLR P1.0 ;低电平常开 SJMP START END试验四 8051串行接口与PC机通信试验一、试验原理 试验时需将8051串行接收信号线P3.0(RXD)连到RS232通信区的RXD232插孔,8051的P3.1(TXD)连到RS232通信区的TXD232插孔上。/串口调试程序/功能比较简洁,PC发送一个字符,单片机收到后将收到的字符的下一个字符发送给PC,如PC发一个A,单片机将发还一个B。通信参数为9600,8N1。*/#include#include sbit LED=P13;void INIT_SCI()SCON=0X50;ES=1;EA=1;void INIT_TMR()TMOD=0X21;TH1=0 xfd;/*4800bps=0 xfa,9600=0 xfd,1200=0 xe8,2400=0 xf4*/TL1=0 xfd;TR1=1;void serial_int(void)interrupt 4 unsigned char data c;if(_testbit_(TI)LED=1;if(_testbit_(RI)/接收中断c=SBUF;LED=0;SBUF=c+1;void main(void)INIT_TMR();INIT_SCI();while(1);n;汇编查询方式 ORG 0000H AJMP MAIN ORG 0030HMAIN:MOV SCON,#50H MOV TMOD,#21H MOV TH1,#0fdH MOV TL1,#0fdH SETB TR1LOOP:JNB RI,LOOP CLR RI MOV R0,SBUF INC R0 MOV SBUF,R0 JNB TI,$CLR TI SJMP LOOP END试验五试验五 并行并行I/OI/O接口接口82558255应用试验应用试验n一、试验原理一、试验原理n用用82558255的的PAPA口做输入口,口做输入口,PBPB口做输出口,口做输出口,限制限制PAPA口状态从口状态从PBPB口输出显示。口输出显示。n通过通过PAPA口接口接8 8个开关个开关K1K1K8K8,PBPB口接口接8 8个个发光二极管,从发光二极管,从PAPA口读入口读入8 8位开关的状态位开关的状态送送PBPB口显示,拨动口显示,拨动K1K1K8K8,PBPB口上接的口上接的8 8个发光二极管个发光二极管L0L0L7L7对应显示对应显示K1K1K8K8的的状态。状态。n试验接线图:n附:参考程序n org 0000hn ajmp mainn org 0030hnmain:mov sp,#60hn mov dptr,#8003h ;吩咐口地址n mov a,#90h ;吩咐字:PA-输入n movx dptr,a ;PB-输出nm:mov dptr,#8000h ;PA口地址n movx a,dptr ;读PA口状态 n lcall delayn mov dptr,#8001h ;PB口地址n movx dptr,a ;写PB口数据n lcall delayn ajmp mndelay:mov r6,#00hn djnz r6,$n ret n/PA口输入,8255驱动B口LED发光n#include n#include n#define COM8255 XBYTE0 x8FFF /*吩咐口地址*/n#define PA8255 XBYTE0 x8FFC /*口A地址*/n#define PB8255 XBYTE0 x8FFD /*口B地址*/n#define PC8255 XBYTE0 x8002 /*口C地址*/nvoid delay(unsigned int j)nwhile(j-);nvoid main(void)n COM8255=0 x90;/*吩咐字-A口输入,B口输出*/nwhile(1)n n PB8255=PA8255;n delay(1000);n nn试验六 键盘LED显示限制器应用试验n要求:数码管动态显示,从左到右显示不同数字。n接线:数码管位选线接P2口;段选线接74LS273 OUT0-OUT7,74LS273 的CS接GNDn#include n#include n#define uchar unsigned charn#define uint unsigned intnsbit WWR=P36;nuchar code DSY_CODE=/共阴数码管共阴数码管n 0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;nvoid DelayMS(uint x)nnuchar t;nwhile(x-)nn for(t=120;t0;t-);nnnvoid main()n uchar k;nuchar m;nP0=0 x00;/关闭数码管的段选nP2=0 xff;/关闭数码管的位选nwhile(1)n n m=0Xfe;/从最左边数码管起先显示n P2=m;n P0=DSY_CODE0;n WWR=0;WWR=1;/74LS273上升沿输出数据n DelayMS(2);n for(k=1;k8;k+)n m=_crol_(m,1);n P2=m;/选通某个数码管的位选n P0=DSY_CODEk;/将段码送给上面数码管的段n WWR=0;WWR=1;n DelayMS(2);nnn试验七试验七 A/D A/D 转换试验转换试验一、一、试验原理试验原理 ADC0809:D0-D7 ADC0809:D0-D7接接P0P0口(已接好);口(已接好);CS_0809CS_0809接接GND;EOCGND;EOC接接P1.0P1.0口;口;CLK-0809CLK-0809接接500KHZ500KHZ二 参考程序n#include n#include nsbit A3=P20;/LED位选位选nsbit A2=P21;nsbit A1=P22;nsbit dp=P07;nsbit EOC=P10;nsbit WWR=P36;nsbit RRD=P37;nunsigned char getdata;n/*接线:数码管位选线接P2口;段选线接74LS273 OUT0-OUT7,74LS273 的CS接GND*/共阴数码管nunsigned char code tab=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;nvoid DelayMS(unsigned int x)nnunsigned char t;nwhile(x-)nn for(t=120;t0;t-);nnnvoid display(unsigned char adm)n unsigned char temp;n A3=1;A2=1;A1=1;WWR=0;/位选n temp=adm;adm=adm/51;/AD转换数据处理 P0=tabadm;dp=1;/转换为十进制三位显示,百位 n A3=0;A2=1;A1=1;/位选n WWR=0;WWR=1;/74LS273上升沿输出选通某个数码管的位选n DelayMS(2);n A3=1;A2=1;A1=1;n adm=temp%51;adm=adm/5;temp=adm%5;n P0=tabadm;/转换为十进制三位显示,十位n A3=1;A2=0;A1=1;/位选n WWR=0;WWR=1;n DelayMS(2);n A3=1;A2=1;A1=1;n P0=tabtemp;/转换为十进制三位显示,个位n A3=1;A2=1;A1=0;/位选n DelayMS(2);n WWR=0;WWR=1;/74LS273上升沿输出选通某个数码管的位选nnvoid main()n n while(1)n n P2=0 xff;/关闭数码管的位选n P0=0 xFF;n WWR=1;/ST=0;n RRD=1;/OE=0;n _nop_();_nop_();P0=P0&0 xF8;/选通道IN0;n WWR=0;_nop_();/ST=1;上升沿启动,ADC0809启动n WWR=1;_nop_();/ST=0;n while(EOC=1);/正在转换正在转换 n _nop_();n while(EOC=0);/等待转换结束等待转换结束n RRD=0;/OE=1;允许输出n getdata=P0;/获得AD转换值n RRD=1;n display(getdata);/显示AD转换值n nn试验八试验八16X16 LED16X16 LED点阵显示试验点阵显示试验一一 点阵显示原理点阵显示原理本试验点阵图:行接LED负极,列线接LED正极接线图参考程序:#include#include#define COM8255 XBYTE0 x8003 /*吩咐口地址*/#define PA8255 XBYTE0 x8000 /*口A地址*/#define PB8255 XBYTE0 x8001 /*口B地址*/#define PC8255 XBYTE0 x8002 /*口C地址*/voidLED_delay(void);unsigned char code str32=/*本文件为1616点阵中文字库文件,字的横向8点构成一字节,左边点在字节的高位,字符点阵四角按右上角左上角右下角左下角取字*/*欢 CBBB6*/0 x80,0 x00,0 x80,0 x00,0 x80,0 xFC,0 xFE,0 x05,0 x04,0 x85,0 x48,0 x4A,0 x40,0 x28,0 x40,0 x10,0 x40,0 x18,0 x60,0 x18,0 xA0,0 x24,0 x90,0 x24,0 x18,0 x41,0 x0E,0 x86,0 x04,0 x38,0 x00,0 x00;nvoid main(void)n unsigned char i,n,temp;n COM8255=0X80;/8255工作方式:PA/PB/PC输出nwhile(1)n temp=0 xFE;/扫描第一行n PA8255=temp;n=0;n for(i=0;i8;i+)/逐行扫描L1-L8行n n PC8255=str2*n;/取字符代码n P1=str2*n+1;n LED_delay();n temp=(temp1)|0 x01;n PA8255=temp;n+;n n temp=0 xFE;nPB8255=temp;/逐行扫描L9-L16行 n for(i=0;i8;i+)n n PC8255=str2*n;n P1=str2*n+1;n LED_delay();n temp=(temp1)|0 x01;n PB8255=temp;n+;n n PA8255=0XFF;/关闭消隐n PB8255=0XFF;n LED_delay();nnnvoid LED_delay(void)nnunsigned char i=50;nwhile(i-);n