单片机实验指导书.docx
- 文档编号:18576042
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:39
- 大小:1.14MB
单片机实验指导书.docx
《单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书.docx(39页珍藏版)》请在冰点文库上搜索。
单片机实验指导书
单片机原理及应用
实验指导书
测控系
2016年9月
1单片机实验板介绍
1.1板载硬件资源
1采用STC89521RC(与标准51指令、脚位完全兼容),支持在线串行ISP下载。
2供电方式:
USB供电
3串口RS232
44个LED发光管
5四位数码管
64个独立式键盘(包含外部中断按键)
7一个蜂鸣器(选配件)
8一个PS2接口
9128*64液晶接口,单板支持带字库(ST7920)和不带字库(KS0108)两种128*64液晶.(选配件)
10AD和DA芯片器8591
11时钟芯片DS1302
12存储器AT24C02
131DS18B20温度传感器(选配件)
14IrDA红外接收头(选配件)
1.2原理图
1.3PCB图
KEIL软件的使用
KEIL是51单片机开发的最常见的开发软件。
成功安装好KEIL软件后,即可看到电脑桌面上Keil软件图标,如下图。
1.双击图标,打开软件,出现如下界面。
在打开的窗口中,选择“Project”菜单:
2.点击“NewProject”出现一个创建工程对话框,选择工程所建路径,并输入工程的文件名(建议用英文),点击“保存”:
3.之后出现芯片选择界面,如下图:
4.这里,选取常用51芯片即可,选择“Philips”下的“8Xc51RC+”芯片:
5.点击“确定”,在出现如下对话框时,选择“否”:
6.至此,已成功建立工程。
界面如下图所示:
7.点击“Project”菜单下面的“optionsforTarget‘Target1’”选项,出现如下选项框:
8.选择“output”页面,选中“createHexFile”,并可在“NameofExecutable:
”输入框中,重新输入生成HEX文件的文件名,然后点“确定”,以在程序编译时,实时生成需下载到单片机中的HEX文件。
9.点击“File”菜单下面的“New”选项,再点击“File”菜单下面的“Save”选项,保存文件。
输入文件名(C文件扩展名为“.c”,汇编文件扩展名为“.asm”),如下图:
取名为main.c:
10.在新建的文件里,进行程序编制,如图:
11.程序编制完成后,保存文件。
将源程序文件加载到工程中。
加载方法为:
右击“SourceGroup”,在出现的选项列表中,选择“AddFilestoGroup‘sourceGroup1’”,如下图所示:
12.在出现的对话框中,选择刚编辑的源文件(main.c),点击“Add”,如图:
13.添加成功后,点击“Project”菜单下面的“Rebuildalltargetfiles”选项。
当编译通过之后HEX文件才能生成,如下图。
如果程序有错误,编译结果框中会有提示错误。
双击对应的错误列表,可定位到源程序的位置,以便快速寻找错误。
STC-ISP下载软件的使用方法
该软件将已生成的HEX文件下载到单片机中。
具体步骤如下:
1.双击STC-ISP图标:
2.然后在“单片机型号”列表中选择单片机型号(应选择单片机板中的CPU型号),如下图:
3.选择串口的对应端口号(根据自己的硬件连接端口)。
4.点击“打开程序文件”按钮,找到所要下载的HEX文件,并选中,选择“打开”,如下图:
5.然后选“最高波特率”中的波特率,也可以选默认值。
6.点击”下载/编程”,进行文件下载,如图:
7.稍等几秒,即可下载完成,如图:
实验一熟悉KEIL软件的使用
一、实验目的
1.认识单片机实验系统的构成及使用。
2.学习KEIL软件和STC-ISP下载软件的使用方法。
3.单片机I/O口的使用方法;
二、实验内容
1.P13口做输出口,接发光二极管,编写程序,使其闪烁。
2.P13口接四只发光二极管LED1,P20口接开关K1,编写程序,用开关K1控制发光二极管LED1上的亮灭。
三、实验步骤
1.设计实验电路,画出电路原理图
2.按照KEIL软件的使用步骤,建立工程。
3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4.用STC-ISP下载软件下载HEX文件到单片机系统。
5.运行、调试程序,观察实验结果。
四、实验参考电路及参考程序
1.参考电路
2.参考程序
实验1:
#include"reg52.h"
sbitP13=P1^3;//定义LED指示灯的IO口
voidmain()
{
inti;//计时变量
while
(1)
{
for(i=0;i<30000;i++);//延时
P13=!
P13;//指示灯IO口反转
}
}
实验2:
#include"reg52.h"
sbitP13=P1^3;//定义LED指示灯的IO口
sbitP20=P2^0;//定义key的IO口
voidmain()
{
inti;//计时变量
while
(1)
{
for(i=0;i<30000;i++);//延时
if(P20==0)P13=0;//按键,LED亮
elseP13=1;//LED亮
}
}
五.思考题
1.P35-P37口做输出口,接发光二极管,编写并调试程序,使其闪烁。
2.P35-P37口做输出口,接发光二极管,编写并调试跑马灯程序。
实验二KeilC51程序设计上机练习
一、实验目的
1.学习KEIL软件的程序调试方法。
2.学会KEILC程序设计及调试,重点学会预处理命令、数据类型的定义。
二、实验内容
1.单片机P2口的P20和P21各接一个开关K1、K2,P13、P35、P36和P37各接一只发光二极管。
由K1和K2的不同状态来确定发光二极管的点亮。
K2
K1
亮的二极管
0
0
L1
0
1
L2
1
0
L3
1
1
L4
2.设计一个二进制加1计数器,按一次键,加1,并用4个LED显示计数结果,加至16时清零重新计数。
三、实验步骤
1.设计实验电路,画出电路原理图
2.按照KEIL软件的使用步骤,建立工程。
3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4.用STC-ISP下载软件下载HEX文件到单片机系统。
5.运行、调试程序,观察实验结果。
四、实验参考电路及参考程序
1.实验1
#include
sbitk1=P2^0;
sbitk2=P2^1;
sbitLED1=P1^3;
voidmain()
{
while
(1)
{
if(k1==0&k2==0)
{LED1=0;
P3=0xff;
}
if(k1==1&k2==0)
{LED1=1;
P3=0xdf;
}
if(k1==0&k2==1)
{LED1=1;
P3=0xbf;
}
if(k1==1&k2==1)
{LED1=1;
P3=0x7f;
}
}
}
2.实验2
#include
sbitkey=P2^0;
sbitP13=P1^3;
unsignedchara;
unsignedcharcount=0;
voiddelay(inti)
{
while(i)
i--;
}
voidmain()
{
while
(1)
{
if(key==0)
{
delay(10);
if(key==0)
{
count++;
while(!
key);
if(count==8)
{count=0;
P13=1;
}
P13=~P13;
a=count;
a=~a;
a=a<<5;
P3=a;
}
}
}
}
五、思考题
1.设计一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。
2.用1个按键控制LED的显示,要求显示3种以上的不同模式。
如,按第一次键,左边2灯和右边2灯轮流显示;按第二次键,1、3灯和2、4灯轮流显示;按第三次键,4灯同时亮灭。
实验三单片机中断实验
一、实验目的
1.掌握单片机的中断系统,学会单片机中断系统的初始化。
2.学会单片机外部中断的应用。
二、实验内容
1.采用外部中断的方式实现按键控制1个LED的亮灭。
2.采用外部中断的方式实现4个LED的轮流亮灭。
三、实验步骤
1.设计实验电路,画出电路原理图
2.按照KEIL软件的使用步骤,建立工程。
3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4.用STC-ISP下载软件下载HEX文件到单片机系统。
5.运行、调试程序,观察实验结果。
四、实验参考电路和参考程序
1.实验1
#include"reg52.h"
sbitP13=P1^3;
voidmain()
{
IT0=1;//外部中断0连沿触发方式
EX0=1;//使能外部中断0
EA=1;//开部中断
P13=0;//指示灯初始为亮
while
(1);
}
voidint0()interrupt0//外部中断0程序入口
{
P13=!
P13;
}
2.实验2
#include"reg52.h"
sbitP13=P1^3;
voidmain()
{
IT0=1;//外部中断0连沿触发方式
EX0=1;//使能外部中断0
EA=1;//开部中断
while
(1);
}
voidint0()interrupt0//外部中断0程序入口
{
staticunsignedcharBit=0;
Bit++;
if(Bit>=4)Bit=0;
switch(Bit)
{
case0:
P13=0;P3=0xff;break;
case1:
P13=1;P3=0xdf;break;
case2:
P13=1;P3=0xbf;break;
case3:
P13=1;P3=0x7f;break;
}
}
五、思考题
1.采用外部中断的方式实现一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。
2.采用外部中断的方式实现用1个按键控制LED的显示,要求显示3种以上的不同模式。
实验四中断及定时器∕计数器实验
一、实验目的
1.掌握单片机的中断系统、定时器的工作原理。
2.学会单片机中断系统、定时器的应用。
二、实验内容
1.采用单片机定时器实现1个LED的亮灭,周期为1s。
2.采用单片机定时器实现4个LED的轮流亮灭,每个LED点亮时间为1s。
三、实验步骤
1.设计实验电路,画出电路原理图
2.按照KEIL软件的使用步骤,建立工程。
3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4.用STC-ISP下载软件下载HEX文件到单片机系统。
5.运行、调试程序,观察实验结果。
四、实验参考电路和参考程序
1.实验1
#include
#defineTHC00xee
#defineTLC00x00
sbitled0=P1^3;
voidmain()
{
TMOD=0x01;
TH0=THC0;
TL0=TLC0;
TR0=1;
ET0=1;
EA=1;
while
(1);
}
voidtimer0_ISR(void)interrupt1
{
staticunsignedcharcount=0;
TL0=TLC0;
TH0=THC0;
count++;
if(count>=200)
{
count=0;
led0=!
led0;
}
}
2.实验2
#include
#defineTHC00xee
#defineTLC00x00
sbitled0=P1^3;
sbitled1=P3^5;
sbitled2=P3^6;
sbitled3=P3^7;
voidmain()
{
TMOD=0x01;
TL0=TLC0;
TH0=THC0;
TR0=1;
ET0=1;
EA=1;
while
(1);
}
voidtimer0_ISR(void)interrupt1
{
staticunsignedcharcount=0,Bit=0;
TL0=THC0;
TH0=TLC0;
count++;
if(count>=200)
{
count=0;
Bit++;
if(Bit>=4)
Bit=0;
P3=P3|0xf0;
P1=P1|0xf0;
switch(Bit)
{
case0:
led0=0;break;
case1:
led1=0;break;
case2:
led2=0;break;
case3:
led3=0;break;
}
}
}
五、思考题
1.设计1个秒计数器,每秒计1次数,在LED上显示出来,计至16清零后重新计数。
2.在上题基础上用按键控制秒计数器的启停,按一次键开始计数,按2次停止计数,按3次又开始计数…。
实验五数码管显示器实验
一、实验目的
1.掌握单片机的按键、数码管显示器的工作原理。
2.学会单片机独立式按键、数码管显示器的应用。
二、实验内容
1.在一个数码管上显示字符“1”。
2.在4个数码管上显示字符“1”、“2”、“3”、“4”。
3.设计一个2位10进制计数器,每秒加1,在LED上显示。
三、实验步骤
1.设计实验电路,画出电路原理图
2.按照KEIL软件的使用步骤,建立工程。
3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4.用STC-ISP下载软件下载HEX文件到单片机系统。
5.运行、调试程序,观察实验结果。
四、实验参考电路和参考程序
1.参考电路
2.参考程序
#include"reg52.h"
#defineTHCO0x3C
#defineTLCO0xB0
unsignedcharcodeDuan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//共阴极数码管,0-9段码表
sbitP24=P2^4;//四个数码管的位码口定义
sbitP25=P2^5;
sbitP26=P2^6;
sbitP27=P2^7;
voidmain()
{
TMOD=0x11;//定时器0初始化
TH0=THCO;
TL0=TLCO;
TR0=1;
ET0=1;
EA=1;
while
(1);
}
voidtimer0()interrupt1
{
staticunsignedcharBit=0;//静态变量,退出程序后,值保留
TH0=THCO;
TL0=TLCO;
Bit++;
if(Bit>=4)Bit=0;
P2|=0xf0;//先关位码
P0=Duan[Bit];//开段码
switch(Bit)//送位码
{
case0:
P24=0;break;
case1:
P25=0;break;
case2:
P26=0;break;
case3:
P27=0;break;
}
}
五、思考题
用按键作显示模式选择键,实现上述实验中3个显示画面的切换,即上电显示“1”,按1次键显示“1234”,再2次键显示2位秒计数器,按3次键又显示“1”……。
实验六串口通信实验
一.实验目的
利用单片机的TXD、RXD口,使用户学会单片机的串行口的使用。
二.实验设备及器件
PC机一台
单片机实验板一台
三.实验内容
编写一段程序,使数码管显示从上位机接收到的对应数值(0-9),并将此值发送给上位机。
(注:
此实验只能用STC芯片,将HEX文件下载进去才能观看运行结果)
四.实验步骤
1.按照KEIL软件的使用步骤,建立工程。
2.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
3.用STC-ISP下载软件下载HEX文件到单片机系统。
4.运行、调试程序,利用STC-ISP的串口助手窗口中发送数据给单片机,在单片机的数码管上观察接收到的数据;并在STC-ISP的串口助手窗口中观察接收到的数据。
五.参考例程
#include"reg52.h"
#defineTHCO0xee
#defineTLCO0x0
unsignedcharcodeDuan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//共阴极数码管,0-9段码表
unsignedcharData_Buffer[4]={1,2,3,4};
//四个数码管显示数值,数组变量定义
sbitP24=P2^4;//四个数码管的位码口定义
sbitP25=P2^5;
sbitP26=P2^6;
sbitP27=P2^7;
sbitP34=P3^4;
voidmain()
{
TMOD=0x20;//方式控制字
SCON=0x50;
TH1=0xfd;//设置波特率为9600
TL1=0xfd;
TR1=1;//开定时器1
ES=1;
TH0=THCO;
TL0=TLCO;
TR0=1;
ET0=1;
EA=1;
while
(1);
}
voidtimer0()interrupt1
{
staticunsignedcharBit=0;//静态变量,退出程序后,值保留
TH0=THCO;
TL0=TLCO;
Bit++;
if(Bit>=4)Bit=0;
P2|=0xf0;//先关位码
P0=Duan[Data_Buffer[Bit]];//开段码
switch(Bit)//送位码
{
case0:
P24=0;break;
case1:
P25=0;break;
case2:
P26=0;break;
case3:
P27=0;break;
}
}
voidseri()interrupt4
{
unsignedchartemp;
if(RI==1)
{
temp=SBUF;
RI=0;
if(temp>=0&&temp<=9)//接收到的数据为0-9时显示到数码管上
{
Data_Buffer[0]=temp;
Data_Buffer[1]=temp;
Data_Buffer[2]=temp;
Data_Buffer[3]=temp;
P34=!
P34;
}
TI=0;
SBUF=temp;
while(TI==0);
TI=0;
}
}
7.思考题
利用单片机的串行口向PC机发送数据0x55,运行结果可以通过在PC的接收软件上看见,验证接收数据是否正确。
实验七I2C总线的AD/DA实验
1.实验目的
学会用51单片机模拟I2C总线接口,实现与PCF89518位AD/DA转化器的接口,并编写、调试AD/DA转换程序。
2.实验设备及器件
PC机一台
51单片机实验板一台(含PCF8951芯片)
万用表、示波器
3.实验内容
编写一段程序,采集PCF8951四路AD通道的模拟信号值,将二进制代码值用四位数码管显示出来;同时用DA通道输出一个方波信号。
4.实验电路原理图
1AIN0-AIN3为4路模拟输入信号,时钟信号SCL接至单片机P36,数据线SDA接至P37;
2AOUT为模拟信号输出端,接至示波器观察输出波形
5.参考例程
#include"STC89C52RC.h"
#include
#defineucharunsignedchar
#defineuintunsignedint
#definePCF85910x90//PCF8591地址
#defineTHCO0xf8//11.0592MHZ晶振
#defineTLCO0xcb//定时2ms时间常数值
unsignedcharData_Buffer[4]={1,2,3,4};
ucharcodeDuan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};
sbitP24=P2^4;//四个数码管的位码口定义
sbitP25=P2^5;
sbitP26=P2^6;
sbitP27=P2^7;
bitflag=0;
bitDACconversion(unsignedcharsla,unsignedcharc,unsignedcharVal);
bitISendByte(unsignedcharsla,unsignedcharc);
unsignedcharIRcvByte(unsignedcharsla);
/******************************/
voidmain(void)//主程序
{
unsignedintv;
unsignedcharAD_CHANNEL=0;
unsignedintD[5]={0,0,0,0,255};
TMOD=0x11;//设置定时器0工作模式,16位计数模式
TH0=THCO;
TL0=TLCO;
TR0=1;//启动定时器
ET0=1;//使能定时器中断
EA=1;//开总中断
while
(1)
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 指导书