本帖最后由 wangzk 于 2010-6-18 16:38 编辑
我的显示程序 请大仙指教
#include <reg52.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#define data_ora P2
#define uchar unsigned char x
#define uint unsigned int
#define key_jk P1
uchar gewei,shiwei;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P3_5=P3^5;
sbit req =P0^1; //请求信号,H有效
sbit busy=P0^0; //H:已收到数据并在处理中,L:空闲可接收数据
void send (uchar dat);
uchar code tab4[]={ "0000.0 20℃"////////在这里显示20摄氏度!!!!
"0000.0 0000.0"
"0000.0 0000.0"
"t:0000.0 0000.0"
"#:0000 c:0.0000"};
/*------------写命令或数据到LCD--------------*/
void wr_zb (uchar comm,uchar addr_x,uchar addr_y)
{
send(comm);
send(addr_x);
send(addr_y);
}
void send (uchar dat) //写命令或数据
{
while(busy==1)
;
data_ora=dat;
req=1;
while(busy==0)
;
req=0;
}
void disp_eng (uchar code *eng) ///////绘制操作界面
{
uchar i,j;
for (i=4;i<20;i++)
{
wr_zb(0xf9,i,0);
send(eng[i-4]);
}
for(j=1;j<3;j++)
{
for(i=4;i<20;i++)
{
wr_zb(0xf1,i,(j+1)*8);
send(eng[j*16+i-4]);
}
}
for (j=2;j<4;j++)
{
for(i=4;i<20;i++)
{
wr_zb(0xf9,i,j*16);
send(eng[(j+1)*16+i-4]);
}
}
}
void delay1 (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<1000;j++)
;
}
/*------------------主程序--------------------*/
void main ()
{
SP=0x5f;
req=0;
busy=1;
while(1)
{
uchar k;
disp_eng(tab4);
}
}
11# liuwei0908
|