单片机实验指导.docx
- 文档编号:29692557
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:19
- 大小:204.52KB
单片机实验指导.docx
《单片机实验指导.docx》由会员分享,可在线阅读,更多相关《单片机实验指导.docx(19页珍藏版)》请在冰豆网上搜索。
单片机实验指导
电气工程及其自动化2017级单片机实验指导
实验一:
keilc51与proteus应用实验
一、实验目的与要求:
1、认识KeiluVision软件;
2、掌握用KeiluVision软件建立工程;
3、掌握用KeiluVision软件进行仿真调试;
4、认识Proteus软件;
5、掌握用Proteus软件建立文件;
6、掌握如何使用Proteus软件元件库;
二、实验场地、设备、仪器、工具:
安装有proteus和keil软件的微机。
三、实验步骤:
1、在proteus软件中画原理图;
2、keil软件下编写源程序并编译形成可执行文件.hex;
3、载源程序;
4、仿真。
四、实验内容:
本实验主要介绍用于单片机开发的常见编程语言和开发环境,重点介绍KeiluVision集成开发环境和proteus仿真软件的使用。
具体步骤见课本第四章。
电路图如下:
C程序如下:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
voidDelayMS(uintx)
{
uchari;
while(x--)
{
for(i=120;i>0;i--);
}
}
voidmain()
{
P0=0x01;
while
(1)
{if(P0==0X00)
{P0=0x01;
DelayMS(150);
}
P0=_crol_(P0,1);
DelayMS(150);
}
}
实验二:
数码管显示与按键实验
一、实验目的与要求:
1、用KeiluVision软件建立工程;
2、用KeiluVision软件进行仿真调试;
3、用Proteus软件建立文件;
4、使用keilc51和proteus仿真出实验要求的结果;
二、实验场地、设备、仪器、工具:
安装有proteus和keil软件的微机。
三、实验步骤:
1、在proteus软件中画原理图;
2、keil软件下编写源程序并编译形成可执行文件.hex;
3、载源程序;
4、仿真。
四、实验内容:
使用矩阵键盘控制单个数码管输出显示;
C程序如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitBEEP=P3^7;
ucharcodeDSY_CODE[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
ucharPre_KeyNO=16,KeyNO=16;
voiddelay(uintms)
{
uchart;
while(ms--)
{
for(t=0;t<120;t++);
}
}
voidKeys_Scan()
{
ucharTmp;
P1=0x0f;
delay
(1);
Tmp=P1^0x0f;
switch(Tmp)
{
case1:
KeyNO=0;break;
case2:
KeyNO=1;break;
case4:
KeyNO=2;break;
case8:
KeyNO=3;break;
default:
KeyNO=16;
}
P1=0xf0;
delay
(1);
Tmp=P1>>4^0x0f;
switch(Tmp)
{
case1:
KeyNO+=0;break;
case2:
KeyNO+=4;break;
case4:
KeyNO+=8;break;
case8:
KeyNO+=12;
}
}
voidBeep()
{
uchari;
for(i=0;i<100;i++)
{
delay
(1);
BEEP=~BEEP;
}
BEEP=1;
}
voidmain()
{
P0=0x00;
while
(1)
{
P1=0xf0;
if(P1!
=0xf0)
Keys_Scan();
if(Pre_KeyNO!
=KeyNO)
{
P0=DSY_CODE[KeyNO];
Beep();
Pre_KeyNO=KeyNO;
}
delay(100);
}
}
实验三:
中断程序编写实验
一、实验目的与要求:
1、用KeiluVision软件建立工程;
2、用KeiluVision软件进行仿真调试;
3、用Proteus软件建立仿真电路;
4、使用keilc51和proteus仿真出实验要求的结果;
二、实验场地、设备、仪器、工具:
安装有proteus和keil软件的微机。
三、实验步骤:
1、在proteus软件中画原理图;
2、keil软件下编写源程序并编译形成可执行文件.hex;
3、载源程序;
4、仿真。
四、实验内容:
使用外部中断控制按键,并且计数按键次数进行显示;
C程序如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
ucharDisplay_Buffer[3]={0,0,0};
uintCount=0;
sbitClear_Key=P3^6;
voidShow_Count_ON_DSY()
{
Display_Buffer[2]=Count/100;
Display_Buffer[1]=Count%100/10;
Display_Buffer[0]=Count%10;
if(Display_Buffer[2]==0)
{
Display_Buffer[2]=0x0a;
if(Display_Buffer[1]==0)
{
Display_Buffer[1]=0x0a;
}
}
P0=DSY_CODE[Display_Buffer[0]];
P1=DSY_CODE[Display_Buffer[1]];
P2=DSY_CODE[Display_Buffer[2]];
}
voidmain()
{
P0=0xff;
P1=0xff;
P2=0xff;
IE=0x81;
IT0=1;
while
(1)
{
if(Clear_Key==0)
Count=0;
Show_Count_ON_DSY();
}
}
voidEX_INTO()interrupt0
{
Count++;
}
实验四:
定时器应用实验
一、实验目的与要求:
1、用KeiluVision软件建立工程;
2、用KeiluVision软件进行仿真调试;
3、用Proteus软件建立仿真电路;
4、使用keilc51和proteus仿真出实验要求的结果;
二、实验场地、设备、仪器、工具:
安装有proteus和keil软件的微机。
三、实验步骤:
1、在proteus软件中画原理图;
2、keil软件下编写源程序并编译形成可执行文件.hex;
3、载源程序;
4、仿真。
四、实验内容:
使用定时器完成一个0.1秒秒表计时,低位0.1数字加1,计数在00-99之间变化;电路图如下:
C程序如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitK1=P3^7;
uchari,Second_Counts,Key_Flag_Idx;
bitKey_State;
ucharDSY_CODE[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
voidDelayMS(uintms)
{
uchart;
while(ms--)
{
for(t=0;t<120;t++);
}
}
voidKey_Event_Handle()
{
if(Key_State==0)
{
Key_Flag_Idx=(Key_Flag_Idx+1)%3;
switch(Key_Flag_Idx)
{
case1:
EA=1;ET0=1;TR0=1;break;
case2:
EA=0;ET0=0;TR0=0;break;
case0:
P0=0x3f;P2=0x3f;i=0;Second_Counts=0;
}
}
}
voidmain()
{
P0=0x3f;
P2=0x3f;
i=0;
Second_Counts=0;
Key_State=1;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
while
(1)
{
if(Key_State!
=K1)
{
DelayMS(10);
Key_State=K1;
Key_Event_Handle();
}
}
}
voidDSY_Refresh()interrupt1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
if(++i==2)
{
i=0;
++Second_Counts;
P0=DSY_CODE[Second_Counts/10];
P2=DSY_CODE[Second_Counts%10];
if(Second_Counts==100)Second_Counts=0;
}
}
实验五:
串行口通信实验
一、实验目的与要求:
1、用KeiluVision软件建立工程;
2、用KeiluVision软件进行仿真调试;
3、用Proteus软件建立仿真电路;
4、使用keilc51和proteus仿真出实验要求的结果;
二、实验场地、设备、仪器、工具:
安装有proteus和keil软件的微机。
三、实验步骤:
1、在proteus软件中画原理图;
2、keil软件下编写源程序并编译形成可执行文件.hex;
3、载源程序;
4、仿真。
四、实验内容:
在甲机乙机之间传输数据,使甲机能控制乙机显示,乙机也能控制甲机显示;电路如图:
C程序如下:
甲机:
/***************writer:
shopping.w******************/
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitLED1=P1^0;
sbitLED2=P1^3;
sbitK1=P1^7;
ucharOperation_NO=0;
ucharcodeDSY_CODE[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
voidDelay(uintx)
{
uchari;
while(x--)
{
for(i=0;i<120;i++);
}
}
voidputc_to_SerialPort(ucharc)
{ES=0;
SBUF=c;
while(TI==0);
TI=0;
ES=1;
}
voidmain()
{
LED1=LED2=1;
P0=0x00;
SCON=0x50;//串口工作方式1,地址甄别不使能,接收使能
TMOD=0x20;//T1工作方式2
PCON=0x00;//波特率不倍增
TH1=0xfd;//设置波特率
TL1=0xfd;//9600b/s
TR1=1;
IE=0x90;//设置中断允许EA为1,ES为1
while
(1)
{
Delay(100);
if(K1==0)
{
while(K1==0);
Operation_NO=(Operation_NO+1)%4;
switch(Operation_NO)
{
case0:
putc_to_SerialPort('X');
LED1=LED2=1;break;
case1:
putc_to_SerialPort('A');
LED1=0;LED2=1;break;
case2:
putc_to_SerialPort('B');
LED2=0;LED1=1;break;
case3:
putc_to_SerialPort('C');
LED1=0;LED2=0;break;
}
}
}
}
voidSerial_INT()interrupt4
{
if(RI)
{
RI=0;
if(SBUF>=0&&SBUF<=9)
P0=DSY_CODE[SBUF];
else
P0=0x00;
}
}
乙机:
/***************writer:
shopping.w******************/
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitLED1=P1^0;
sbitLED2=P1^3;
sbitK1=P1^7;
ucharNumX=0xff;
voidDelay(uintx)
{
uchari;
while(x--)
{
for(i=0;i<120;i++);
}
}
voidmain()
{
LED1=LED2=1;
SCON=0x50;
TMOD=0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
TI=0;
RI=0;
TR1=1;
IE=0x90;
while
(1)
{
Delay(100);
if(K1==0);
{
while(K1==0);
NumX=(NumX+1)%11;
SBUF=NumX;
while(TI==0);
TI=0;
}
}
}
voidSerial_INT()interrupt4
{
if(RI)
{
RI=0;
switch(SBUF)
{
case'X':
LED1=1;LED2=1;break;
case'A':
LED1=0;LED2=1;break;
case'B':
LED2=0;LED1=1;break;
case'C':
LED1=0;LED2=0;
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 指导