单片机原理实验指导书(张自友.08.3).doc_第1页
单片机原理实验指导书(张自友.08.3).doc_第2页
单片机原理实验指导书(张自友.08.3).doc_第3页
免费预览已结束,剩余10页可下载查看

下载本文档

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

文档简介

51系列单片机实验指导书 张自友乐山师院物电系实验室编印2008年3月第12页第一章 实验系统介绍1.1. 系统组成AEDK5196ET单片机实验系统包括:1. AEDK5196ET实验系统主板(已插上8032CPU芯片);2. U5196ETF测试板(已联接60芯短接电缆);3. 9芯标准串行通讯电缆:1根;4. 4芯电源联接电缆:1根;5. 40芯仿真联接电缆:1根;6. 实验用线束:20根;7. 外部电源:选配件;8. AEDK机电实验平台:选配件;9. 系统软件安装盘:5张;实验系统连接如右图所示:1.2 基本实验项目1. 软件编程实验,提供MCS-51、MCS-96算术子程序库;2. 单片机本身并行口、串行口、定时/计数器、A/D转换、中断系统等实验;3. 扩展8位存储器实验;4. 扩展简单输入、输出口实验;5. 扩展可编程并行口(8155/8255)实验;6. 扩展可编程串行口(8251)实验;7. 扩展可编程键盘显示控制器(8279)实验;8. 扩展A/D(0809),D/A(0832)转换实验;9. 双色灯显示实验(交通灯);10. 扫描键盘,LED数码管显示实验;11. 计算机音响实验;12. 继电器控制实验;13. 步进电机,直流电机控制实验;14. 标准(CENTRONIC)并行打印机实验;1.3 系统快速入门用户使用本系统进行实验时一般包括以下步骤:启动运行环境-编写实验程序-调试实验程序-进行实验1启动运行环境 正确连接实验系统,确认各个开关处于正确位置,打开实验机电源。运行LCAET软件,进入调试环境。选取主菜单的Options菜单进行通讯设置(串行口、波特率的设置)和模式设置(CPU类型、实验机状态),与实验机建立通信联系。2.编写实验程序 新建文件,保存成.asm(汇编)或者.c(c51)即可。3.调试 打开源语句调试窗口并将目标码加载到实验机。然后用户就可以运用本系统提供的各种工具和方法进行调试。主要是观察程序的运行是否正常、有无走飞、各主要参数中间值是否与设计吻合。4.进行实验根据实验有关说明和用户编制的程序,完成连线(最好先关闭实验机电源,再进行)。通过调试软件加载、运行程序,观察实验有关现象。若现象与设计不符,则返回第三步,重新进行。14 其它 未尽事宜,请查看系统软件帮助文挡。第二章 MCS51系列单片机实验实验一 I/O口输入输出实验任务:1,实现用p1口输出控制发光二极管亮灭和延时闪烁、左右移动等。 2,实现用拨动开关K0K7控制控制发光二极管L0L7。实验二 定时器及中断实验任务:1,实现计数实验,如果按键5次则点亮发光二极管。 2,实现3秒和5秒定时,并用此信号控制交通灯。 3,外部中断实验:按下按键时,停止发光二极管的闪烁。实验三 串口应用实验任务:1,串并转换实验 2串口通信实验实验四 c51编程实验任务:1,控制L0L7左右移动闪烁。 2,对10次ad采样结果排序,输出其平均值说明:1。本指导书不直接提供实验源代码,请实验前先自己根据实验任务编写实验程序。 2基本实验任务完成后,有时间可自己把附录的综合设计实验调试。附录:综合设计实验参考1AD转换实验,用中断方法读结果,并在数码管上显示;CS8255-F228H,CS0809-F230H,P3.2-EOC,IN0-05V(硬件连线);PC35-LEDSALEDSC,PC2-LEDSELECT(通过短路套接好);PA07-LEDALEDDP(通过短路套接好);-符号定义-C8255 EQU 0F22BH ;8255命令口地址P8255A EQU 0F228H ;8255 PA口地址P8255B EQU 0F229H ;8255 PB口地址P8255C EQU 0F22AH ;8255 PC口地址C0809 EQU0F230H;ADC0809片选信号LED0 DATA 50H ;显存区LED1 DATA 51HLED2 DATA 52H;-主程序- ORG 0000H AJMP MAIN ORG 0003H AJMP FX0 ORG 0030HMAIN: MOV SP,#60H MOV LED0,#00H ;置显示初始值 MOV LED1,#00H MOV LED2,#00H MOV DPTR,#C8255;8255初始化 MOV A,#80H ;8255 PA,PB,PC口输出 MOVX DPTR,A CLRIT0 SETBEX0SETB EA ;开中断 MOVDPTR,#C0809 MOVXDPTR,A ;启动AD转换LOOP: ACALL DISP ;显示子程序 AJMP LOOP ;主循环;-8255驱动数码管显示子程序- DISP: MOV DPTR,#P8255C MOV A,#00H MOVX DPTR,A ;通过8255C口选种第一个数码管MOVDPTR,#LEDSEGMOV A,LED0MOVC A,A+DPTRMOV DPTR,#P8255A ;显示键值 MOVX DPTR,A ;送显示段选码ACALLDELAY ;延时,增加显示亮度 CLR A;带了锁存器,送下一个数据前将数据撤消MOVXDPTR,AMOV DPTR,#P8255C MOV A,#08H MOVX DPTR,A ;通过8255C口选种第二个数码管MOVDPTR,#LEDSEGMOV A,LED1MOVC A,A+DPTRMOV DPTR,#P8255A ;显示键值 MOVX DPTR,A ;送显示段选码ACALLDELAYCLRAMOVXDPTR,AMOV DPTR,#P8255C MOV A,#10H MOVX DPTR,A ;通过8255C口选种第三个数码管MOVDPTR,#LEDSEGMOV A,LED2MOVC A,A+DPTRORLA,#80H ;加个小数点在最高位后面MOV DPTR,#P8255A ;显示键值 MOVX DPTR,A ;送显示段选码ACALLDELAYCLRAMOVXDPTR,A RET;- ;中断服务程序- FX0: MOV DPTR,#C0809MOVXA,DPTR ;读转换结果MOVB,#5MULAB;相乘结果为16位,再右移8位,则B刚好为整数部分MOVLED2,BMOVB,#10MULAB ;小数部分放大10倍MOVLED1,BMOV B,#10MULABMOV LED0,BFX0_RET:MOVDPTR,#C0809MOVXDPTR,A ;启动AD下一次转换RETI;-延时子程序-DELAY:MOV R7,#5DJNZ R7,$RET;- LED显示常数表- LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;- END2简易函数信号发生器,通过按PULSE+键,切换波形输出;P3.2-PULSE+;CS0832-;-F218;VOUT,AGND-示波器D_APORT EQU 0F218H ;0832 口地址 ORG 0000H AJMP START ORG 0003H AJMP FX0 ORG 0030HSTART: MOV SP,#60H MOV R1,#1 SETB EX0 SETB IT0 SETB EALOOP: ACALL SCAN SJMP LOOP;-方波生成-FANGBO:MOV A,#0FFHMOV DPTR,#D_APORTMOVX DPTR,AACALL DELAYMOV A,#00HMOVX DPTR,AACALL DELAYACALL SCANSJMP FANGBO;-锯齿波生成-JUCHI: MOV A,#00H MOV DPTR,#D_APORTJ_L: MOVX DPTR,A INC A JNZ J_L ACALL SCAN SJMP JUCHI;-正弦波生成-SINE:MOV R0,#0S_L:MOV DPTR,#TABLE MOV A,R0MOVC A,A+DPTRMOV DPTR,#D_APORTMOVX DPTR,AINC R0CJNE R0,#65,S_LACALL SCANSJMP SINE;-中断服务子程序-FX0:INC R1RETI;-按键扫描-SCAN:CJNE R1,#0,N1AJMP FANGBON1:CJNE R1,#1,N2AJMP SINEN2:CJNE R1,#2,N3AJMP JUCHIN3:MOV R1,#0RET;-延时-DELAY:MOV R7,#80DJNZ R7,$RET;-正弦波数据表-TABLE:DB 141,153,165,177,188,199,209,218,227,234,241,246,250,254DB 255,256,255,254,251,246,241,235,227,219,209,199,188,177DB 165,153,141,128,116,103,91,79,68,57,47,38,29,22,15,10,6DB 3,1,0,1,2,5,10,15,21,29,37,47,57,67,79,90,103,115,128 ;-END3,键盘扫描与数码管显示实验;CS8255-F228H ;PB07-LINE18 (键盘列线)已接好;PC01-KEYIN12(键盘行线)已接好;PC35-LEDSALEDSC,PC2-LEDSELECT(通过短路套已接好);PA07-LEDALEDDP(数码管数据线 通过短路套已接好);-C8255 EQU 0F22BH ;8255命令口地址P8255A EQU 0F228H ;8255 PA口地址P8255B EQU 0F229H ;8255 PB口地址P8255C EQU 0F22AH ;8255 PC口地址LED0 DATA 50H ;显存区,同时也是键值存放区;- ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV SP,#60H ;堆栈初始化 MOV LED0,#10H ;置显示初始值 MOV DPTR,#C8255;8255初始化 MOV A,#82H ;PB口输入,PA,PC口输出 MOVX DPTR,A SETBEX0 SETB IT0 ;设置为边沿触发,避免重复多次触发SETB EA ;开中断LOOP: ACALL DISP ;显示子程序 ACALL KEY AJMP LOOP ;循环扫描;- DISP: MOV DPTR,#P8255C MOV A,#00H ;00000000B,LEDSASC,LEDSELECT =0 MOVX DPTR,A ;通过8255C口选种第一个数码管MOVDPTR,#LEDSEGMOV A,LED0MOVC A,A+DPTR ;查段选码MOV DPTR,#P8255A MOVX DPTR,A ;送段选码PUSH 1POP 1NOP ;短暂延时CLR AMOVX DPTR,A ;消除显示 RET; -键盘扫描子程序- KEY:MOV A,#00H ;先判断是否有键按下,行线PC0PC1送00 MOV DPTR,#P8255C MOVX DPTR,A MOV DPTR,#P8255B MOVX A,DPTR ;读列线,读到0,说明按了键 CJNE A,#0FFH,KEY_NEXT ;判键是否按下,有键转KEY_NEXT RET ;无键返回 KEY_NEXT: ACALL D10MS;消除抖动 MOV A,#02H ;键盘扫描第一行(输出行选码) MOV DPTR,#P8255C MOVX DPTR,A MOV DPTR,#P8255B MOVX A,DPTR ;读列线 CJNE A,#0FFH,KEY_L0 ;判键是否按下,有键转KEY_L0 AJMP KEY_NEXT2 ;无键转第二行 KEY_L0: MOV R5,#0 ;保存行号 AJMP LIE ;转列识别 KEY_NEXT2: MOV A,#01H ;扫描第二行 MOV DPTR,#P8255C MOVX DPTR,A MOV DPTR,#P8255B MOVX A,DPTR CJNE A,#0FFH,KEY_L1;判键是否按下,有键转KEY_L1 RET ;无键转结束KEY_L1: MOV R5,#1 ;保存行号 AJMP LIE ;转列识别 LIE: MOV R0,#08H ;控制循环移位8次,依次扫描列 MOV R6,#0 ;保存列号,初值0LIE_LOOP: RRC A JNC CALC INC R6 DJNZ R0,LIE_LOOPCALC: MOVA,R5 ;计算键值,行*号8+列号 RLA RLA RLA ADDA,R6 MOV LED0,A ;将键值保存到显存区KEYWAIT:MOV DPTR,#P8255B;等待键释放MOVX A,DPTR CJNE A,#0FFH,KEYWAIT KEYEXIT:RET ;- D10MS: MOV R0,#100 ;延时10MS子程序D1: MOV R1,#50 DJNZ R1,$ DJNZ R0,D1 RET ;- ;LED显示常数表LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB 77H,7CH,39H,5EH,79H,71H,00H;- END48255简易数字钟;CS8255-F228H ;PC35-LEDSALEDSC,PC2-LEDSELECT(通过短路套已接好);PA07-LEDALEDDP(通过短路套已接好);-C8255 EQU 0F22BH ;8255命令口地址P8255A EQU 0F228H ;8255 PA口地址P8255B EQU 0F229H ;8255 PB口地址P8255C EQU 0F22AH ;8255 PC口地址LSL DATA 50H ;秒个位 LSH DATA 51H;秒十位LLLDATA 52H;分隔符 -LML DATA 53H;分个位LMH DATA 54H;分十位LLHDATA 55H;分隔符 -LHL DATA 56H;时个位LHH DATA 57H;时十位TIME1DATA 58H;辅助计数变量1TIME2DATA 59H;辅助计数变量2;- ORG 0000H AJMP MAIN ORG000BH AJMPFT0 ORG 0030HMAIN: MOV SP,#60H ACALL INILOOP: ACALL DISP ;显示子程序 AJMP LOOP ;循环扫描INI: MOV LSL,#00H ;置显示初始值 MOV LSH,#00H MOVLLL,#0AH ;-段选码位于段选码表中第10个位置 MOV LML,#00H MOV LMH,#00H MOVLLH,#0AH ;- MOV LHL,#00H MOV LHH,#00H ;初始值00-00-00 MOV DPTR,#C8255;8255初始化 MOV A,#80H ;8255 PA,PB,PC口输出 MOVX DPTR,A MOVTMOD,#02H;定时器初始化,定时,方式2(8位自动重装初值) MOV TH0,#164;100微妙定时 MOV TL0,#164 MOVTIME1,#100;辅助计时变量,让100us发生10000次就是1秒 MOV TIME2,#100 SETBET0 SETB EA ;开中断 SETB TR0 ;启动定时器 RET;-显示子程序- DISP: MOVR5,#00H;存放数码管位选码(00H,08,10H,+8)MOVR0,#50H ;第一个数码管显存地址(50H,51H,52H,57H)D_LOOP: MOV DPTR,#P8255C MOV A,R5 ;数码管位选码 MOVX DPTR,A ;通过8255C口选种第一个数码管MOVDPTR,#LEDSEGMOV A,R0 ;送显示内容MOVC A,A+DPTR;查段选码MOV DPTR,#P8255A ; MOVX DPTR,A ;送出显示ACALLDELAY ;延时,增加显示亮度 ; LED0MOVA,R5ADDA,#08HMOVR5,A ;回送R5INCR0;变量修正 CJNER0,#58H,D_LOOP ;8个没显示完,继续显示RET;- FT0: ;中断服务程序DJNZ TIME1,S0MOV TIME1,#100DJNZ TIME2,S0MOV TIME2,#100;统计100*100次INC LSLMOV A,LSLCJNE A,#10,S0MOV LSL,#0INC LSHMOV A,LSHCJNE A,#6,S0MOV LSH,#0 ;秒INC LMLMOV A,LMLCJNE A,#10,S0MOV LM

温馨提示

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

评论

0/150

提交评论