|
樓主注意變量的數(shù)據(jù)類型選擇要恰當(dāng),while(1);多了分號。給你略改了一點(diǎn),顯示1位小數(shù)。
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit RS=P2^6;
- sbit RW=P2^5;
- sbit EN=P2^7;
- uint i;
- uchar t;
- /*
- void delay(uint z)
- {
- uint x,y;
- for(x = z; x > 0; x--)
- for(y = 114; y > 0 ; y--);
- }*/
- //判斷液晶忙不忙,忙則等待 、
- void read_busy()
- {
- uchar busy;
- P0=0xff; //給與高電位
- RS=0; //1 數(shù)據(jù) 0命令
- RW=1; //1 讀 0寫
- do
- {
- EN=1; //使能
- busy=P0;
- EN=0;
- }while(busy &0x80);
- }
- //1602命令
- void write_cmd(uint cmd)
- {
- read_busy();
- RS=0;
- RW=0;
- P0=cmd;
- EN=1;
- EN=0;
- }
- //1602 數(shù)據(jù)
- void write_dat(uint dat)
- {
- read_busy();
- RS=1;
- RW=0;
- P0=dat;
- EN=1;
- EN=0;
- }
- void timer_init()
- {
- TMOD|=0X01;//選擇為定時(shí)器0模式,工作方式1,僅用TR0打開啟動(dòng)。
- TH0=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
- TL0=0X68;
- ET0=1;//打開定時(shí)器0中斷允許
- EA=1;//打開總中斷
- TR0=1;//打開定時(shí)器
- }
- void main()
- {
- timer_init();
- write_cmd(0x38);//設(shè)置16*2顯示
- write_cmd(0x01); //清屏
- write_cmd(0x0c); //開顯示不顯示光標(biāo)
- write_cmd(0x06); //指針地址右加一 0x04左
- // write_cmd(0x01); //清屏
- // write_cmd(0x80|0x06 ); //顯示地址
- while(1)//;
- {
- if(t>999)
- t=0;
- write_cmd(0x80+6);
- write_dat(t/100%10+'0');//顯示十位數(shù)字
- write_dat(t/10%10+'0');//顯示個(gè)位數(shù)字
- write_dat('.'); //顯示小數(shù)點(diǎn)
- write_dat(t%10+'0');//顯示小數(shù)
- }
- }
- void Timer0() interrupt 1
- {
- TH0=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
- TL0=0X68;
- i++;
- if(i==100)
- {
- i=0;
- t++;
- }
- }
復(fù)制代碼
|
|