⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.c

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 C
字号:
#include<reg52.h>
#include<intrins.h>
#include<ziku.h>
#include<string.h>
/************************/

#define uchar unsigned char
#define uint unsigned int

/********总线以及地址线的定义************/
#define disp_on_12864 0x3f
#define disp_off_12864  0x3e
#define col_12864     0x40
#define row_12864     0xb8
#define start_line_12864   0xc0

#define lcd_bus_12864  P1
uchar x,z;
uchar y;

sbit di_12864 =P3^3;
sbit rw_12864 =P3^4;
sbit enable_12864 =P3^5;
sbit cs1_12864=P3^7;
sbit cs2_12864 =P3^6;






/************函数声明******************/
void clear_sreen_12864 ();   //清屏(即清除显存)

void delay_12864 ();         //延时1ms

void delay(void);      //延时

void init_lcd_12864 ();	  //LCD初始化

void write_command_12864 (unsigned char cmdcode);	 //写指令
            
void write_data_12864 (unsigned char dispdata);     //写数据

void rddata(void)  ;   //读数据



/**********清除显屏(清除显示内存)***********/
void  clear_screen_12864()
{
 unsigned char i,j;
 cs1_12864 =0;cs2_12864=1;    /**清除左屏**/
 for(i=0;i<8;i++)
 {
   write_command_12864 (row_12864 +i);
   write_command_12864 (col_12864 +0);  //列地址0
   for(j=0;j<64;j++)
     write_data_12864 (0x00);     //每做一次写操作,列地址加1
 }
 cs1_12864 =1;cs2_12864 =0;    /**清除右屏**/
   for(i=0;i<8;i++)
 {
   write_command_12864(row_12864 +i);
   write_command_12864(col_12864+0);  //列地址0
   for(j=0;j<64;j++)
     write_data_12864(0x00);     //每做一次写操作,列地址加1
 }
}

/***********延时1ms**************/
void delay_12864()
{ unsigned int dy=500;
  while(--dy);
}

/*************初始化LCD屏***************/
void  init_lcd_12864()
{   
clear_screen_12864(); 
cs1_12864=1;cs2_12864=0;	 //右屏
delay_12864();
write_command_12864(disp_off_12864);
write_command_12864(start_line_12864);
write_command_12864(disp_on_12864); 
cs1_12864=0;cs2_12864=1;      //左屏
delay_12864();
write_command_12864(disp_off_12864);
write_command_12864(start_line_12864);
write_command_12864(disp_on_12864);  
}

/*******写指令到LCD*********/
void write_command_12864 (unsigned char cmdcode)
{
//lcd_busy();
di_12864 =0;
rw_12864 =0;
lcd_bus_12864 =cmdcode;      //输入控制命令(display on/off,display startline,row,col)
enable_12864 =1;
_nop_();
enable_12864 =0;
}

/***********写显示的数据到LCD***********/
void write_data_12864 (unsigned char dispdata)
{
//lcd_busy();
di_12864 =1;
rw_12864 =0;
lcd_bus_12864 =dispdata;
enable_12864 =1;
_nop_();
enable_12864 =0;
}

/*****位置 X 表示行, Y表示列 , Z 表示要亮的点 *********/
void write(x,y,uchar c)
{

 z=c;
 cs1_12864=0;
 cs2_12864=1;   //选择左屏幕
 if (y>64)
 {
 y=y-64	;
 cs1_12864=1;
 cs2_12864=0;   //选择右屏幕
 }
   write_command_12864(row_12864+x-1);	  //8大行位置 X 1到 8
   write_command_12864(col_12864+y-1);	  //128 列位置 y 1 到 128
   write_data_12864(z);
 
}

void rewrite(uchar c)
{


  write(x,y,c);
  y++;
  if (y==129)  {y=1;x++;}
  if (x==9)    { x=1;y=1;clear_screen_12864();}

}


main()
{
   uchar i,k;
   init_lcd_12864();
   write_command_12864(row_12864+3);
   write_command_12864(col_12864+63);
   write_data_12864(0xf0);
   cs1_12864=1;
   cs2_12864=0;
   write_command_12864(row_12864+3);
   write_command_12864(col_12864+0);
  
   write_data_12864(0x0f);
   write(1,1, 0x0f);
   clear_screen_12864();
   for (i=0;i<24;i++)
   { k=i/12	;
     write(7,i+1, PY_mb_tang[i+k*12]);
     write(8,i+1, PY_mb_tang[i+12+k*12]);

	}
	y=44  ;
   for (i=0;i<24;i++)
   { k=i/12	;
     x=7;
     rewrite( PY_mb_tang[i+k*12]);
	 x=8;
	 y--;
     rewrite( PY_mb_tang[i+12+k*12]);

	}


	
 /*  while(1)
  {
    for (i=0;i<128;i++)
   	   { k=i/12	;
        rewrite(PY_mb_she[i+k*12]);
        rewrite( PY_mb_she[i+12+k*12]);
		for (k=0;k<128;k++)
	    {delay_12864 ();}
	   }
	   
   
   
  }
   */
   while(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -