當前位置:編程學習大全網 - 編程語言 - 51單片機簡單的1062液晶顯示程序求助

51單片機簡單的1062液晶顯示程序求助

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;

sbit wela=P2^7;

sbit lcden=P3^4;

sbit lcdrs=P3^5;

sbit key1=P3^0;

sbit key2=P3^1;

sbit key3=P3^2;

//sbit key4=P3^3;

sbit key=P3^7;

void display();

void delayms(uint z);

void keysscan();

void init();

void write_com(uchar com);

void write_data(uchar date);

uchar num,num1,num2;num3,num4;

uchar sshi,sge,fshi,fge,mshi,mge;

uint temp=0;

void init() //初始化

{

dula=0;

wela=0;

TMOD=0x01;

TH0=(65536-45872)/256;

TH1=(65536-45872)%256;

EA=1;

ET0=1;

TR0=1;

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

}

void write_com(uchar com) //寫指令

{

lcdrs=0;

P0=com;

delayms(5);

lcden=1;

delayms(5);

lcden=0;

}

void write_data(uchar date)//寫數據

{

lcdrs=1;

P0=date;

delayms(5);

lcden=1;

delayms(5);

lcden=0;

}

void delayms(uint z)//延時

{

uint i,j;

for(i=z;i>0;i--)

for(j=110;j>0;j--);

}

void display()//液晶屏顯示

{

write_com(0x80);

write_data(sshi+48);

delayms(1);

write_com(0x80+0x01);

write_data(sge+48);

delayms(1);

write_com(0x80+0x02);

write_data(':');

delayms(1);

write_com(0x80+0x03);

write_data(fshi+48);

delayms(1);

write_com(0x80+0x04);

write_data(fge+48);

delayms(1);

write_com(0x80+0x05);

write_data(':');

delayms(1);

write_com(0x80+0x06);

write_data(mshi+48);

delayms(1);

write_com(0x80+0x07);

write_data(mge+48);

delayms(1);

}

void keysscan()

{

key=0;

if(key1==0)

{

delayms(5);

if(key1==0);

{

while(!key1);

temp++;

TR0=0;

write_com(0x0f);

}

}

switch(temp)

{

case 1:

if(key2==0)

{

delayms(5);

if(key2==0);

{

while(!key2)

num1++;

if(num1==60)num1=0;

}

}

if(key3==0)

{

delayms(5);

if(key3==0)

{

while(!key3)

num1--;

if(num1==-1)num1=0;

}

}

break;

case 2:

{

if(key2==0)

{

delayms(5);

if(key2==0)

{

while(!key2);

num2++;

if(num2==60)num2=0;

}

}

if(key3==0)

{

delayms(5);

if(key3==0)

{

while(!key3);

num2--;

if(num2==-1)num2=0;

}

}

}

break;

case 3:

{ if(key2==0)

{

delayms(5);

if(key2==0)

{

while(!key2);

num3++;

if(num3==60)num3=0;

}

}

if(key3==0)

{

delayms(5);

if(key3==0)

{

while(!key3);

num3--;

if(num3==-1)num3=0;

}

}

}

break;

case 4:

{

temp=0;

TR0=1;

write_com(0x08);

}

}

}

void T0_time()interrupt 1 //時鐘0中斷

{

num++;

TH0=(65536-45872)/256;

TH1=(65536-45872)%256;

if(num==20)

{

num=0;

num1++;

if(num1==60)

{

num1=0;

num2++;

}

mshi=num1/10;

mge=num1%10;

if(num2==60)

{

num2=0;

num3++;

}

fshi=num2/10;

fge=num2%10;

if(num3==24)

{

num3=0;

// num4++;

}

sshi=num3/10;

sge=num3%10;

//if(num4)

display();

}

}

void main()

{

init();

while(1)

{

keysscan();

}

}

  • 上一篇:java開發工具除了eclipse之外,還有那些啊?有那個比較好用啊?
  • 下一篇:2022年聊城莘縣暑假培訓班報名機構白名單
  • copyright 2024編程學習大全網