单片机+程序

  • 格式:doc
  • 大小:68.50 KB
  • 文档页数:12

#include

#include"zifuku.h"

#define uint unsigned int

#define uchar unsigned char

#define disp_off 0x3e

#define disp_on 0x3f

#define disp_x 0xb8

#define disp_z 0xc0

#define disp_y 0x40

#define comm 0

#define dat 1

#define data_ora P1 //MCU 2<------> LCM

#define data P1 /////////////数据传输口////

sbit di=P2^0; ///////////////////////////

sbit rw=P2^1; ////////////////////读写///

sbit e=P2^2; //////使能,高电平有效/////

sbit cs1=P2^3; /////////////////////////

sbit cs2=P2^4; ///片选端///////////////

sbit cs3=P2^5; ///////////////////////

sbit rst=P2^6; ////////////复位//////

/*---------------延时子程序----------------*/

void delay (uint us)

{

while(us--);

}

void delay1 (uint ms)

{

uint i,j;

for(i=0;i

for(j=0;j<1000;j++)

;

}

/*------------写数据或命令到LCD--------------*/

void wr_lcd (uchar dat_comm,uchar content)

{

di=dat_comm;

rw=0;

data_ora=content;

e=1;

;

e=0;

}

/*--------------写点阵------------------*/ void lat_disp (uchar data1,uchar data2)

{

uchar i,j;

cs1=1;cs2=1;cs3=1;

wr_lcd (comm,disp_on);

for(j=0;j<8;j++)

{

wr_lcd (comm,disp_x+j);

wr_lcd (comm,disp_z);

wr_lcd (comm,disp_y);

for(i=0;i<64;i++)

{

wr_lcd (dat,data1);

wr_lcd (dat,data2);

}

}

}

void vshowcustomrow(uchar ucpage,uchar ucline,uchar width,uchar *uca)

{

uchar count;

if(ucline<64)

{

cs1=1;

cs2=0;

cs3=0;

wr_lcd(comm,0xb8+ucpage);

wr_lcd(comm,0x40+ucline);

for(count=0;count

}

else

{

cs1=0;

cs2=1;

cs3=0;

wr_lcd(comm,0xb8+ucpage);

wr_lcd(comm,0x40+ucline-64);

for(count=0;count

}

if(ucline>127)

{

cs1=0;

cs2=0;

cs3=1;

wr_lcd(comm,0xb8+ucpage); wr_lcd(comm,0x40+ucline-128);

for(count=0;count

}

}

void vshowonechin(uchar ucpage,uchar ucline,uchar *uca)

{

vshowcustomrow(ucpage,ucline ,16,uca);

vshowcustomrow(ucpage+1,ucline,16,uca+16);

}

void vshowonechar(uchar ucpage,uchar ucline,uchar *uca)

{

vshowcustomrow(ucpage,ucline,8,uca);

vshowcustomrow(ucpage+1,ucline,8,uca+8);

}

/*------------------初始化-----------------*/

void init_lcd (void)

{

rst=0;

delay(50);

rst=1;

cs1=1;cs2=1;cs3=1;

wr_lcd (comm,disp_off);

wr_lcd (comm,disp_on);

}

/*---------------显示1-----------------*/

void disp1 (void)

{

lat_disp(0x00,0x00);

vshowonechin(0,0,uca_fan);

vshowonechin(0,16,uca_bei);

vshowonechin(0,32,uca_ke);

vshowonechin(0,48,uca_ji);

vshowonechin(0,64,uca_you);

vshowonechin(0,80,uca_xian);

vshowonechin(0,96,uca_gong);

vshowonechin(0,112,uca_si);

vshowonechin(0,128,uca_chen);

vshowonechin(0,144,uca_li);

vshowonechin(0,160,uca_li);

vshowonechin(0,176,uca_zuo);

vshowonechin(2,0,uca_da);

vshowonechin(2,16,uca_bei);

vshowonechin(2,32,uca_pai); vshowonechin(2,48,uca_ye);

vshowonechin(2,64,uca_jing);

vshowonechin(2,80,uca_xian1);

vshowonechin(2,96,uca_shi);

vshowonechin(2,112,uca_ping);

vshowonechin(4,16,uca_huan);

vshowonechin(4,32,uca_ying);

vshowonechin(4,48,uca_ni);

vshowonechin(4,64,uca_de);

vshowonechin(4,80,uca_jia);

vshowonechin(4,96,uca_meng);

vshowonechar(6,0,uca_T);

vshowonechar(6,8,uca_E);

vshowonechar(6,16,uca_L);

vshowonechar(6,24,uca_maohao);

vshowonechar(6,32,uca_yi);

vshowonechar(6,40,uca_san);

vshowonechar(6,48,uca_ba);

vshowonechar(6,56,uca_er);

vshowonechar(6,64,uca_zero);

vshowonechar(6,72,uca_er);

vshowonechar(6,80,uca_ba);

vshowonechar(6,88,uca_s);

vshowonechar(6,96,uca_qi);

vshowonechar(6,104,uca_san);

vshowonechar(6,112,uca_liu);

}

/*------------------主程序--------------------*/

void main ()

{

init_lcd ();

while (1)

{

disp1();

delay1(4000);

}

}

#include

unsigned char code uca_fan[]=

{

/*-- 文字: 樊 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x80,0x48,0x28,0xFF,0x28,0x02,0xAC,0x44,0xAA,0x00,0x48,0x28,0xFF,0x28,0x48,0x00,