《单片机技术》实验指导书Word下载.docx
《《单片机技术》实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《《单片机技术》实验指导书Word下载.docx(5页珍藏版)》请在冰豆网上搜索。
外部ROM存放数据起始地址ORG0000HLJMPSTARORG0100HSTAR:
MOVSP,#60H;
初始化堆栈指针MOVR0,#Address1MOVDPTR,#Address2MOVR7,#10HSTAR1:
MOVA,@R0;
传送MOVX@DPTR,AINCR0INCDPTRDJNZR7,STAR1MOVR0,#Address1MOVDPTR,#Address2MOVR7,#10HSTAR2:
MOVB,@R0;
比较MOVXA,@DPTRCJNEA,B,STAR3INCR0INCDPTRDJNZR7,STAR2SJMP$;
传送正确STAR3:
SJMP$;
传送错误END七、思考题 编写程序分别实现以下功能:
①将外部数据存贮区1000H~100FH中的数据送到80C51内部RAM40~4FH中。
②将外部数据存贮区1000H~100FH的内容写入外部RAM3030~303FH中。
-2- 实验二P1口数据输入、输出实验 123一、实验目的1、通过实验了解单片机最小系统。
2、了解P1口作为输入、输出方式使用时,CPU对P1口操作方法。
3、学习延时子程序的编写和使用。
二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、P1口做输出口,接G6区的八个发光二极管,编写程序,使发光二极管循环点亮(瞬间只有一个灯亮)。
2、、作输入口接两个拨动开关S21、S22;
,作输出口,接两个发光二极管DS35、DS36,编写程序读取开关状态,将此状态在发光二极管上显示出来。
【注意】P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
....准双向口结构可知当口用作输入口时,编程时必须先对口的锁存器写“1”;
若不.P1..........................先对它写“1”,读入的数据是不正确的。
四、实验原理图【注意】本实验指导书中的原理图只给出了重要部分原理图,单片机最小系统均未给出,请学生参考教材补充完整。
//////////VPPALE/37L3R113DS38L4R114DS39L5R115DS40L6P1口循环点灯原理图R116DS41L7R117DS42L8VCCR1181011121314151617181920-3-
//////////VPPALE/五、实验流程图开始开始P1口循环点灯框图六、实验步骤㈠P1口输出实验1、连线说明:
A3区:
JP51——G6区:
JP65【注意】实验箱上单片机的P1口分别接八个发光二极管,使用一根8线的扁平电缆连接即可。
2、编写程序。
3、实验结果:
通过G6区的LED指示灯,观察实验的输出结果是否正确。
㈡P1口输入、输出实验 1、连线说明:
A3区:
JP80JP55——G6区:
JP652、编写程序。
改变S21、S22两个拨动开关的状态,观察LED指示灯的变化。
七、源程序 ㈠P1口输出实验ORG0000HLJMPSTARTORG0100HSTART:
MOVSP,#60HMOVA,#0FFHMOVP1,A;
P1口输出数据时,该句可省略。
;
P1口输入数据时,该句必须保留。
CLRCSTART1:
RLCAMOVP1,A ACALLDelay SJMPSTART1Delay:
MOVR5,#2;
延时Delay1:
MOVR6,#0Delay2:
MOVR7,#0DJNZR7,$DJNZR6,Delay2DJNZR5,Delay1RET END㈡P1口输入、输出实验 【源程序略,学生自行设计】八、思考题 1、在80C51系统中,MOV指令需用1个机器周期,DJNZ指令需用2个机器周期,RET指令需用2个机器周期。
STARES598PCI实验仪中单片机的晶振为12MHz,请计算源程序中软件延时的时长是多少秒?
-5- 2、编程实现下表所示的发光二极管点亮时序,注意延时时间的设置。
时序12345 8个发光LED的状态8个LED同时亮,延时8个LED同时灭,延时自左向右,每隔循环点亮一个自右向左,每隔循环点亮一个自左向右,每隔循环相邻两个点亮一次-6- 实验三P1口数据输出实验一、实验目的1、了解单片机的工作原理,熟悉其编程方法以及输入、输出程序设计技巧。
学会使用并行口实现各种控制功能,如本实验等。
2、熟悉单片机程序存储器的查表指令,熟悉表格的设计及使用技巧。
熟练设计并使用软件延时子程序。
二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、编写程序:
使用80C51的P1口控制8个LED指示灯,实现交通灯功能。
2、连接线路、验证该功能,并熟悉P1口的使用方法。
四、实验原理//////////VPPALE/交通灯控制原理图该实验中单片机P1口与8个发光二极管相连。
实验箱上的8个发光二极管的排列顺序是“绿、黄、红、红、绿、黄、红、红”,这相当于两组“绿、黄、红”交通指示灯,可以模拟十字路口的东西向和南北向交通灯。
于每组红灯有两个,可把将两个红灯看作是一个红色指示灯,让它们同时亮灭。
一个周期内交通指示灯的所有状态,如下表所示:
R112DS37L3R113DS38L4R114DS39L5R115DS40L6R116DS41L7R117DS42L8VCCR1181011121314151617181920-7-东西向交通灯序号0123绿0111黄1011红1100红1100绿1101南北向交通灯黄1110红0011红00117CH0BCH0C7H0CBH状态码将状态码放入一段连续的ROM单元,可以构成一段数据表。
利用数据指针DPTR,将其指向数据表的首地址,再将各个状态的序号依次放入累加器A中,通过查表指令便可找到各个状态码,最后将状态码送入P1口显示并做相应的延时处理,发光二极管上即可反映出相应的交通指示灯状态。
当一个周期结束后,再用一条长跳转指令返回首个状态,就可实现交通指示灯的连续工作。
五、实验流程图 开始初始化堆栈设定数据表指针DPTR,设定循环变量R7查表并显示在P1口调用延时子程序NR7=R7-1,R7=0?
Y设定循环变量R7六、实验步骤 1、连线说明:
JP51—— G6区:
JP65-8-
LOOP:
MOVR7,#10;
循环次数,10次MOVR6,#0INCC:
MOV30H,R6LCALLDELAYINCR6MOVR0,#BUFFERLCALLDisplay8DJNZR7,INCC AJMPLOOP END八、思考题 1、如何实现8个LED数码管循环显示程序。
2、不使用8279,编程实现数码管的显示功能。
-14- 实验六电子钟(定时器、中断综合实验) 一、实验目的 熟悉80C51中CPU的定时器、中断系统编程方法,了解定时器的应用、实时程序的设计和调试技巧。
二、实验内容 编写一个时钟程序,使用定时器产生一个50ms的定时中断,对定时中断计数,通过8279将时、分、秒显示在数码管上。
三、程序框图 开始初始化堆栈给时钟单元赋初值使用定时器方式一,相关寄存器赋初值开中断,开定时器调显示秒单元=60?
刷新标志=1?
Y清0刷新标志主程序中断处理NY秒单元复位0分单元+1中断返回中断开始恢复定时器初值50ms单元+1NN时单元=24?
Y时单元复位0N1→刷新显示标志N分单元=60?
Y分单元复位0时单元+150ms单元=20?
Y50ms单元复位0秒单元+1 四、实验步骤 1、连线说明:
E5区:
CLKE5区:
CSE5区:
A0E5区:
A、B、C、D2、时间显示在数码管上五、程序清单ms50DATAsecDATA ——B2区:
2M——A3区:
CS5——A3区:
A0——G5区:
A、B、C、D31H 32H -15- ;
存放多少个50ms;
秒 minDATA33H;
分hourDATA34H;
时bufferDATA35H;
显示缓冲区EXTRNCODE(Display8)ORGLJMPORGLJMPORGSTAR:
MOVMOVMOVMOVMOVMOVMOVMOVMOVSETBSTAR1:
LCALLJNBCLRSJMP;
中断服务程序INT_Timer0:
MOVMOVPUSHMOVINCCJNEMOVINCINCCJNEMOVINCINCCJNE 0000HSTAR000BH;
定时器T0中断处理入口地址INT_Timer00100HSP,#60H;
堆栈ms50,A;
清零ms50hour,#12;
设定初值:
12:
59:
50min,#59sec,#50TH0,#60;
定时中断计数器初值TL0,#176;
定时50msTMOD,#1;
定时器0:
方式一IE,#82H;
允许定时器0中断TR0;
开定时器T0Display;
调用显示F0,$F0STAR1;
需要重新显示时间TL0,#176-5TH0,#6001HR1,#ms50@R1;
50ms单元加1@R1,#20,ExitInt@R1,#0;
恢复初值R1@R1;
秒加1@R1,#60,ExitInt1@R1,#0R1@R1;
分加1@R1,#60,ExitInt1 -16- MOV@R1,#0INCR1INC@R1;
时加1CJNE@R1,#24,ExitInt1MOV@R1,#0ExitInt1:
SETBF0ExitInt:
POP01HRETIHexToBCD:
MOVB,#10DIVABMOV@R0,BINCR0MOV@R0,AINCR0RETDisplay:
MOVR0,#bufferMOVA,secACALLHexToBCDMOV@R0,#10H;
第三位不显示INCR0MOVA,minACALLHexToBCDMOV@R0,#10H;
第六位不显示INCR0MOVA,hourACALLHexToBCDMOVR0,#bufferLCALLDisplay8RET END 六、思考题 1、定时器0初始化时,为什么设置TL0为176,TH0为60?
2、电子钟走时精度与哪些有关系?
中断程序中给TL0赋值为什么与初始化程序中不一样?
3、使用定时器方式二,重新编写该程序。
4、如何利用定时、中断实现交通灯的控制功能?
-17- 123实验七双机通讯实验一、实验目的与要求1、了解单片机串行口的内部结构、工作原理;
使用串行口方式二进行两个单片机之间的串行通信。
2、认真预习,做好实验前的准备工作,填写实验报告。
二、实验设备STARES598PCI实验仪两套、PC机两台三、实验内容1、编写程序:
A机向B机发送一个字节的数据,B机接收到后,将该数据显示在B机P1口的发光二极管上,再将该数据发送给A机,A机接收到B机发回的数据后,显示在A机P1口的发光二极管上。
2、按图连线,运行程序,观察实验结果,掌握8250的各项功能及编程方法。
四、实验原理图//////////VPPALE/五、实验步骤1、连线说明:
①A、B机实验仪上均连线:
JP51A机A3区:
RXDA3区:
TXDC1区:
GND②A机与B机交叉连线:
——B机————A3区:
TXDA3区:
RXDC1区:
GND-18-R112DS37L3R113DS38L4R114DS39L5——G6区:
JP65R115DS40L6R116DS41L7R117DS42L8VCCR1181011121314151617181920
kpTH1 DAC0832AD EXTRNDATA3EHXDATA0F000H CODE(GetKeyA,Display8) ;
DAC0832片选地址 CSEGATLJMPCSEGATLJMPCSEGATLJMPCSEGATSTART:
MOV LCALLMAIN:
LCALLJNC JNZKey0:
MOVADDCJNEJNC MOVKey0_1:
MOVLCALL SJMPKey1:
MOVCLRSUBBJNC CLRKey1_1:
MOV LCALLMain1:
JNBCLRLCALL JMP;
主程序初始化 0000HSTART000BHTIME00013HiINT10100HSP,#60HMainINITGetKeyAMain1Key1A,#VoltageOffsetA,VOLTAGEA,VOLTAGE,$+3Key0_1A,#0FFHVOLTAGE,ADACMain1A,VOLTAGECA,#VoltageOffsetKey1_1AVOLTAGE,ADACF0,MAINF0 RateTestMAIN -34- ;
定位0 ;
用于定时 ;
光电开关产生脉冲,触发中断 ;
初始化;
按键扫描 ;
0号键按下,转速提高 ;
最大;
D/A ;
1号键按下,转速降低 ;
最小;
F0=1,定时标志,刷新转速 ;
计算转速/显示 ;
循环进行实验内容介绍与测速功能测试 MainINIT:
CLRMOVF0 VOLTAGE,#99HA,VOLTAGEDAC MOVLCALL;
定时器/计数器初始化MOV MOVMOV ;
清读取转速标志 ;
初始化转换电压输入值, ;
初始D/A MOVMOVMOVMOVMOVMOVMOVSETBSETBSETBSETBSETBSETBRET ;
定时器0中断服务程序TIME0:
PUSHACCMOVTL0,#0D5H;
产生的定时(采用晶振)MOVTH0,#4BHDJNZR4,TIMER0_1SETBF0;
*4s间隔标志F0MOVR4,#5*4MOVA,NowCountLRRARRAANLA,#3FHMOVCount,AMOVA,NowCountH -35- TMOD,#11H ;
开定时器0:
定时方式1,定时器1:
定时方式1R4,#5*4;
定时5x50x4ms TL0,#0D4H ;
初始化定时器0,定时50ms()TH0,#4BHTL1,#00H;
初始化器定时1TH1,#00HkpTL1,#00H;
保存上一次定时器1的值kpTH1,#00HNowCountL,#0;
计数器NowCountH,#0TR0;
开始定时TR1;
开始定时ET0;
开定时器0中断EX1;
开外部中断1IT1;
边沿触发EA;
允许中断 RRARRAANLA,#0C0H ;
转一圈,产生四个脉冲,Count=NowCount/4ORLCount,A MOVMOVTIMER0_1:
POPRETIiINT1:
PUSHPUSHCLRMOVCLRSUBBMOVMOVSUBBJNZMOVCJNEJCiINT1_1:
INCMOVJNZINCiINT1_3:
MOViINT1_2:
MOVSETBPOPPOPRETI;
转速测量/显示RateTest:
MOVMOVDIVJNZMOVRateTest1:
MOV NowCountL,#0NowCountH,#0ACCPSWACCTR1A,TL1CA,kpTL1kpTL1,AA,TH1A,kpTH1iINT1_1A,kpTL1A,#30H,$+3iINT1_2NowCountLA,NowCountLiINT1_3NowCountHkpTL1,TL1kpTH1,TH1TR1ACCPSWA,CountB,#10ABRateTest1A,#10Hbuffer+1,A-36- ;
光电开关产生脉冲,触发中断 ;
过滤干扰脉冲 ;
高位为0,不需要显示 MOVbuffer,BMOVA,VOLTAGE;
给0832送的数据ANLA,#0FHMOVbuffer+4,AMOVA,VOLTAGEANLA,#0F0HSWAPAMOVbuffer+5,AMOVbuffer+2,#10H;
不显示MOVbuffer+3,#10HMOVbuffer+6,#10HMOVbuffer+7,#10HMOVR0,#bufferLCALLDisplay8;
显示转换结果RET;
数模转换,A-转换数字量DAC:
MOVDPTR,#DAC0832ADMOVX@DPTR,ARET END七.思考题 在日光灯或白炽灯下,将转速调节到25、50、75,观察转盘有什么现象出来?
-37- 实验十三LED16*16点阵实验一、实验目的与要求1、熟悉8155、8255的功能,了解点阵显示的原理及控制方法;
2、学会使用LED点阵,通过编程显示不同字符;
3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验设备STAR系列实验仪一套、PC机一台。
三、实验内容1、编写程序,用8255的PA、PB口控制16×
16点阵的行;
8255的PC口、8155的PA口控制16×
16点阵的列;
显示字符。
2、按图连接线路;
运行程序,观察实验结果,学会控制LED点阵显示字符。
四、实验原理图JP338255JP3481551017151311864219110171513118642A8A7A6A5A4A3A2A1U48SN74LS240NPA0PA1PA2PA3PA4PA5PA6PA7OE2OE1VCCGNDOE2OE120VCCVCCLED387314212115R1R2R3R4R5R6R7R8LED487314212115R1R2R3R4R5R6R7R8PC0PC1PC2PC3PC4PC5PC6PC7R