本帖最后由 codenew 于 2014-9-16 20:46 編輯
先附上程序:
#include<reg51.h>
#include<intrins.h>
typedef unsigned char uchar;
typedef unsigned char uint;
unsigned char code table[]= {"Temp wireless "};
unsigned char code table1[]={"Temp: "};
unsigned char code shuzi[]={"123456789ABCDEFG"};
unsigned char num;
sbit BEEP=P3^6; //蜂鳴器定義引腳IO口
void delays(uint x) //毫秒級延時函數
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/*******************************************************************************
以下是對液晶模塊的操作程序
*******************************************************************************/
/***********1602液晶顯示部分子程序****************/
sbit rs=P3^3;//LCD數據/命令選擇端(H/L)
sbit rw=P3^4;//LCD讀/寫選擇端(H/L)
sbit en=P3^5;//LCD使能控制
void ready()
{
P0=0xff;
rs=0; //RS(H/L),低電平選擇命令
rw=1; //RW(H/L),讀操作
en=1;
while(P0&0x80); //當為0時表示不忙,退出循環。
en=0;
}
void write_com(uchar com)
{
ready();
rs=0;//命令
rw=0;
P0=com;
en=1;//ready()執行完后,en為0。形成高脈沖,表示可對液晶讀寫。
en=0;
}
void write_date(uchar date)
{
ready();
rs=1;//數據
rw=0;
P0=date;
en=1;//ready()執行完后,en為0。形成高脈沖,表示可對液晶讀寫。
en=0;
}
void init1602() //上電后液晶顯示初始化函數
{
write_com(0x38); //設置工作方式
write_com(0x0c); //設置光標
write_com(0x06); //設置輸入方式
write_com(0x01); //清屏
write_com(0x80);
for(num=0;num<16;num++)
{
write_date(table[num]);
}
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_date(table1[num]);
}
}
/**************************************************
函數功能:主函數
***************************************************/
void main(void)
{
BEEP=1; //禁止蜂鳴器
en=0;
P0=0xff;
write_com(0x38); //設置工作方式
write_com(0x0c); //設置光標
write_com(0x06); //設置輸入方式
write_com(0x01); //清屏
write_com(0x80);
for(num=0;num<16;num++)
{
write_date(shuzi[num]);
}
while(1);
}
|