1::你有仿真器吗,可以用软件protues试试,你的灯接在哪里了?
假设你的灯接在了p0-p3,灯是共什么极性的呢?共阴极0xff,共阳极为0x00;那么可以写为
#include
void main()
{
while(1)
P0=0xff;
}
2::定时器的东西也是简单的,实验的晶振是多少啊,一般是12mhz的,那么是1/1000ms了,好了,程序可以是这样的
void init()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
tt++;
}
主函数自己写,记得初始化init();
3::下面是1602的液晶显示的例子
你自己看看pcf8576是什么东西:
#include
#define uchar unsigned char
#define uint unsigned int
sbit rs = P2^4;
sbit rw = P2^5;
sbit lcden = P2^6;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P37=P3^7;
uchar i,j,k;
uchar code table[]=" 2009-08-04 THU";
uchar code table1[]=" 00:00:00 ";
/*延时函数*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*显示屏命令写入函数*/
void write_com(uchar com)
{
rs=0;
rw=0;
lcden=1;
P0=com;
delay(5);
lcden=0;
}
/*显示屏数据写入函数*/
void write_data(uchar date)
{
rs=1;
rw=0;
lcden=1;
P0=date;
delay(5);
lcden=0;
}
/*显示屏初始化函数*/
void init()
{
write_com(0x38); /*显示模式设置*/ //该语句可有可无
delay(5); //该语句可有可无
write_com(0x38); //该语句可有可无
delay(5); //该语句可有可无
write_com(0x38); //该语句可有可无
delay(5); //该语句可有可无
write_com(0x38);
write_com(0x08); /*显示关闭*/
write_com(0x01); /*显示清屏*/
write_com(0x06); /*显示光标移动设置*/
delay(5);
write_com(0x0C); /*显示开及光标设置*/
write_com(0x80+15);
P37=1;
P20=1;
P21=1;
P22=1;
P0=0x00;
P37=0;
for(i=0;i<15;i++)
{
write_data(table[i]);
delay(5);
}
write_com(0x80+0x50);
for(j=0;j<14;j++)
{
write_data(table1[j]);
delay(5);
}
for(k=0;k<16;k++)
{
write_com(0x18);
delay(100);
}
}
/*主函数*/
void main()
{
init();
while(1);
}