黄绿各4个)。
三 单元模块设计
到了8255的片子作为核心控制部分。
1 各单元模块功能简介及电路设计
了8255和8155的片子作为核心控制部分。
本设计中采用硬件定时器完成交通灯转换间的延时控制。
功能,在本设计中数码管显示从30到0的倒计时。设计电路时用到
交通灯转换间的延时可用两种方法实现。一种是软件延时,另
件计时要给定一定的数进行循环并由计时软件完成时间的换算,故在
一种是硬件定时器实现。其中硬件实现计时十分准确,这个不同于软
3 系统硬件电路的设计
2 电路参数的计算及元器件的选择
(2)数码管显示倒计时:主要完成红灯转换到绿灯间的倒计时
(1)延时:主要完成交通灯转换间的时间控制,设计电路时用
(3)交通灯:用12个二极管的亮灭表示交通灯的变换闪烁(红
四 系统软件系统的设计
#include
#define K8255 XBYTE[0xFF2B] #define C8255 XBYTE[0xFF2A] #define B8255 XBYTE[0xFF29] #define A8155 XBYTE[0XFF21] #define B8155 XBYTE[0XFF22] #define C8155 XBYTE[0XFF23] #define K8155 XBYTE[0XFF20] unsigned int i,j,k,l; unsigned int m,cnt=0; unsigned char code
tal[]={0x40,0x10,0x00,0x78,0x02,0x12,0x19,0x30,0x24,0x79};
unsigned char code tal1[]={0x30,0x24,0x79,0x40}; void delay(unsigned int n); void main() {
SP=0x50; K8255=0x80; TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1;ET0=1; while(1) {
C8255=0x61; B8255=0x08; cnt=0; j=0;k=0;TR0=1; while(1) {
A8155=0X01;
B8155=tal[j]; l=150;while(l--); A8155=0x02;
B8155=tal1[k]; l=150;while(l--); A8155=0X10;
B8155=tal[j]; l=150;while(l--); A8155=0x20;
B8155=tal1[k]; l=50;while(l--); if(cnt==10) {
cnt=0;j++; if(j==1) k++;
if(j>9) j=0;
if(k==4) //{k=0;j=0;} break; } } TR0=0; for(k=0;k<5;k++) {
C8255=0x51; B8255=0x04; delay(100); C8255=0x41; B8255=0x00; delay(100); }
delay(100); C8255=0x0C; B8255=0x03; j=0;k=0;TR0=1; while(1) {