📄 画圆2.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 + -