MCS-51单片机实验指导书-西华大学Word格式.docx
《MCS-51单片机实验指导书-西华大学Word格式.docx》由会员分享,可在线阅读,更多相关《MCS-51单片机实验指导书-西华大学Word格式.docx(39页珍藏版)》请在冰点文库上搜索。
LCD_RS4
C110uF
S1
RESET
R6
VO
RS
5RWRELAY
S8
1
SWDIP-2
4LED_PWR2
3
10
BELLR4
1K
BELL1
T1
9012
U11602
6
EDB0DB1DB2DB3DB4DB5DB6DB7BL_ABL_K
SP3485GND
R3510K
R7
200
10K
GND
W1104
VCC
2VDD
P007
P018
P029
P0310
P0411
P0512
P0613
P0714
15
16
R9
RS-485与与
与与与与
与与与
1602与与与与
a
VCCS7
图1.2实验板电路原理图
4
R1
470D1
R3
LED1
LED2
J3LED1
5
7
8
LED2
IC1
1P1.0
1Kx8
38
37
P0.039
RP1
bcdefg
dp
P00P01
VCCJ48
8P06
4P00
3P01
1P03
2P02
9P07
6P04
7P05
LED1
DA_OUT2
3
D10
470D2
R5
LED3
S2
KEY1
LED3LED4LED5
P1.1
P1.2P1.3P1.4
P0.1
36
35
P0.2P0.3P0.4
P027
P036
P045
R301K
470D3
R8
LED4
S3
KEY2
LED6
LED7LED8
RESET
6P1.5
7P1.6
8P1.7
9
P0.534
P0.633
P0.732
22
21
P05
G1
G2
P06
P071
J5
470D4
R10
LED5
GNDS4
J6RXD
24
10P3.0/RXD
P2.0P2.1
KEY28
12
TXD11
P2.223
KEY3
KEY4
R14
R15
470D5
ADC_DI
P3.1/TXD
14
P3.2/INT0
P2.3
27
25
S2
28
P2.4
RELAY5
1010
R11
LED6S5
RE_DE
17
NUM_COUNT
13P3.3/INT1
P2.526S13
T2T3
470D6
R12
LED7
KEY4
LCD_RS
Freq18B20
P3.4/T0P3.6/WRP3.5/T1P3.7/RD
P2.6P2.7
BELL2
R161K
R171K
470D7
R13
LED8
C230P
18X2
EA/VP31
LED_PW
S2S1
470D8
C330P
X119X1
ALE/P30
PSEN29
LED与与与与与
STC89C52与与与与
与与与与与
R29
RXD
R28GND
10KU5
TXDRS232
VCC1
VCCU6
VCCU4
U3VCCR181K
2GND
VCC15
J101
DA_OUT
8VDD
7OUT
6REFIN
DIN1LED1SCLK2LED2CS3LED3
1LED6
7LED7
6LED8
GND1
DQ2
VDD3
18B20
U2VCCGND
VCCWPSCLSDA
A0A1A2GND
7
P1
GND1
D+2
C6
10445
RXDV3UD+
RTS#14
DTR#13
DCD#12
CON2
GNDR311K
R321K
5AGNDDOUT4
TLC5615
VDDCH0CH1GND
CSCLKD0D1
CH0
CH1
5ADC_DI
4
24C02GND
6LED4
5LED5
D-3
VCC4
USB_1
GNDR27VARISTOR
C720P
12MX2C820P
6UD-
7XI
8XO
CH340G
RI#11
DSR#10
CTS#9
18B20与与与与与
EEPROM与与与
USB与与与
W2104
U7LM331
204
CH13
IC2A
Freq
R2310K
1OUT
2CREF
3FOUT
VCC8
CMPRC7
THR6
R22200
CH1
C4100uF
C5104
VCC1
C13
C11
S6
R21
1KD9
R19IC3
R20
1NUM_COUNT
R264
5R25
R24C9
100uF104
32CH02
10K
R/C
100K1uF
C10
J8J9
14C12
6.8K
104
104
V/F与与
与与与与与与
与与与与与与与与
与与与与
fo=(Vin×
R26)/(2.09×
R24×
R25×
C12)=Vin*70.3Hz
1.3USB转串口驱动的安装
安装步骤如下:
(1)双击如图1.3所示的可执行文件
图1.3驱动安装图标
(2)双击后会弹出如图1.4所示的对话框,所有值保持默认值,鼠标单击INSTALL按钮,此时对话框会变成如图1.5所示,INSTALL和UNINSTALL变为灰色。
这时我们需要等待一段时间,等两个按钮变成和图4一样(即INSTALL和UNINSTALL不为灰色),驱动安装完毕。
图1.4 驱动安装窗口
图1.5 驱动正在安装窗口
(3)在我的电脑图标上单击右键,选择管理,在弹出的对话框中单击设备管理器,展开端口即可以看到实验板对应的串口号,如图1.6所示。
图1.6 驱动正确安装
1.4下载软件的使用
在windows下运行STC_ISP.EXE,界面和操作步骤如图1.7所示
图1.7 ISP界面
2.单片机实验
实验1红黄绿灯控制
1.实验目的
(1)学习KeilC51集成编译软件的使用和调试程序方法。
(2)学习将用户程序下载到应用系统的方法。
(3)掌握STC89C52单片机的I/O端口的控制和使用方法。
2.实验内容
(1)编写程序要求:
利用单片机的P1.0,P1.1,P1.2控制3个LED灯,模仿控制交通灯(红灯亮4秒,黄灯亮2秒,,黄灯和绿灯同时亮1秒,绿灯亮4秒,如此循环)。
3.实验电路
见图1.2
4.实验参考程序
延时4S
绿灯亮
延时1S
黄、绿灯亮
延时2S
黄灯亮
红灯亮
(1)程序流程图
(2)C语言参考程序
#include"
reg52.h"
#defineucharunsignedchar#defineuintunsignedint
/*定义红黄绿灯对应的单片机引脚*/sbitGreen_LED =P1^0;
sbitYellow_LED=P1^1;
sbitRed_LED =P1^2;
/*毫秒延时函数*/
voiddelay_ms(uintnum)
{
uchari;
while(num--)
for(i=0;
i<
123;
i++);
}
/*主函数*/voidmain()
while
(1)
Red_LED=0;
Yellow_LED=1;
Green_LED=1;
delay_ms(4000);
Red_LED=1;
Yellow_LED=0;
delay_ms(2000);
Green_LED=0;
delay_ms(1000);
(3)汇编语言参考程序
ORG0000HSJMPMAINORG0030H
MAIN:
CLRP1.2
;
红灯亮4S
SETBP1.0
;
绿灯灭
SETBP1.1MOVR0,#40
ACALLDELAY
黄灯灭
M ;
自己编写
DELAY:
MOVA,R0
延时程序,R0=10,延时1S
DELAY3:
MOVR5,A
MOVR6,#XXH
XX的数值自己计算填写
DELAY2:
MOVR7,#XXH
DELAY1:
DJNZR7,DELAY1
DJNZR7,DELAY1DJNZR7,DELAY1RET
END
5.实验步骤
(1)根据实验原理图编写程序,用“KeiluVision4”编译软件进行编译,如未通过,则修改程序,直至通过。
(2)用STC-ISP.EXE软件将所编写程序生成的“HEX”文件下载到实验板STC89C52芯片中
(3)运行程序,观察实验板上的红,黄,绿三个LED灯的亮灭次序和时间是否符合实验内容要求,如果不符合要求,改写程序,按照步骤
(1)开始重新做实验,直至成功。
6.思考题
(1)怎样计算延时子程序的延时时间?
(2)如何计算与LED连接的电阻阻值?
(3)如何用89C52单片机的I/O口控制继电器?
画出电路原理图。
(4)根据实验板原理图,编写一段8个LED循环闪烁的流水灯程序。
7.实验报告要求
(1)画出本实验相关的原理图。
(2)回答思考题中的题目。
(3)总结本次实验,简述自己的感想。
实验2键盘LED数码管显示
掌握独立键盘,LED数码管的电路连接方法和编程方法。
(1)编写程序,按下S2,S3,S4,S4任何一个按键的时候,蜂鸣器都鸣叫,松开按键的时候蜂鸣器停止鸣叫。
(2)开始的时候,数码管左边位不显示,右边位数码管显示数值0,每按一次S4按键,数码管显示值加1,直至9,再循环从0显示到9。
(1)C语言参考程序
/*蜂鸣器引脚定义*/sbitBeep=P2^7;
/*数码管位选引脚定义*/sbitS2 =P2^6;
sbitS1 =P2^5;
/*按键引脚定义*/sbitKey1=P2^0;
sbitKey2=P2^1;
sbitKey3=P2^2;
sbitKey4=P2^3;
/*数码管数字0~9段码*/ucharcodeNum[10]={
0x30,/*0*/
0xFC,/*1*/
0xA2,/*2*/
0xA4,/*3*/
0x6C,/*4*/
0x25,/*5*/
0x21,/*6*/
0xBC,/*7*/
0x20,/*8*/
0x24,/*9*/
};
/*LED数码管显示*/
voidLED_DispNum(ucharnum)
S1=0;
S2=1;
P0=Num[num];
/*按键扫描*/ucharKeyScan()
ucharkeyval;
if((Key1==0)||(Key2==0)||(Key3==0)||(Key4==0))
delay_ms(10);
if(Key1==0)
keyval=1;
elseif(Key2==0)keyval=2;
elseif(Key3==0)keyval=3;
elseif(Key4==0)keyval=4;
Beep=0;
while((Key1==0)||(Key2==0)||(Key3==0)||(Key4==0));
Beep=1;
elsekeyval=0;
returnkeyval;
ucharDispNum=0;
ucharKeyval;
while
(1)
Keyval=KeyScan();
if(Keyval==4)
if(DispNum<
9)DispNum++;
else
DispNum=0;
LED_DispNum(DispNum);
(2)汇编语言参考程序
BEEPEQUP2.7
S1 EQUP2.5
S2EQUP2.6KEY1EQUP2.0KEY2EQUP2.1KEY3EQUP2.2KEY4EQUP2.3
蜂鸣器
数码管位个位
数码管位十位
按键1
按键2
按键3
按键4
ORG0000H
SJMPMAIN
ORG0030H
MOVR0,#00H
CLRFO
按键4按下标志位F0=1
CLRS1
SETBS2
ACALLDISNUM
数码管显示子程序
LOOP:
ACALLKEYSCAN
按键扫描
JNBF0,LOOPINCR0
CLRF0
CJNER0,#10,LOOP1MOVR0,#00
LOOP1:
ACALLDISNUM
SJMPLOOP
DISNUM:
MOVDPTR,#TAB ;
MOVCA,@A+DPTRMOVP0,A
RET
KEYSCAN:
JBKEY1,K2 ;
按键扫描子程序ACALLDELAY ;
延时防止抖动JBKEY1,K2
CLRBEEPJNBKEY1,$SETBBEEP
K2:
.....
.....
K3:
K4:
JBKEY4,K5ACALLDELAYJBKEY1,K5CLRBEEPSETBF0
JNBKEY1,$SETBBEEP
K5:
RET
....... ;
延时10秒子程序
.......
TAB:
DB30H,0FCH,0A2H,0A4H,6CH,25H,21H,0BCH,20H,24HEND
(3)运行程序,按下实验板上的S2,S3,S4,S5按键,听蜂鸣器是否会鸣叫。
按下S5键的时候观察数码管上的数字是否从0~9循环变化。
(1)如何编程实现按键长按和短按的识别?
(2)如果没有电路图,如何编程来找出LED数码管的段码?
(1)画出本实验相关的电路图。
(2)写出调试成功的程序。
(3)回答思考题
实验3定时器中断实验
掌握MSC-51定时器的使用方法。
(1)使用定时器中断方式做一个显示00~99的秒钟,每秒增加1;
/*数码管数字编码*/ucharcodeNum[10]={
ucharCountNum=0;
ucharDispNum=0;
ucharGe=0,Shi=0;
ucharDispState=1;
0x30,/*0*/
/*定时器初始化*/voidTimer0_Init()
TMOD=0x01;
//定时器0为方式1TH0=0xDB;
//每10MS进入一次中断TL0=0xFF;
ET0=1;
TR0=1;