Вс июн 17, 2012 12:57:37
Пн июн 18, 2012 07:20:01
void lcd_graphics_init(void)
{
// unsigned char commandData;
lcd_res_low();
lcd_enable_low();
lcd_rs_low();
lcd_cs_low();
DelayMs(1);
lcd_res_high();
DelayMs(50);
lcd_write_command(0x00,0x32);
lcd_write_command(0x01,0x77);
lcd_write_command(0x02,(LCD_GRAPHIC_WIDTH / 8)-1);
lcd_write_command(0x03,0x7F);
lcd_write_command(0x04,0x07);
lcd_write_command(0x08,0x00);
lcd_write_command(0x09,0x00);
lcd_write_command(0x0A,0x00);
lcd_write_command(0x0B,0x00);
lcd_graphics_clear();
}
//
void lcd_write_command(unsigned char command, unsigned char data)
{
lcd_writecom(command);
wait();
lcd_writedat(data);
wait();
}
//
//----------
void lcd_writedat(unsigned char byte)
{
lcd_rs_low();
lcd_rw_low();
wait();
fnSetLcdData(byte);
wait();
lcd_strobe_enable();
}
//----------
void lcd_writecom(unsigned char byte)
{
lcd_rs_high();
lcd_rw_low();
wait();
fnSetLcdData(byte);
wait();
lcd_strobe_enable();
}
//----------
Пн июн 18, 2012 19:51:50
#include <mega8.h>
#include <atmega8_init.h>
#include <define.h>
#include <lc7981.h>
#include <delay.h>
void main()
{
atmega8_init();
glcd_init();
lcd_clear();
lcd_plot_pixel (5,5,1);
while (1)
{
}
}
void lcd_clear()
{
int i;
lcdcomand_write(0x0A,0x00);
lcdcomand_write(0x0B,0x00);
lcd_com (0x0C);
for(i=0; i<160*80/8; i++)
{
lcd_dat(0x00);
}
}
void lcd_setadress( unsigned char x, unsigned char y )
{
unsigned short pos;
pos = ((y*160)+x)/8;
lcdcomand_write(0x0A,pos); // writeadress low
lcdcomand_write(0x0B,pos); // writeadress high
}
void lcd_plot_pixel(unsigned short x, unsigned short y, unsigned char state) {
unsigned char pos;
lcd_setadress(x, y);
pos = x%8;
if (state == 1)
lcdcomand_write(0x0F, pos&0xff);
else
lcdcomand_write(0x0E, pos>>8);
}
void glcd_init()
{
RESET = 0;
E = 0;
RS = 0;
CS = 0;
RESET = 1;
delay_ms(10);
lcdcomand_write(0x00,0x32);
lcdcomand_write(0x01,0x07); //размер символа
lcdcomand_write(0x02,0x13); //СИМВОЛОВ НА ЛИНИЮ 20
lcdcomand_write(0x03,0x7F); //
lcdcomand_write(0x04,0x07);
lcdcomand_write(0x08,0x00);
lcdcomand_write(0x09,0x00);
lcdcomand_write(0x0A,0x00);
lcdcomand_write(0x0B,0x00);
lcd_clear();
}
#define lcd_data PORTD
#define lcd_ctrl_data DDRD
#define lcd_read_data PIND
#define RS PORTC.0
#define RS_BUZ PINC.0
#define RW PORTC.1
#define RW_BUZ PINC.1
#define E PORTC.2
#define CS PORTC.3
#define RESET PORTC.4
#define READ_DISPLAY PORTC.1 = 1
#define WRITE_DISPLAY PORTC.1 = 0
#define COMAND PORTC.0 = 1
#define DATA PORTC.0 = 0
Пн июн 18, 2012 20:40:51
Пн июн 18, 2012 20:49:16
#include <delay.h>
void lcd_com (char com)
{
RS = 1;
RW = 0;
delay_ms(1);
lcd_data = com;
delay_ms(1);
E = 1;
}
void lcd_dat (char dat)
{
RS = 0;
RW = 0;
delay_ms(1);
lcd_data = dat;
delay_ms(1);
}
void lcdcomand_write(char comand,char data)
{
lcd_ctrl_data = 0xFF;
DDRC = 0x1F;
RS = 1;
RW = 0;
delay_us(2);
lcd_data = comand;
delay_us(2);
E = 1;
RS = 0;
RW = 0;
delay_us(2);
lcd_data = data;
delay_us(2);
}
void lcd_clear()
{
int i;
lcdcomand_write(0x0A,0x00);
lcdcomand_write(0x0B,0x00);
lcd_com (0x0C);
for(i=0; i<160*80/8; i++)
{
lcd_dat(0x00);
}
}
void lcd_setadress( unsigned char x, unsigned char y )
{
unsigned short pos;
pos = ((y*160)+x)/8;
lcdcomand_write(0x0A,pos); // writeadress low
lcdcomand_write(0x0B,pos); // writeadress high
}
void lcd_plot_pixel(unsigned short x, unsigned short y, unsigned char state) {
unsigned char pos;
lcd_setadress(x, y);
pos = x%8;
if (state == 1)
lcdcomand_write(0x0F, pos&0xff);
else
lcdcomand_write(0x0E, pos>>8);
}
void glcd_init()
{
RESET = 0;
E = 0;
RS = 0;
CS = 0;
RESET = 1;
delay_ms(10);
lcdcomand_write(0x00,0x32);
lcdcomand_write(0x01,0x07); //размер символа
lcdcomand_write(0x02,0x13); //СИМВОЛОВ НА ЛИНИЮ 20
lcdcomand_write(0x03,0x7F); //
lcdcomand_write(0x04,0x07);
lcdcomand_write(0x08,0x00);
lcdcomand_write(0x09,0x00);
lcdcomand_write(0x0A,0x00);
lcdcomand_write(0x0B,0x00);
lcd_clear();
}
Пн июн 18, 2012 21:25:38
Пн июн 18, 2012 21:36:34
Пн июн 18, 2012 21:44:48
Пн июн 18, 2012 21:46:59
#include <delay.h>
void lsd_buz ()
{
lcd_ctrl_data = 0x00;
RS = 1;
RW = 1;
while(lcd_read_data == 0x80)
{
delay_ms(3);
}
}
void lcd_strobe_enable(void)
{
delay_us(3);
E = 1;
delay_us(3);
E = 0;
delay_us(3);
}
void lcd_com (char com)
{
RS = 1;
RW = 0;
delay_us(3);
lcd_data = com;
delay_us(3);
lcd_strobe_enable();
}
void lcd_dat (char dat)
{
RS = 0;
RW = 0;
delay_us(3);
lcd_data = dat;
delay_us(3);
lcd_strobe_enable();
}
void lcdcomand_write(char comand,char data)
{
lcd_ctrl_data = 0xFF;
DDRC = 0x1F;
RS = 1;
RW = 0;
delay_us(3);
lcd_data = comand;
delay_us(3);
lcd_strobe_enable();
RS = 0;
RW = 0;
delay_us(3);
lcd_data = data;
delay_us(3);
lcd_strobe_enable();
}
void lcd_clear()
{
int i;
lcdcomand_write(0x0A,0x00);
lcdcomand_write(0x0B,0x00);
lcd_com (0x0C);
for(i=0; i<160*80/8; i++)
{
lcd_dat(0x00);
}
}
void lcd_setadress( unsigned char x, unsigned char y )
{
unsigned short pos;
pos = ((y*160)+x)/8;
lcdcomand_write(0x0A,pos); // writeadress low
lcdcomand_write(0x0B,pos); // writeadress high
}
void lcd_plot_pixel(unsigned short x, unsigned short y, unsigned char state) {
unsigned char pos;
lcd_setadress(x, y);
pos = x%8;
if (state == 1)
lcdcomand_write(0x0F, pos&0xff);
else
lcdcomand_write(0x0E, pos>>8);
}
void glcd_init()
{
RESET = 0;
E = 0;
RS = 0;
CS = 0;
RESET = 1;
delay_ms(10);
lcdcomand_write(0x00,0x32);
lsd_buz ();
lcdcomand_write(0x01,0x07); //размер символа
lsd_buz ();
lcdcomand_write(0x02,0x13); //СИМВОЛОВ НА ЛИНИЮ 20
lsd_buz ();
lcdcomand_write(0x03,0x7F); //
lsd_buz ();
lcdcomand_write(0x04,0x07);
lsd_buz ();
lcdcomand_write(0x08,0x00);
lsd_buz ();
lcdcomand_write(0x09,0x00);
lsd_buz ();
lcdcomand_write(0x0A,0x00);
lsd_buz ();
lcdcomand_write(0x0B,0x00);
lsd_buz ();
lcd_clear();
lsd_buz ();
}
Пн июн 18, 2012 22:45:07
Пн июн 18, 2012 23:08:07
Пн июн 18, 2012 23:44:50
void lcd_graphics_plot_pixel(unsigned char x, unsigned char y, unsigned char state)
{
unsigned char pos;
lcd_graphics_move(x, y);
/* Since lcd_graphics_move() moves the cursor to a particular
* byte, not bit, we need the relative distance to the specified
* bit we are going to set/clear. */
pos = x%8;
if (state == PIXEL_ON)
lcd_write_command(LCD_CMD_SET_BIT, pos);
else
lcd_write_command(LCD_CMD_CLEAR_BIT, pos);
}
void lcd_graphics_clear(void)
{
unsigned int i;
lcd_write_command(0x0A,0x00);
lcd_write_command(0x0B,0x00);
for(i = 0; i < 800; i++)
{
lcd_write_command(0x0C,0x00);
}
for(i = 800; i < 1600; i++)
{
lcd_write_command(0x0C,0x55);
}
lcd_write_command(0x0A,0x00);
lcd_write_command(0x0B,0x00);
}
Вт июн 19, 2012 15:45:07
Ср июн 20, 2012 10:30:45
Ср июн 20, 2012 15:05:15
Ср июн 20, 2012 16:55:58
Ср июн 20, 2012 17:56:52
Вс июн 24, 2012 23:35:30
Пн июн 25, 2012 00:14:15
Пн июн 25, 2012 14:46:58