📄 sy.c
字号:
#include <reg52.h>
#include <stdio.h>
#include "absacc.h"
#include "intrins.h"
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sbit PSB = P2^3;
sbit RST = P2^4;
#define DATA P1
/*void delay(const unsigned char i)
{
unsigned char j;
j = i;
while(--j);
j = i;
while(--j);
} */
/*****************************************
名称:void delay_10us( unsigned char x )
功能:延时10us
实参输入:unsigned char x
返回值:void
*****************************************/
void delay_10us( unsigned char x )
{
while( x-- );
}
/*****************************************
名称:void delay_ms( unsigned int cnt )
功能:延时1ms
实参输入:unsigned int cnt
返回值:void
*****************************************/
void delay_ms( unsigned int cnt )
{
unsigned char i;
do{
i = 4;
do{
delay_10us(39);
} while(--i);
} while( --cnt );
}
void smNop(void)
{
_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
}
const unsigned char code title1[] =
{
"题目"
};
const unsigned char code title2[] =
{
"语音存储与回放"
};
const unsigned char code title3[] =
{
"成员:史新仓"
};
const unsigned char code title4[] =
{
"陈文武 吴西飞"
};
const unsigned char code num1[]=
{0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17};
const unsigned char code num2[]=
{0x18,0x19,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,0x33};
const unsigned char code num3[]=
{0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49};
/*unsigned char code pic[]=
{0x00,0x01,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,
0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,
0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x80,0x00,0x00,0x00,
0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0xFF,
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x07,0xFF,0xFF,
0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x0B,0xFF,
0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x1F,
0x01,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,
0x01,0xFF,0xFF,0xFF,0xF3,0x79,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,
0x03,0xFF,0xFF,0xFF,0xE6,0x62,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0x60,0x00,0x68,
0x01,0xFF,0xFF,0xFE,0x00,0x60,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0x00,0x00,0x0E,
0x01,0xFF,0xFF,0xF8,0x00,0x4B,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x8E,0x08,0x79,
0x07,0xFF,0xFF,0xF0,0x00,0x41,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE6,0xC0,0x07,0x61,
0xC3,0xFF,0xFE,0xC0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xED,0xEF,0x3F,
0x83,0xFF,0xFE,0x60,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xC0,0xFF,0xFD,0xFC,0x6C,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0x7F,0xF3,0xFF,0xFE,0x60,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xF3,0xFF,0xFF,0x50,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,
0xFB,0xFF,0xF1,0xF8,0x8C,0xD8,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0x6F,0xD9,
0xC2,0x3F,0xF8,0x40,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF6,0xDF,0x1E,0xFF,
0xFF,0x7F,0xFC,0x38,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x64,0x2F,0x6F,0xFF,
0xFD,0x7B,0xFC,0x1F,0xE0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x5F,0x7C,0xEE,0xFF,
0xC7,0xFF,0xBC,0x0F,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFE,0xEF,0xFF,
0xFF,0xE7,0xDC,0x07,0xE7,0xF8,0x12,0x7F,0xFF,0xFF,0xFF,0xFF,0x47,0xFF,0xFF,0xFF,
0xFF,0xE7,0x80,0x03,0xF4,0x00,0x00,0x5F,0xFF,0xFF,0xFE,0xFE,0xE3,0xFF,0xFF,0xFF,
0xFF,0xFE,0xC0,0x01,0xC0,0x00,0x00,0x1B,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,
0x7F,0xEE,0xC0,0x00,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFE,0x98,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x20,0x0E,0x60,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x05,0x80,0xE0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x09,0x80,0xA0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x85,0x2A,0xC0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
0xBF,0xF3,0xC0,0x00,0x00,0x00,0x00,0x00,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,
0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x01,0xFF,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0xFF,0xFF,0xFF,0xFF,0xC0,0x1F,
0xFF,0xFF,0x80,0x00,0x40,0x00,0x00,0x00,0xFF,0x80,0xFF,0xFF,0xFF,0x80,0x07,0xFF,
0xFF,0xFF,0xC0,0x00,0xC0,0x00,0x00,0x01,0xFF,0x01,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,
0xFF,0xFF,0xE0,0x63,0x80,0x00,0x00,0x01,0xFE,0x01,0xFF,0x18,0x00,0x3F,0xFF,0xFF,
0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x01,0xCC,0x01,0xFE,0x00,0x07,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x07,0xA0,0x03,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x05,0xC0,0x03,0xC8,0x00,0x7F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x19,0x00,0x00,0x88,0x0C,0x07,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFC,0x00,0x0C,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0xC0,0x7F,0xFF,0xFF,
0xFF,0xFF,0xF8,0x07,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x0F,0xFF,0xFE,
0xFF,0xFF,0xD0,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x03,0xFF,0xF8,
0xFF,0xFC,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xC0,
0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0xFF,0xF8,
0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x1F,0xFE,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x78,0x02,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x02,0xFF,
0xFE,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,
0xF0,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
0xE0,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,
0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01
};*/
/*
** Create : 2007 7 31
** Author : oDon
** email : yuanonline@hotmail.com
** Description:**
** This project is using for a library of solutions of CM12864
** functions will implements to display ZH_CN ASCII IMAGE on
** CM12864 LCD.etc..
*/
//volatile uchar command; /*Command Word*/
/**************************************************
* Function Definations Below */
void check_busy(void);
void send_com(const unsigned char command);
void send_com_init(const unsigned char command_init);
void send_data(const unsigned char data_a);
void send_data(const unsigned char data_a);
void clear_LCD(void);
void initial_LCD(void);
void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length );
void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length );
/* Function Definations End *
**************************************************/
void main(void)
{
clear_LCD();
smNop();
initial_LCD();
smNop();
clear_LCD();
smNop();
//Display_ch(title1,1, 4, 2);
//Display_ch(title2,2,2,7);
//Display_ch(title3,3,1,6);
//Display_ch(title4,4,2,7);
Display_num(num1,1,1,16);
Display_num(num2,2,1,16);
Display_num(num3,3,1,16);
while(1);
}
/******************************************
功能:void check_busy( void )
功能:检查是否LCD忙碌的子程序
实参输入:void
返回值:void
******************************************/
void check_busy(void)
{
P1 = 0xff;
RS = 0;
RW = 1;
while (1)
{
smNop();
E =1;
smNop();
if( P1 < 0x80 )
break;
smNop();
E =0;
}
E = 0;
}
/*****************************************
名称:void send_com( unsigned char command )
功能:写指令
实参输入:unsigned char command
返回值:void
*****************************************/
void send_com(const unsigned char command)
{
check_busy();
RS = 0;
RW = 0;
P1 = command;
E = 1;
smNop();
E = 0;
}
/********************************************************
名称:void send_com_init( unsigned char command_init )
功能:LCD初始化时的送命令
实参输入:unsigned char command_init
返回值:void
********************************************************/
void send_com_init(const unsigned char command_init )
{
RS = 0;
RW = 0;
P1 = command_init;
E = 1;
smNop();
E = 0;
}
/*******************************************************
名称:void send_data( unsigned char data_a )
功能:写数据
实参输入:unsigned char data_a
返回值:void
*******************************************************/
void send_data(const unsigned char data_a)
{
check_busy();
RS = 1; //DB7-DB0为显示数据
RW = 0; //写入数据
P1 = data_a;
E = 1;
smNop();
E = 0; //下降沿
}
/*********************************************************
名称:void clear_LCD( void )
功能:清屏
实参输入:void
返回值:void
*********************************************************/
void clear_LCD(void)
{
send_com(0x01); //清除显示//
send_com(0x34); // 功能设定:扩充指令集动作 //
send_com(0x30); //功能设定:基本指令集动作//
}
/*************************************************************
名称:void initial_LCD( void )
功能:LCD初始化
实参输入:void
返回值:void
*************************************************************/
void initial_LCD(void)
{
PSB = 1; //并行传送
RST = 0; //复位
_nop_();
_nop_();
RST = 1; //不复位
_nop_();
delay_10us(10);
send_com_init(0x30);//30H--基本指令操作
delay_10us(4);
send_com_init(0x0c);//开显示,关光标,不闪烁。
delay_10us(10);
send_com_init(0x01);//清除显示
delay_ms(10);
send_com_init(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
}
/*********************************************************************
名称:void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
功能:显示字符串 2 1 6
参数输入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length
返回值:void
*********************************************************************/
void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
{
unsigned char ddram = 0x00;
unsigned char i1;
if(line == 1)
ddram = 0x80;
if(line == 2)
ddram = 0x90;
if(line == 3)
ddram = 0x88;
if(line == 4)
ddram = 0x98;
ddram = ddram + col - 1;
send_com( ddram ); //定位显示起始地址
for( i1 = 0;i1 < length;i1 ++ )
{
send_data( ptr[i1] );//输出单个字符
}
}
/********************************************************
名称: void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
功能:显示汉字子程序
实参输入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned length
返回值:void
********************************************************/
void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
{
unsigned char ddram = 0x00;
unsigned char i1;
if(line == 1)
ddram = 0x80;
if(line == 2)
ddram = 0x90;
if(line == 3)
ddram = 0x88;
if(line == 4)
ddram = 0x98;
ddram = ddram + col - 1;
send_com( ddram ); //定位显示起始地址
for( i1 = 0;i1 < length;i1 ++ )
{
send_data(ptr[i1*2]);//输出单个字符
send_data(ptr[i1*2+1]);
}
}
/****************************************************************
-----------------------------------------------------------------
END OF MAIN.C
-----------------------------------------------------------------
****************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -