单片机实验

2019-01-19 13:32

实验一

如图1-1所示,利用AT89C51单片机的P1口外接8个发光二极管,实现流水灯效果。

图1-1 实验一仿真电路图

#include unsigned char LEDTAB[]= {

0xFE,0xFD,0xFB,0xF7,,0xEF,0xDF,0xBF,0x7F };

void Delay(void) {

unsigned char i,j,k; for(i=10;i>0;i--) for(j=100;j>0;j--) for(k=200;k>0;k--); }

void main(void) {

unsigned char i; while(1) {

for(i=0;i

P1=LEDTAB[i]; Delay(); }

} }

实验二

1、 如图2-1所示,利用AT89C51单片机的P2端口外接一位共阴LED数码管,实现在

LED数码管上轮流显示0~9。

图2-1 数码管显示实验内容1仿真电路图

#include unsigned char SEGTAB[]= { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F }; void Delay(void) { unsigned char i,j,k; for(i=10;i>0;i--) for(j=100;j>0;j--) for(k=200;k>0;k--); } void main(void) { unsigned char i; while (1) { for(i=0;i

Delay();} }

}

2、 如图2-2所示,利用AT89C51单片机的P2和P0端口分别驱动2位共阴LED数码管

的笔段和位选段(动态显示接法),利用动态显示原理实现LED数码管上显示00~99的自动计数加1数值。

图2-2数码管显示实验内容2仿真电路图

#include unsigned char SEGTAB[]= { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F }; unsigned char DIGTAB[]= { 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F }; unsigned char LEDBuffer[2]; unsigned char LEDPointer; void Delay(void) { unsigned char i,j; for(i=10;i>0;i--) for(j=100;j>0;j--); } void main(void) { unsigned char Cnt=0; unsigned char msCnt=0;

while(1) {

P2=SEGTAB[LEDBuffer[LEDPointer]]; P0=DIGTAB[LEDPointer];

if (++LEDPointer==sizeof(LEDBuffer))LEDPointer=0; Delay();

if (++msCnt==200) { msCnt=0; if(++Cnt==100)Cnt=0; LEDBuffer[0]=Cnt; LEDBuffer[1]=Cnt/10; } } }

实验三

如图3-1所示,利用AT89C51单片机的P3口外接一个4X4矩阵键盘,矩阵键盘的4根行线分别连接在P3.0~P3.3引脚上,4根列线分别连接在P3.4~P3.7引脚上。AT89C51单片机的P2驱动一个8位共阴LED数码管,实现在矩阵键盘的16个按键识别,并将对应的按键编号显示在LED数码管上。

图3-1

矩阵键盘实验内容1仿真原理图

#include

unsigned char SEGTAB[] = {

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71, };

unsigned char KEYTAB[] = {

0xEE,0xED,0xEB,0xE7, 0xDE,0xDD,0xDB,0xD7, 0xBE,0xBD,0xBB,0xB7, 0x7E,0x7D,0x7B,0x77, };

void Delay10mS(void) {

unsigned char i,j; for(i=10;i>0;i--) for(j=100;j>0;j--); }

void main(void) {

unsigned char KeyValue; unsigned char i,temp; while (1) {

P3=0xF0;

if(0xF0!=(P3&0xF0)) { Delay10mS(); if(0xF0!=(P3&0xF0)) { temp=P3&0xF0; P3=0x0F; temp|=(P3&0x0F); for (i=0;i

实验四

1、 如图4-1所示,利用AT89C51单片机的P3.2引脚外接一个轻触按钮“BUTTON”,用

中断方式实现按键计数加1,并通过由P2和P0端口驱动的两个共阴LED数码管显示00~99的计数值。其中P2端口驱动显示数字的十位数,P0端口驱动显示数字的个位数。


单片机实验.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于我国上市公司股权激励存在的问题与对策的开题报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: