单片机实验(3)

2019-01-19 13:32

LEDBuffer[0]=Cnt; LEDBuffer[1]=Cnt/10; IT0=1; EX0=1; EA=1; while(1) { P2=SEGTAB[LEDBuffer[LEDPointer]]; P0=DIGTAB[LEDPointer]; if (++LEDPointer==sizeof(LEDBuffer))LEDPointer=0; Delay(); if (++msCnt==200) { msCnt=0; if(--Cnt==(-1))Cnt=99; LEDBuffer[0]=Cnt; LEDBuffer[1]=Cnt/10; } } } 实验六

1、实验内容1

如图6-1,利用AT89C51单片机的P3.0(RXD)和P3.1(TXD)外接一个74HC164(串/并转换芯片)驱动1个8位共阴LED数码管,实现0~9的轮流显示,

#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=100;k>0;k--); }

void main (void) {

unsigned char i; SCON=0x00; while(1) { for(i=0;i

2、实验内容2

如图6-2,在U1(AT89C51)和U2(AT89C51)的P1端口分别接一个8位共阴LED数码管,P3.2引脚上分别接有一个轻触开关。U1的P3.0(RXD)连接到U2的P3.1(TXD),U1的P3.1(TXD)连接到U2的P3.0(RXD),通过串行口进行双机通信,实现在U1上按下按键实现计数加1,通过U2的LED数码管显示,同样U2上按下按键实现计数加1,通过U1的LED数码管显示,双机通信的波特率为9600。

#include

unsigned char SEGTAB[] = {

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, };

void main(void) {

unsigned char KeyCnt = 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); } } }

void Serial_ISR(void) interrupt 4 {

unsigned char temp;

if(1 == RI) { RI = 0; temp = SBUF; P1 = SEGTAB[temp]; } }


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

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

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

马上注册会员

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