標題:
CH14432B-ST7920 并口源程序
[打印本頁]
作者:
QEQWE123
時間:
2021-6-29 14:23
標題:
CH14432B-ST7920 并口源程序
/*$$$$$$$$$$$$$$$$$
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.png
(9.08 KB, 下載次數: 69)
下載附件
2021-6-29 15:19 上傳
全部代碼51hei下載地址:
CH14432B-ST7920-并口接線圖.zip
(61.04 KB, 下載次數: 17)
2021-6-29 14:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1