单片机C语言红绿灯程序,要求:数码管显示时间倒计时、16*16LED点阵显示模块显示红绿黄灯、

void Affirm()
{ int i=0; display(0,1);
}
int j=0;
void Ext1_Int() interrupt 2
if(Key0_times==1)
{
second0_static=second0_static-1;
j=second0_static/10;
display(j,second0_static-10*j);
}
else if(Key0_times==2)
{
second1_static=second1_static-1;
j=second1_static/10;
display(j,second1_static-10*j);
}
else if(Key0_times==3)
{
second2_static=second2_static-1;
j=second2_static/10;
display(j,second2_static-10*j);
}
else if(Key0_times==4)
{
second0_static=30;second1_static=30;second2_static=30;
Key0_times=0;
display(3,0);
}
}
void DisSetTime(int time)
{
display(3,0);
if(time==0)
{
display(3,0);
}
else if(time==1)
{
display(3,0); else if(time==2)
{
display(3,0); //显示 Turn Time:
}
}
idata int direction=0;

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define BLKN 2 //列锁存器数
sbit G = P1^7; //P1.7为显示允许控制信号端口
sbit RCLK = P2^0; //P2.0为输出锁存器时钟信号端
sbit SCLR = P2^1; //P2.1为移位寄存器清○端
void delay(uint); //延时函数
uchar data display[32]; //显示缓存
uchar code BMP[][32]={{16,0,16,0,37,248,36,64,120,64,8,64,16,64,32,64,124,64,0,64,0,64,12,64,112,64,3,252,0,0,0,0},
{16,0,19,240,32,16,41,240,120,16,19,252,32,64,122,72,1,80,0,224,25,80,102,76,0,64,1,192,0,0,0,0},
{4,64,4,64,63,248,4,64,127,252,1,0,31,240,17,16,31,240,17,16,31,240,8,32,16,16,32,8,0,0,0,0}}; //字模表'红‘’绿‘‘黄’
void main()
{
register uchar i,j;
SCON=0x00; //串口工作模式0:移位寄存器方式
TMOD=0x01; //定时器T0工作方式1:16位方式
P1=0x3f; //P1端口初值:允许接收、锁存、显示
TR0=1; //启动定时器T0
ET0=1; //允许定时器T0中断
EA=1; //开启总中断;
while(1)
{
delay(2000);
for(j=0;j<3;j++)
{
for(i=0;i<32;i++)
{
display[i]=~BMP[j][i];
if (i%2) delay(100);
}
delay(10000);
}
}
}
void delay(uint x)
{
register uchar i,j;
for (i=x;i>0;i--)
for (j=120;j>0;j--);
}
void leddisplay(void) interrupt 1 using 1
{
register uchar i, j=BLKN;
TH0 =(65536-100)/256; //设定显示屏刷新率每秒60帧
TL0 =(65536-100)%256;
i = P1; //读取当前显示的行号
i = ++i & 0x0f; //行号加1,屏蔽高4位
while(j)
{
j--;
SBUF = display[i*BLKN + j]; //送显示数据
while (!TI);
TI = 0;
} //完成一行数据的发送
G = 1; //消隐(关闭显示)
P1 &= 0xf0; //行号端口清○
RCLK = 1; //显示数据打入输出锁存器
P1 |= i; //写入行号
RCLK = 0; //锁存显示数据
G = 0; //打开显示
}追问

还缺个数码管动态或静态显示 求硬件原理图和流程图,有的话再追加50

追答

有原理图和仿真电路图,没有画流程图

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-25
分别用红绿黄3个字代表红绿黄3灯亮
----
你先得有能够显示汉字的电路,再编写出来显示汉字的程序。
然后再讨论这个问题:单片机C语言红绿灯程序。追问

可以不用汉字啊,用3种不同的符号代替也行啊,16*16LED点阵显示模块表示啊,RCLK CLK DLN A B C D 分别什么功能啊

本回答被网友采纳
第2个回答  2012-09-25
16*16显示红绿黄灯?追问

分别用红绿黄3个字代表红绿黄3灯亮

相似回答