




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 宜春学院宜春学院 proteusproteus mcs-51mcs-51 教学实验教学实验 指导书指导书 (教师使用版教师使用版) 何剑锋何剑锋 编编 自动化专业实验室自动化专业实验室 (2009 年年 3 月编)月编) 2 目录 第一部分第一部分 验证性实验验证性实验 实验一 i /o 口输出实验led 流水灯实验 .7 一 、实验要求.7 二 、实验目的.7 三 、实验电路及连线.7 四 、实验说明.8 五 、实验流程图.8 六 、实验步骤.8 七 、实验结果和体会.9 八 、建议9 实验二 i/o 口输入/输出实验模拟开关灯.10 一、实验要求.10 二、实验目的.10 三、实验电路
2、及连线.10 四、实验说明.10 五、实验程序流程图.11 六、实验步骤.11 七、实验结果和体会.12 八、建议.12 实验三 8255i/o 扩展实验.13 一、实验要求.13 二、实验目的:.13 三、实验电路及连线.13 四、实验说明.14 五、实验程序流程图.14 六、实验步骤.14 七、实验结果和体会:.15 八、建议.15 实验四 无译码的七段数码管显示实验.16 一、实验要求.16 二、实验目的.16 三、实验电路及连线.16 四、实验说明.16 五、实验程序流程图.17 六、实验步骤.17 七、实验结果和体会.18 八、建议.18 实验五 bcd 码译码的多位数码管扫描显示实
3、验.19 一、实验要求.19 二、实验目的.19 三、实验电路及连线.19 四、实验说明.19 五、实验程序流程图.20 六、实验步骤.20 七、实验结果和体会.21 八、建议.21 实验六 独立式键盘实验.22 一、实验要求.22 二、实验目的.22 三、实验电路及连线.22 四、实验说明.22 五、实验程序流程图.23 六、实验步骤.23 七、实验结果和体会.24 八、建议.24 3 实验七 计数器实验.25 一、实验要求.25 二、实验目的.25 三、实验电路及连线.25 四、实验说明.25 五、实验程序流程图.25 六、实验步骤.26 七、实验结果和体会.26 八、建议.26 实验八
4、定时器实验.27 一、实验要求.27 二、实验目的.27 三、实验电路及连线.27 四、实验说明.27 五、实验程序流程图.28 六、实验步骤.28 七、实验结果和体会.29 八、建议.29 实验九 单个外部中断实验.30 一、实验要求.30 二、实验目的.30 三、实验电路及连线.30 四、实验说明.30 五、实验程序流程图.31 六、实验步骤.31 七、实验结果和体会.32 八、建议.32 实验十 多个中断同时存在实验.33 一、实验要求.33 二、实验目的.33 三、实验电路及连线.33 五、实验程序流程图.34 六、实验步骤.34 七、实验结果和体会:.36 八、建议.36 实验十一
5、矩阵键盘扫描实验.37 一 、实验要求.37 二 、实验目的.37 三 、实验电路及连线.37 四 、实验说明.37 五 、实验流程图.38 六 、实验步骤.38 七 、实验结果和体会.40 八 、建议.40 实验十二 串行端口输出扩充实验.41 一 、实验要求.41 二 、实验目的.41 三 、实验电路及连线.41 四 、实验说明.41 五 、实验流程图.42 六 、实验步骤.42 七 、实验结果和体会.44 八 、建议.44 实验十三 串行端口输入扩充实验.45 一 、实验要求.45 二 、实验目的.45 三 、实验电路及连线.45 四 、实验说明.46 五 、实验流程图.46 4 六 、
6、实验步骤.46 七 、实验结果和体会.47 八 、建议.47 实验十四 8051 与 pc 之间串行通信实验.48 一 、实验要求.48 二 、实验目的.48 三 、实验电路及连线.48 四 、实验说明.48 五 、实验流程图.49 六 、实验步骤.50 七 、实验结果和体会.51 八 、建议.51 第二部分第二部分 综合性实验综合性实验 实验十五 两 8051 单片机通信实验.53 一 、实验要求.53 二 、实验目的.53 三 、实验电路及连线.53 四 、实验说明.53 五 、实验流程图.54 六 、实验步骤.54 七 、实验结果和体会.57 八 、建议.57 实验十六 i2c 总线at
7、24cxx 存储器读写.58 一 、实验要求.58 二 、实验目的.58 三 、实验电路及连线.58 四 、实验说明.58 五 、实验流程图.59 六 、实验步骤.61 七 、实验结果和体会.65 八 、建议.65 实验十七 温度传感器 ds18b20 实验.66 一 、实验要求.66 二 、实验目的.66 三 、实验电路及连线.66 四 、实验说明.66 五 、实验流程图.67 六 、实验步骤.67 七 、实验结果和体会.72 八 、建议.72 实验十八 实时时钟 ds1302 实验 .73 一 、实验要求.73 二 、实验目的.73 三 、实验电路及连线.73 四 、实验说明.73 五 、
8、实验流程图.74 六 、实验步骤.74 七 、实验结果和体会.81 八 、建议.81 实验十九 a/d 转换实验.82 一 、实验要求.82 二 、实验目的.82 三 、实验电路及连线.82 四 、实验说明.83 五 、实验程序流程图.83 六 、实验步骤.83 七 、实验结果和体会.84 八 、建议.84 5 实验二十 d/a 转换实验.85 一 、实验要求.85 二 、实验目的.85 三 、实验电路及连线.85 四 、实验说明.85 五 、实验程序流程图.86 六 、实验步骤.86 七 、实验结果和体会.87 八 、建议.87 实验二十一 液晶显示的控制 1(44780).88 一 、实验
9、要求.88 二 、实验目的.88 三 、实验电路及连线.88 四 、实验说明.88 五 、实验程序流程图.89 六 、实验步骤.89 七 、实验结果和体会.92 八 、建议.92 实验二十二 液晶显示的控制 2(ks0108) .93 一 、实验要求.93 二 、实验目的.93 三 、实验电路及连线.93 四 、实验说明.94 五 、实验程序流程图.94 六 、实验步骤.94 七 、实验结果和体会.105 八 、建议.105 第三部分第三部分 设计性实验设计性实验 实验二十三 基于 proteus 的外部扩展实验.107 一、设计任务和要求.107 二、课题的具体工作内容.107 三、设计分工
10、建议:.107 四、课题成果的要求及评分意见.107 实验二十四 基于 proteus 的接口技术实验.108 一、设计任务和要求.108 二、课题的具体工作内容.108 三、设计分工建议:.108 四、课题成果的要求及评分意见.108 实验二十五 基于proteus的数据采集存储测试系统仿真.109 一、设计任务和要求.109 二、课题的具体工作内容.109 三、设计分工建议:.109 四、课题成果的要求及评分意见.109 实验二十六 利用单片机实现对 flash 存储器坏块的自动检测.110 一、设计任务和要求.110 二、课题的具体工作内容.110 三、设计分工建议:.110 四、课题成
11、果的要求及评分意见.110 6 第一部分第一部分 验证性实验验证性实验 7 实验一实验一 i /o 口输出实验口输出实验led 流水灯实验流水灯实验 一一、实验要求实验要求 利用 51 单片机及 8 个发光二级管等器件,构成一个流水灯单片机系统。 二二、实验目的实验目的 1 1、掌握单片机最小系统的构成; 2 2、掌握 i/o 口的使用及驱动能力的概念; 3 3、熟悉移位指令和软件延时程序。 三三 、实验电路及连线、实验电路及连线 1 1、proteusproteus 实验电路实验电路 2 2、硬件验证实验(硬件验证实验(5151 板板+006+006 板)板) cpu 板006 板 p1.0
12、led1 p1.1led2 p1.2led3 p1.3led4 p1.4led5 p1.5led6 p1.6led7 p1.7led8 +5v+5v gndgnd 8 四四、实验说明、实验说明 1 1、主要知识点概述:、主要知识点概述: 本实验涉及到三个知识点:单片机最小系统的构成、单片机 i/o 口的使用以 及软件延时程序的编写。 1)单片机最小系统由单片机芯片、时钟电路以及复位电路构成。 2)i/o 口的使用:p1 口是准双向口。它作为输出口时与一般的双向口使用方 法相同,即当 p1 口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的 数据可能是不正确的。 3)延时子程序的延时
13、计算问题。对于程序 delay:movr6,#200 del1:movr7,#250 del2:djnzr7,del2 djnzr6,del1 ret 由指令表可知 mov、djnz 指令均需用两个机器周期,在采用 12mhz 晶振 时,一个机器周期时间长度为 1us,所以该段程序执行时间约为:(250*2+2) *200+2*1us=1000402100ms 2 2、实验效果说明:、实验效果说明: 发光二级管进行流水灯操作,从上到下依次点亮。 五五、实验流程图、实验流程图 否 是 开 始 r2=8, acc=0feh 延时 0.2s p1=acc acc 左移一次,r2=r2-1 r2=0?
14、 六六、实验步骤、实验步骤 1 1、proteusproteus 仿真仿真 a、在 proteus 中打开设计文档 流水灯.dsn; b、建立实验程序并编译,加载 hex 文件,仿真; c、如不能正常工作,打开调试窗口进行调试 9 参考程序: org 00h start:mov r2,#8 mov a,#0feh loop:mov p1,a lcall delay rl a ;循环左移 djnz r2,loop ;判断移动是否超过 8 位,未 超过继续循环 ljmp start delay:mov r5,#20;延时程序,延时 0.2s d1:mov r6,#20 d2:mov r7,#248
15、 djnz r7,$ djnz r6,d2 djnz r5,d1 ret end 2 2、实验板验证实验板验证 a、用 isp 下载 hex 程序到 cpu b、按连接表连接电路 c、检查验证结果 3 3、扩展实验、扩展实验 a.改变延时时间为 1s b. 改变流水灯流动方向 c. 改变流水灯的流动样式 设计流程和程序:设计流程和程序: 七七、实验结果和体会、实验结果和体会 八八、建议、建议 10 实验二 i/o 口输入/输出实验模拟开关 一、实验要求一、实验要求 利用 51 单片机,按钮和发光二级管,构成一个模拟开关灯的单片机系统。 二、实验目的二、实验目的 1 1、了解单片机 i/o 输入
16、输出的使用; 2 2、掌握单片机 i/o 口位操作的编程; 3 3、掌握分支程序的设计与分析方法。 三、实验电路及连线三、实验电路及连线 1、proteus 实验电路实验电路 2.2.硬件验证实验硬件验证实验(cpu 板板+006 板)板) 硬件连接表硬件连接表 cpu 板006 板 p1.0led1 p3.0sw1 +5v+5v gndgnd 11 四、实验说明四、实验说明 1主要知识点概述主要知识点概述: 1)开关状态的检测过程 单片机对开关状态的检测相对于单片机来说,是从单片机的 p3.0 端口输入信号,而输 入的信号只有高电平和低电平两种,当拨开开关 k1 拨上去,即输入高电平,相当开
17、关断 开,当拨动开关 k1 拨下去,即输入低电平,相当开关闭合。单片机可以采用 jb bit,rel 或者是 jnbbit,rel 指令来完成对开关状态的检测即可。 2)输出控制 如图中所示,当 p1.0 端口输出高电平,即 p1.01 时,根据发光二极管的单向导电 性可知,这时发光二极管 l1 熄灭;当 p1.0 端口输出低电平,即 p1.00 时,发光二极管 l1 亮;我们可以使用 setbp1.0 指令使 p1.0 端口输出高电平,使用 clrp1.0 指令使 p1.0 端口输出低电平。 2实验效果说明实验效果说明: 按下按钮,灯亮,松开按钮,灯灭。 五、实验程序流程图五、实验程序流程图
18、 是 开始 k1 开关闭合了吗? l1 亮 l1 灭 否 六、实验步骤六、实验步骤 1、proteus 仿真仿真 a.在 proteus 中打开设计文档 i/o 实验.dsn ; b.建立实验程序并编译,加载 hex 文件,仿真; c.如不能正常工作,打开调试窗口进行调试。 参考程序: org00h start:jb p3.0, lig;判断开关状态 clr p1.0 ;开关闭合,灯亮 sjmpstart lig:setb p1.0 ;开关打开,灯灭 sjmpstart;返回 end 2、实验板验证、实验板验证 a用 isp 下载 hex 程序到 cpu b按连接表连接电路 c检查验证结果 3
19、、扩展实验、扩展实验 a设计三路开关输入,三路发光二级管输出的电路及程序; 12 b设计开关触发延时 1s 灯灭程序。 设计流程和程序设计流程和程序: 七、实验结果和体会七、实验结果和体会 八、建议八、建议 13 实验三实验三 8255i/o 扩展实验扩展实验 一、一、 实验要求实验要求 利用 8255 可编程并行口芯片,实现输入/输出实验,实验中用 8255p 口做输出,pb 口 作输入。 二、二、 实验目的:实验目的: 1了解 8255 芯片结构及编程方法; 2了解 8255 输入/输出实验方法。 三、实验电路及连线三、实验电路及连线 1、proteus 实验电路实验电路 2、硬件验证实验
20、、硬件验证实验 8255 的 cs 接地址译码 cs0,则命令字地址为 7003h,pa 口地址为 7000h,pb 口地 址为 7001h,pc 口地址为 7002h。pa0pa7(pa 口)接 led0led7,pb0pb7(pb 口) 接 k0k7(开关量) 。 硬件连接表硬件连接表 cpu 板板006 板板8255 板板 p2.7cs0 p0.0-p0.7d0-d7 key0-key7pb0-pb7 led1-led8pa0-pa7 alele wr,rdwr,rd resetreset 14 四、实验说明四、实验说明 可编程通用接口芯片 8255a 有三个八位的并行 i/o 口,它有
21、三种工作方式。本实验采 用的是方式 0:pa、pc 口输出,pb 口输入。很多 i/o 实验都可以通过 8255 来实现。 五、实验程序流程图五、实验程序流程图 六、实验步骤六、实验步骤 1 1、proteusproteus 仿真仿真 a.在 proteus 中打开设计文档 8255.dsn ; b.建立实验程序并编译,加载 hex 文件,仿真; c.如不能正常工作,打开调试窗口进行调试。 参考程序: papb: 流水灯: org 00horg 00h main: acall delaymain:acall delay mov dptr,#7003hmov dptr,#7003h mov a,
22、#82hmov a,#82h movx dptr,amovx dptr,a loop: mov dptr,#7001hmov a,#11111110b movx a,dptrmov dptr,#7000h mov dptr,#7000hloop:movx dptr,a movx dptr,arl a sjmp loopacall delay delay: mov r1,#00hsjmp loop dlp:mov r2,#50hdelay:. djnz r2,$end djnz r1,dlp ret end 2、实验板验证、实验板验证 a用 isp 下载 hex 程序到 cpu 15 b按连接表
23、连接电路 c检查验证结果 3、扩展实验、扩展实验 设计按键控制的流水灯,要求不同按键按下时流水灯以不同方式闪动,闪动方案自定。 设计流程和程序设计流程和程序: 七、实验结果和体会:七、实验结果和体会: 八、建议:八、建议: 16 实验四实验四 无译码的七段数码管显示实验无译码的七段数码管显示实验 一、实验要求一、实验要求 利用 51 单片机,一个 7 段数码管,构成一个单个 led 显示系统。 二、实验目的二、实验目的 1了解数码管显示原理。 2掌握读表程序的编写。 三、实验电路及连线三、实验电路及连线 1、proteus 实验电路实验电路 2、硬件验证实验、硬件验证实验(cpu 板板+004
24、 板)板) 硬件连接表(硬件连接表(cpu 板板+004 板)板) cpu 板led 板 p0.0led-a p0.1led-b p0.2led-c p0.3led-d p0.4led-e p0.5led-f p0.6led-g p0.7led-com +5v+5v gndgnd 注:注:p0 口在口在 cpu 板上已经接上拉电阻。板上已经接上拉电阻。 四、实验说明四、实验说明 1主要知识点概述主要知识点概述: 17 1)led 数码显示原理 七段 led 显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管 的极管的接线形式,可分成共阴极型和共阳极型。 led 数码管的 ga
25、七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同 亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阳极的字形码见表 2 2)段码表格 由于显示的数字 09 的字形码没有规律可循,只能采用查表的方式来完成我们所需的 要求了。这样我们按着数字 09 的顺序,把每个数字的笔段代码按顺序排好!建立的表格 如下所示:tabledb 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h 2实验效果说明实验效果说明: 数码管循环显示 09。 五、实验程序流程图五、实验程序流程图 六、实验步骤六、实验步骤 1、proteus 仿真仿真 a.在 pro
26、teus 中打开设计文档 led.dsn ; b.建立实验程序并编译,加载 hex 文件,仿真; c.如不能正常工作,打开调试窗口进行调试。 参考程序: “0” 0c0h “8” 80h “1” 0f9h “9” 90h “2” 0a4h “a” 88h “3” 0b0h “b” 80h “4” 99h “c” 0b6h “5” 92h “d” 0b0h “6” 82h “e” 86hh “7” f8h “f” 8eh 18 org 00h start: mov dptr,#table ;指针指向表头地址 s1:mova,#00h ;设置地址偏移量 movca,a+dptr ;查表取得段码,送
27、 a 存储 cjnea,#01h,s2 ;判断段码是否为结束符 ljmpstart s2:movp0,a ;段码送 led 显示 lcall delay ;指针加 1 incdptr ljmps1 delay: mov r5,#20 ;延时子程序 d2: mov r6,#20 d1: mov r7,#248 djnz r7,$ djnz r6,d1 djnz r5,d2 ret tabledb 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;段码表 db01h ;结束符 end 2、实验板验证、实验板验证 a用 isp 下载 hex 程序到 cpu
28、b按连接表连接电路 c检查验证结果 3、扩展实验、扩展实验 a将程序改为循环显示一串号码(如学号) ; b设计一个组成“0”的各段流动点亮的程序。 设计流程和程序设计流程和程序: 七、实验结果和体会七、实验结果和体会 八、建议八、建议 19 20 实验五实验五 bcd 码译码的多位数码管扫描显示实验码译码的多位数码管扫描显示实验 一、实验要求一、实验要求 利用 51 单片机、bcd 译码芯片 74ls47 和两位 led 构成一个数码管扫描显示系统。 二、实验目的二、实验目的 1掌握 bcd 译码电路的工作原理。 2掌握多位数码管显示的编程。 三、实验电路及连线三、实验电路及连线 1、prot
29、eus 实验电路实验电路 2、硬件验证实验、硬件验证实验(cpu 板板+004 显示板)显示板) 硬件连接表硬件连接表 cpu 板004 板 p0.0bcd-a p0.1bcd-b p0.2bcd-c p0.3bcd-d p3.0seg1 p3.1seg2 +5v+5v gndgnd 四、实验说明四、实验说明 1主要知识点概述主要知识点概述: 二进制编码的十进制数,简称 bcd 码(binary coded decimal),此例中,74ls47 完成 bcd 编码的功能。 21 多位 led 显示,先往段码端口输出段码,再选通位选,对应的 led 显示。 2实验效果说明实验效果说明: 两个数
30、码管同时循环显示 09。 五、实验程序流程图五、实验程序流程图 六、实验步骤六、实验步骤 1、proteus 仿真仿真 a.在 proteus 中打开设计文档 bcd led.dsn ; b.建立实验程序并编译,加载 hex 文件,仿真; c.如不能正常工作,打开调试窗口进行调试。 参考程序: org00h l:mova, #0;设置显示初值 movr0, #10;设置显示个数 start:mov p0, a;向 p0 口输出显示段码 setbp3.0 setbp3.1 ;位选 lcall delay inca djnzr0, start jmpl delay: mov r5, #50;延时程
31、序 d1:mov r6, #20 d2:mov r7, #248 djnz r7, $ djnz r6, d2 判断显示是 否到 9? 是 否 开 始 a=0,r1=10 置段码 置位码 延时显示 22 djnz r5, d1 ret end 2、实验板验证、实验板验证 a用 isp 下载 hex 程序到 cpu b按连接表连接电路 c检查验证结果 3、扩展实验、扩展实验 设计一个 99 计数器。 设计流程和程序设计流程和程序: 七、实验结果和体会七、实验结果和体会 八、建议八、建议 23 实验六实验六 独立式键盘实验独立式键盘实验 一、实验要求一、实验要求 利用 51 单片机,8 个按钮,8
32、 路发光二级管构成一个独立式键盘系统。 二、实验目的二、实验目的 1、掌握多路 i/o 输入输出的编程。 三、实验电路及连线三、实验电路及连线 1、proteus 实验电路实验电路 2、硬件验证实验、硬件验证实验 硬件连接表(硬件连接表(cpu 板板+006 板)板) cpu 板006 板 p1.0p1.7led1led8 p3.0p3.7sw1sw8 +5v+5v gndgnd 四、实验说明四、实验说明 1主要知识点概述主要知识点概述: 使用分支程序编程方法,对开关状态进行监测,输入电平有变化,跳转到相应的 处理程序进行处理,输出处理结果。 2实验效果说明实验效果说明: 按下 8 个按钮,点
33、亮对应的灯。 24 五、实验程序流程图五、实验程序流程图 开 始 p3=#0ffh p1=#0feh p3=? p1=#0fdhp1=#0bfhp1=#7fh 结 束 p3.1=1p3.2=1p3.6=1p3.7=1 六、实验步骤六、实验步骤 1、proteus 仿真仿真 a.在 proteus 中打开设计文档 独立式键盘.dsn ; b.建立实验程序并编译,加载 hex 文件,仿真; c.如不能正常工作,打开调试窗口进行调试。 参考程序: org 0000h ljmp start org 0100h start: mov p3,#0ffh hl: jnb p3.0,hl0 jnb p3.1,
34、hl1 jnb p3.2,hl2 jnb p3.3,hl3 jnb p3.4,hl4 jnb p3.5,hl5 jnb p3.6,hl6 jnb p3.7,hl7 ljmp hl 25 hl0: mov p1,#0feh ljmp hl hl1: mov p1,#0fdh ljmp hl hl2: mov p1,#0fbh ljmp hl hl3: mov p1,#0f7h ljmp hl hl4: mov p1,#0efh ljmp hl hl5: mov p1,#0dfh ljmp hl hl6: mov p1,#0bfh ljmp hl hl7: mov p1,#07fh ljmp hl
35、 end 2、实验板验证、实验板验证 a用 isp 下载 hex 程序到 cpu b按连接表连接电路 c检查验证结果 3、扩展实验、扩展实验 按键后使对应的灯闪烁。 设计流程和程序设计流程和程序: 七、实验结果和体会七、实验结果和体会 八、建议八、建议 26 实验七实验七 计数器实验计数器实验 一、实验要求一、实验要求 8051 内部定时计数器 t0,按计数器模式和方式 1 工作,对 p3.4(t0)引脚进行计数。 将其数值按二进制数在 p1 口驱动 led 灯上显示出来。 二、实验目的二、实验目的 掌握单片机定时计数器计数方式的使用及编程方法。 三、实验电路及连线三、实验电路及连线 1、pr
36、oteus 实验电路实验电路 2、硬件验证实验、硬件验证实验 硬件连接表硬件连接表 cpu 板004 板006 板 p0.0p0.6led-aled-g p0.7led-com p3.4sw1 +5v+5v gndgnd 四、实验说明四、实验说明 1主要知识点概述主要知识点概述: 本实验中内部计数器起计数器的作用。外部事件脉冲由 p3.4 引入定时/计数器 t0,即 t0 用来检测外部脉冲数。 2实验效果说明实验效果说明: 由按键产生计数脉冲,led 分别显示脉冲个数(10 个以内) 。 五、实验程序流程图五、实验程序流程图 开始 开始计数 计数、输出计数值 设置工作方式 27 六、实验步骤六
37、、实验步骤 1、proteus 仿真仿真 a.在 proteus 中打开设计文档 courter.dsn ; b.建立实验程序并编译,加载 hex 文件,仿真; c.如不能正常工作,打开调试窗口进行调试。 参考程序: org0 movtmod,#00000101b;置 t0 计数器方式 1 movth0,#0;置 t0 初值 movtl0,#0 movr0,#10 setbtr0;t0 运行 movdptr,#table s1:mova,tl0 movca,a+dptr movp0,a ljmps1 table: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,
38、80h,90h ;结束符 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;结束符 end 2、实验板验证、实验板验证 a用 isp 下载 hex 程序到 cpu b按连接表连接电路 c检查验证结果 3、扩展实验、扩展实验 设计流程和程序设计流程和程序: 七、实验结果和体会七、实验结果和体会 八、建议八、建议 28 实验八实验八 定时器实验定时器实验 一、实验要求一、实验要求 用 51 单片机的 p1.0 口接 1 个发光二级管,编写程序,控制发光二级管闪烁,时间间 隔 1s,要求 at89c51 内部定时器计时。 二、实验目的二、实验目的 掌握
39、单片机定时计数器定时方式的使用及编程方法。 三、实验电路及连线三、实验电路及连线 1、proteus 实验电路实验电路 2、硬件验证实验、硬件验证实验 硬件连接表硬件连接表 cpu 板006 板 p1.0led1 +5v+5v gndgnd 四、实验说明四、实验说明 1主要知识点概述主要知识点概述: 关于内部计数器的编程,主要是定时常数的位置和有关控制寄存器的设置。内部计数 器在单片机中主要有定时器和计数器两个功能。本例使用的是定时器,定时 1s。cpu 运行 定时中断方式,实现每 1s 输出状态发生一次反转,即发光二级管 1s 亮一次。 定时器有关的寄存器有工作方式寄存器 tmod 和控制寄
40、存器 tcon。tmod 用于设 置定时器/计数器的工作方式 0-3,并确定用于定时还是计数。tcon 主要功能是为定时器 在溢出时设定标志位,并控制定时器的运行或停止。 内部计数器用于定时器时,是对机器周期计数。每个机器周期的长度是 12 个振荡周期。 本例中单片机晶振 12mhz,选用工作方式 2,既 8 位自动重装方式定时器,定时器 100us 29 中断一次,所以定时常数的设置可按以下方法计算: 机器周期=12/12mhz=1us (256-定时常数)*1us=100us 定时常数=156。然后对 100us 中断次数计数 10000 次,就是 1s。 2实验效果说明实验效果说明: 发
41、光二级管按设定的定时时间闪烁。 五、实验程序流程图五、实验程序流程图 主程序主程序 定时中断服务程序定时中断服务程序 六、实验步骤六、实验步骤 1、proteus 仿真仿真 a.在 proteus 中打开设计文档 timer.dsn ; b.建立实验程序并编译,加载 hex 文件,仿真; c.如不能正常工作,打开调试窗口进行调试。 参考程序: tickequ10000;10000100us=1s t100usequ256-100;100us 时间常数(12m) c100usequ30h;100us 计数单元 ledbufequ40h ledbitp1.0 org00h ljmpstart;跳至
42、主程序 org000bh;定时中断入口地址 t0int:pushpsw;状态保护 mova,c100us+1 jnzgoon 开 始 置 t1 工作方式 设置时间常数 设置初始状态位 设置秒计数值 中断允许 输出状态位 等待中断 定时中断入口 保护现场 秒计数值减 1 重新设置秒计数值 计到 1s! 状态位取反 恢复现场 中断返回 是 否 30 decc100us;秒计数值减 1 goon:decc100us+1 mova,c100us orla,c100us+1 jnzexit;100us 计数器不为 0,返回 movc100us,#high(tick) ;100us 计数器为 0,重置计数
43、器 movc100us+1,#low(tick) cplledbuf;取反 led exit:poppsw reti start: movtmod,#02h;方式 2,定时器 movth0,#t100us;置定时器初值 movtl0,#t100us movie,#10000010b;ea=1,it0=1 setbtr0;开始定时 clrledbuf clrled movc100us,#high(tick) ;设置 10000 次计数值 movc100us+1,#low(tick) loop:movc,ledbuf movled,c ljmploop end 2、实验板验证、实验板验证 a用 i
44、sp 下载 hex 程序到 cpu b按连接表连接电路 c检查验证结果 3、扩展实验、扩展实验 使用其他定时器其他工作方式设计该实验。 设计流程和程序设计流程和程序: 七、实验结果和体会七、实验结果和体会 八、建议八、建议 31 实验九实验九 单个外部中断实验单个外部中断实验 一、实验要求一、实验要求 利用 p3.2 接一个外部中断输入,通过 p1 口连接 8 个发光二级管显示中断程序的作用。 二、实验目的二、实验目的 1理解中断源、中断标志、中断入口等概念。 2. 掌握中断程序的分析与设计方法。 三、实验电路及连线三、实验电路及连线 1、proteus 实验电路实验电路 2、硬件验证实验、硬
45、件验证实验 硬件连接表硬件连接表 cpu 板006 板 p1.0p1.7led1led8 p3.2sw1 +5v+5v gndgnd 四、实验说明四、实验说明 1主要知识点概述主要知识点概述: 外部中断的响应过程: 32 1)中断采样:根据采样结果设置 tcon 寄存器中断响应标志位的状态。 2)中断查询:查询 tcon 标志位的状态,确定是否响应。 3)中断响应:保护断点内容,装入中断入口地址,执行中断服务程序,返回中断 点,继续执行原来程序。 2实验效果说明实验效果说明: 中断未发生时,led 做闪烁状态,当有中断产生,led 呈流水灯操作。 五、实验程序流程图五、实验程序流程图 主程序框
46、图 外部子程序框图 六、实验步骤六、实验步骤 1、proteus 仿真仿真 a.在 proteus 中打开设计文档 外部中断.dsn ; b.建立实验程序并编译,加载 hex 文件,仿真; c.如不能正常工作,打开调试窗口进行调试。 参考程序: ;开始,p1 口灯闪烁,中断产生,p1 口呈流水灯操作。 org 0000h ;程序由地址 0 开始执行 ljmp start org 0003h ;设置外部中断矢量地址 ljmp int ;跳转到中断控制入口处 start: mov sp , #60h mov tcon, #00000000b mov ip , #00000001b mov ie ,
47、 #10000001b ;对中断进行初始化 run: mov a , #0 loop: mov p1 ,a mov r5 ,#20 lcall delay cpl a ljmp loop;闪烁灯 int: ;中断服务程序 开 始 设置初始状态 等待中断 中断允许 设置中断控制寄存 器 中断入口 流水灯程序 中断返回 恢复现场 保护现场 33 push acc push psw;保护现场 clr rs1;切换寄存器组 setb rs0 clr c mov a , #11111111b mov r4 , #16 loopr:;流水灯程序 rrc a mov p1 , a mov r5 , #20
48、call delay djnz r4, loopr pop psw;恢复现场 pop acc reti delay: mov r6 , #50;延时程序 s1: mov r7 , #100 djnz r7 , $ djnz r6 , s1 djnz r5 , delay ret end 2、实验板验证、实验板验证 a用 isp 下载 hex 程序到 cpu b按连接表连接电路 c检查验证结果 3、扩展实验、扩展实验 改变中断触发方式或更改中断服务程序内容重做以上实验,内容自定。 设计流程和程序设计流程和程序: 七、实验结果和体会七、实验结果和体会 八、建议八、建议 34 35 实验十实验十 多
49、个中断同时存在实验多个中断同时存在实验 一、实验要求一、实验要求 利用 p3.2 接一个外部中断输入, 同时使用到单片机定时器中断,通过 p1 口连接 8 个 发光二级管显示中断的作用。 二、实验目的二、实验目的 了解中断嵌套和中断优先级的概念和编程方法。 三、实验电路及连线三、实验电路及连线 1、proteus 实验电路实验电路 2、硬件验证实验、硬件验证实验 cpu 板006 板 p1.0p1.7led1led8 p3.2sw1 +5v+5v gndgnd 四、实验说明四、实验说明 1所用知识点概述所用知识点概述 中断优先级:51 系统有高、低两个中断优先级。各中断的优先级通过中断优先寄存
50、器 (ip)进行设定。在进行中断响应时,高优先级可以打断低优先级的中断服务,形成中断 嵌套。 2实验效果说明实验效果说明 36 外部中断未发生时,系统通过定时器定时的方法,使 led 做流水灯操作,当有中断 产生,led 闪烁 5 次,完毕返回。 五、实验程序流程图五、实验程序流程图 主程序框图 定时中断子程序 外中断中断 子程序 六、实验步骤六、实验步骤 1、proteus 仿真仿真 a.在 proteus 中打开设计文档 多个中断.dsn ; b.建立实验程序并编译,加载 hex 文件,仿真; c.如不能正常工作,打开调试窗口进行调试。 参考程序: ;计时中断与外部中断同时存在实验 ;利用
51、计时方式,使 8 只 led 灯每隔 1s 左移一次,当外部中断 p3.2 出现时 8 个 led 灯闪 烁 5 次,闪烁完后返回主程序运行。 org 0000h ljmp start org 0003h;外部中断入口 ljmp ext org 000bh;定时中断入口 ljmp tim start: mov sp,#70h;建立堆栈区 mov tmod,#00000001b ;定时器 0,工作方式 1 mov th0,#high(65536-10000); mov tl0,#low(65536-10000);装计数器初值 setb tr0;tr0 置 1,定时开始 mov ie,#10000
52、011b;开总中断,定时器 0 中断允许 mov ip,#00000001b;设定外部中断 0 优先级高 开 始 设置初始状态 等待中断 中断允许 设置中断控制寄 存器 外中断入口 闪烁灯程序 中断返回 恢复现场 保护现场 否 是 定时中断入口 计数值重新赋值 现场保护 中断返回 流水灯程序 恢复现场 溢出次数100? 37 mov r5,#100;定时溢出次数 mov r1,#0feh ; ljmp $ ;*; tim: push acc push psw;现场保护 mov th0,#high(65536-10000) mov tl0,#low(65536-10000);重赋计数值 djnz
53、 r3,loop mov r3,#100 mov a,r1 mov p1,a rl a mov r1,a;移位 loop: pop psw pop acc;恢复现场 reti ;*; ;外部中断服务程序,闪烁 5 ext: push acc push psw mov a,#00 mov r2,#10 loop3: mov p1,a call delay cpl a djnz r2,loop3 pop psw pop acc reti ;*; ;延时程序 delay: mov r5,#20 d1: mov r6,#20 d2: mov r7,#248 djnz r7,$ djnz r6,d2 d
54、jnz r5,d1 ret end 2、实验板验证、实验板验证 a用 isp 下载 hex 程序到 cpu b按连接表连接电路 c检查验证结果 38 3、扩展实验、扩展实验 设计两个外部中断与定时中断同时存在的实验 设计流程和程序设计流程和程序 七、实验结果和体会:七、实验结果和体会: 八、建议:八、建议: 39 实验十一实验十一 矩阵键盘扫描实验矩阵键盘扫描实验 一一、实验要求实验要求 利用 4x4 16 位键盘和一个 7 段 led 构成简单的输入显示系统,实现键盘输入和 led 显示实验。 二二、实验目的实验目的 1、理解矩阵键盘扫描的原理; 2、掌握矩阵键盘与 51 单片机接口的编程方
55、法。 三三、实验电路及连线、实验电路及连线 1 1、proteusproteus 实验电路实验电路 2 2、硬件验证实验硬件验证实验 cpu 板004 板007 p2.0p2.7led-aled-g p1.0p1.3c1c4 p1.4p1.7r1r4 +5v+5v+5v gndgndgnd 四四、实验说明、实验说明 1 1、主要知识点概述:、主要知识点概述: 本实验阐述了键盘扫描原理,过程如下:首先扫描键盘,判断是否有键按下, 再确定是哪一个键,计算键值,输出显示。 2 2、实验效果说明:、实验效果说明: 以数码管显示键盘的作用。点击相应按键显示相应的键值。 40 五五、实验流程图、实验流程图
56、 六六、实验步骤、实验步骤 1 1、proteusproteus 仿真仿真 a、在 proteus 中打开设计文档 键盘扫描.dsn; b、建立实验程序并编译,加载 hex 文件,仿真; c、如不能正常工作,打开调试窗口进行调试 参考程序: org 0000h ajmp main org 0030h main: mov dptr,#table ;将表头放入 dptr lcall key ;调用键盘扫描程序 movc a,a+dptr ;查表后将键值送入 acc mov p2,a ;将 acc 值送入 p0 口 ljmp main ;返回反复循环显示 key: lcall ks ;调用检测按键子
57、程序 开 始 扫描键盘 有键按下? 延时去抖 扫 描键盘 找到闭合键 计算键值 根据键值得到对应段码 输出段码显示 否 是 41 jnz k1 ;有键按下继续 lcall delay2 ;无键按调用延时去抖 ajmp key ;返回继续检测按键 k1: lcall delay2 lcall delay2 ;有键按下延时去抖动 lcall ks ;再调用检测按键程序 jnz k2 ;确认有按下进行下一步 ajmp key ;无键按下返回继续检测 k2: mov r2,#0efh ;将扫描值送入 r2 暂存 mov r4,#00h ;将第一列值送入 r4 暂存 k3: mov p1,r2 ;将 r
58、2 的值送入 p1 口 l6: jb p1.0,l1 ;p1.0 等于 1 跳转到 l1 mov a,#00h ;将第一行值送入 acc ajmp lk ;跳转到键值处理程序 l1: jb p1.1,l2 ;p1.1 等于 1 跳转到 l2 mov a,#04h ;将第二行的行值送入 acc ajmp lk ;跳转到键值理程序进行键值处理 l2: jb p1.2,l3 ;p1.2 等于 1 跳转到 l3 mov a,#08h ;将第三行的行值送入 acc ajmp lk ;跳转到键值处理程序 l3: jb p1.3,next ;p1.3 等于 1 跳转到 next 处 mov a,#0ch 将
59、第四行的行值送入 acc lk: add a,r4 ;行值与列值相加后的键值送入 a push acc ;将 a 中的值送入堆栈暂存 k4: lcall delay2 ;调用延时去抖动程序 lcall ks ;调用按键检测程序 jnz k4 ;按键没有松开继续返回检测 pop acc ;将堆栈的值送入 acc ret next: inc r4 ;将列值加一 mov a,r2 ;将 r2 的值送入 a jnb acc.7,key ;扫描完至 key 处进行下一扫描 rl a ;扫描未完将 a 中的值右移一位进行下一列的扫描 mov r2,a ;将 acc 的值送入 r2 暂存 ajmp k3 ;
60、跳转到 k3 继续 ks: mov p1,#0fh ;将 p1 口高四位置 0 低四位值 1 mov a,p1 ;读 p1 口 xrl a,#0fh ;将 a 中的值与 a 中的值相异或 ret ;子程序返回 delay2: ;40ms 延时去抖动子程序 42 mov r5,#08h l7: mov r6,#0fah l8: djnz r6,l8 djnz r5,l7 ret table: ;七段显示器数据定义 db 0c0h, 0f9h, 0a4h, 0b0h, 99h ; 01234 db 92h, 82h, 0f8h, 80h, 90h ; 56789 db 88h, 83h, 0c6h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 掌握课件制作技巧:学生拷贝中的反应挤出原理
- 《生物细胞基础》课件
- 《智能车辆监控系统》课件
- 国际贸易课件-全面解析
- 《饮食健康》课件
- 1企业经营者地位
- 2025年浙江省考申论B卷真题及答案
- 《酒店管理与服务》课件
- 考拉双十一营销手段
- 迎新晚会申请书
- 环境艺术设计职业生涯规划书
- 邮政社招笔试试题及答案
- 2025年java开发面试题及答案
- (完整版)公司的代账协议模板合同7篇
- 全过程工程咨询投标方案(技术方案)
- 2024中国合同能源管理行业发展前景预测及投资战略咨询报告
- 风力发电项目实习报告范文
- 自然辩证法概论(视频课)知到课后答案智慧树章节测试答案2025年春安徽农业大学
- 海南省临高县2022-2023学年小升初语文试卷(有答案)
- 第六单元“保护环境”(主题阅读)-六年级语文上册阅读理解(统编版)
- 名著《红岩》三年中考真题及典型模拟题训练(原卷版)
评论
0/150
提交评论