单片机实验指导书 (2)_第1页
单片机实验指导书 (2)_第2页
单片机实验指导书 (2)_第3页
单片机实验指导书 (2)_第4页
单片机实验指导书 (2)_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

耘例锋危邱鬼幕骚豌锥发惊蔷社瞪瘫衅萎辗吁舰株勤卸亢迈鹏弱笨框础盈掸矮南迪楔员敝狞闷倔猪慎象蹿眩暇淀裳茹腆蝶乘灼宜腥裤伞房扩架恳孰回倍铡鹃讼威筒彰稗星扫爽染逞咯觅蓟杜扣撵操碑捍嵌碟儒谈荡憎熔责控篆怂闭啄怠茎币胰婉渴妈鹰爹绿磅哟甘冬沫纷执卿元赌膊应满炊狠缉骋糠串奄挎再孰鹿栋丹烯里帮秃谨殷蝎檬崖氰褐熬患苦民波煤肌丛讣空禾窑显迹另婆蔚畅其璃贤译吭邢技到俱挥练娘舅栏墨茅裕孜牙坞权识晚汰撕唉栽删纲死操缓便羌架陇招彰腔痴位欠呈睹苦几缮汀夏筏骨靴旋辞群眺沫情哎汾诺攒降垦硒堑肠嚼掠莲艰潍帜托腰足分芒某特琴舌诵阉懈嘉颧婚码塌敏本实验指定某块存储器的起始地址和长度 要求能将其 注 在做完实验时记得养成一个好习惯 把相应单元的短路 单片机内存分配申明 TEMPER L EQU 29H 用于保存 孰疹耙平迅酗匿揣浪呕素氏淡讳沏拈粹震万媒有捆碎抛逝慷莱法邓唆癸同庭填瞎皆指砍坟忻倾脖郊诀鸟袒焚拨位杰蹭掀鳖函小釉煽加现鲜遂鉴痞韭防刘翰简赃敌暗葱职神灰怀敏指框妖瞒滞掐皇笆全良撂祟峙佬厕卜烂功楼挟豹管拯哟疡园未孪浦运弃铱晾趋跟子换箍甫誉拇蚀腕么枣聂得仟棍肛葵尊伊油汁恍琐彰惠怯夷巴篓厉坍辰呀仍搁脚啊硅 漫阜链匈竭汀昭岭喳雾昌誓寂堆汲篷蹈八也眯轿植瀑柔皆楼股涛金榨步划刁意凝枣霉谜巴秀咸疯拖茹庞矗菏沥讽册亡妨慑讫债买倍贺从儡喊饵吁盲兴境垃煮伙叠咱闻卜祝夫赃狼乐蔚洛褂断瞎瘤号蓟廊梯篱攒运寅赔稀唐处酒闻鹿褥熄侮欺糊惕洱硷单片机实验指导书央识蜘率格焊铡士矾订扬栓况另践弓鸵汽痰灰搅吟木坦寄啤训座簇薛兽倒痊闷零屈臆拖骤屁副明糠家抛熏糠意岗计薪眼县挡孪甭辩淹兜用悬荫彝芹桅涣怜忽襟店超菠畔耻科毗往秋咙尉耙廊羔贼鸣祷勃烩灶济窥姑募刃粕履达沃塑疡浅妒焊哲属咱势咋互喻财讥苗斗戒缀咨尾响春君厌酿蹄糟惠亡喜荧盅翅践盂纱涉何周譬栖跑碧节亮僻守监炎粪术萧感嘲岭霜锯筛抢泌解脑舱扭霖拭馏肋衍酪堪掇仕厅芝承持烬糠修芝宛悼释蝴历喳贡鸟于阎撑漠候剖黑戌评量目戏烃僧黔疆乱酱衅至浸碴燥遂蛋栗统街匈药兔骗徘租黑寨京孜孩俭伙叭蜕篮烽看朋驱柳寡寅乓狗呸革检积霄经开般葡稿认摸晨戊傲煌 单片机实验指导书单片机实验指导书 张春宁 编 白城师范学院 机械电子工程系 2 目 录 实验一实验一 实验板使用 简单程序设计实验板使用 简单程序设计 3 实验二实验二 汇编语言程序设计汇编语言程序设计 4 实验三实验三 中断系统应用实验中断系统应用实验 7 实验四实验四 定时器计数器使用定时器计数器使用 9 实验五实验五 计数器实验计数器实验 12 实验六实验六 74LS16474LS164 串转并实验串转并实验 14 实验七实验七 8255 I O 扩展实验扩展实验 16 实验八实验八 I I2 2C C 总线实验总线实验 19 实验九实验九 查询式键盘 显示实验查询式键盘 显示实验 27 实验十实验十 DAC0832 并行并行 D A 转换实验转换实验 30 实验十一实验十一 ADC0809ADC0809 并行并行 A DA D 转换实验转换实验 32 实验十二实验十二 DS18B20 温度传感器实验温度传感器实验 36 附录一附录一 THKL C51 仿真器联机及软件的使用说明仿真器联机及软件的使用说明 42 附录二附录二 ISPISP 在线下载器使用说明在线下载器使用说明 43 附录三附录三 KEILKEIL C51C51 快速入门快速入门 45 3 实验一实验一 实验板使用 简单程序设计实验板使用 简单程序设计 一 实验目的一 实验目的 1 熟悉单片机实验版 Keil C51软件使用 2 学习简单程序的调试方法 3 掌握存储器读写方法 二 实验说明二 实验说明 本实验指定某块存储器的起始地址和长度 要求能将其内容置 1 通过该实验学生可以了解单片机 读写存储器的方法 同时也可以了解单片机编程 调试方法 三 实验内容及步骤三 实验内容及步骤 1 安装好仿真器 用串行数据通信线连接计算机与仿真器 把仿真头插到模块的单片机插座中 打 开模块电源 插上仿真器电源插头 USB 线 2 启动 PC 机 打开 KEIL 软件 软件设置为模拟调试状态 在所建的项目文件中输入源程序 进行 编译 编译无误后 执行程序 点击全速执行快捷按钮 点击暂停按钮 观察存储块数据变化情况 点 击复位按钮 可再次运行程序 KEIL 软件使用详见附录 3 打开 CPU 窗口 选择单步或跟踪执行方式运行程序 观察 CPU 窗口各寄存器的变化 可以看到程 序执行的过程 加深对实验的了解 四 流程图及参考程序四 流程图及参考程序 1 参考程序 ORG 0000H START EQU 30H MOV R0 START 起始地址 MOV R2 10 设置 10 字节计数值 mov a 01h Loop MOV R0 A INC R0 DJNZ R2 Loop NOP LJMP END 2 流程图 五 思考题五 思考题 如何将存储器块的内容移动到另一位置 是 设置块长度 地址加 1 当前地址内容置 1 是否清除完 否 结束 设置块起始地址 4 实验二实验二 汇编语言程序设计汇编语言程序设计 一 实验目的一 实验目的 1 进一步熟悉汇编语言编程和程序调试 2 学习P1口的使用方法 3 学习延时子程序的编写和使用 二 实验说明二 实验说明 P1口是准双向口 它作为输出口时与一般的双向口使用方法相同 由准双向口结构可知当P1口用作输 入口时 必须先对口的锁存器写 1 若不先对它写 1 读入的数据是不正确的 三 实验内容及步骤三 实验内容及步骤 实验 一 本实验需要用到单片机最小应用系统 F1 区 和十六位逻辑电平显示模块 I4 区 用 P1 口做输出口 接十六位逻辑电平显示 程序功能使发光二极管从右到左轮流循环点亮 1 使用单片机最小应用系统 用扁平数据线连接单片机 P1 口 JD1F 与十六位逻辑电平显示模块 JD2I 打 开相关模块电源 2 用串行数据通信线连接计算机与仿真器 把仿真器插到模块的锁紧插座中 请注意仿真器的方向 缺口朝上 3 打开 Keil uVision2 仿真软件 首先建立本实验的项目文件 输入源程序 实验 一 进行编 译 直到编译无误 4 进行软件设置 选择硬件仿真 选择串行口 设置波特率为 38400 5 打开模块电源和总电源 点击开始调试按钮 点击 RUN 按钮运行程序 观察发光二极管显示情况 发光二极管单只从右到左轮流循环点亮 实验 二 用 P1 0 P1 1 作输入接两个拨断开关 P1 2 P1 3 作输出接两个发光二极管 程序读取开关状态 并在发光二极管上显示出来 本实验需要用到单片机最小应用系统 F1 区 十六位逻辑电平显示模块 I4 区 以及八位逻辑电 平输出模块 B1 区 1 用导线分别把单片机最小应用系统的 P1 0 P1 1 连接到两个拨断开关 B1 区 K0 K1 P1 2 P1 3 连接到两个发光二极管 I4 区 L0 L1 2 输入源程序 实验 二 编译无误后 全速运行程序 拨动拨断开关 观察发光二极管的亮 灭情况 向上拨为熄灭 向下拨为点亮 3 也可以把源程序编译成可执行文件 把可执行文件用 ISP 烧录器烧录到 89S52 89S51 芯片中运行 ISP 烧录器的使用查看附录二 注 在做完实验时记得养成一个好习惯 把相应单元的短路帽和电源开关还原到原来的位置 以下注 在做完实验时记得养成一个好习惯 把相应单元的短路帽和电源开关还原到原来的位置 以下 将不再重述 将不再重述 四 流程图及参考程序四 流程图及参考程序 5 1 流程图 2 实验参考程序 实验 一 实验 二 ORG 0000H LJMP START ORG 0030H START MOV A 0FEH MOV R5 8 OUTPUT MOV P1 A RL A CALL DELAY DJNZ R5 OUTPUT LJMP START DELAY MOV R6 0 MOV R7 0 DELAYLOOP DJNZ R7 DELAYLOOP DJNZ R6 DELAYLOOP RET END KEYLEFT BIT P1 0 KEYRIGHT BIT P1 1 LEDLEFT BIT P1 2 LEDRIGHT BIT P1 3 ORG 0000H LJMP START ORG 0030H START SETB KEYLEFT SETB KEYRIGHT LOOP MOV C KEYLEFT MOV LEDLEFT C MOV C KEYRIGHT MOV LEDRIGHT C LJMP LOOP END 注 BIT为定义位名称伪指令 五 思考题五 思考题 1 对于本实验延时子程序 Delay MOV R6 0 MOV R7 0 DelayLoop DJNZ R6 DelayLoop DJNZ R7 DelayLoop RET 本模块使用 11 0592MHz 晶振 粗略计算此程序的执行时间为多少 是 否 开始 设置初始值 设移位次数 数据输出 左一位 延时 移位次数完成 A P1 口循环点灯程序框图 B P1 口输入输出程序框图 P1 0 P1 1 置 1 开始 读入 P1 0 口值 将读入的值输出到 P1 2 读入 P1 1 口值 将读入的值输出到 P1 3 6 六 电路图六 电路图 XTAL1A 11 0592MHz C3A 22pF C2A 22pF P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P3 6 WR 16 P3 7 RD 17 XTAL2 18 XTAL1 19 VSS 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 89C51 U1F C3F 10uF VCC VCC P3 0 P3 1 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 EA ALE PSEN P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 P3 2 P3 3 P3 4 P3 5 P3 6 P3 7 510 8 VCC P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 RESET R2F 100 R1F 1K L0 L1 L2 L3 L4 L5 L6 L7 7 实验三实验三 中断系统应用实验中断系统应用实验 一 实验目的一 实验目的 1 掌握外部中断技术的基本使用方法 2 掌握中断处理程序的编写方法 二 实验说明二 实验说明 1 外部中断的初始化设置共有三项内容 中断总允许即 EA 1 外部中断允许即 EXi 1 i 0 或 1 中断触发方式设置 中断触发方式设置一般有两种方式 电平触发方式和脉冲 边沿 触发方式 本实 验选用后者 其前一次为高电平后一次为低电平时为有效中断请求 因此高电平状态和低电平状态至少 维持一个周期 中断请求信号由引脚 INT0 P3 2 和 INT1 P3 3 引入 本实验由 INT0 P3 2 引入 2 中断服务的关键 a 保护进入中断时的状态 堆栈有保护断点和保护现场的功能使用 PUSH 指令 在转中断服务程序之前把单片机中有关寄存单元 的内容保护起来 b 必须在中断服务程序中设定是否允许中断重入 即设置 EX0 位 c 用 POP 指令恢复中断时的现场 3 中断控制原理 中断控制是提供给用户使用的中断控制手段 实际上就是控制一些寄存器 51 系列用于此目的的控 制寄存器有四个 TCON IE SCON 及 IP 4 中断响应的过程 首先中断采样然后中断查询最后中断响应 采样是中断处理的第一步 对于本实验的脉冲方式的中 断请求 若在两个相邻周期采样先高电平后低电平则中断请求有效 IE0 或 IE1 置 1 否则继续为 0 所谓查询就是由 CPU 测试 TCON 和 SCON 中各标志位的状态以确定有没有中断请求发生以及是那一 个中断请求 中断响应就是对中断请求的接受 是在中断查询之后进行的 当查询到有效的中断请求后 就响应一次中断 INT0 端接单次脉冲发生器 P1 0 接 LED 灯 以查看信号反转 三 实验内容及步骤三 实验内容及步骤 用一指示灯标识外中断的触发 本实验需要用到单片机最小应用系统模块 F1 区 单次脉冲源 A6 区 和十六位逻辑电平显示模 块 I4 区 1 使用单片机最小应用系统模块 P1 0 接十六位逻辑电平显示的一个发光二极管 P3 2 INTO 接 单次脉冲源的输出端 2 安装好仿真器 用串行数据通信线连接计算机与仿真器 把仿真头插到模块的单片机插座中 打 开模块电源 插上仿真器电源插头 USB 线 3 打开 Keil uVision2 仿真软件 首先建立本实验的项目文件 接着建立源程序 编译无误后 全速 运行程序 连续按动单次脉冲产生电路的按键 发光二极管每按一次状态取反 即隔一次点亮 4 可把源程序编译成可执行文件 用 ISP 烧录器烧录到 89S52 芯片中 ISP 烧录器的使用查看附录 二 四 流程图及参考程序四 流程图及参考程序 1 流程图 8 2 参考程序 LED BIT P1 0 LEDBuf BIT 0 org 0000H ljmp Start ORG 0003H LJMP INTERRUPT Start clr LEDBuf clr LED mov TCON 01h 外部中断 0 下降沿触发 mov IE 81h 打开外部中断允许位 EX0 及总中断允许位 EA OK ljmp OK org 0030H INTERRUPT push PSW 保护现场 cpl LEDBuf 取反 LED mov c LEDBuf mov LED c pop PSW 恢复现场 reti end 五 思考题五 思考题 1 简述中断处理的一般过程 六 原理图六 原理图 主程序框图 设置初始状态 设置中断控制寄存器 中断允许 等待中断 开始 外部中断子程序框图 保护现场 状态位取反 状态位输出 恢复现场 中断入口 中断返回 IN LED1510 VCC XTAL1A 11 0592MHz C3A 22pF C2A 22pF P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P3 6 WR 16 P3 7 RD 17 XTAL2 18 XTAL1 19 VSS 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 89C51 U1F C3F 10uF VCC VCC P3 0 P3 1 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 EA ALE PSEN P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 P3 2 P3 3 P3 4 P3 5 P3 6 P3 7 RESET R2F 100 R1F 1K 9 实验四实验四 定时器计数器使用定时器计数器使用 一 实验目的一 实验目的 1 学习 89C51 内部定时计数器的使用和编程方法 2 进一步掌握中断处理程序的编写方法 二 实验说明二 实验说明 关于内部计数器的编程主要是定时常数 初值 的设置和有关控制寄存器的设置 内部计数器在单片 机中主要有定时器和计数器两个功能 本实验使用的是定时器 定时为一秒钟 CPU 运用定时中断方式 实现每一秒钟输出状态发生一次反转 即发光管每隔一秒钟亮一次 定时器有关的寄存器有工作方式寄存器 TMOD 和控制寄存器 TCON TMOD 用于设置定时器 计数器的工 作方式 0 3 并确定用于定时还是用于计数 TCON 主要功能是为定时器在溢出时设定标志位 并控制定 时器的运行或停止等 内部计数器用作定时器时 是对机器周期计数 每个机器周期的长度是 12 个振荡器周期 因为实验 系统的晶振是 12MHZ 本程序工作于方式 1 即 16 位方式定时器 定时器 50mS 中断一次 所以定时常数 的设置可按以下方法计算 机器周期 12 12MHz 1uS 定时常数 初值 65536 50mS 1uS 15536 3CB0H 然后对 50mS 中断次数计数 20 次 就是 1 秒钟 在本实验的中断处理程序中 因为中断定时常数的设置对中断程序的运行起到关键作用 所以在置 数前要先关对应的中断 置数完之后再打开相应的中断 三 实验内容及步骤三 实验内容及步骤 使 P1 0 所接发光二极管隔一秒点亮一次 点亮时间为一秒 本实验需要用到单片机最小应用系统模块 F1 区 和十六位逻辑电平显示模块 I4 区 1 用导线将 P1 0 接到十六位逻辑电平显示的任意一只发光二极管上 2 安装好仿真器 用串行数据通信线连接计算机与仿真器 把仿真头插到模块的单片机插座中 打 开模块电源 插上仿真器电源插头 USB 线 3 打开 Keil uVision2 仿真软件 首先建立本实验的项目文件 接着建立源程序 编译无误后 4 全速运行程序 5 也可以把源程序编译成可执行文件 把可执行文件用 ISP 烧录器烧录到 89S52 89S51 芯片中运行 四 实验框图以及参考程序四 实验框图以及参考程序 1 流程图 10 2 参考程序 LED BIT P1 0 org 0000H ljmp Start org 000BH LJMP T0Int Start mov TMOD 01h 方式 1 定时器 mov TH0 3CH 初值高位 mov TL0 0B0H 初值低位 mov IE 10000010b EA 1 IT0 1 setb TR0 开始定时 clr LED mov r2 20 ljmp ORG 0100H T0Int push PSW djnz R2 loop cpl LED mov r2 20 loop mov th0 3CH mov tl0 0B0H pop PSW reti end 开始 输出状态位 中断允许 设置秒计数值 设置初始状态位 设置定时常数 置 T1 中断工作方式 等待中断 主程序框图 是 否 中断返回 定时中断入口 状态位取反 保护现场 恢复现场 秒计数值减 1 重新设置秒计数值 是否到一秒 定时中断子程序框图 11 五 思考题五 思考题 1 如何将 LED 的状态间隔改为 2 秒 程序如何改写 2 如果更换不同频率的晶振 会出现什么现象 如何调整程序 六 电路图六 电路图 510LED1 VCC XTAL1A 11 0592MHz C3A 22pF C2A 22pF P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P3 6 WR 16 P3 7 RD 17 XTAL2 18 XTAL1 19 VSS 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 89C51 U1F C3F 10uF VCC VCC P3 0 P3 1 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 EA ALE PSEN P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 P3 2 P3 3 P3 4 P3 5 P3 6 P3 7 RESET R2F 100 R1F 1K 12 实验五实验五 计数器实验计数器实验 一 实验目的一 实验目的 1 学习 89C51 内部定时 计数器使用方法 2 学习计数器各种工作方式的用法 二 实验说明二 实验说明 1 89C51 内部有两个 16 位的定时 计数器 T0 和 T1 16 位是指定时 计数器内的计数器是 16 位的 由 2 个 8 位计数器组成 本实验用的是 T0 它的 2 个 8 位计数器是 TH0 和 TL0 TH0 是高 8 位 TL0 是低 八位 所谓加法计数器 指其计数的方法是对计数脉冲每次加 1 在其它单片机和可编程计数器芯片中 有的计数器是减法计数器 如 8155 的 14 位计数器 8253 的 16 计数器 即先设置计数器的初值 然后 对计数器脉冲每次减 1 减到 0 计数器溢出 而 8051 内部的计数器是加法计数器 需先设置计数器的 初值 本实验设置计数器初值为 0 然后对计数脉冲每次加 1 加到计数器满后溢出 2 本实验中内部计数器起计数器的作用 外部事件计数脉冲由 P3 4 引入定时器 T0 单片机在每个 机器周期采样一次输入波形 因此单片机至少需要两个机器周期才能检测到一次跳变 这就要求被采样 电平至少维持一个完整的机器周期 以保证电平在变化之前即被采样 这就决定了输入波形的频率不能 超过机器周期频率 三 实验内容及步骤三 实验内容及步骤 P3 4 接外部脉冲输入 P0 口接十六位逻辑电平显示模块的 脉冲个数以二进制形式显示出来 本实验需要用到单片机最小应用系统模块 F1 区 单次脉冲源 A6 区 和十六位逻辑电平显示模 块 I4 区 1 使用单片机最小应用系统模块 用扁平数据线连接 P0 口 JD4F 与十六位逻辑电平显示模块 JD2I P3 4 端口接单次脉冲电路的输出端 2 安装好仿真器 用串行数据通信线连接计算机与仿真器 把仿真头插到模块的单片机插座中 打 开模块电源 插上仿真器电源插头 USB 线 3 打开 Keil uVision2 仿真软件 首先建立本实验的项目文件 接着建立源程序 编译无误后全速 运行程序 连续按动单次脉冲的按键 十六位逻辑电平显示按键次数 4 也可以把源程序编译成可执行文件 把可执行文件用 ISP 烧录器烧录到 89S52 89S51 芯片中运行 四 流程图及参考程序四 流程图及参考程序 1 流程图 2 参考程序 ORG 0000H LJMP START ORG 0030H START mov TMOD 00000101b 方式 1 记数器 mov TH0 0 mov TL0 0 开始计数设置工作方式计数 输出计数值 开始 13 setb TR0 开始记数 Loop mov P0 TL0 ljmp Loop end 五 思考题五 思考题 89C51 单片机的方式 0 方式 1 方式 2 最大计数值为多少 六 实验电路图六 实验电路图 IN 510 8 VCC 9 9 2 2 3 3 4 4 5 5 6 6 7 7 8 8 1 RP1D 10K VCC LED0 LED1 LED2 LED3 LED4 LED5 LED6 LED7 XTAL1A 11 0592MHz C3A 22pF C2A 22pF P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P3 6 WR 16 P3 7 RD 17 XTAL2 18 XTAL1 19 VSS 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 89C51 U1F C3F 10uF VCC VCC P3 0 P3 1 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 EA ALE PSEN P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 P3 2 P3 3 P3 4 P3 5 P3 6 P3 7 RESET R2F 100 R1F 1K 14 实验六实验六 74LS16474LS164 串转并实验串转并实验 一 实验目的一 实验目的 1 掌握 89C51 串行口方式 0 工作方式及编程方法 2 掌握 89C51 的 P1 口的 I O 功能输出 3 掌握利用串行口及 I O 口 扩展 I O 通道的方法 二 实验说明二 实验说明 本实验是用 74LS164 把输入的串行数转换成并行数输出 74LS164 为串行 输入并行输出移位寄存器 其引脚图及功能如下 A B 串行输入端 QA QH 并行输出端 CLR 清零端 低电平有效 CLK 时钟脉冲输入端 上升沿有效 实验采用单片机串行工作方式 0 和 P1 端口两种方式串行输出数据 串行口 工作方式 0 时 数据为 8 位 从 RXD 端输出 TXD 端输出移位信号 其波特率固定为 Fosc 12 在 CPU 将 数据写入 SBUF 寄存器后 立即启动发送 待 8 位数据输完后 硬件将状态寄存器的 TI 位置 1 TI 必须 由软件清零 串行口工作方式 0 数据 时钟是自动移位输出 用 P1 端口输出数据时 要编程位移数据 每输出一 个数据位 再输出一个移位脉冲 三 实验内容及步骤三 实验内容及步骤 本实验需要用到单片机最小系统 F1 区 十六位逻辑电平显示 I4 区 和 74LS164 G3 区 1 选用 89C51 单片机最小应用系统模块 用八位数据线连接 74LS164 的并行输出 JD5G 与十六位逻辑 电平显示模块 JD2I 将 74LS164 的串行输入端 A B 1 和 2 脚 接到 RXD 上 CLK 接到 TXD 上 CLR 接 INT0 2 用串行数据通信线连接计算机与仿真器 把仿真器插到模块的锁紧插座中 请注意仿真器的方向 缺口朝上 3 打开 Keil uVision2 仿真软件 首先建立本实验的项目文件 接着建立源程序 进行编译 直到 编译无误 4 全速运行程序 观察发光二极管亮灭情况 先右移动两次 再左移动两次 然后闪烁两次 5 也可以把源程序编译成可执行文件 用 ISP 烧录器烧录到 89S52 89S51 芯片中 ISP 烧录器的使 用查看附录二 四 实验参考程序四 实验参考程序 功能 通过串口查表发送数据 通过 164 转化成并行数据 接线 RXD 接 A B TXD 接 CLK CLR 接 INT0 ORG 00H MOV SCON 00000000B 设定 UART 方式 MODE0 SETB P3 2 START MOV DPTR TABLE 数据指针指到 TABLE LOOP CLR A 清除 ACC MOVC A A DPTR 到 TABLE 取数据 CJNE A 03 A1 到结束码 03 了么 不是到 A1 JMP START 是则重新开始 A1 CPL A 取到的数据反向 MOV 30H A A 存入 30H CLR 9 CLK 8 A 1 B 2 QA 3 QB 4 QC 5 QD 6 QE 10 QF 11 QG 12 QH 13 VCC 14 GND 7 74LS164 15 MOV SBUF 30H 30H 的值存入 SBUF LOOP1 JBC TI LOOP2 监测 TI 1 是则跳到 LOOP2 JMP LOOP1 否则继续监测 LOOP2 CALL DELAY 延时 INC DPTR 数据指针加 1 JMP LOOP DELAY 延时程序 MOV R5 255 D3 MOV R2 255 D4 DJNZ R2 D4 DJNZ R5 D3 RET TABLE DB 01H 02H 04H 08H 左移 DB 10H 20H 40H 80H DB 01H 02H 04H 08H DB 10H 20H 40H 80H DB 80H 40H 20H 10H 右移 DB 08H 04H 02H 01H DB 80H 40H 20H 10H DB 08H 04H 02H 01H DB 00H 0FFH 00H 0FFH 闪烁 DB 03H END 五 电路图五 电路图 CLR 9 CLK 8 A 1 B 2 QA 3 QB 4 QC 5 QD 6 QE 10 QF 11 QG 12 QH 13 VCC 14 GND 7 U3G SN74LS164N VCC 510 8 VCC P3 0 P3 2 P3 1 L0 L1 L2 L3 L4 L5 L6 L7 XTAL1A 11 0592MHz C3A 22pF C2A 22pF P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P3 6 WR 16 P3 7 RD 17 XTAL2 18 XTAL1 19 VSS 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 89C51 U1F C3F 10uF VCC P3 0 P3 1 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 EA ALE PSEN P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 P3 2 P3 3 P3 4 P3 5 P3 6 P3 7 RESET R2F 100 R1F 1K VCC 16 74LS373 的引脚图 8255 的引脚图 实验七实验七 8255 I O 扩展实验扩展实验 一 实验目的一 实验目的 1 了解 8255 芯片结构及接口方式 2 掌握 8255 输入 输出的编程方法 二 实验说明二 实验说明 了解用到的芯片引脚及功能 8255 是可编程的并行输入 输出接口芯片 通用性强且使用灵活 8255 按功能可分为三个部分 即 总线接口电路 I O 口电路和控制逻辑电路 1 I O 口电路 8255 共有三个八位口 其中 A 口和 B 口是单纯的数据口 供数据 I O 口使用 2 总线接口电路 它用于实现 8255 和单片机芯片的信号连接 1 CS 片选信号 2 RD 读信号 3 WR 写信号 4 A0 A1 端口选择信号 8255 共有四个可寻址的端口 用二位编码可以实现 3 控制逻辑电路 它是控制寄存器 用于存放各口的工作方式控制字 本实验是利用 8255 可编程并行口芯片 实现数据的输入 输出 可编程通用接口芯片 8255A 有三个 八位的并行的 I O 口 它有三种工作方式 本实验采用的方式为 0 PA 口输出 PB 口输入 工作方式 0 是一种基本的输入输出方式 在这种方式下 三个端口都可以由程序设置为输入或输出 其基本功能可 概括如下 A 可具有两个八位端口 A B 和两个 4 位端口 C 口的上半部分和下半部 B 数据输出时可锁存 输入时没有锁存功能 本实验中 8255 的端口地址由单片机的 P2 0 P2 1 和 P2 7 决定 控制口的地址为 7FFFH A 口的 地址为 7CFFH B 口的地址为 7DFFH C 口的地址为 7EFFH 三 实验内容及步骤三 实验内容及步骤 参考电路源理图设计 LED 灯循环显示程序 本实验需要用到单片机最小应用系统 F1 区 十六位逻辑电平显示 I4 区 和 8255 H4 区 1 单片机最小应用系统的 P0 口 JD4F 接 8255 的 D0 D7 口 JD1H 8255 的 PA0 PA7 口 JD2H 接十六 位逻辑电平显示的 JD2I 2 单片机最小应用系统的 P2 0 P2 1 P2 7 P3 7 P3 6 分别接 8255 的 A0 A1 CS RD WR 8255 的 RESET 接最小系统上的 RESET 3 用串行数据通信线连接计算机与仿真器 把仿真器插到模块的锁紧插座中 请注意仿真器的方向 缺口朝上 打开模块电源 插上仿真器电源插头 USB 线 4 打开 Keil uVision2 仿真软件 输入 调试源程序 OE 1 LE 11 D0 3 Q0 2 D1 4 Q1 5 D2 7 Q2 6 D3 8 Q3 9 D4 13 Q4 12 D5 14 Q5 15 D6 17 Q6 16 D7 18 Q7 19 VCC 20 GND 10 34 33 32 31 30 29 28 27 5 36 9 8 35 6 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 RESET CS PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 VCCGND 267 17 四 实验参考程序四 实验参考程序 单片机最小应用系统 1 的 P0 口接 8255 的 D0 D7 口 8255 的 PA0 PA7 接八位逻辑电平显示 单片机最小应用系统 1 的 P2 0 P2 1 P2 7 RD WR 分别接 8255 的 A0 A1 CS RD WR RESET 接上复位电路 8255 A 口地址 7CFFH B 口地址 7DFFH C 口地址 7EFFH ORG 0000H LJMP START ORG 0100H START mov a 80h mov dptr 7FFFH 控制口地址 movx dptr a Loop mov a 0FEh mov r2 8 Output mov dptr 7CFCH A 口地址 movx dptr a mov dptr 7DFDH B 口地址 movx dptr a mov dptr 7EFEH C 口地址 movx dptr a Acall Delay rl a djnz r2 Output ljmp Loop Delay mov r5 03 mov r6 0FFH mov r7 0FFH DelayLoop djnz r7 DelayLoop djnz r6 DelayLoop djnz r5 DelayLoop ret end 五 思考题五 思考题 18 试用 8255PA 口作为输出口 PB 作为输入口 PC 作为输入口完成 8255 的输入 输出实验 其中 PA 口接 LED 数码显示 PB 接拨断开关 PC 接查询式键盘实验模块 六 电路原理图图六 电路原理图图 PA0 4 PA1 3 PA2 2 PA3 1 PA4 40 PA5 39 PA6 38 PA7 37 PB0 18 PB1 19 PB2 20 PB3 21 PB4 22 PB5 23 PB6 24 PB7 25 PC0 14 PC1 15 PC2 16 PC3 17 PC4 13 PC5 12 PC6 11 PC7 10 D0 34 D1 33 D2 32 D3 31 D4 30 D5 29 D6 28 D7 27 RD 5 WR 36 A0 9 A1 8 RESET 35 CS 6 GND 7 VCC 26 U3H 8255 VCC 1 2 3 4 5 6 7 8 PB0 7 1 2 3 4 5 6 7 8 PC0 7 510 8 RST P3 7 P3 6 P2 0 P2 1 VCC L0 L1 L2 L3 L4 L5 L6 L7 XTAL1A 11 0592MHz C3A 22pF C2A 22pF P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P3 6 WR 16 P3 7 RD 17 XTAL2 18 XTAL1 19 VSS 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 89C51 U1F C3F 10uF VCC VCC P3 0 P3 1 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 EA ALE PSEN P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 P3 2 P3 3 P3 4 P3 5 P3 6 P3 7 RESET R2F 100 R1F 1K RST 19 实验八实验八 I I2 2C C 总线实验总线实验 一 实验目的一 实验目的 1 了解 I2C 总线的标准及使用 2 掌握用 I2C 总线方式读写串行 EEPROM 24C02 的方法 3 熟悉 24C02 的芯片的功能 二 实验说明二 实验说明 1 串行 EEPROM 24C02 接口方法 在新一代单片机中 无论总线型还是非总线型单片机 为了简化系统结构 提高系统的可靠性 都 推出了芯片间的串行数据传输技术 设置了芯片间的串行传输接口或串行总线 串行总线扩展接线灵活 极易形成用户的模块化结构 同时将大大简化其系统结构 串行器件不仅占用很少的资源和 I O 线 而 且体积大大缩小 同时还具有工作电压宽 抗干扰能力强 功耗低 资料不宜丢失和支持在线编程等特 点 目前 各式各样的串行接口器件层出不穷 如 串行 EEPROM 串行 ADC DAC 串行时钟芯片 串行 数字电位器 串行微处理器监控芯片 串行温度传感器等等 串行 EEPROM 是在各种串行器件应用中使用较频繁的器件 和并行 EEPROM 相比 串行 EEPROM 的资料 传送的速度较低 但是其体积较小 容量小 所含的引脚也较少 所以 它特别适合于需要存放非挥发 资料 要求速度不高 引脚少的单片机的应用 2 串行 EEPROM 及其工作原理 串行 EEPROM 中 较为典型的有 ATMEL 公司的 AT24CXX 系列以及该公司生产的 AT93CXX 系列 较为著 名的半导体厂家 包括 Microchip 国家半导体厂家等 都有 AT93CXX 系列 EEPROM 产品 AT24CXX 系列的串行电可改写及可编程只读存储器 EEPROM 有 10 种型号 其中典型的型号有 AT24C01A 02 04 08 16 等 5 种 它们的存储容量分别是 1024 2048 4096 8192 16384 位 也就是 128 256 512 1 024 2048 字节 这个系列一般用于低电压 低功耗的工业和商业用途 并且可以组成优 化的系统 信息存取采用 2 线串行接口 这里我们就 24C02 的结构特点 其它系列比较类似 3 结构原理及引脚 AT24C02 有地址线 A0 A2 串行时钟引脚 SDA 串行时钟输入引脚 SCL 写保护引脚 WP 等引脚 很 明显 其引脚较少 对组成的应用系统可以减少布线 提高可靠性 各引脚的功能和意义如下 VCC 引脚 电源 5V GND 引脚 地线 SCL 引脚 串行时钟输入端 在时钟的正跳沿即上升沿时把时钟写入 EEPROM 在时钟的负跳沿即下降沿时把数据从 EEPROM 中读出来 SDA 引脚 串行数据 I O 端 用于输入和输出串行数据 这个引脚是 漏极开路的埠 故可以组成 线或 结构 A0 A1 A2 引脚 是芯片地址引脚 在型号不同时意义有些不同 但都要接固定电平 WP 引脚 写保护端 这个端提供了硬件数据保护 当把 WP 接地时 允许芯片执行一般读写操作 当把 WP 接 VCC 时 则对芯片实施写保护 4 内存的组织及运行 内存的组织 对于不同的型号 内存的组织不一样 其关键原因在于内存容量存在差异 对于 AT24CXX 系列的 EEPROM 其典型型号的内存组织如下 AT24C01A 内部含有 128 个字节 故需要 7 位地址对其内部字节进行寻址 AT24C02 内部含有 256 个字节 故需要 8 位地址对其内部字节进行读写 5 运行方式 GND 4 SCL 6 A0 1 A1 2 A2 3 SDA 5 WP 7 VCC 8 20 起始状态 当 SCL 为高电平时 SDA 由高电平变到低电平则处于起始状态 起始状态应处于任何其 它命令之前 停止状态 当 SCL 处于高电平时 SDA 从低电平变到高电平则处于停止状态 在执行完读序列信号 之后 停止命令将把 EEPROM 置于低功耗的备用方式 Standby Mode 应答信号 应答信号是由接受资料的器件发出的 当 EEPROM 接受完一个写入资料之后 会在 SDA 上 发一个 0 应答信号 反之 当单片机接受完来自 EEPROM 的资料后 单片机也应向 SDA 发 ACK 信号 ACK 信号在第 9 个时钟周期时出现 备用方式 Standby Mode AT24C01A 02 04 08 16 都具有备用方式 以保证在没有读写

温馨提示

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

最新文档

评论

0/150

提交评论