单片机+程序
- 格式: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,