单片机实验报告(共37页).doc

上传人:飞****2 文档编号:14247914 上传时间:2022-05-03 格式:DOC 页数:37 大小:2.64MB
返回 下载 相关 举报
单片机实验报告(共37页).doc_第1页
第1页 / 共37页
单片机实验报告(共37页).doc_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《单片机实验报告(共37页).doc》由会员分享,可在线阅读,更多相关《单片机实验报告(共37页).doc(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上学 生 实 验 报 告(理工类)课程名称: 单片机原理及应用 专业班级: 14电子信息工程(1)班 学生学号: 学生姓名: 丁剑 所属院部:电子信息工程学院 指导教师: 徐 志 国 20 16 20 17 学年 第 1 学期 金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。实验报告书写说明实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。填写注意事项(1)细致观

2、察,及时、准确、如实记录。(2)准确说明,层次清晰。(3)尽量采用专用术语来说明事物。(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。实验项目名称:1存储器块清零 实验学时: 2 同组学生姓名: 陈超逸 实验地点: B403 实验日期: 16.1

3、1.09 实验成绩: 批改教师: 徐 志 国 批改时间: 一、实验目的和要求(1)掌握存储器读写方法(2)了解存储器的块操作方法二、实验仪器和设备伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件三、实验原理指定存储器中某块的起始地址和长度,要求能将其内容清零。设置块长度设置块起始地址地址加1当前地址内容清零是否清除完结束是否四、实验结果与分析1、程序如下/ 软件实验一 存储器块清零xdata unsigned char Buffer256 _at_ 0x4000;void main() unsigned int index; unsigned char xdata *

4、ptr; ptr = &Buffer; / 起始地址 for (index = 0; index = 255; index+) *ptr+ = 0; / 清0, 地址加一 2、 实验结果程序未运行前状态程序运行后结果如下图所示; 程序运行结果如下图所示:五、实验问题及心得思考题如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请学生修改程序,完成此操作答:程序如下:xdata unsigned char Buffer256 _at_ 0x4000;void main() unsigned int index; unsigned char xdata * ptr; ptr = &Buff

5、er; / 起始地址 for (index = 0; index = 255; index+) *ptr+ = 0xff; / 清0, 地址加一 心得体会: 只有事先把程序的各部分作用弄清楚,再在原程序上修改,才能达到预计的效果。实验项目名称:实验2 内存块移动 实验学时: 2 同组学生姓名: 陈超逸 实验地点: B403 实验日期: 16.05.04 实验成绩: 批改教师: 徐 志 国 批改时间: 一、实验目的和要求(1)掌握存储器读写方法(2)了解存储器的块操作方法二、实验仪器和设备伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件三、实验原理设置块的源地址设置块的目

6、标地址设置移动长度从源地址取数保存到目标地址中源地址加1目标地址加1是否移动完结束是否四、实验结果与分析实验程序如下:专心-专注-专业xdata unsigned char Buffer1256 _at_ 0x3000;xdata unsigned char Buffer2256 _at_ 0x4000;void main() unsigned int index; unsigned char xdata * ptr1; unsigned char xdata * ptr2; ptr1 = &Buffer1; ptr2 = &Buffer2; for (index=0; index = 255

7、; index+) *ptr2+ = *ptr1+; 实验结果:运行结果如下图所示:(原图上 修改后的图下)五、实验问题及心得本程序是给出起始地址,用地址加一方法移动块,请思考给出块结束地址,用地址减一方法移动块的算法。另外,若源块地址和目标块地址有重叠,该如何避免?修改后结果如下图所示:心得体会:汇编语言也有它的独到之处需要不断尝试。实验项目名称: 3.P1口输入输出 实验学时: 2 同组学生姓名: 陈超逸 实验地点: B403 实验日期: 16.05.04 实验成绩: 批改教师: 徐 志 国 批改时间: 一、 实验目的和要求(1)掌握存储器读写方法(2)了解存储器的块操作方法二、实验仪器和

8、设备伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件三、实验原理1、 实验电路及连线连线连接孔1连接孔21S0P1.02S1P1.13P1.2L44P1.3L5实验2: P1口输入输出连线连接孔1连接孔21P1.0L02P1.1L13P1.2L24P1.3L3实验1: P1口循环点灯实验1:P1口循环点灯 实验2:P1口输入输出Delay:MOV R6,#0HMOV R7, #0HDelayLoop:DJNZ R6,DelayLoopDJNZ R7,DelayLoopRET 2、实验程序8051延时子程序的延时计算问题,对于程序查指令表可知MOV,DJNZ指令均需用两个

9、机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为:(256255+2)2126 261ms3、实验框图(A) P1口循环点灯程序框图(B) P1口输入输出程序框图四、实验结果与分析1.实验程序:实验结果如下:五、实验问题及心得若是12MHZ的晶振,延时程序如何修改?答:修改程序如下Loop: mov a, #01h mov r2, #8Output: mov P1, a rl a call Delay djnz r2, Output ljmp LoopDelay: MOV r5, #5 mov r6, #5 MOV r7, #5DelayLoop: dj

10、nz r5,DelayLoop djnz r6, DelayLoop djnz r7, DelayLoop ret end心得:通过本次实验让我深刻认识到延时在单片机程序中的重要作用,以及延时的使用方法。掌握了延时的使用方法。实验项目名称:实验4 计数器实验 实验学时: 2 同组学生姓名: 陈超逸 实验地点: B403 实验日期: 16.11.09 实验成绩: 批改教师: 徐 志 国 批改时间: 一、实验目的和要求学习8051内部定时/计数器使用方法8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来二、实验仪器

11、和设备伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件三、实验原理连线连接孔1连接孔21P1.0L02P1.1L13P1.2L24P1.3L35单脉冲输出T01、实验电路单次脉冲 2、实验框图开始设置工作方式开始计数计数,输出计数值四、实验结果与分析1、 程序如下实验结果五、实验问题及心得思考题若定时计数器T0,按计数器模式和方式0工作,程序如何修改?答:修改后的程序如下所示: mov TMOD, #b ; 方式1,记数器 mov TH0, #0 mov TL0, #0 setb TR0 ; 开始记数Loop: mov P1, TL0 ; 将记数结果送P1口 ljmp

12、Loop end心得体会:了解了如何设置定时器计数器方式控制字的使用,以及定时计数程序的使用。 实验项目名称: 实验5 外部中断实验 实验学时: 2 同组学生姓名: 陈超逸 实验地点: B403 实验日期: 16.11.09 实验成绩: 批改教师: 徐 志 国 批改时间: 一、实验目的和要求1.学习外部中断技术的基本使用方法。2.学习中断处理程序的编程方法。3.用单次脉冲申请中断,在中断处理程序中对输出信号进行反转二、实验仪器和设备伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件三、实验原理1、实验电路单次脉冲连线连接孔1连接孔21P1.0L02单脉冲输出INT0 (5

13、1系列)2单脉冲输出EINT (96系列)2、实验框图开始设置初始状态设置中断控制寄存器中断允许等待中断中断入口保护现场状态位取反状态位输出恢复现场中断返回主程序框图 外部中断子程序框图四、实验结果与分析实验程序如下#include sbit LED = P10;bit LEDBuf;void ExtInt0() interrupt 0 LEDBuf = !LEDBuf; LED = LEDBuf;void main() LEDBuf = 0; LED = 0; TCON = 0x01; / 外部中断0下降沿触发 IE = 0x81; / 打开外部中断允许位(EX0)及总中断允许位(EA) w

14、hile (1) ;实验结果:模拟仿真五、实验问题及心得思考题若采用INT1中断源,电路如何连接,程序如何修改?答:连线P3.2换成P3.3#include sbit LED = P10;bit LEDBuf;void ExtInt0() interrupt 2 LEDBuf = !LEDBuf; LED = LEDBuf;void main() LEDBuf = 1; LED = 1; TCON = 0x04; / 外部中断0下降沿触发 IE = 0x84; / 打开外部中断允许位(EX0)及总中断允许位(EA) while (1) ;心得体会: 通过本次实验我们学习了外部中断技术的基本使用

15、方法。学习中断处理程序的编程方法。 实验项目名称: 实验定时器记数 实验学时: 2 同组学生姓名: 陈超逸 实验地点: B403 实验日期: 16.11.09 实验成绩: 批改教师: 徐 志 国 批改时间: 一、实验目的和要求1、学习8051内部计数器的使用和编程方法。2、进一步掌握中断处理程序的编程方法。二、实验仪器和设备伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件三、实验原理1、实验电路连线连接孔1连接孔21P1.0L0定时中断入口遇开始置T0中断工作方式保护现场设置定时常数秒计数值减1否设置初始状态位是否到1秒是 重新设置秒计数值设置秒计数值 Y中断允许状态位

16、取反输出状态位中断返回恢复现场等待中断 主程序框图 定时中断子程序框图2、实验框图四、实验结果与分析实验程序:#include #define Tick 10000 / 10000 x 100us = 1s#define T100us (256-50) / 100us时间常数(6M)unsigned int C100us; / 100us记数单元bit LEDBuf;sbit LED = P10;void T0Int() interrupt 1 C100us-; if (C100us = 0) C100us = Tick; / 100us 记数器为0, 重置记数器 LEDBuf = !LEDB

17、uf; / 取反LED void main() TMOD = 0x02; / 方式2, 定时器 TH0 = T100us; TL0 = T100us; IE = 0x82; / EA=1, IT0 = 1 LEDBuf = 0; LED = 0; C100us = Tick; TR0 = 1; / 开始定时 while (1) LED = LEDBuf; 实验模拟五、实验问题及心得思考题若定时时间为500us,计数器初始值是多少?#include #define Tick 10000 / 10000 x 100us = 1s#define T100us (256-6) / 100us时间常数(

18、6M)unsigned int C100us; / 100us记数单元bit LEDBuf;sbit LED = P10;void T0Int() interrupt 1 C100us-; if (C100us = 0) C100us = Tick; / 100us 记数器为0, 重置记数器 LEDBuf = !LEDBuf; / 取反LED void main() TMOD = 0x02; / 方式2, 定时器 TH0 = T100us; TL0 = T100us; IE = 0x82; / EA=1, IT0 = 1 LEDBuf = 0; LED = 0; C100us = Tick;

19、TR0 = 1; / 开始定时 while (1) LED = LEDBuf; 心得体会: 通过本次实验我们学习了8051内部计数器的使用和编程方法,进一步掌握中断处理程序的编程方法实验项目名称: 实验7 A/D转换实验 实验学时: 2 同组学生姓名: 陈超逸 实验地点: B403 实验日期: 16.11.09 实验成绩: 批改教师: 徐 志 国 批改时间: 一、实验目的和要求1、 掌握A/D转换与单片机的接口方法。2、 了解A/D芯片ADC0809转换性能及编程。3、 通过实验了解单片机如何进行数据采集。二、实验仪器和设备伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软

20、件三、实验原理1、实验电路连线连接孔1连接孔21IN0电位器输出2AD_CSCS03EOCINT048255_CSCS15PA0L06PA1L17PA2L28PA3L39PA4L410PA5L511PA6L612PA7L72、实验框图主程序框图1、实验电路连线连接孔1连接孔21IN0电位器输出2AD_CSCS03EOCINT048255_CSCS15PA0L06PA1L17PA2L28PA3L39PA4L410PA5L511PA6L612PA7L72、实验框图主程序框图四、实验结果与分析实验程序:#define mode 0x82xdata unsigned char CTL _at_ 0x9

21、003;xdata unsigned char PA _at_ 0x9000;xdata unsigned char CS0809 _at_ 0x8000;unsigned char Read0809() unsigned char i; CS0809 = 0; / 起动 A/D for (i=0; i 100us return(CS0809); / 读入结果main() unsigned char b; CTL = mode; while(1) b = Read0809(); PA = b; mode equ 082h ; 方式0,PA,PC输出,PB输入CS0809 equ 8000hPo

22、rtA equ 9000h ; Port APortB equ 9001h ; Port BPortC equ 9002h ; Port CCAddr equ 9003h ; 控制字地址 org 0 mov dptr,#CAddr mov a,#mode movx dptr,a mov dptr, #CS0809 mov a, #0 movx dptr, a ; 起动 A/D mov a, #40h djnz ACC, $ ; 延时 100us movx a, dptr ; 读入结果 mov r7,#100 dly: mov dptr,#PortA movx dptr,a djnz r7,dl

23、y ;延时 ljmp 0 end实验现象如下图所示:五、实验问题及心得思考题试编程用中断方式读回A/D结果。Modeequ082h;CSO8O9equ8000hPortAequ8000hPortBequ8000hPortCequ8000hCAddrequ8000hmovdptr,#Caddrmova,#modemovxdptr,#CS0809mova,#0movxdptr,a;mova,#40hmjnzACC,$;movxa,dptr;movr7,#100心得体会: 通过本次实验,我们学会了掌握A/D转换与单片机的接口方法,了解了A/D芯片ADC0809转换性能及编程。实验项目名称: 实验8

24、八位段数码管显示 实验学时: 2 同组学生姓名: 陈超逸 实验地点: B403 实验日期: 16.11.09 实验成绩: 批改教师: 徐 志 国 批改时间: 一、 实验目的和要求了解数码管动态显示的原理。了解用总线方式控制数码管显示利用实验仪提供的显示电路,动态显示一行数据二、实验仪器和设备伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件三、实验原理1、实验电路位选通信号 (0x002H) 段码输出(0x004H)数据总线连线连接孔1连接孔21KEY/LED_CSCS02、实验框图开始初始化显示参数关所有位显示取显示数据输出段码数据 输出位选通信号延时位选通信号移位指向

25、下一个显示数据返回6位完成 否 是四、实验结果与分析 实验程序:#define LEDLen 6xdata unsigned char OUTBIT _at_ 0x8002; / 位控制口xdata unsigned char OUTSEG _at_ 0x8004; / 段控制口xdata unsigned char IN _at_ 0x8001; / 键盘读入口unsigned char LEDBufLEDLen; / 显示缓冲code unsigned char LEDMAP = / 八段管显示码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07

26、, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;void Delay(unsigned char CNT) unsigned char i; while (CNT- !=0) for (i=100; i !=0; i-);void DisplayLED() unsigned char i, j; unsigned char Pos; unsigned char LED; Pos = 0x20; / 从左边开始显示 for (i = 0; i = 1; / 显示下一位 OUTBIT = 0; / 关所有八段管void main()unsigned

27、 char i = 0;unsigned char j; while(1) LEDBuf0 = LEDMAP i & 0x0f;LEDBuf1 = LEDMAP(i+1) & 0x0f; LEDBuf2 = LEDMAP(i+2) & 0x0f; LEDBuf3 = LEDMAP(i+3) & 0x0f; LEDBuf4 = LEDMAP(i+4) & 0x0f; LEDBuf5 = LEDMAP(i+5) & 0x0f; i+; for(j=0; j30; j+) DisplayLED(); / 延时 实验结果:五、实验问题及心得思考题:1、 该数码管是共阴极还是共阳极?答:共阳极。2、LED显示方法有哪些?答:接并口显示和单片机串口动态扫描的led显示。心得:通过本次实验,我们解了数码管动态显示的原理,也了解了如何用总线方式控制数码管显示。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁