proteus实验.doc_第1页
proteus实验.doc_第2页
proteus实验.doc_第3页
proteus实验.doc_第4页
proteus实验.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 proteus与单片机电路的交互式仿真与调试1、 实验目的熟练掌握proteus集成开发环境,并掌握proteus与单片机电路进行交互式仿真与调试的方法。2、 实验设备装有proteus的电脑一台3、 实验内容1)设计一个基于51单片机的电路,控制P2口连接的led灯的循环亮灭。2)在keil中编制程序,并在proteus中进行调试。4、 实验步骤1) 在proteus ISIS界面中编辑电路原理图如图1.1所示。图1.1 电路原理图2)添加仿真文件。双击单片机AT89C51,打开其属性编辑框,在“program file”栏中,单击打开按钮,选取后缀名为*.HEX的目标代码文件。在“clock frequency”栏中设置时钟频率为12MHZ。如图1.2、1.3所示。图1.2 元件编辑对话框图1.3 添加仿真程序文件因为仿真运行时的时钟频率是以单片机属性中设置的频率值为准,所以在proteus ISIS界面中设计电路原理图时,可以略去单片机的时钟电路。另外,复位电路也可略去。对于MCS-51系列单片机而言,在不进行电路电气检测时,EA引脚也可悬空。2)在proteus仿真界面中单击运行按钮,全速启动仿真。LED灯从上往下依次亮灭,并循环交替。如图1.4所示。图1.4 仿真运行中的电路3)在系统全速仿真运行时,单击暂停按钮,然后单击proteus ISIS界面的“Debug”菜单,利用其调试按钮进行调试。5、 参考程序可参考单片机实验教程实验2程序。实验二 I/O输入输出应用1、 实验目的1) 掌握AT89C51单片机I/O口输入输出的应用方法;2) 掌握单片机驱动7段数码管显示数字的电路设计方法及编程方法。2、 实验设备装有proteus的电脑一台3、 实验内容1)利用单片机AT89C51制作一个099的手动计数器,用其P2.0P2.7接一个共阴极数码管,输出显示计数器个位,用P0.0P0.7接数码管输出显示计数值的十位数。用P3.3引脚外接一轻触开关,要求每按一次按键,计数值加1,当计数值超过99后自动返回0重新开始循环计数。参考电路如图2.1所示。图2.1 参考电路图2)编程实现计数器的自动计数,利用按键实现计数暂停、复位功能。4、 实验步骤1)在proteus ISIS 环境中根据电路图绘制电路。2)在keil中建立程序文件。并编译源程序,修改程序中的错误直至通过。3)加载目标代码文件。在priteus中双击AT89C51元件打开编辑元件对话框,设置单片机的频率为12MHz,并加载先前在Keil中编译产生的“.HEX”文件。4)在proteus菜单栏中,打开“Debug”下拉菜单,选择“Use Remote Debug Monitor”选项,以支持与Keil的联调。5)进行调试与仿真。仿真结果如图2.2所示。图2.2 电路仿真图5、参考程序(实验内容1)ORG00HLJMPSTARTORG30HSTART:MOVDPTR,#TABLE;设置段码表首地址MOVR0,#00H;计数初值存R0MOVP0,#3FHMOVP2,#3FH;复位时数码管显示0S1:INCR0CJNER0,#100,S2MOVR0,#00HS2:JBP3.3,$;等待按键LCALLDELAY;消抖动延时JBP3.3,S2S3:MOVA,R0MOVB,#10DIVAB;分离计数值的个位和十位MOVCA,A+DPTR;差表求数字的七段码值MOVP0,AMOVA,BMOVCA,A+DPTRMOVP2,AJBP3.3,S1;等待按键抬起LJMPS3DELAY:MOVR5,#20;延时10msD1:MOVR6,#250DJNZR6,$DJNZR5,D1RETTABLE:DB3FH,06H,5BH,4FH,66H;09七段码值DB6DH,7DH,07H,7FH,6FHEND实验三 88点阵LED显示1、 实验目的1) 掌握88点阵LED显示屏的使用方法;2) 掌握单片机进行拉幕式显示的编程方法。2、 实验设备装有proteus的电脑一台3、 实验内容1)利用单片机AT89C51、74LS245制作一个88点阵LED显示屏显示电路。在LED点阵中显示一个“”。2)编程实现LED显示屏轮流显示0-9的数字,显示方式采用自右向左拉幕式显示。参考电路如下。图3.1 参考电路图4、 88点阵LED元件介绍由于88点阵LED元件引脚没有任何标注,因此在使用之前必须进行引脚测试,以确定行线和列线的顺序及极性。图3-2给出了一种进行引脚测试的方法,根据测试结果便很容易确定该元件的电路接法。图3-2 88点阵LED引脚测试5、参考程序(1)实验内容1参考单片机实验教程实验10程序。(2)实验内容2参考程序R_CNTEQU31HNUMBEQU32HTCOUNTEQU33HORG00HLJMPSTARTORG0BHLJMPINT_T0ORG30HSTART:MOVR0,#00H;显示的幕次(即每一幕显示的行码起始序号)置0MOVR_CNT,#00H;列码序号置0MOVNUMB,#00H;行码序号置0MOVTCOUNT,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256;定时5msMOVTL0,#(65536-5000)MOD 256SETBTR0MOVIE,#82HSJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD 256MOVDPTR,#TAB;取列码表首地址MOVA,R_CNTMOVCA,A+DPTRMOVP3,AMOVDPTR,#NUB;取行码表首地址MOVA,NUMBMOVCA,A+DPTRMOVP0,A;输出行码INCNUMBNEXT1:INCR_CNTMOVA,R_CNTCJNEA,#8,NEXT2MOVR_CNT,#00HMOVNUMB,R0NEXT2:INCTCOUNTMOVA,TCOUNTCJNEA,#40,NEXT4;每个数字显示200ms。 必须在TCOUNT数值是8的整数倍时再进行下面的移位操作,否则显示衔接时会乱。MOVTCOUNT,#00HINCR0;上一幕显示行码的起始序号+1CJNER0,#88,NEXT3MOVR0,#00HNEXT3:MOVNUMB,R0;送新一幕显示行码的起始序号NEXT4:RETITAB:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FHNUB:DB00H,00H,00H,00H,00H,00H,00H,00H;空DB00H,00H,3EH,41H,41H,41H,3EH,00H;0DB00H,00H,00H,00H,21H,7FH,01H,00H;1DB00H,00H,27H,45H,45H,45H,39H,00H;2DB00H,00H,22H,49H,49H,49H,36H,00H;3DB00H,00H,0CH,14H,24H,7FH,04H,00H;4DB00H,00H,72H,51H,51H,51H,4EH,00H;5DB00H,00H,3EH,49H,49H,49H,26H,00H;6DB00H,00H,40H,40H,40H,4FH,70H,00H;7DB00H,00H,36H,49H,49H,49H,36H,00H;8DB00H,00H,32H,49H,49H,49H,3EH,00H;9DB00H,00H,00H,00H,00H,00H,00H,00H;空END实验四 单片机与步进电机的接口技术1、 实验目的1) 强化对步进电机工作原理的理解;2) 掌握用单片机控制步进电机时的接口电路设计方法;3) 掌握对步进电机进行控制的编程方法。2、 实验设备装有proteus的电脑一台3、 实验内容利用单片机AT89C51单片机控制步进电机的启/停、正转与反转。参考电路如下。图4.1 参考电路图4、 步进电机元件介绍Proteus软件中的单极性步进电机元件为6线制,其原理图及属性编辑框如图4.2所示,各属性值可根据需要修改。本实验中所设置的属性值如图4-2所示。图3-2 88点阵LED引脚测试5、参考程序ORG00HAJMPSTARTORG100HSTART:MOVDPTR,#TAB1MOVR0,#03HMOVR4,#0WAIT:MOVP1,R0;初始角度为0度MOVP2,#0FFHJNBP2.0,POS;判断键盘JNBP2.1,NEGSJMPWAITJUST:JBP2.1,NEGPOS:MOVA,R4;正转45度MOVCA,A+DPTRMOVP1,AACALLDELAYINCR4AJMPKEYNEG:MOVR4,#6;反转45度MOVA,R4MOVCA,A+DPTRMOVP1,AACALLDELAYAJMPKEYKEY:MOVP2,#3H;读键盘JBP2.0,FZ1CJNER4,#7,LOOPZ;是结束标志MOVR4,#0FFHLOOPZ:INCR4;地址加1MOVA,R4MOVCA,A+DPTRMOVP1,A;输出控制脉冲ACALLDELAY;程序延时AJMPKEYFZ1:JBP2.1,KEYCJNER4,#0H,LOOPF;是结束标志MOVR4,#08HLOOPF:DECR4MOVA,R4MOVCA,A+DPTR;输出控制脉冲MOVP1,AACALLDELAY;程序延时AJMPKEYDELAY:MOVR6,#5DD1:MOVR5,#80HDD2:MOVR7,#0DD3:DJNZR7,DD3DJNZR5,DD2DJNZR6,DD1RETTAB1:DB02H,06H,04H,0CHDB08H,09H,01H,03H;正转模型END实验五 数字电压表实验1、 实验目的1) 掌握A/D转换器件ADC0808接口电路的设计方法;2) 掌握测量数据处理过程中数值的量程转换方法;3) 体会A/D转换器的位数对测量精度的影响。2、 实验设备装有proteus的电脑一台3、 实验内容(1)利用单片机AT89C51与A/D转换器件ADC0808设计一个数字电压表,能够测量0-5V之间的直流电压值,并用4位数码管实时显示该电压值。参考电路如下。图5.1 参考电路图(2)在实验内容(1)的基础上设计一个三路电压测量电路,测量值采用数码管轮流显示或利用LCD进行显示。参考电路如下。图5.2 3路电压测量+LCD显示电路5、参考程序(1)实验内容1程序LED_0EQU30H;个位LED_1EQU31H;十位LED_2EQU32H;百位LED_3EQU33H;存放千位段码ADCEQU35HCLOCKBITP1.4;定义0809时钟位STBITP1.5EOCBITP1.6OEBITP1.7ORG00HSJMPSTARTORG0BHLJMPINT_T0ORG30HSTART:MOVLED_0,#00HMOVLED_1,#00HMOVLED_2,#00HMOVDPTR,#TABLE;段码表首地址MOVTMOD,#02HMOVTH0,#245MOVTL0,#00HMOVIE,#82HSETBTR0WAIT:CLRSTSETBSTCLRST;启动AD转换JNBEOC,$;等待转换结果SETBOEMOVADC,P2;读取AD转换结果CLROEMOVA,ADC;AD转换结果转换成BCD码MOVR7,AMOVLED_3,#00HMOVLED_2,#00HMOVA,#00HLOOP1:ADDA,#20H;一位二进制码对应20mV电压值DAAJNCLOOP2MOVR4,AINCLED_2MOVA,LED_2CJNEA,#0AH,LOOP4MOVLED_2,#00HINCLED_3LOOP4:MOVA,R4LOOP2:DJNZR7,LOOP1ACALLBTOD1LCALLDISPSJMPWAITORG200HBTOD1:MOVR6,AANLA,#0F0HMOVR5,#4LOOP3:RRADJNZR5,LOOP3MOVLED_1,AMOVA,R6ANLA,#0FHMOVLED_0,ARETINT_T0:CPLCLOCK;提供0809时钟信号RETIDISP:MOVA,LED_0;显示子程序MOVCA,A+DPTRCLRP1.3MOVP0,ALCALLDELAYSETBP1.3MOVA,LED_1MOVCA,A+DPTRCLRP1.2MOVP0,ALCALLDELAYSETBP1.2MOVA,LED_2MOVCA,A+DPTRCLRP1.1MOVP0,ALCALLDELAYSETBP1.1MOVA,LED_3MOVCA,A+DPTRCLRP1.0MOVP0,ALCALLDELAYSETBP1.0RETDELAY:MOVR6,#10;延时5msD1:MOVR7,#250DJNZR7,$DJNZR6,D1RETTABLE:DB3FH,06H,5BH,4FH,66H;共阴数码管7段值DB6DH,7DH,07H,7FH,6FHEND(2)实验内容2程序#include#include/*公用函数-*/#define uchar unsigned char #define uint unsigned intuchar chnn;#define IN0 XBYTE0x7ff8+chnnunsigned char TempBuffer10;unsigned int temp;unsigned char getdata; /存放读入数据 /*LCD1602-*/#define Data P2 /数据端口 sbit LcdRs=P31; sbit LcdRw=P33; sbit LcdEn=P34;/*ADC0808-*/sbit EOC = P32; /忙信号sbit Clk = P35; /时钟信号/*/* lcd1602 */ms函数*/void delayms(unsigned int ms) unsigned int i,j; for(i=0;ims;i+) for(j=0;j125;j+); /us函数*/void delayus(uint us) while(us-);/写指令*/void Lcd_Com(unsigned char com) delayms(1); LcdRs=0;LcdRw=0;LcdEn=0; Data=com; delayms(1);LcdEn=1; delayms(1);LcdEn=0;/写数据*/void Lcd_Dat(unsigned char dat) delayms(1); LcdRs=1;LcdRw=0;LcdEn=0; Data=dat; delayms(1);LcdEn=1; delayms(1);LcdEn=0;/初始化*/void lcd_init() delayms(15); Lcd_Com(0x38);delayms(5); Lcd_Com(0x08);delayms(5); Lcd_Com(0x01);delayms(5); Lcd_Com(0x06);delayms(5); Lcd_Com(0x0c);delayms(5);/X Y 数据*/void Lcd_Char(unsigned char X,unsigned char Y,unsigned char Recdata) unsigned char address; if (Y = 0) address = 0x80 + X; else address = 0xc0 + X; Lcd_Com(address); Lcd_Dat(Recdata);/显示*/int Lcdplay(unsigned char *Data,int pos)while(*Data)!=0) switch(*Data) default:Lcd_Char(pos%16, pos/16,*Data);pos+;break; Data+; /*/* ADC0808 */CLOCK时钟信号*/void Time(void) interrupt 3 using 0 TH1=(65536-200)/256; TL1=(65536-200)%256; Clk=Clk; /频率500HZ*/void TimeInitial() TMOD=0x10; TH1=(65536-200)/256; TL1=(65536-200)%256; EA=1; ET1=1;TR1=1;/数据转换*/uchar ad_action(uchar chn) uchar read_data; chnn=chn; IN0=chn; delayus(15); read_data=IN0; return read_data; /数据转换*/void IntTo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论