Чт дек 23, 2021 10:09:52
#define F_CPU 8000000UL // объявляем частоту процессора
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
//#include "btg13264.h"
#define LCDPORT PORTC //
#define CS PC0 //
#define RES PC1 //
#define DC PC2 //
#define CLK PC3 //
#define SDA PC4 //
#define LCD_bias_set 0b10100010 //
#define ADC_select 0b10100000 //
#define COM_out_mode 0b11001000 //
#define V_sel 0b00100101 //
#define VOL_set 0b10000001 //
#define COLUMN_adr_set 0b00011011 //
#define POWER_set 0b00101111 //
#define START_line_set 0b01000000 //
#define PAGE_adr_set 0b10110000 //
#define COLUMN_adr_up 0b00010000 //
#define COLUMN_adr_lo 0b00000000 //
void CpuInit(void)
{
DDRC=0xFF;
PORTC=0b11111111;
}
void LcdSend(char byte, char data ) //
{
if(data) LCDPORT |=(1 << DC);
else LCDPORT &= ~(1 << DC);
LCDPORT |= (1 << CLK); // SPI_MODE = 1
LCDPORT &= ~(1 << CS); // Chip Select - Enable
char i;
for(i=0; i<8; i++)
{
if (byte & 0x80)
{
LCDPORT |= (1 << SDA);
}
else
{
LCDPORT &= ~(1 << SDA);
}
LCDPORT &= ~(1 << CLK);
byte <<= 1;
LCDPORT |= (1 << CLK);
}
LCDPORT |= (1 << CS); // Chip Select - Disable
LCDPORT |= (1 << CLK); // SPI_MODE = 1
}
void LcdInit(void)
{
LCDPORT &= ~(1 << CS);
LCDPORT &= ~(1 << RES);
LCDPORT &= ~(1 << DC);
_delay_us(40);
LCDPORT |= (1 << RES);
LCDPORT &= ~(1 << RES);
_delay_us(10);
LCDPORT |= (1 << RES);
LcdSend(LCD_bias_set, 0);
LcdSend(ADC_select, 0);
LcdSend(COM_out_mode, 0);
LcdSend(V_sel, 0);
LcdSend(VOL_set, 0);
LcdSend(COLUMN_adr_set, 0);
LcdSend(POWER_set, 0);
}
void LcdOn(void)
{
LcdSend(0b10101111, 0);
}
void LcdGoToXYSym(char x, char y)//переход на знакоместо (1-22, 1-8)
{
if(0<<y<=8) LcdSend(PAGE_adr_set | (y-1), 0);
if(0<<x<=22){
x=(x-1)*6;
LcdSend((COLUMN_adr_up | (x >> 4)), 0);
LcdSend((COLUMN_adr_lo | (x & 0b00001111)), 0);
}
}
void LcdClear(void)
{
LcdSend(START_line_set, 0);
for(char num=1; num<=8; num++){
LcdGoToXYSym(1, num);
for(char i=0; i < 132; i++ ){
LcdSend(0x00, 1);
}
}
}
int main(void) {
CpuInit();
LcdInit();
LcdClear();
LcdOn();
while (1)
{
LcdGoToXYSym(3, 3);
LcdSend(0x07, 1);
LcdSend(0x08, 1);
LcdSend(0x70, 1);
LcdSend(0x08, 1);
LcdSend(0x07, 1);
LcdSend(0x00, 1);
_delay_ms(500);
}
}
#include <mega8.h>
#include <io.h>
#include <delay.h>
//#include <avr/pgmspace.h>
//#include "btg13264.h"
#define LCDPORT PORTC //
#define CS PORTC.0 //
#define RES PORTC.1 //
#define DC PORTC.2 //
#define CLK PORTC.3 //
#define SDA PORTC.4
#define LCD_bias_set 0b10100010 //
#define ADC_select 0b10100000 //
#define COM_out_mode 0b11001000 //
#define V_sel 0b00100101 //
#define VOL_set 0b10000001 //
#define COLUMN_adr_set 0b00011011 //
#define POWER_set 0b00101111 //
#define START_line_set 0b01000000 //
#define PAGE_adr_set 0b10110000 //
#define COLUMN_adr_up 0b00010000 //
#define COLUMN_adr_lo 0b00000000 //
void CpuInit(void)
{
DDRC=0xFF;
PORTC=0b11111111;
}
void LcdSend(char byte, char data ) //
{
char i;
if(data) LCDPORT |=(1 << DC);
else LCDPORT &= ~(1 << DC);
LCDPORT |= (1 << CLK); // SPI_MODE = 1
LCDPORT &= ~(1 << CS); // Chip Select - Enable
for(i=0; i<8; i++)
{
if (byte & 0x80)
{
LCDPORT |= (1 << SDA);
}
else
{
LCDPORT &= ~(1 << SDA);
}
LCDPORT &= ~(1 << CLK);
byte <<= 1;
LCDPORT |= (1 << CLK);
}
LCDPORT |= (1 << CS); // Chip Select - Disable
LCDPORT |= (1 << CLK); // SPI_MODE = 1
}
void LcdInit(void)
{
LCDPORT &= ~(1 << CS);
LCDPORT &= ~(1 << RES);
LCDPORT &= ~(1 << DC);
delay_us(40);
LCDPORT |= (1 << RES);
LCDPORT &= ~(1 << RES);
delay_us(10);
LCDPORT |= (1 << RES);
LcdSend(LCD_bias_set, 0);
LcdSend(ADC_select, 0);
LcdSend(COM_out_mode, 0);
LcdSend(V_sel, 0);
LcdSend(VOL_set, 0);
LcdSend(COLUMN_adr_set, 0);
LcdSend(POWER_set, 0);
}
void LcdOn(void)
{
LcdSend(0b10101111, 0);
}
void LcdGoToXYSym(char x, char y)//переход на знакоместо (1-22, 1-8)
{
if(0<<y<=8) LcdSend(PAGE_adr_set | (y-1), 0);
if(0<<x<=22){
x=(x-1)*6;
LcdSend((COLUMN_adr_up | (x >> 4)), 0);
LcdSend((COLUMN_adr_lo | (x & 0b00001111)), 0);
}
}
void LcdClear(void)
{
char num;
char i;
LcdSend(START_line_set, 0);
for(num=1; num<=8; num++){
LcdGoToXYSym(1, num);
for(i=0; i < 132; i++ ){
LcdSend(0x00, 1);
}
}
}
void main(void)
{
CpuInit();
LcdInit();
LcdClear();
LcdOn();
while (1)
{
LcdGoToXYSym(3, 3);
LcdSend(0x07, 1);
LcdSend(0x08, 1);
LcdSend(0x70, 1);
LcdSend(0x08, 1);
LcdSend(0x07, 1);
LcdSend(0x00, 1);
delay_ms(500);
}
}
Вс фев 13, 2022 13:17:20
Вс фев 13, 2022 13:21:10
PORTD.0=1;
Вс фев 13, 2022 13:23:03
Вс фев 13, 2022 14:28:13
Вс фев 13, 2022 16:44:00
Вс фев 13, 2022 17:13:46
Пн фев 14, 2022 15:27:36
Пн фев 14, 2022 15:32:45
дык вот прямо так и передать, как вы сами и написали:mixon46 писал(а):Напомните как передать значение в функцию
mixon46 писал(а):USART_initialization(9600) ;
Пн фев 14, 2022 15:36:09
Пн фев 14, 2022 15:40:13
так можно только описать функцию, а реализовать её надо с параметром типа int:mixon46 писал(а):void USART_initialization(int)
void USART_initialization(int baud){
if(baud == 9600){ /* или что там надо */ }
}
Пн фев 14, 2022 15:45:22
Вт фев 15, 2022 00:56:02
Вт фев 15, 2022 12:30:52
Вт фев 15, 2022 13:41:01
Вт фев 15, 2022 18:48:15
Ср фев 16, 2022 11:31:29
mixon46 писал(а):Я тут библиотеку пишу для работы с uart.
mixon46 писал(а):Надо ещё функции добавить для отправки и считывания
Ср фев 16, 2022 12:06:29
Ср фев 16, 2022 17:23:14
Ср фев 16, 2022 17:28:25