整理单片机小系统工程训练指导.docx
- 文档编号:11145134
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:235
- 大小:1.18MB
整理单片机小系统工程训练指导.docx
《整理单片机小系统工程训练指导.docx》由会员分享,可在线阅读,更多相关《整理单片机小系统工程训练指导.docx(235页珍藏版)》请在冰豆网上搜索。
整理单片机小系统工程训练指导
单片机实验板
工程训练指导书
物理与电子工程系
实验一LED闪烁灯设计-------------------------------------------------4
实验二模拟开关控制指示灯设计---------------------------------------------7
实验三多路开关状态指示设计---------------------------------------————10
实验四广告灯左、右移设计---------------------------------------14
实验五查询法设计广告灯---------------------------------18
实验六报警产生器设计---------------------------------------------21
实验七I/O并行口直接驱动LED显示设计-----------------------------——25
实验八单键识别设计---------------------------------------———29
实验九一键多功能按键识别设计---------------------------------33
实验十00-99计数器设计--------------------------------————38
实验十一六十秒计时器设计------------------------——————————42
实验十二可预置可逆4位计数器设计-----------------------------------46
实验十三动态数码显示设计---------------------------------------51
实验十四4×4矩阵式键盘识别设计--------------------------------55
实验十五定时计数器T0作定时应用设计
(一)----------------------64
实验十六定时计数器T0作定时应用设计
(二)——----------------------71
实验十七9.9秒跑马表设计------------------------------------------76
实验十八“嘀、嘀、……”报警声设计---------------------------------82
实验十九“叮咚”门铃设计-------------------------------------------87
实验二十智能电子钟设计---------------------------------------------92
实验二十一“新年好”音乐设计-----------------------------------------------102
实验二十二电子琴设计-------------------------------------------------108
实验二十三模拟计算器数字输入及显示设计-------------------------119
实验二十四数字电压表设计--------------------——-------------------------126
实验二十五DS18B20数字温度计设计---------------------------------131
附录A实验板中模拟/数字转换器ADC0804的参数及使用说明------------------------139
附录B实验板中DS18B20智能温度控制器的参数及使用----------------------------141
单片机实验板详细说明
该单片机实验板设计巧妙,经过了严格的检查,可放心使用。
由于考虑到众多的实验要在此单片机实验板上完成,然而每个实验用到的单片机的I/O口不尽相同,所以设计时采用拨动拨码开关和替换跳线帽的位置来完成每个实验内容。
在完成各个实验内容时,首先要看清楚实验电路原理图,然后按照实验内容给出的单片机实验板上的硬件连线、拨动拨码开关或替换跳线帽的位置来完成系统设计。
检查无误后下载程序。
由于每个程序都经过了单片机实验板的验证,证明程序没有问题。
所以要是调不出来,肯定是硬件没有连好,再次检查直到完成实验。
每做完一个实验后,把拨动拨码开关和跳线帽恢复到初始状态。
一、拨码开关和跳线帽的初始化状态介绍如下:
单片机实验板上有8联拨动拨码开关4个(JP1、JP2、JP3、JP4),2联拨动拨码开关1个(JP5),跳线帽13个。
在初始化状态下,拨动拨码开关都处于紧靠数字的位置,此位置下的拨动拨码开关为不用状态。
8排针接插件J3上的8个跳线帽要全部连接在标号为P0位置上。
单排针接插件J4上的跳线帽要连接在OE和GND的位置上。
单排针接插件J5上的跳线帽连接在OE和GND的位置上。
单排针接插件J6上的跳线帽要连接在OE和VCC的位置。
单排针接插件J7上的跳线帽要连接在CS和GND的位置。
双排针接插件J8上的跳线帽应该和J8上排插针相连。
4个8联拨动拨码开关(JP1、JP2、JP3、JP4)应该全部所至下方。
二、实验中具体使用介绍如下:
(1)当用到发光二极管时,要把8联拨动拨码开关JP4拨到ON状态。
(2)当用到喇叭输出时,把2联拨动拨码开关JP5的1号拨动开关拨上去;当用DS18B20做测温时,把2联拨动拨码开关JP5的2号拨动开关拨上去。
(3)当用到矩阵键盘输入时,把8联拨动拨码开关JP3的拨动开关全部拨上去。
(4)当用到拨动开关SW1—SW4时,把8联拨动拨码开关JP2对应的拨动开关拨上去。
(5)当用到按键开关S18—S21时,把8联拨动拨码开关JP2对应的拨动开关拨上去。
(6)当用8个动态数码管显示时,首先应该把单排针接插件J4的OE与VCC用跳线帽相连。
同时8联拨动拨码开关JP1对应的拨动开关拨上去。
8联拨动拨码开关JP1的S1—S8分别对应三极管Q2—Q9。
(7)当用8个动态数码管输入a—h数码时,如果用到P0口,不用移动跳线帽;如果用到P1口,把8个跳线帽移到下面的标有P1的位置。
(8)当用P0口做数码管静态显示时,把单排针接插件J5的OE与VCC用跳线帽相连。
(9)当用P2口做数码管静态显示时,把单排针接插件J6的OE与GND用跳线帽相连。
总之,在用单片机编写简单程序时,汇编语言编写起来比较简单,但复杂的程序还是用C51编写起来比较简单。
所以C51编程是必学的。
这里基本上所有的实验程序都采用汇编和C51两种编程方法。
有的实验还给出了两套设计方案,便于比较学习。
实验一LED闪烁灯设计
一、实验目的
1、初步了解单片机I/O口的简单控制。
2、掌握单片机外围常用电路的固定接法。
二、设计原理
利用单片机控制一个发光二极管,使此发光二极管间隔0.2秒亮、灭一次。
三、参考电路
图1.1LED闪烁灯外部电路原理图
四、电路硬件说明
如图1.1所示:
在单片机的P1.0端口上通过8联拨动拨码开关JP4的相应拨码开关连接一个发光二极管D1。
五、程序设计内容
(1)延时程序的设计方法:
单片机指令的执行时间是很短的,它的数量级为微秒级。
在本程序设计中,要求LED闪烁灯的闪烁时间间隔为0.2秒。
相对于微秒来说,相差太大,所以在执行某一指令时,需要插入延时程序,来达到的要求。
然而这样的延时程序是如何设计呢?
下面具体介绍其原理:
如图1.1所示,单片机所用的石英晶体为12MHz。
因此,1个机器周期为1微秒。
延时10ms子程序机器周期微秒
MOVR6,#201个1
D1:
MOVR7,#2481个 1+1×20
DJNZR7,$2个 2×248+2×20×248
DJNZR6,D12个 2×20
因此,上面的延时程序时间为10.478ms。
由以上可知,当R6=10、R7=248时,延时时间为5ms;R6=20、R7=248时,延时时间为10ms。
通常所用延时时间以此为基本的计时单位。
比如本实验要求为0.2秒=200ms,所以用10ms×R5=200ms,得到R5=20。
延时子程序如下:
DELAY:
MOVR5,#201
D1:
MOVR6,#201+20
D2:
MOVR7,#2481+20+20(1+20)
DJNZR7,$2×248+20×2×248+20(2×248+20×2×248)
DJNZR6,D22×20+2×20×20
DJNZR5,D12×20
RET2
上面的延时程序为0.220081s。
(2)单片机的P1.0端口的输出控制方法:
如图1.1所示,根据发光二极管的单向导电性,当单片机的P1.0端口输出高电平,即P1.0=1时,发光二极管D1熄灭;当单片机的P1.0端口输出低电平,即P1.0=0时,发光二极管D1亮。
可以使用SETB P1.0指令使单片机的P1.0端口输出高电平,使用CLR P1.0指令使单片机的P1.0端口输出低电平。
六、程序流程图(如图1.2所示)
图1.2LED闪烁灯设计流程图
七、汇编源程序
ORG0000H;系统复位
LJMPSTART;转入主程序
ORG0003H;外部中断0
RETI;中断返回
ORG000BH;定时器0溢出中断
RETI
ORG0013H;外部中断1
RETI
ORG001BH;定时器1溢出中断
RETI
ORG0023H;外部中断2
RETI
ORG0100H
START:
CLRP1.0;和P1.0口接的二极管亮
LCALLDELAY200MS;延时0.2秒
SETBP1.0;和P1.0口接的二极管灭
LCALLDELAY200MS;延时0.2秒
LJMPSTART;循环
DELAY200MS:
MOVR5,#20;延时子程序
D1:
MOVR6,#20
D2:
MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
END
八、C语言源程序
#include
sbitL1=P1^0;
voiddelay02s(void)//延时子程序//
{unsignedchari,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
voidmain(void)//主程序//
{while
(1)//进入循环//
{L1=0;//指示灯亮//
delay02s();//延时0.2秒//
L1=1;//指示灯灭//
delay02s();//延时0.2秒//
}
}
九、注意事项
(1)用Keil软件时,注意中文说明及注释。
(2)用汇编语言编写程序时不区分大小写,但用C语言编写程序时注意区分大小写。
(3)汇编语言和C语言定义口的方式不同,如汇编语言为P1.0,P2.0,P3.0,而C语言为P1_0,P2_0,P3_0。
实验二模拟开关控制指示灯设计
一、实验目的
1、掌握单片机外围常用电路的固定接法。
2、掌握单片机利用模拟开关控制指示灯的简单设计。
二、设计原理
如图2.1所示,用发光二极管监视模拟开关的状态。
如果模拟开关合上,发光二极管点亮;如果模拟开关打开,发光二极管熄灭。
三、参考电路
图2.1模拟开关控制指示灯原理图
四、电路硬件说明
如图2.1所示,模拟开关SW1通过8联拨动拨码开关连接在单片机的P3.0端口上,用发光二极管D1(通过8联拨动拨码开关接在单片机的P1.0端口上)显示模拟开关SW1的状态。
当模拟开关SW1断开时,单片机的P3.0端口为高电平;当模拟开关闭合时,单片机的P3.0端口为低电平。
五、程序设计内容
(1)开关状态的检测过程
对于单片机来说,开关状态的检测是从单片机的P3.0端口输入信号,然而输入的信号只有高、低电平两种。
当拨动开关SW1拨上去(输入高电平)时,拨动开关SW1断开;当拨动开关SW1拨下来(输入低电平)时,拨动开关SW1闭合。
单片机可以采用JB BIT或者JNB BIT指令来完成对拨动开关状态的检测。
(2)输出控制
如图2.1所示,当单片机的P1.0端口输出为高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管D1熄灭;当单片机的P1.0端口输出为低电平,即P1.0=0时,发光二极管D1亮。
可以使用SETB P1.0指令使单片机的P1.0端口输出高电平,使用CLR P1.0指令使单片机P1.0端口输出低电平。
六、程序流程图(如图2.2所示)
图2.2模拟开关控制指示灯程序流程图
七、汇编源程序
ORG0000H;程序复位入口地址
LJMPSTART;跳到主程序
ORG0003H;外部中断0入口地址
RETI;中断返回
ORG000BH;定时器中断0入口地址
RETI;中断返回
ORG0013H;外部中断1入口地址
RETI;中断返回
ORG001BH;定时器中断1入口地址
RETI;中断返回
ORG0023H;串行口中断入口地址
RETI;中断返回
ORG002BH;定时器中断2入口地址
RETI;中断返回
ORG0100H
START:
JBP3.0,NEX;P3.0为1,则跳NEX
CLRP1.0;P1.0亮
SJMPSTART
NEX:
SETBP1.0;P1.0灭
SJMPSTART
END
八、C语言源程序
#include
main()
{if(P3_0==1)
{P1_0=0;//P1_0亮//
}
else
{P1_0=1;//P1_0灭//
}
}
九、注意事项
如果程序下载到实验板上后,要把8联拨动拨码开关JP2和JP4的相应开关合上去。
实验三多路开关状态指示设计
一、实验目的
利用多路模拟开关进行指示灯控制。
二、设计原理
如图3.1所示,单片机的P1.0-P1.3端口通过8联拨动拨码开关连接四个发光二极管D1-D4。
单片机的P3.0-P3.3端口通过8联拨动拨码开关连接四个拨动开关SW1-SW4。
编程时将拨动开关的状态反映到发光二极管上(开关闭合,对应的灯亮,开关断开,对应的灯灭)。
三、参考电路
图3.1多路开关状态指示电路原理图
四、电路硬件说明
如图3.1所示,拨动开关SW1、SW2、SW3、SW4通过8联拨动拨码开关JP2接连单片机的P3.0、P3.1、P3.2、P3.3端口。
单片机的P1.0、P1.1、P1.2、P1.3口通过8联拨动拨码开关JP4分别连接四个指示灯D1、D2、D3、D4。
五、程序设计内容
(1)开关状态检测
拨动开关状态的检测,对于单片机来说,是一种输入关系,轮流检测每个开关的状态,根据每个开关的状态让相应的发光二极管指示显示。
在编写程序时,可以使用JB P3.X或JNB P3.X指令来完成指示控制。
(2)单片机的输出控制
根据拨动开关SW1、SW2、SW3、SW4的状态,经由发光二极管D1-D4来指示显示。
在编写程序时,可以用SETB P1.X和CLR P1.X指令来完成。
六、程序流程图(如图3.2所示)
图3.2多路开关状态指示流程图
七、汇编源程序
ORG0000H;程序复位入口地址
LJMPSTART;跳到主程序
ORG0003H;外部中断0入口地址
RETI;中断返回
ORG000BH;定时器中断0入口地址
RETI;中断返回
ORG0013H;外部中断1入口地址
RETI;中断返回
ORG001BH;定时器中断1入口地址
RETI;中断返回
ORG0023H;串行口中断入口地址
RETI;中断返回
ORG0100H
START:
LCALLKAIGUAN;调用检测开关状态子程序
LJMPSTART;跳回继续检测
KAIGUAN:
JBP3.0,N1;判断p3.0是否按下
CLRP1.0;p3.0按下则亮p1.0
SJMPM1;跳到m1
N1:
SETBP1.0;p3.0没有按下则灭p1.0
M1:
JBP3.1,N2;判断p3.1是否按下
CLRP1.1;p3.1按下则亮p1.1
SJMPM2;跳到m2
N2:
SETBP1.1;p3.1没有按下则灭p1.1
M2:
JBP3.2,N3;判断p3.2是否按下
CLRP1.2;p3.2按下则亮p1.2
SJMPM3;跳到m3
N3:
SETBP1.2;p3.2没有按下则灭p1.2
M3:
JBP3.3,N4;判断p3.3是否按下
CLRP1.3;p3.3按下则亮p1.3
SJMPM4;跳到m4
N4:
SETBP1.3;p3.3没有按下则灭p1.3
M4:
LJMPKAIGUAN;跳回检测开关状态子程序进行循环
RET;子程序返回
END;结束
八、C语言源程序
#include
main()
{if(P3_0==0)
{P1_0=0;
}
else
{P1_0=1;
}
if(P3_1==0)
{P1_1=0;
}
else
{P1_1=1;
}
if(P3_2==0)
{P1_2=0;
}
else
{P1_2=1;
}
if(P3_3==0)
{P1_3=0;
}
else
{P1_3=1;
}
}
九、注意事项
(1)程序下载到实验板上后,要把8联拨动拨码开关JP2和JP4的相应按键合上去。
(2)与8联拨动拨码开关JP4相连的指示灯是高电平亮,低电平灭。
实验四广告灯左、右移设计
一、实验目的
1.初步了解广告灯的移动设计。
2.掌握循环移动的原理。
二、设计原理
如图4.1所示,八个发光二极管D1-D8通过8联拨动拨码开关JP4分别连接在单片机的P1.0-P1.7端口上,做单一灯的左移右移。
如果单片机的P1端口输出为“0”时,发光二极管亮,依次为P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。
三、参考电路
图4.1广告灯左、右移设计电路原理图
四、电路硬件说明
把“单片机系统”区域中的单片机的P1.0-P1.7端口通过8联拨动拨码开关JP4连接到“八路发光二极管指示模块”区域中的D1-D8端口上,要求:
P1.0对应着D1,P1.1对应着D2,……,P1.7对应着D8。
五、程序设计内容
运用输出端口指令MOV P1,A或MOV P1,#DATA,给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。
每次送出的数据是不同的,具体的数据如下表4.2所示
表4.28个LED循环显示真值表
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
说明
D8
D7
D6
D5
D4
D3
D2
D1
1
1
1
1
1
1
1
0
D1亮
1
1
1
1
1
1
0
1
D2亮
1
1
1
1
1
0
1
1
D3亮
1
1
1
1
0
1
1
1
D4亮
1
1
1
0
1
1
1
1
D5亮
1
1
0
1
1
1
1
1
D6亮
1
0
1
1
1
1
1
1
D7亮
0
1
1
1
1
1
1
1
D8亮
六、程序流程图(如图4.3所示)
图4.3广告灯左右移程序流程图
七、汇编源程序
ORG0000H;系统复位
LJMPSTART;转入主程序
ORG0003H;外部中断0
RETI;中断返回
ORG000BH;定时器0溢出中断
RETI
ORG0013H;外部中断1
RETI
ORG001BH;定时器1溢出中断
RETI
ORG0023H;外部中断2
RETI
ORG0100H
START:
MOVR2,#7
MOVA,#0FEH
SETBC;给CY置1
LOOP:
MOVP1,A
LCALLDELAY
RLCA;带进位左移
DJNZR2,LOOP;R2减1不为0转到LOOP
MOVR2,#8
LOOP1:
MOVP1,A
LCALLDELAY
RRCA;带进位右移
DJNZR2,LOOP1;R2减1不为0转到LOOP1
LJMPSTART
DELAY:
MOVR5,#20;延时0.2秒子程序
D1:
MOVR6,#20
D2:
MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
END
八、C语言源程序
#include
unsignedchari;
unsignedchartemp;
unsignedchara,b;
voiddelay(void)//延时子程序//
{unsignedcharm,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
voidmain(void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 单片机 系统工程 训练 指导