单片机实验Word格式文档下载.docx
- 文档编号:20301528
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:3
- 大小:16.48KB
单片机实验Word格式文档下载.docx
《单片机实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实验Word格式文档下载.docx(3页珍藏版)》请在冰豆网上搜索。
i P1=LEDTAB[i];
Delay();
} }} 实验二 1、如图2-1所示,利用AT89C51单片机的P2端口外接一位共阴LED数码管,实现在 LED数码管上轮流显示0~9。
图2-1数码管显示实验内容1仿真电路图 #include unsignedcharSEGTAB={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
voidDelay(void){unsignedchari,j,k;
}voidmain(void){ unsignedchari;
while
(1) { for(i=0;
i Delay();
}} } 2、如图2-2所示,利用AT89C51单片机的P2和P0端口分别驱动2位共阴LED数码管 的笔段和位选段,利用动态显示原理实现LED数码管上显示00~99的自动计数加1数值。
图2-2数码管显示实验内容2仿真电路图 #includeunsignedcharSEGTAB={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsignedcharDIGTAB={ 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
unsignedcharLEDBuffer[2];
unsignedcharLEDPointer;
voidDelay(void){ unsignedchari,j;
for(i=10;
i--) for(j=100;
j--);
}voidmain(void){unsignedcharCnt=0;
unsignedcharmsCnt=0;
while
(1){ P2=SEGTAB[LEDBuffer[LEDPointer]];
P0=DIGTAB[LEDPointer];
if(++LEDPointer==sizeof(LEDBuffer))LEDPointer=0;
if(++msCnt==200){ msCnt=0;
if(++Cnt==100)Cnt=0;
LEDBuffer[0]=Cnt_;
LEDBuffer[1]=Cnt/10;
}}} 实验三 如图3-1所示,利用AT89C51单片机的P3口外接一个4X4矩阵键盘,矩阵键盘的4根行线分别连接在~引脚上,4根列线分别连接在~引脚上。
AT89C51单片机的P2驱动一个8位共阴LED数码管,实现在矩阵键盘的16个按键识别,并将对应的按键编号显示在LED数码管上。
图3-1 矩阵键盘实验内容1仿真原理图 #include unsignedcharSEGTAB={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,};
unsignedcharKEYTAB={ 0xEE,0xED,0xEB,0xE7,0xDE,0xDD,0xDB,0xD7,0xBE,0xBD,0xBB,0xB7,0x7E,0x7D,0x7B,0x77,};
voidDelay10mS(void){ unsignedchari,j;
} voidmain(void){ unsignedcharKeyValue;
unsignedchari,temp;
while
(1){ P3=0xF0;
if(0xF0!
=(P3&
0xF0)) { Delay10mS();
if(0xF0!
0xF0)) { temp=P3&
0xF0;
P3=0x0F;
temp|=(P3&
0x0F);
for(i=0;
i 实验四 1、如图4-1所示,利用AT89C51单片机的引脚外接一个轻触按钮“BUTTON”,用 中断方式实现按键计数加1,并通过P2和P0端口驱动的两个共阴LED数码管显示00~99的计数值。
其中P2端口驱动显示数字的十位数,P0端口驱动显示数字的个位数。
图4-1 #include unsignedcharSEGTAB={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,};
unsignedcharKeyCnt=0;
voidmain(void){ P2=SEGTAB[KeyCnt/10];
P0=SEGTAB[KeyCnt_];
IT0=1;
EX0=1;
EA=1;
while
(1){ ;
}} voidINT0_ISR(void)interrupt0{ if(0==P3_2) { 实验内容1仿真电路图 if(++KeyCnt==100)KeyCnt=0;
P2=SEGTAB[KeyCnt/10];
P0=SEGTAB[KeyCnt_];
}} 2、如图4-2所示,利用AT89C51单片机的P1端口外接8个LED发光二极管,实现流 水灯,流水灯的速度为~1秒之间可调,步进为,外接在和引脚上的两个轻触开关实现调慢和调快功能,速度的档位通过P2端口外接的一个8位共阴LED数码管显示。
#include unsignedcharLEDTAB={ 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,};
unsignedcharSEGTAB={ 0x3F,0x06,0x5B,0x4F,0x66,0X6D,0x7D,0x07,0x7F,0x6F,};
voidDelay10mS(unsignedchart){ unsignedchari,j;
do { for(i=100;
} while(--t);
} unsignedcharSpeed=20;
voidmain(void){ unsignedchari;
P2=SEGTAB[Speed/20];
IT0=1;
IT1=1;
EX1=1;
while
(1){ for(i=0;
i voidINT0_ISR(void)interrupt0{ if(0==P3_2){ Speed+=20;
if(Speed>
100)Speed=100;
P2=SEGTAB[Speed/20];
}} voidINT1_ISR(void)interrupt2{ if(0==P3_3){ Speed-=20;
if(Speed 实验五 1、如图5-1所示,利用AT89C51单片机的定时器T0产生1KHz的方波信号引脚 输出,通过连接到“OSCILLOSCOPE”虚拟示波器上查看显示的波形图。
#includevoidmain(void){ TMOD|=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%6;
TR0=1;
while
(1) { if(1==TF0){ TF0=0;
TH0=(65536-500)/256;
TL0=(65536-500)%6;
P3_7=~P3_7;
}}} 2、如图5-2所示,利用AT89C51单片机的定时器T0产生1ms的动态数码管显示扫描 时间,驱动接在P2和P0端口上的4位共阴LED数码管,其中P2用于驱动共阴LED数码管的笔段A~H,P0用于驱动共阴LED数码管的位选端;
采用定时器T0的溢出中断实现1ms定时。
数码上显示自己的班号和学号的后2位数字,显示方式为“X-YY”,X为班号,YY为学号。
并且显示的“-”闪烁频率为秒。
#include unsignedcharSEGTAB={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};
unsignedcharDIGTAB={ 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,};
unsignedcharLEDBuffer[2];
} voidINT0_ISR(void)interrupt0{ if(0==P3_2) { P2=SEGTAB[LEDBuffer[LEDPointer]];
} } voidmain(void){unsignedcharCnt=99;
LEDBuffer[0]=Cnt_;
LEDBuffer[1]=Cnt/10;
EX0=1;
EA=1;
while
(1){ P2=SEGTAB[LEDBuffer[LEDPointer]];
if(++LEDPointer==sizeof(LEDBuffer))LEDPointer=0;
if(++msCnt==200) { msCnt=0;
if(--Cnt==(-1))Cnt=99;
LEDBuffer[0]=Cnt_;
LEDBuffer[1]=Cnt/10;
}}}实验六 1、实验内容1 如图6-1,利用AT89C51单片机的和外接一个74HC164驱动1个8位共阴LED数码管,实现0~9的轮流显示, #include unsignedcharSEGTAB={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, };
j--) for(k=100;
} voidmain(void){ unsignedchari;
SCON=0x00;
while
(1) { for(i=0;
i 2、实验内容2 如图6-2,在U1和U2的P1端口分别接一个8位共阴LED数码管,引脚上分别接有一个轻触开关。
U1的连接到U2的,U1的连接到U2的,通过串行口进行双机通信,实现在U1上按下按键实现计数加1,通过U2的LED数码管显示,同样U2上按下按键实现计数加1,通过U1的LED数码管显示,双机通信的波特率为9600。
voidmain(void){ unsignedcharKeyCnt=0;
PCON|=0x80;
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
TR1=1;
ES=1;
EA=1;
while
(1) { if(0==P3_2) { if(++KeyCnt==10)KeyCnt=0;
SBUF=KeyCnt;
while(0==TI);
TI=0;
while(0==P3_2);
} }} voidSerial_ISR(void)interrupt4{ unsignedchartemp;
if(1==RI) { RI=0;
temp=SBUF;
P1=SEGTAB[temp];
}}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验