还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
单片机接口技术实验指导书襄樊学院物理与电子信息技术系实验报告内容及格式
1.实验目的
2.实验设备
3.实验原理及环境
4.实验内容只做文字叙述,程序部分放在程序清单中流程图也可不画
5.程序清单本实验使用的完整程序如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可
6.实验步骤
7.实验总结主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等此项为实验成绩评定的重要依据实验1KeilC51的使用(汇编语言)
1.实验目的初步掌握KeilC51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序
2.实验设备ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台
3.实验原理及环境在计算机上已安装KeilC51软件这个软件既可以与硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不与硬件连接,仅在计算机上以虚拟仿真的方法运行程序如果程序有对硬件的驱动,就需要与硬件连接;如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真
4.实验内容
1.掌握软件的开发过程1)建立一个工程项目选择芯片确定选项2)加入C源文件或汇编源文件3)用项目管理器生成各种应用文件4)检查并修改源文件中的错误5)编译连接通过后进行软件模拟仿真6)编译连接通过后进行硬件仿真7)IAP编程操作
2.按以上步骤实现在P
1.0输出一个频率为1Hz的方波
3.在2的基础上,实现同时在P
1.0和P
1.1上各输出一个频率同为1Hz但电平状态相反的方波
5.程序清单
1.P
1.0输出一个频率为1Hz的方波程序参见实验步骤中程序
2.同时在P
1.0和P
1.1上各输出一个频率同为1Hz但电平状态相反的方波ORG0000HSTART:CPLP
1.1AGAIN:CPLP
1.0CPLP
1.1MOVR0#10;延时
0.5秒LOOP1:MOVR1#100LOOP2:MOVR2#250DJNZR2$DJNZR1LOOP2DJNZR0LOOP1SJMPAGAINEND
6.实验步骤以下假定你在E:\TEST文件夹下学习、运行Keil
1.建立一个工程项目选择芯片确定选项
①Project→
②NewProject→
③输入工程名test→
④保存工程文件(鼠标点击保存按钮),然后
①选CPU厂家(Atmel)→
②选CPU型号89C51
③选好后确定接着选晶振频率及生成HEX文件等
①Project→
②OptionsforTarget‘Target1’…→
③在Target中→
④更改CPU晶振频率为12MHz→
⑤在Output中→
⑥选择生成HEX格式其它采用缺省设置→
⑦选好后确定
2.建立汇编源文件
①File→
②New
③弹出源文件编辑窗口输入以下源文件ORG0000HAGAIN CPLP
1.0MOVR0,#10;延时
0.5秒LOOP1MOVR1,#100LOOP2MOVR2,#250DJNZR2,$DJNZR1,LOOP2DJNZR0,LOOP1SJMPAGAINEND源程序编写完后,
①File→
②SaveAs将文件以test.asm保存在E:\test目录下,获得汇编语言源程序
3.用项目管理器生成编译各种应用文件
①点击Target1前之+号→出现
②SourceGroup1→
③点击它并按鼠标右键会生弹出下拉菜单见图1-5编译文件文件窗口→选择
④AddFilestoGroup‘SourceGroup1’→
⑤点击add向项目中添加Test.asm源文件→
⑥点击close关闭AddFilestoGroup‘SourceGroup1’窗口→
⑦在SourceGroup1前会出现一个+号→
⑧点击之弹出test.asm文件名点击该文件名→
⑨主窗口中会出现该程序编译Project→Buildtarget就会生成一系列到文件如OBJ文件LST文件HEX文件等
4.检查并修改源文件中的错误如果在源文件中存在错误在Output窗口中会出现错误提示信息,你可以在源程序中进行修改,然后存盘后重新Build观察错误提示信息
5.编译连接通过后进行软件模拟仿真Debug→Start/StopDebugSession进入软件模拟的仿真窗口,可使用单步、设断点来进行调试和除错
6.编译连接通过后进行硬件仿真实验箱的仿真串口必须与PC机串口连接,通电,拨位开关K10必须拨在B端,连接P10和L0,连接P11和L1,设置硬件实时仿真调试选项:Project→OptionsforTarget‘Targetl’→Debug.硬件实时仿真调试选项窗口见图1-5选硬件仿真选项按确定按钮确定进入硬件实时调试窗口后可打开各种观察窗口进行单步断点运行到光标连续执行等操作,无误后可连续运行观察LED发光管的显示效果注意退出时须按单片机的复位按键SS10,在进行硬件连接前最好也先按单片机的复位按键SS
107.修改以上程序,实现同时在P
1.0和P
1.1上各输出一个频率为1Hz但电平状态相反的方波
7.实验总结实验2十六进制与十进制的转换
1.实验目的实践汇编语言顺序结构的编程方法,掌握十六进制数转换成十进制数的编程实现,掌握单步运行程序的基本技巧
2.实验设备ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台
3.实验原理及环境将十六进制数转换成十进制数有多种方法,比较典型的是用待转换数除以权值的方法,即依次除以
100、10,则各次的商和最后的余数就是所需要的十进制数
4.实验内容将放在片内RAM30H中的2位十六进制数转换成3位十进制数,按照从高位到低位的顺序分别放入31H~33H中(即非压缩的BCD码)在本实验中,要求使用单步方式运行,以便观察各单元的变化过程ORG0000HMOV30H#128MOVA30HMOVB#10DIVABMOV33HBMOVB#10DIVABMOV32HBMOVB#10DIVABMOV31HBEND
5.程序清单参见实验内容中程序
6.实验步骤
1.建立一个工程,将在预习中做好的*.asm文件加入
2.调出存储器编辑窗口,将30H单元修改成某一值
3.在希望停下来的指令上设断点,然后运行,在断点处停下来后,再单步运行,可以看到各单元的变化情况运行完最后一条指令后,在31H~33H中应获得30H中十六进制数对应的十进制数
7.实验总结实验38段LED显示器动态显示
1.实验目的掌握8段LED显示器的使用及显示程序的设计方法
2.实验设备ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台
3.实验原理及环境
1.实验箱上有6位8段LED显示器,采用动态方式驱动即使一位LED显示器显示内容一段时间,然后下一位LED显示器显示内容一段时间……,周而复始只要刷新频率不小于50Hz,就可以获得清晰稳定的显示效果
2.MCS-51CPU通过一片8255对8段LED显示器进行段驱动和位驱动,8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H
3.LED显示器的各段由8255的B口驱动,低电平对应段发光,高电平对应段熄灭各段的驱动位如图5-1,各显示字的字形代码如下所示显示字字形代码显示字字形代码显示字字形代码0C0H
0.40H-BFH1F9H
1.79H灭FFH2A4H
2.24H3B0H
3.30H499H
4.19H592H
5.12H682H
6.02H7F8H
7.78H880H
8.00H990H
9.80HA88HA.08HB83HB.03HCC6HC.46HDA1HD.21HE86HE.06HF8EHF.0EH
4.LED显示器的各位由8255的A口驱动,低电平对应位发光,高电平对应位熄灭LED显示器对应位口位左起第一位D0左起第二位D1左起第三位D2左起第四位D3左起第五位D4左起第六位D
54.实验内容
1.编写一个6位LED显示器驱动子程序(在主程序中已对接口芯片8255做好必要的初始化)字形表按0~F、
0.~F.、-、灭的顺序排列该子程序的要求如下入口待显示数00H~1FH放在20H~25H分别对应显示器的左起第1~第6位中出口每位LED显示
0.5mS后返回占用R
0、R
1、R
2、A、PSW、DPTR
2.子程序自身无法运行,为了运行这个子程序,另编写一个主程序这个主程序的功能是首先对8255进行初始化,然后就反复调用显示子程序,显示20H~25H中的待显示内容首先在20H起始的6个字节中置入00H~0FH,然后连续运行此程序,应显示0~F;在20H起始的6个字节中置入10H~1FH,然后连续运行此程序,应显示
0.~F.;若置入20H、21H,则显示-、灭
3.按以下框图编写一段程序,运行后会在显示器上应出现连续向左移动的0~F
5.程序清单ORG0000HMOVSP#6FHMOV20H#01MOV21H#02MOV22H#03MOV23H#04MOV24H#05MOV25H#06MOVDPTR#4003H;8255初始化MOVA#10000001B;A口、B口方式0输出,C口高4位输出,低4位输入MOVX@DPTRA;ACALLDELAY500MS;延时
0.5秒LOOP3:LCALLDISP;调用显示子程序SJMPLOOP3DISP:MOVR0#20HMOVR2#0FEHDISP1:MOVA@R0MOVDPTR#TABMOVCA@A+DPTRMOVDPTR#4001HMOVX@DPTRAMOVAR2MOVDPTR#4000HMOVX@DPTRACALLDELAY500USMOVA#0FFHMOVX@DPTRAMOVAR2RLAMOVR2AINCR0CJNER0#26HDISP1RETDELAY500MS:PUSH00HMOVR0#25;延时
0.5秒NEXT:ACALLDELAY20MSDJNZR0NEXTPOP00HRETDELAY500US:PUSH03HMOVR3#250DJNZR3$POP03HRETDELAY20MS:PUSH06HPUSH07HMOVR7#99AGAIN:MOVR6#100DJNZR6$DJNZR7AGAINPOP07HPOP06HRETTAB:DB0C0H0F9H0A4H0B0H99H92H82H0F8H;01234567DB80H90H88H83H0C6H0A1H86H8EH;89ABCDEFDB40H79H24H30H19H12H2H78H;
0.
1.
2.
3.
4.
5.
6.
7.DB00H10H08H03H46H21H06H0EH;
8.
9.A.B.C.D.E.F.END
6.实验步骤
1.将P
0.0~P
0.7与JD0~JD7连接起来开关KC倒向上方
2.建立一个工程,将在预习中做好的实验内容1和2的程序拷贝到一个*.asm文件加入
3.编译后与单片机硬件连接,运行
4.在20H起始的6个字节中置入00H~0FH中的任意6个值,然后连续运行此程序,应显示0~F中的6个数字;在20H起始的6个字节中置入10H~1FH中的任意6个值,然后连续运行此程序,应显示
0.~F.中的6个数字
5.如果运行结果不正常,可以用设断点、单步运行的方法查找错误所在,修改后重新编译、与单片机硬件连接,运行直至获得正确的结果
6.建立一个工程,将在预习中做好的实验内容1和3的程序拷贝到一个*.asm文件加入
7.编译后与单片机硬件连接,运行
8.观察LED显示器,应从右向左依次出现
0、
1、
2、3……
7.实验总结实验4矩阵键盘的使用
1.实验目的掌握矩阵键盘的使用及键盘扫描程序的设计方法
2.实验设备ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台
3.实验原理及环境实验箱上有一个16键的矩阵键盘,分为4行×4列4行分别连接到一片8255(与8段LED显示器的段驱动和位驱动共用)的PC0~PC3,4列分别连接到8255的PC4~PC78255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H第4列PC7第3列PC6第2列PC5第1列PC4行输入PC300H01H02H03H第4行PC204H05H06H07H第3行PC108H09H0AH0BH第2行PC00CH0DH0EH0FH第1行00H01H02H03H列驱动选择列驱动码使某一列为低电平而其它列为高电平,再读取行输入,若该列有键按下则相应的位便是低电平每个键均安排一个键值,如图6-1所示
4.实验内容
1.编写一个键盘扫描子程序(在主程序中已对接口芯片8255做好必要的初始化)这个程序对键盘作一次扫描,若无键按下,返回时累加器A中为FFH,若有键按下,返回时A中为该键键值键盘扫描子程序其中,查键值子程序可以自行编写,也可以使用下面这个查键值子程序,这个子程序的参数如下入口行列关键值码放在累加器A中,高4位是列驱动码(被扫描列的对应位为0,其余位均为1),低4位是行状态(按下键的对应位为0,其余位均为1)出口键码放在A中带出占用R
1、A、PSW、DPTR程序清单如下;查键值子程序,起始地址为KEY20KEY20:PUSHACC;暂存关键值MOVR1#00H;查键值自变量清0KEY21:JNBACC.4KEY22;计算列数RRAINCR1SJMPKEY21KEY22:MOVAR1;按每列4个键计算MOVB#4MULABMOVR1APOPACC;恢复关键值KEY23:JNBACC.0KEY24;计算行数RRAINCR1SJMPKEY23KEY24:MOVDPTR#KEYTAB;读取键值MOVAR1MOVCA@A+DPTRRETKEYTAB:DB0FH0BH07H03HDB0EH0AH06H02HDB0DH09H05H01HDB0CH08H04H00H
2.键盘扫描子程序自身无法运行,为了运行这个子程序,另编写以下程序:ORG0000HMOVSP#6FHMOVR0#5;延时
0.5秒LOOP1:MOVR1#200LOOP2:MOVR2#250DJNZR2$DJNZR1LOOP2DJNZR0LOOP1MOVDPTR#ADD_8255+3;8255初始化MOVA#10000001B;A口、B口方式0输出,C口高4位输出,低4位输入MOVX@DPTRALOOP3:LCALLDISP;调用显示子程序DIS,设显示子程序入口为DISPLCALLKEY;调用键盘扫描子程序,设键盘扫描子程序入口为KEYCJNEA#0FFHLOOP4;如果有键按下转SJMPLOOP3LOOP4:MOV20H21HMOV21H22HMOV22H23HMOV23H24HMOV24H25HMOV25HASJMPLOOP3其中显示子程序使用实验3中的显示子程序程序运行后,每按一键便从显示器的右端移入一个对应的数
5.程序清单参见实验内容中的程序
6.实验步骤
1.将P
0.0~P
0.7与JD0~JD7连接起来开关KC倒向上方
2.建立一个工程,将在预习中做好的实验内容1和2的程序以及实验5中的显示子程序拷贝到一个的*.asm文件加入
3.编译后与单片机硬件连接,运行
4.按下键盘上的各键,相应的数字会出现在LED显示器上
7.实验总结实验5A/D转换
1.实验目的掌握用ADC0809实现A/D的方法
2.实验设备ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台
3.实验原理及环境电位器W1将+5V电压分压后送入ADC0809的输入IN4~IN7,调节电位器W1可以获得0~+5V的电压输入ADC0809的接口参数如下输入电压范围0~+5V启动IN0~IN7A/D转换写任意数到8000H~8007H取转换结果读8000H~8007HEOC通过一个反相器输出
4.实验内容:设计一个程序,将IN4输入的0~+5V模拟电压转换成数字量,再将这个2位十六进制转换成3位十进制数,放在LED显示器的第四~六位显示其中显示子程序可以用实验3中的子程序判断转换是否结束可以将ADC0809的EOC(经反相器)引入到P
1.0,然后查询P
1.0的状态
5.程序清单
6.实验步骤
1.将P
0.0~P
0.7与JD0~JD7连接起来开关KC倒向上方
2.将P
0.0~P
0.7与U9D0~U9D7连接起来
3.将P
1.0与EOC连接起来
4.建立一个工程,将在预习中做好的实验程序*.asm文件加入
5.编译后与单片机硬件连接,运行
6.旋转电位器W1,LED显示器上的数字应在000000~000255之间变化(因受电位器的调节范围限制,有可能小于这个范围)
7.实验总结实验6D/A转换
1.实验目的掌握用DAC0832实现D/A转换的方法
2.实验设备ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台
3.实验原理及环境DAC0832的连接使用单缓冲方式,D/A转换口地址为6000H当输入数字量为0~255时,输出电压0~+5V可以用这个电压驱动一个微型直流电动机,使它的转速在最慢到最快之间变化
4.实验内容设计一个程序,在主程序中向P
1.0输出频率为1Hz的方波,同时使用定时器1定时中断,在中断服务程序中用D/A转换器输出周期为20秒的三角波用一个工作寄存器存放电压值,使用定时器定时中断,每中断一次将电压值送D/A转换器并加1,直到最大值后再改为减1周而复始,这样就可以输出三角波这个三角波用来控制一个微型直流电动机的转速
5.程序清单ORG0000HLJMP0xff000037ORG001BHMOVTH1#66HMOVTL1#0D0HMOVDPTR#6000HMOVX@DPTRACJNEA#0FFH0xff00002aCLR26H.0xp1:CJNEA#00H0xff00002fSETB26H.0xp2:JB26H.0xp3DECARETURN:RETIxp3:INCASJMPRETURNxp:CLRAMOVTMOD#10HMOVTH1#66HMOVTL1#0D0HMOVIE#88HSETBTR1AGAIN:CPLP
1.0MOVR1#10loop1:MOVR2#100loop2:MOVR3#250DJNZR3$DJNZR2loop2DJNZR1loop1SJMPAGAINEND
6.实验步骤
1.将P
0.0~P
0.7与U14D0~U14D7连接起来开关KC倒向上方
2.将P
3.6WR与U14WR连接起来,将P
1.0与L00连接起来
3.将开关K9拔向上方
4.建立一个工程,将在预习中做好的实验程序拷贝到一个*.asm文件加入
5.编译后与单片机硬件连接,运行
6.观察电动机应有周期为20秒的速度变化,发光二极管L0应以1Hz的频率闪动
7.实验总结
4.开关KC倒向上方D4D3D6D2D1D5D0D7图5-18段LED各段控制位图6-1键盘布置及键值。