单片机原理实验指导书(张自友.08.3)_第1页
单片机原理实验指导书(张自友.08.3)_第2页
单片机原理实验指导书(张自友.08.3)_第3页
单片机原理实验指导书(张自友.08.3)_第4页
单片机原理实验指导书(张自友.08.3)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

PAGE第1页51系列单片机实验指导书张自友乐山师院物电系实验室编印2008年3月第一章实验系统介绍1.1.系统组成 AEDK5196ET单片机实验系统包括:AEDK5196ET实验系统主板(已插上8032CPU芯片);U5196ETF测试板(已联接60芯短接电缆);9芯标准串行通讯电缆:1根;4芯电源联接电缆:1根;40芯仿真联接电缆:1根;实验用线束:20根;外部电源:选配件;AEDK机电实验平台:选配件;系统软件安装盘:5张;实验系统连接如右图所示:1.2基本实验项目软件编程实验,提供MCS-51、MCS-96算术子程序库;单片机本身并行口、串行口、定时/计数器、A/D转换、中断系统等实验;扩展8位存储器实验;扩展简单输入、输出口实验;扩展可编程并行口(8155/8255)实验;扩展可编程串行口(8251)实验;扩展可编程键盘显示控制器(8279)实验;扩展A/D(0809),D/A(0832)转换实验;双色灯显示实验(交通灯);扫描键盘,LED数码管显示实验;计算机音响实验;继电器控制实验;步进电机,直流电机控制实验;标准(CENTRONIC)并行打印机实验;1.3系统快速入门用户使用本系统进行实验时一般包括以下步骤: 启动运行环境->编写实验程序->调试实验程序->进行实验1.启动运行环境正确连接实验系统,确认各个开关处于正确位置,打开实验机电源。 运行LCAET软件,进入调试环境。选取主菜单的Options菜单进行通讯设置(串行口、波特率的设置)和模式设置(CPU类型、实验机状态),与实验机建立通信联系。2.编写实验程序 新建文件,保存成.asm(汇编)或者.c(c51)即可。3.调试 打开源语句调试窗口并将目标码加载到实验机。然后用户就可以运用本系统提供的各种工具和方法进行调试。主要是观察程序的运行是否正常、有无走飞、各主要参数中间值是否与设计吻合。4.进行实验;P3.2PULSE+;CS0832-;-F218;VOUT,AGND示波器D_APORTEQU0F218H;0832口地址ORG0000HAJMPSTARTORG0003HAJMPFX0ORG0030HSTART: MOVSP,#60H MOVR1,#1 SETBEX0 SETBIT0 SETBEALOOP: ACALLSCAN SJMPLOOP;方波生成FANGBO: MOVA,#0FFH MOVDPTR,#D_APORT MOVX@DPTR,A ACALLDELAY MOVA,#00H MOVX@DPTR,A ACALLDELAY ACALLSCAN SJMPFANGBO;锯齿波生成JUCHI:MOVA,#00HMOVDPTR,#D_APORTJ_L:MOVX@DPTR,AINCAJNZJ_LACALLSCANSJMPJUCHI;正弦波生成SINE: MOVR0,#0S_L: MOVDPTR,#TABLE MOVA,R0 MOVCA,@A+DPTR MOVDPTR,#D_APORT MOVX@DPTR,A INCR0 CJNER0,#65,S_L ACALLSCAN SJMPSINE;中断服务子程序FX0: INCR1 RETI;按键扫描SCAN: CJNER1,#0,N1 AJMPFANGBON1: CJNER1,#1,N2 AJMPSINEN2: CJNER1,#2,N3 AJMPJUCHIN3: MOVR1,#0 RET;延时 DELAY: MOVR7,#80 DJNZR7,$ RET ;正弦波数据表TABLE: DB141,153,165,177,188,199,209,218,227,234,241,246,250,254 DB255,256,255,254,251,246,241,235,227,219,209,199,188,177 DB165,153,141,128,116,103,91,79,68,57,47,38,29,22,15,10,6 DB3,1,0,1,2,5,10,15,21,29,37,47,57,67,79,90,103,115,128; END3,键盘扫描与数码管显示实验;CS8255F228H;PB0~7LINE1~8(键盘列线)已接好;PC0~1KEYIN1~2(键盘行线)已接好;PC3~5LEDSA~LEDSC,PC2LEDSELECT(通过短路套已接好);PA0~7LEDA~LEDDP(数码管数据线通过短路套已接好);C8255EQU0F22BH;8255命令口地址P8255AEQU0F228H;8255PA口地址P8255BEQU0F229H;8255PB口地址P8255CEQU0F22AH;8255PC口地址LED0 DATA50H;显存区,同时也是键值存放区;ORG0000HAJMPMAINORG0030HMAIN:MOVSP,#60H ;堆栈初始化MOVLED0,#10H;置显示初始值MOVDPTR,#C8255 ;8255初始化MOVA,#82H;PB口输入,PA,PC口输出MOVX@DPTR,A SETB EX0 SETB IT0 ;设置为边沿触发,避免重复多次触发 SETB EA;开中断LOOP:ACALLDISP;显示子程序ACALL KEYAJMPLOOP;循环扫描;DISP: MOVDPTR,#P8255C MOVA,#00H ;00000000B,LEDSA~SC,LEDSELECT=0 MOVX@DPTR,A;通过8255C口选种第一个数码管 MOV DPTR,#LEDSEG MOV A,LED0 MOVC A,@A+DPTR;查段选码 MOVDPTR,#P8255A MOVX@DPTR,A;送段选码 PUSH1 POP1 NOP;短暂延时 CLRA MOVX@DPTR,A;消除显示RET;键盘扫描子程序KEY: MOVA,#00H;先判断是否有键按下,行线PC0PC1送00MOVDPTR,#P8255CMOVX@DPTR,AMOVDPTR,#P8255BMOVXA,@DPTR;读列线,读到0,说明按了键CJNEA,#0FFH,KEY_NEXT;判键是否按下,有键转KEY_NEXT RET;无键返回KEY_NEXT: ACALL D10MS ;消除抖动MOVA,#02H;键盘扫描第一行(输出行选码)MOVDPTR,#P8255CMOVX@DPTR,AMOVDPTR,#P8255BMOVXA,@DPTR;读列线CJNEA,#0FFH,KEY_L0;判键是否按下,有键转KEY_L0 AJMPKEY_NEXT2;无键转第二行KEY_L0:MOVR5,#0;保存行号AJMPLIE;转列识别KEY_NEXT2:MOVA,#01H;扫描第二行MOVDPTR,#P8255CMOVX@DPTR,AMOVDPTR,#P8255BMOVXA,@DPTRCJNEA,#0FFH,KEY_L1;判键是否按下,有键转KEY_L1RET;无键转结束KEY_L1:MOVR5,#1;保存行号AJMPLIE;转列识别LIE:MOVR0,#08H;控制循环移位8次,依次扫描列 MOVR6,#0;保存列号,初值0LIE_LOOP:RRCAJNCCALCINCR6DJNZR0,LIE_LOOPCALC:MOV A,R5;计算键值,行*号8+列号RL ARL ARL AADD A,R6MOV LED0,A;将键值保存到显存区KEYWAIT: MOVDPTR,#P8255B ;等待键释放 MOVXA,@DPTR CJNEA,#0FFH,KEYWAITKEYEXIT:RET;D10MS:MOVR0,#100;延时10MS子程序D1: MOVR1,#50DJNZR1,$DJNZR0,D1RET;;LED显示常数表LEDSEG:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH DB77H,7CH,39H,5EH,79H,71H,00H;END4.8255简易数字钟;CS8255F228H;PC3~5LEDSA~LEDSC,PC2LEDSELECT(通过短路套已接好);PA0~7LEDA~LEDDP(通过短路套已接好);C8255EQU0F22BH;8255命令口地址P8255AEQU0F228H;8255PA口地址P8255BEQU0F229H;8255PB口地址P8255CEQU0F22AH;8255PC口地址LSL DATA50H;秒个位LSH DATA51H ;秒十位LLL DATA 52H ;分隔符"-"LMLDATA53H ;分个位LMHDATA54H ;分十位LLH DATA 55H ;分隔符"-"LHLDATA56H ;时个位LHHDATA57H ;时十位TIME1 DATA 58H ;辅助计数变量1TIME2 DATA 59H ;辅助计数变量2;ORG0000HAJMPMAINORG 000BHAJMP FT0 ORG0030HMAIN:MOV SP,#60H ACALL INILOOP: ACALLDISP;显示子程序AJMPLOOP;循环扫描INI: MOVLSL,#00H;置显示初始值MOVLSH,#00HMOV LLL,#0AH ;"-"段选码位于段选码表中第10个位置MOVLML,#00HMOVLMH,#00HMOV LLH,#0AH ;"-"MOVLHL,#00HMOVLHH,#00H;初始值00-00-00MOVDPTR,#C8255 ;8255初始化MOVA,#80H;8255PA,PB,PC口输出MOVX@DPTR,AMOV TMOD,#02H ;定时器初始化,定时,方式2(8位自动重装初值)MOV TH0,#164 ;100微妙定时MOV TL0,#164MOV TIME1,#100 ;辅助计时变量,让100us发生10000次就是1秒MOV TIME2,#100 SETB ET0 SETB EA;开中断 SETB TR0 ;启动定时器 RET;显示子程序DISP: MOV R5,#00H ;存放数码管位选码(00H,08,10H,,,+8) MOV R0,#50H ;第一个数码管显存地址(50H,51H,52H,,,57H)D_LOOP:MOVDPTR,#P8255C MOVA,R5;数码管位选码 MOVX@DPTR,A;通过8255C口选种第一个数码管 MOV DPTR,#LEDSEG MOV A,@R0 ;送显示内容 MOVC A,@A+DPTR ;查段选码 MOVDPTR,#P8255A; MOVX@DPTR,A;送出显示 ACALL DELAY;延时,增加显示亮度;LED0 MOV A,R5 ADD A,#08H MOV R5,A;回送R5 INC R0 ;变量修正 CJNE R0,#58H,D_LOOP;8个没显示完,继续显示 RET;FT0:;中断服务程序 DJNZ TIME1,S0 MOV TIME1,#100 DJNZ TIME2,S0 MOV TIME2,#100 ;统计100*100次 INC LSL MOV A,LSL CJNE A,#10,S0 MOV LSL,#0 INC LSH MOV A,LSH CJNE A,#6,S0 MOV LSH,#0;秒 INC LML MOV A,LML CJNE A,#10,S0 MOV LML,#0 INC LMH MOV A,LMH CJNE A,#6,S0 MOV LMH,#0;分 INC LHL MOV A,LHL CJNE A,#10,S0 MOV LHL,#0 INC LHH MOV A,LHH MOV B,#10 MUL AB ADD A,LHL;判断是否到24时,LHH*10+LHL CJNE A,#24,S0 MOV LHH,#0

温馨提示

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

评论

0/150

提交评论