Южно-Уральский государственный университет
Заочный инженерно - экономический факультет
Контрольная (курсовая) работа №3
По Информатике
Выполнил студент- заочник 2го курса
Шифр – ЭПА-04-588
Группа – 247
«____»___________2009г. «____»___________2009г.
Срок предоставления работы по графику Дата отправки работы
№_____________ по журналу «____»___________2009г.
___________________ Хусаинов Р.З.
отметка о зачете работы
Преподаватель
____________________
Подпись преподавателя
«____»_____________2009г.
1. Построить два графика в одной координатной сетке: функция f(x)=Sin(x)+Sin(3x)/3 и F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7. Диапазон изменения переменной х Є[0;6.28]. На графике вывести обозначение масштабов переменных, вывести название графика.
Программа:
/* Программа построения графиков функции*/
/* F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7*/
/* и f(x)=Sin(x)+Sin(3x)/3*/
#include <conio.h>
#include <graphics.h>
#include <math.h>
void main()
{
/* Инициализация графического режима и переменных*/
int i,a,bf=220,bF=220;
float x,db;
double dx;
int dr=VGA, mode=VGAHI;
initgraph(&dr,&mode,"c:\TC\BGI");
/*initgraph (&dr,&mode,"G:\lang\tc\bgi");*/
/* Прорисовкаосей*/
setbkcolor(BLACK); setlinestyle(0,0,2);
line (20,220,640,220); /*X*/
moveto (630,218);lineto(640,220);lineto(630,222);lineto(630,218);
line (20,0,20,440); /*Y*/
moveto (20,0);lineto(18,10);lineto(22,10);lineto(20,0);
/*Разметкаосей*/
setcolor (WHITE);
for(i=20;i<440;i=i+20)
{outtextxy (20,i-3,"-");}
outtextxy (30,420,"-1");
outtextxy (30,20,"1");
outtextxy (32,2,"Y");
outtextxy (630,205,"X");
/* Названиеграфика*/
setfillstyle (1,GREEN);
bar (50,435,68,445);
settextstyle (6,0,1);
outtextxy (80,429,"-Функция f(x)=Sin(x)+Sin(3x)/3");
setfillstyle (1,RED);
bar (50,455,68,465);
outtextxy (80,450,"-Функция F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7");
/*Определение приращения (x) и координат по осям*/
dx=6.28/580; /*dx с шагом в 1 пиксель по х*/
db=(460-20)/2;
/*Построение графика Sin(x)+(Sin(3x))/3*/
moveto (20,220);
for (i=0;i<=580;i++)
{
setlinestyle(0,0,4);
setcolor(GREEN);
x=dx*i;
a=20+i;
bf=220-db*(sin(x)+(sin(3*x))/3);
lineto(a,bf); /*Рисуем f(х)*/
moveto(a,bF); /*Переходим к F(x)*/
/*Построение графика Sin(x)+(Sin(3x))/3+(Sin(5x))/5+(Sin(7x))/7*/
setcolor(RED);
bF=220-db*(sin(x)+(sin(3*x))/3+(sin(5*x))/5+(sin(7*x))/7);
lineto(a,bF); /*Рисуем F(х)*/
moveto(a,bf); /*Переходим к f(x)*/
/*Ставим метку по оси Х*/
if(i%(580/10)==0)
{
setcolor(WHITE);
outtextxy(a,217,"|");
moveto(a,bf);
gotoxy(a/8+2,15);
printf ("%3.2f",x );
}
}
getch();
closegraph();
}
Пример исполнения:
2.Выполнить расчет определенного интеграла функцииf (x)=Sin(x)+(Sin(3x))/3 методом трапеции. Диапазон изменения переменной х=[0;6.28]. Построить график зависимости погрешности расчета интеграла от количества точек расчета N=20…150. Истинное значение рассчитывается с помощью формулы Ньютона-Лейбница.
Программа:
/*Программа построения графика зависимости погрешности расчета интеграла*/
/* функции f(x)=Sin(x)+(Sin(3x))/3 при х=[0;6.28], методом трапеции, */
/* от количества точек расчета 'n'=20...150 */
#include <conio.h>
#include <math.h>
#include <graphics.h>
void main()
{
/* Инициализация графического режима и переменных*/
int i,n,nn,nx=150-20,a,a1,b,b1;
float w,da,db,k,ny=4.45;
double st,sl,y,x,dx;
int dr=VGA, mode=VGAHI;
initgraph(&dr,&mode,"c:\TC\BGI");
/*initgraph (&dr,&mode,"G:\lang\tc\bgi");*/
/* Прорисовкаосей*/
textcolor(7); setcolor(7); setbkcolor(BLACK); setlinestyle(0,0,2);
line (50,380,640,380); /*X*/
moveto (630,382);lineto(640,380);lineto(630,378);lineto(630,382);
line (50,0,50,380); /*Y*/
moveto (50,0);lineto(48,10);lineto(52,10);lineto(50,0);
/*Разметка осей*/
/*По оси 'Y'*/
for(i=380,k=0;i>=60;i=i-(380-60)/10,k+=ny/10)
{
outtextxy (45,i-3,"-");
gotoxy (1,i/16+1);
printf ("%3.2f",k);
}
/*Пооси 'X'*/
for(i=50,k=20;i<=570;i=i+(570-50)/13,k+=10)
{
outtextxy (i-3,380,"|");
gotoxy(i/8+1,25);
printf ("%3.0f",k);
}
outtextxy (62,8,"%");
outtextxy (630,360,"n");
/*Названиеграфика*/
settextstyle(6,0,2); setcolor(7);
outtextxy(10,420,"График зависимости погрешности расчета интеграла, методом");
outtextxy(10,438,"трапеции, функции f(x)=Sin(x)+(Sin(3x))/3 при х=[0;6.28]");
outtextxy(10,456,"от количества точек расчета.");
outtextxy(160,8,"Количество точек расчета?(20...150)-");
gotoxy(70,2); scanf("%d",&nn);
/*Определение приращения по осям*/
da=(570-50)/nx;
db=(380-60)/ny;
/*Расчет итеграла f(x)=Sin(x)+(Sin(3x))/3*/
for(n=20;n<=150;n++)
{
dx=6.28/n;
st=0;sl=0;
for(i=0;i<n;i++)
{
x=dx*i;
/*методомтрапеции*/
st+=(((sin(x)+(sin(3*x))/3)+(sin(x+dx)+(sin(3*(x+dx)))/3))/2)*dx;
/*методом Ньютона-Лейбница*/
y=sin(x)+(sin(3*x))/3;
y+=3*(sin(x+dx/3)+(sin(3*(x+dx/3)))/3);
y+=3*(sin(x+dx*2/3)+(sin(3*(x+dx*2/3)))/3);
y+=(sin(x+dx)+(sin(3*(x+dx)))/3);
sl+=y/8*dx;
}
/*Расчет погрешности*/
w=(sl-st)/sl*100;
if(n==nn)
{
setcolor(7);
outtextxy(160,24,"Погрешность");
gotoxy(56,3);
printf("- %6.4f%",w);
outtextxy(80,24*2,"Значение интеграла:");
outtextxy(160,24*3,"метод трапеции");
gotoxy(53,6);
printf("- %+20.18f",st);
outtextxy(160,24*4-8,"метод Ньютона-Лейбница");
gotoxy(53,7);
printf("- %+20.18f",sl);
}
/*Вывод в график*/
setlinestyle(0,1,1);setcolor(GREEN);
a=50+da*(n-20);
b=380-db*w;
if(n==20){a1=a;b1=b;}
else {line(a,b,a1,b1); a1=a; b1=b;}
if(n==nn)
{
setlinestyle(1,1,1);setcolor(7);
moveto(a,b);lineto(a,380);moveto(a,b);
lineto(50,b);moveto(a,b);
}
}
getch();
closegraph();
}
Пример исполнения:
Алгоритм:
1. Высокопроизводительные 8-разрадные RISC микроконтроллеры семейства AT90S AT90S\LS8535 и ATmega8535 фирмы AtmelCorporation: параметры , архитектура, система команд.
AT mega8535
AT mega8535L
8-разрядные КМОП RISCмикроконтроллеры с внутрисистемно программируемым Flash ПЗУ
Общие сведения
Как и все микроконтроллеры AVR фирмы «Atmel», микроконтроллеры семейства Mega являются 8-разрядными микроконтроллерами, предназначенными для встраиваемых приложений. Они изготавливаются по малопотребляющей КМОП-технологии, которая в сочетании с усовершенствованной RISC - архитектурой позволяет достичь наилучшего соотношения быстродействие/энергопотребление. Контроллеры описываемого семейства являются наиболее развитыми представителями микроконтроллеров AVR.
Отличительные особенности
К числу особенностей микроконтроллеров AVR семейства Mega относятся:
• FLASH-память программ объемом 8 Кбайт (число цикле стирания/записи не менее 1000);
• оперативная память (статическое ОЗУ) объемом 512 байт;
• память данных на основе ЭСППЗУ (EEPROM) объем 512 байт (число циклов стирания/записи не мене 100000);
• возможность защиты от чтения и модификации памяти программ и данных;
• возможность программирования непосредственно в системе через последовательные интерфейсы SPI и JTAG;
• возможность самопрограммирования;
• возможность внутрисхемной отладки в соответствии со стандартом IEEE 1149.1 (JTAG);
• различные способы синхронизации: встроенный RC-генератор с внутренней или внешней времязадающей RC-цепочкой или с внешним резонатором (пьезокерамическим или кварцевым); внешний сигнал синхронизации;
• наличие нескольких режимов пониженного энергопотребления;
• наличие детектора снижения напряжения питания (brown-outdetector,BOD);
• возможность программного снижения частоты тактового генератора.
Характеристики процессора
Подавляющее большинство основных характеристик процессора микроконтроллеров семейства Mega такие же, что и у микроконтроллеров других семейств — Classic и Tiny:
• полностью статическая архитектура; минимальная тактовая частота равна нулю;
• АЛУ подключено непосредственно к регистрам общего назначения;
• многоуровневая система прерываний; поддержка очереди прерываний.
В то же время процессор микроконтроллеров семейства Mega имеет рядхарактеристик, присущих именно этому семейству:
• 130 команд, большинство команд выполняются за один машинный цикл;
• 17 внутренних+3 внешних источников прерываний;
• наличие программного стека во всех моделях семейства;
• наличие аппаратного умножителя.
Характеристики подсистемы ввода/вывода
Все характеристики подсистемы ввода/вывода микроконтроллеров семейства Mega такие же, как и у микроконтроллеров других семейств:
• программное конфигурирование и выбор портов ввода/вывода;
• выводы могут быть запрограммированы как входные или как выходные независимо друг от друга;
• входные буферы с триггером Шмитта на всех выводах;
• возможность подключения ко всем входам внутренних подтягивающих резисторов (сопротивление резисторов составляет 35...120кОм).
Периферийные устройства
Микроконтроллеры семейства Megaимеют наиболее богатый набор периферийных устройств (ПУ). При этом в большинстве моделей имеются все ПУ, которые вообще встречаются в составе микроконтроллеров AVR. Этими устройствами являются:
• 2а 8-разрядных таймера/счетчика (таймеры ТО и Т2
• 16-разрядный таймер/счетчик (таймер ТЗ);
• 4 генератора сигнала с ШИМ разрядностью 8 бит (один из режимов работы 8-разрядных таймеров/счетчиков ТО и Т2);
• аналоговый компаратор;
• многоканальный 10-разрядный АЦП как с несимметричными, так и с дифференциальными входами;
• полнодуплексный универсальный синхронный/асинхронный приемопередатчик (USART);
• последовательный синхронный интерфейс SPI;
• последовательный двухпроводный интерфейс TWI (аналог интерфейса 12С).
Архитектура ядра
Ядро микроконтроллеров AVR семейства Mega выполнено по усовершенствованной RISC-архитектуре (enhancedRISC). Арифметико-логическое устройство (АЛУ), выполняющее все вычисления подключено непосредственно к 32-м рабочим регистрам, объединенным в регистровый файл. Благодаря этому АЛУ выполняет одну операцию (чтение содержимого регистров, выполнение операции и запись результата обратно в регистровый файл) за один машинным цикл. Практически каждая из команд (за исключением команд у которых одним из операндов является 16-разрядный адрес) занимает одну ячейку памяти программ.