写一个微机原理基于8255的交通灯实验代码
时间: 2023-06-20 22:10:17 浏览: 238
下面是一个微机原理基于8255的交通灯实验代码,需要使用8051单片机和8255并行口芯片:
```
#include <reg51.h>
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
sbit red=P0^0;
sbit yellow=P0^1;
sbit green=P0^2;
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
for(j=0;j<125;j++);
}
void write_com(unsigned char com)
{
RS=0;
RW=0;
P1=com;
EN=1;
delay(10);
EN=0;
}
void write_data(unsigned char date)
{
RS=1;
RW=0;
P1=date;
EN=1;
delay(10);
EN=0;
}
void init()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main()
{
unsigned char temp;
init();
while(1)
{
red=1;
yellow=0;
green=0;
write_data("RED");
delay(5000);
yellow=1;
red=0;
write_data("YELLOW");
delay(2000);
green=1;
yellow=0;
write_data("GREEN");
delay(5000);
temp=P1;
P1=temp<<1;
}
}
```
这段代码通过 P0 端口控制红、黄、绿三个灯的亮灭,通过 P1 端口实现 8255 的 I/O 管理。程序在循环中不停地交替控制三个灯的亮灭,并将状态信息显示在 LCD1602 液晶屏上。同时,每次循环结束时将 P1 端口的状态左移一位,实现轮流控制。
阅读全文