-
- /*$$$$$$$$$$$$$$$$$
- Module : CH12864B/D
- InterfaCS : 6800 8 BIT Bus
- soft : KeilC51 Ver7.0
- Control IC : ST7920
- ------------------------------------------------------------------
- Note:
- 1.Parallel bus drive programme.
- 2.Default Crystal 12.000Mhz.
- 3.This is a new program.
- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
- #include <reg52.h>
- #include <intrins.h>
- #include "int/tupian.c"
- #define uchar unsigned char
- #define uint unsigned int
- sbit RS =P2^3;
- sbit RW =P2^4;
- sbit E =P2^5;
- sbit REST =P0^1;
- sbit LED = P0^6;
- #define lcd_data P1
- //================================================================
- void DELAY_CLS(void);
- void delay_ms(uint ms_value);
- void delay_us(uchar us_value);
- void wr_data(uchar wdata);
- void wr_cmd(uchar cmd);
- void LCD_CLS(void);
- void wr_cmd_data( uchar cmd,uchar dat1,uchar dat2);
- void gotoxy(uint row, uint col);
- void SendStr(uchar code *ptString);
- void SendStr1(uchar code *ptString);
- void init_lcd(void);
- void disp_Graphic();
- void disp_fangkuang(void );
- void testshow(uchar fst, uchar snd);
- void CallBuiltinChar(void);
- //----------------------------------------------------------------
- void delay_us(uchar us_value) //delay about 1 us
- {
- while(us_value--)
- {
- _nop_();
- _nop_();
- }
- }
- //----------------------------------------------------------------
- void delay_ms(uint ms_value) //delay about 1 ms
- {
- uint k;
- for(k=0;k<ms_value;k++)
- {
- delay_us(200);
- }
- }
- //----------------------------------------------------------------
- void wr_cmd(uchar cmd)
- {
-
- lcd_data = 0xff; // Set the port as Output
- RS = 0;
- RW = 0;
- E = 1;
- lcd_data = cmd;
- delay_us(10); //此处必需延时
- E = 0;
- RW = 1;
- delay_us(10); //此处必需延时
- // lcd_data = 0xFF;
- }
- //----------------------------------------------------------------
- void wr_data(uchar wdata)
- {
- lcd_data = 0xFF; // Set the port as Output
-
- RS = 1;
- RW = 0;
- E = 1;
- lcd_data = wdata;
- delay_us(10); //此处必需延时
- E = 0;
- RW = 1;
- delay_us(10); //此处必需延时
- // lcd_data = 0xFF;
- }
- //----------------------------------------------------------------
- void DELAY_CLS()
- {
- delay_ms(100);
- LCD_CLS();
-
- }
- //----------------------------------------------------------------
- void LCD_CLS()
- {
- wr_cmd(0x30); // 8-bit interface, Extended instruction
- wr_cmd(0x01);
- delay_ms(5);
- }
- //----------------------------------------------------------------
- void SendStr(uchar code *ptString)
- {
- while((*ptString)!='\0')
- {
- wr_data(*ptString++);
- }
- }
- //----------------------------------------------------------------
- void SendStr1(uchar code *ptString)
- {
- while((*ptString)!='\0')
- {
- wr_data( *ptString++);
- delay_ms(30);
- }
- }
- //----------------------------------------------------------------
- void init_lcd(void)
- {
- //delay_ms(40);
- wr_cmd(0x30); //设定为8位控制,基本指令起动
- wr_cmd(0x34); //设定为8位控制,扩充指令起动
-
- wr_cmd(0x0c); // 显示打开
-
- LCD_CLS(); //清屏
-
- wr_cmd(0x06); // 设定AC加1
- }
- //----------------------------------------------------------------
- void gotoxy(uint row, uint col)
- {
- switch(row)
- {
- case 1: wr_cmd(0x80+col);break;
- case 2: wr_cmd(0x90+col);break;
- case 3: wr_cmd(0x88+col);break;
- case 4: wr_cmd(0x98+col);break;
- }
- }
- //----------------------------------------------------------------
- //----------------------------------------------------------------
- void testshow(uchar fst, uchar snd)
- {
- uchar x,y,i,k;
-
- for(i=0;i<10;i+=8) //当i=0时显示上面128×32,当i=8时显示下面12*3
- for(y=0;y<32;y++)
- { if((y%2)==1)
- k=fst;
- else
- k=snd;
- for(x=0;x<10;x++)
- {
- wr_cmd(0x36); //扩充指令 绘图显示
- wr_cmd(y+0x80); //行地址
- wr_cmd(x+0x80+i); //列地址
- wr_data(k);
- wr_data(k);
- wr_cmd(0x30); //扩充指令 绘图关闭
- }
- }
- }
- /////////////---------------显示方框-----------------------
- void disp_kuang()
- {
- uchar i,j;
- wr_cmd(0x36); //扩充指令打开
- for(i=0;i<1;i++)
- {
- wr_cmd(0x80); //行地址
- wr_cmd(0x80+i); //列地址
- wr_data(0xff);
- wr_data(0xff);
- }
- for(j=1;j<16;j++)
- {
- for(i=0;i<9;i++)
- {
- wr_cmd(0x80+j); //行地址
- wr_cmd(0x80+i); //列地址
- if(i==0) {wr_data(0x80);wr_data(0x00); }
- if(i==8) {wr_data(0x00);wr_data(0x01); }
- else {wr_data(0x00);wr_data(0x00); }
- }
- } //第一排完
- for(j=0;j<15;j++)
- {
- for(i=0;i<9;i++)
- {
- wr_cmd(0x90+j); //行地址
- wr_cmd(0x90+i); //列地址
- if(i==0) {wr_data(0x80);wr_data(0x00); }
- if(i==8) {wr_data(0x00);wr_data(0x01); }
- else {wr_data(0x00);wr_data(0x00); }
- }
- }
- for(i=0;i<1;i++)
- {
- wr_cmd(0x9f); //行地址
- wr_cmd(0x90+i); //列地址
- wr_data(0xff);
- wr_data(0xff);
- } //第二排完
- wr_cmd(0x30); //扩充指令 绘图关闭
- }
-
-
- //-------------------------------------------------
- // ^_^ 功 能 说 明: 显示128*64取模图片 ^_^ 数据扫描方向:水平扫描
- //-------------------------------------------------
- void display_pic(uchar *pic)
- {
- uchar x,y,i,j=0;
-
- for(i=0;i<9;i+=8)
- for(y=0;y<32;y++)
- {
- for(x=0;x<8;x++)
- {
- wr_cmd(0x36); //扩充指令 绘图显示打开
- wr_cmd(y+0x80); //行地址
- wr_cmd(x+0x80+i); //列地址
- wr_data(*pic++);
- wr_data(*pic++);
- }
- }
- }
- // Call built-in Charactors
- void CallBuiltinChar(void)
- {
- uint i,j;
- // 0xA140 ~ 0xA15F
- gotoxy(2,0);
- for (i = 0; i < 32; i++)
- {
- wr_data(0xA1);
- wr_data(0x40 + i);
- }
- gotoxy(3,0);
- for (j = 0; j < 16; j++)
- {
- wr_data(0xA2);
- wr_data(0x45 + j);
- }
- }
- //================================================================
- void main()
- {
- uint i;
- delay_ms(100);
- REST=0;
- delay_ms(200);
- REST=1;
-
- init_lcd();
- while(1)
- {
- LED = 0;
- delay_ms(500);
- LED = 1;
- delay_ms(500);
- LED = 0;
- DELAY_CLS();
-
- display_pic(b);
- delay_ms(3500);
- DELAY_CLS();
- testshow(0xaa,0x55); //雪花
- delay_ms(3500);
- DELAY_CLS();
- //
- testshow(0xff,0xff); //全显
- delay_ms(2000);
- DELAY_CLS();
- //testshow(0x00,0x00); //空白
- // delay_ms(4500);
- // DELAY_CLS();
- //testshow(0xff,0x00); //横显
- // delay_ms(2500);
- // DELAY_CLS();
- //testshow(0x00,0xff); //横显
- // delay_ms(2500);
- // DELAY_CLS();
- //testshow(0x55,0x55); //竖显
- // delay_ms(2500);
- // DELAY_CLS();
- //testshow(0xAA,0xAA); //竖显
- // delay_ms(2500);
- // DELAY_CLS();
- //testshow(0xaa,0x55); //雪花
- // delay_ms(2500);
- //DELAY_CLS();
- gotoxy(1,0);
- SendStr("航航航航航航航航航");
- gotoxy(2,0);
- SendStr("显显显显显显显显显");
- delay_ms(4500);
- DELAY_CLS();
- disp_kuang();
- delay_ms(4500);
- DELAY_CLS();
- gotoxy(1,0);
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- gotoxy(2,0);
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- wr_data(0xd2);
- wr_data(0xbc);/*壹D2BC*/
- delay_ms(4500);
- DELAY_CLS();
-
- gotoxy(1,0);
- for(i=0;i<18;i++)
- {
- wr_data(0x30+i);
- }
- gotoxy(2,0);
- for(i=0;i<18;i++)
- {
- wr_data(0x41+i);
- }
- delay_ms(4500);
- DELAY_CLS();
-
- }
- }
复制代码
全部代码51hei下载地址:
CH14432B-ST7920-并口接线图.zip
(61.04 KB, 下载次数: 17)
|