重庆科技学院单片机实验指导书.docx

上传人:b****5 文档编号:5400734 上传时间:2022-12-15 格式:DOCX 页数:39 大小:1.92MB
下载 相关 举报
重庆科技学院单片机实验指导书.docx_第1页
第1页 / 共39页
重庆科技学院单片机实验指导书.docx_第2页
第2页 / 共39页
重庆科技学院单片机实验指导书.docx_第3页
第3页 / 共39页
重庆科技学院单片机实验指导书.docx_第4页
第4页 / 共39页
重庆科技学院单片机实验指导书.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

重庆科技学院单片机实验指导书.docx

《重庆科技学院单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《重庆科技学院单片机实验指导书.docx(39页珍藏版)》请在冰豆网上搜索。

重庆科技学院单片机实验指导书.docx

重庆科技学院单片机实验指导书

单片机原理及应用

实验指导书

2013年9月

1单片机实验板介绍

1.1板载硬件资源

1采用STC8951RC(与标准51指令、脚位完全兼容),支持在线串行ISP下载。

2供电方式:

USB供电

3串口RS232

44个LED发光管

5四位数码管

64个独立式键盘(包含外部中断按键)

7一个蜂鸣器

8一个PS2接口

91602液晶接口(选配件)

10128*64液晶接口,单板支持带字库(ST7920)和不带字库(KS0108)两种128*64液晶.(选配件)

11DS18B20温度传感器(选配件)

12IrDA红外接收头(选配件)

1.2原理图

1.3PCB图

1.4实验箱配置

基础板配置:

1、STC89C51支持在线下载程序。

.

2、8位LED发光二极管(可做流水灯实验)。

3、4位数码管(可做动态扫描及静态显示实验)。

4、4*4矩阵键盘。

(也可将其中的行或列接地,将独立按键实验)。

5、MAX232芯片RS232通讯接口(可以做为与计算机通迅的接口,同时也可做为STC单片机下载程序的接口,SST单片机仿真接口)

6、USB供电系统,直接插接到电脑USB口即可提供电源,此时不需另接直流电源。

7、蜂鸣器(可做单片机发声实验)。

8、ADC0809芯片(可做模数转换实验)。

9、DAC0832芯片(可做数模转换实验)。

10、DS18B20温度传感器接口

11、单片机32个IO口全部引出,方便自己进行自由扩展。

12、AT24C02EEROM(可做IIC串行总线实验)。

13.DS1302实时时钟(可做IIC串行总线实验)。

14、SM0038一体化红外接收头(可做红外遥控器解码实验)。

15、8155电路,可做扩展I/O口使用。

16、外扩32KRAM62256芯片电路。

17、1602液晶接口。

仿真配置:

可选配SST89E516仿真芯片,代替STC89C51,实现在线仿真功能。

1.5仿真下载使用说明

单片机综合创新实验板的单片机仿真与下载分成由不同的单片机完成。

仿真由单片机SST89E516芯片来完成仿真,具体的仿真电路就是相关串口通讯电路,仿真的实现可见第二章相关内容。

单片机的下载由基础板的单片机STC89C51完成。

两种单片机引脚完全相同,直接代换。

32个IO都由排针引出,方便用户做不同的实验。

1.6电路图

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.然后在“MCUType”列表中选择单片机型号(应选择单片机板中的CPU型号),如下图:

3.点击“OpenFile”按钮,找到所要下载的HEX文件,并选中,选择“打开”,如下图:

 

4.选择串口的对应端口号,(根据自己的硬件连接端口)(如COM1)。

5.然后选“MaxBuad”中的波特率,也可以选默认值。

6.点击”Download/下载”,进行文件下载,如图:

7.稍等几秒,即可下载完成,如图:

实验一熟悉KEIL软件的使用

一、实验目的

1.认识单片机实验系统的构成及使用。

2.学习KEIL软件和STC-ISP下载软件的使用方法。

3.单片机I/O口的使用方法;

二、实验内容

1.P23口做输出口,接发光二极管,编写程序,使其闪烁。

2.P23-P26口接四只发光二极管LED1-LED4,P20口接开关K1,编写程序,用开关控制发光二极管上的亮灭。

三、实验步骤

1.设计实验电路,画出电路原理图

2.按照KEIL软件的使用步骤,建立工程。

3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。

4.用STC-ISP下载软件下载HEX文件到单片机系统。

5.运行、调试程序,观察实验结果。

四、实验参考电路及参考程序

1.参考电路

2.参考程序

实验1:

#include"reg52.h"

sbitP23=P2^3;//定义LED指示灯的IO口

voidmain()

{

inti;//计时变量

while

(1)

{

for(i=0;i<30000;i++);//延时

P23=!

P23;//指示灯IO口反转

}

}

 

实验2:

#include"reg52.h"

sbitP23=P2^3;//定义LED指示灯的IO口

sbitP20=P2^0;//定义key的IO口

voidmain()

{

inti;//计时变量

while

(1)

{

for(i=0;i<30000;i++);//延时

if(P20==0)P23=0;//按键,LED亮

elseP23=1;//LED亮

}

}

五.思考题

1.P23-P26口做输出口,接发光二极管,编写并调试程序,使其闪烁。

2.P23-P26口做输出口,接发光二极管,编写并调试跑马灯程序。

实验2KeilC51程序设计上机练习

一、实验目的

1.学习KEIL软件的程序调试方法。

2.学会KEILC程序设计及调试,重点学会预处理命令、数据类型的定义。

二、实验内容

1.单片机P2口的P20和P21各接一个开关K1、K2,P23、P24、P25和P26各接一只发光二极管。

由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;

voidmain()

{

while

(1)

{

if(k1==0&k2==0)

{

P2=0xf7;

}

if(k1==1&k2==0)

{

P2=0xef;

}

if(k1==0&k2==1)

{

P2=0xdf;

}

if(k1==1&k2==1)

{

P2=0xbf;

}

}

}

2.实验2

#include

sbitkey=P3^2;

unsignedchara;

unsignedcharcount=0;

voiddelay(inti)

{

while(i)

i--;

}

voidmain()

{

while

(1)

{

if(key==0)

{

delay(10);

if(key==0)

{

count++;

while(!

key);

if(count==16)

count=0;

a=count;

a=~a;

a=a<<3;

P2=a;

}

}

}

}

五、思考题

1.设计一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。

2.用1个按键控制LED的显示,要求显示3种以上的不同模式。

如,按第一次键,左边2灯和右边2灯轮流显示;按第二次键,1、3灯和2、4灯轮流显示;按第三次键,4灯同时亮灭。

 

实验3单片机中断实验

一、实验目的

1.掌握单片机的中断系统,学会单片机中断系统的初始化。

2.学会单片机外部中断的应用。

二、实验内容

1.采用外部中断的方式实现按键控制1个LED的亮灭。

2.采用外部中断的方式实现4个LED的轮流亮灭。

三、实验步骤

1.设计实验电路,画出电路原理图

2.按照KEIL软件的使用步骤,建立工程。

3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。

4.用STC-ISP下载软件下载HEX文件到单片机系统。

5.运行、调试程序,观察实验结果。

四、实验参考电路和参考程序

1.实验1

#include"reg52.h"

sbitP23=P2^3;

voidmain()

{

IT0=1;//外部中断0连沿触发方式

EX0=1;//使能外部中断0

EA=1;//开部中断

P23=0;//指示灯初始为亮

while

(1);

}

voidint0()interrupt0//外部中断0程序入口

{

P23=!

P23;

}

2.实验2

#include"reg52.h"

sbitP32=P3^2;

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:

P2=0xf7;break;

case1:

P2=0xef;break;

case2:

P2=0xdf;break;

case3:

P2=0xbf;break;

}

}

五、思考题

1.采用外部中断的方式实现一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。

2.采用外部中断的方式实现用1个按键控制LED的显示,要求显示3种以上的不同模式。

实验4中断及定时器∕计数器实验

一、实验目的

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=P2^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=P2^3;

sbitled1=P2^4;

sbitled2=P2^5;

sbitled3=P2^6;

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;

P2=P2|0x78;

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次又开始计数…。

 

实验5数码管显示器实验

一、实验目的

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.参考电路

A/D转换实验

2.参考程序

#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};//四个数码管显示数值,数组变量定义

sbitP10=P1^0;//四个数码管的位码口定义

sbitP11=P1^1;

sbitP12=P1^2;

sbitP13=P1^3;

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;

P1|=0x0f;//先关位码

P0=Duan[Data_Buffer[Bit]];//开段码

switch(Bit)//送位码

{

case0:

P10=0;break;

case1:

P11=0;break;

case2:

P12=0;break;

case3:

P13=0;break;

}

}

五、思考题

用按键进行显示模式选择键,实现上述实验中3个显示画面的切换。

 

实验6ADC0809实验

1.实验目的

掌握A/D转换芯片ADC0809与单片机的接口方法及ADC0809芯片性能;了解单片机实现数据采集的方法。

2.实验设备及器件

PC机一台

单片机综合创新实验箱一台

8孔排线一根

杜邦线3根

3.实验内容

编写一段程序,通过ADC0809实现单片机对模拟输入通道电压的采集,使采集到的数据显示在数码管上。

4.实验步骤

①用1根杜邦线将J200的左针与D3区J44的CH0相接,或者不连,因为印刷板上已连通。

连接一下只是增加学生的感性认识;

②将D4区的J2用杜邦线与B7区J100相连(注意:

B7区此时必须将拨码开关向下拨,B8区J58短路帽断开,拨码开关向下拨,否则显示有问题);

③用两根杜邦线将D4区的J4中的P34、P35与B7区J102的BIT0、BIT1相连;

④运行编写好的软件程序,调节电位器,仿真观察显示的是否变化。

 

/**************************************************/

//四个数码管的位码口定义

//位码接线:

拔码开关SW3全部打到ON位置,并短接J73与J75

sbitP10=P1^0;

sbitP11=P1^1;

sbitP12=P1^2;

sbitP13=P1^3;

//四个数码管的段码口定义:

P20~P27,

//段码接线:

拔码开关SW10全部置下面(OFF位置),用8位杜邦线连接P2与J100;

/**************************************************/

sbitADWR=P3^6;//拔码开关SW5-P36打到ON位置

sbitRS=P3^7;//拔码开关SW5-P37打到ON位置

sbitCS=P3^4;//拔码开关SW5-P27打到下面位置,重新连接P34到CS

sbitLED=P1^7;//程序运行指示灯,用1位杜邦线连接P17与J6

//以下为ADC输入通道选择,如果固定选CH0,可以直接将J27与J319短接

sbitAdd1=P1^4;//

sbitAdd2=P1^5;

sbitAdd3=P1^6;

5.参考程序

C51例程:

#include"reg52.h"

#defineTHCO0xee

#defineTLCO0x0

unsignedcharcodeDuan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};

//共阴极数码管-9段码表

unsignedcharData_Buffer[4]={10,0,0,0};

floatAdValue;

/**************************************************/

//四个数码管的位码口定义

//拔码开关SW3全部打到ON位置,并短接J73与J75

sbitP10=P1^0;

sbitP11=P1^1;

sbitP12=P1^2;

sbitP13=P1^3;

//四个数码管的段码口定义:

P20~P27,

//段码接线:

拔码开关SW10全部置下面(OFF位置),用8位杜邦线连接P2与J100;

/**************************************************/

sbitADWR=P3^6;//拔码开关SW5-P36打到ON位置

sbitRS=P3^7;//拔码开关SW5-P37打到ON位置

sbitCS=P3^4;//拔码开关SW5-P27打到下面位置,重新连接P34到CS

sbitAdd1=P1^4;

sbitAdd2=P1^5;

sbitAdd3=P1^6;

sbitLED=P1^7;//程序运行指示灯,用1位杜邦线连接P17与J6

/**************************************************/

voidSysinit();

voidAD_Start(void);

voidLED_Fresh();

voiddelay_ms(unsignedintx);

voidmain()

{

unsignedinti;

Sysinit();

Add1=0;

Add2=0;//模拟量通道输入选择

Add3=0;

while

(1)

{

AD_Start();

LED=!

LED;//程序运行指示

RS=0;

AdValue=P0;

LED_Fresh();

RS=1;

for(i=0;i<10000;i++);

}

}

voidTimer0_ISR()interrupt1

{

staticunsignedcharBit=0;

TH

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1