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

📄 画圆2.txt

📁 这是一个液晶程序的成品运用
💻 TXT
字号:
#include<avr/io.h>
#include<avr/interrupt.h>
#include<avr/pgmspace.h>
//#include<math.h>

#define F_CPU 1000000UL

#define uchar unsigned char
#define uint unsigned int


#define RD 2
#define WR 3
#define AO 4
#define RES 5
#define CS 6

#define AO_1() PORTB|=(1<<AO)
#define AO_0() PORTB&=~(1<<AO)
#define RD_1() PORTB|=(1<<RD)
#define RD_0() PORTB&=~(1<<RD)
#define WR_1() PORTB|=(1<<WR)
#define WR_0() PORTB&=~(1<<WR)
#define CS_1() PORTB|=(1<<CS)
#define CS_0() PORTB&=~(1<<CS)
#define RES_1() PORTB|=(1<<RES)
#define RES_0() PORTB&=~(1<<RES)

uchar table1[]={0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
#define GUI_Point lcdMapPutPixel

unsigned char en6x8[5][7]={0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};;
char lcdmap[7][127];


//LCD 开关
#define M_LCD_ON  0XAF
#define M_LCD_OFF 0XAE


//#define SCR_MAX_

void delay(uchar a)
{
   uchar i,j;
   for(i=0; i<100; i++) 
      for(j=0; j<a; j++) ;
}

void IO_init()//端口初始化
{
   DDRB=0XFF;
   DDRD=0XFF;
   PORTB=0XFF;
   PORTD=0XFF;
}

void write_com(uchar com)
{
   PORTD=com;
   AO_0();//命令
   CS_0();
   WR_0();
   WR_1();
   CS_1();

}

void write_data(int data)
{
   PORTD=data;
   AO_1();//数据
   CS_0();
   WR_0();
   WR_1();
   CS_1();
}

void Lcd_init()
{
   uchar i,j;
   CS_1();
   RD_1();
  // RES_0();
  // delay(100);
 RES_1();
   delay(100);
   write_com(0xe2);
   write_com(0x2c);
   write_com(0x2f);
   write_com(0xa2);
   write_com(0x25);
   write_com(0x81);
   write_com(0x04);
   write_com(0x00);
   write_com(0xa0);
   write_com(0xc0);
   write_com(0xa2);
   write_com(0xa6);
   write_com(0xaf);
   write_com(0xaf);
   write_com(0x03);
   write_com(0x40);





}


void lcdsetxy(uchar x,uchar y)
{
   write_com(0xb0+y);
   write_com(0x00+(x&0x0f));
   write_com(0x10+(x>>4));
}


void lcd501_putpixel(unsigned int x,unsigned int y)
{
   unsigned int x_low,x_hight;
   unsigned int dot_mask_buf=0x0001;
   unsigned int y_page;
   x=x+4;
   x_low=(x&0x000f);
   x_hight=((x>>4&0x000f)+0x10);
   y_page=y&0x07;
   while(y_page!=0)
   {
      dot_mask_buf=dot_mask_buf<<1;
	  y_page--;
   }
   y_page=y>>3;
   write_com(y_page);
   write_com(x_low);
   write_com(x_hight);
   write_com(0xe0);
   write_data(y_page);					
   write_com(0xee);
   
}


void lcdmapwritechar6x8(uchar page,uchar colume,uchar c,uchar mode)
{
  uchar line;
  c -=32;
  if(mode)
  {
     for(line=0;line<6;line++)
	 {
	    lcdmap[page][colume+line]=en6x8[c][line];
	 }
  }
  else
  {
     for(line=0;line<6;line++)
	 {
	    lcdmap[page][colume+line]=~en6x8[c][line];
	 }
  }

}




 void point(uchar x,uchar y)
 {
    uchar a,b,temp;
    

	a=x/8;
	b=x%8;
   
	temp=(0x01<<b);
	
	 lcdmap[a][y] |= temp;
      temp=lcdmap[a][y];
	  lcdsetxy(y,a);
	  write_data(temp);

 }





void play(int x,int y,int r)
{
   int x1,y1,r0,z1,z2;
   r0=r*r;
  
   for(x1=0;x1<64;x1++)
    {
	   for(y1=0;y1<128;y1++)
	   {
	       z1=(x-x1)*(x-x1);
           z2=(y-y1)*(y-y1);
	        if(((z1+z2)<(r0+25))&((z1+z2)>(r0-25)))
		  {
		      point(x1,y1);
		  }
       }

	}
 }  


int main()

{
   volatile uchar i,j;
   int k=3;
   IO_init();
   Lcd_init();
   delay(122);
   for(i=0;i<8;i++)
  {
       for(j=0;j<128;j++)
	   {
         lcdsetxy(j,i);
		 write_data(0x00);
	  }
   }




while(1)
{
   







play(32,64,23);

 delay(1222);
 delay(1222);
delay(1222);
 
//Lcd_init();


delay(1222);
delay(1222);

  k++;
      if(k==32)
         k=3;
 }  
		delay(1222);
  

 }














 

⌨️ 快捷键说明

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