Lecture 15 AUTOMATIC CONTROL AUTOMATIC CONTROL SYSTEMS SYSTEMS Ali Karimpour Associate Professor Ferdowsi University of Mashhad
Lecture 15
AUTOMATIC CONTROLAUTOMATIC CONTROLSYSTEMSSYSTEMSAli Karimpour
Associate ProfessorFerdowsi University of Mashhad
Ali Karimpour Dec 2012
Chapter 15
Lecture 15
The AVR Programming and Simulation
2
Ali Karimpour Dec 2012
Chapter 15
Contents
Bascom
CodeVision
ProteusThe Proteus provides detailed instructions on how to create new simulator models, using schematic techniques.
Programming a microcontroller through high level language(Basic)
Programming a microcontroller through high level language(C)
3
Ali Karimpour Dec 2012
Chapter 15A simple program that counts the cows in a field.
4
Suitable devices
Micro
LCD
Switches
Capacitors and resistors
Ali Karimpour Dec 2012
Chapter 15A simple program that counts the cows in a field.
5
Suitable devices
Micro
LCD
Switches
Capacitors and resistors
Ali Karimpour Dec 2012
Chapter 15
BascomAVR setup
6
$regfile = "M8535.dat“
Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2
Config Lcd = 16 * 2
Locate 2 , 10Lcd “hello”
Config Debounce = 1000
Dim A As Byte
Declare Sub IncrementDeclare Sub Decrement
Ali Karimpour Dec 2012
Chapter 15
7
Cursor Off
A = 0
Do
Loop
End
…….
Debounce Pinb.0 , 1 , Decrement , SubDebounce Pind.5 , 1 , Increment , Sub
BascomAVR setup
Ali Karimpour Dec 2012
Chapter 15
8
Sub Increment
ClsIncr AIf A > 30 Then A = 0HomeLcd AReturn
End Sub Increment
Sub Decrement
ClsDecr AHomeLcd AReturn
End Sub Decrement
See example#1 for more information
BascomAVR setup
Ali Karimpour Dec 2012
Chapter 15
Proteus as a simulator
9
See example#1 for more information
Ali Karimpour Dec 2012
Chapter 15
Code Vision AVR setup
After opening Code Vision AVR click on:
Tools CodeWizardAVR
select you chip version and oscillator frequency
10
Ali Karimpour Dec 2012
Chapter 15
Set/clear the pins you want
11
Ali Karimpour Dec 2012
Chapter 15
LCD setup
Control LCD with port B:
Program Generate, save and exit
12
Ali Karimpour Dec 2012
Chapter 15
C code of project
13
/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com
Project : Version : Date : 2012/12/21Author : Freeware, for evaluation and non-commercial use onlyCompany : Comments:
Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 8.000000 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 128*****************************************************/
Ali Karimpour Dec 2012
Chapter 15
C code of project
14
#include <mega8535.h>
// Alphanumeric LCD Module functions#include <alcd.h>
// Declare your global variables here
void main(void){// Declare your local variables here
// Input/Output Ports initialization// Port A initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;DDRA=0x00;
Ali Karimpour Dec 2012
Chapter 15
C code of project
15
// Port B initialization// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=T PORTB=0x00;DDRB=0xFE;
// Port C initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;DDRC=0x00;
// Port D initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;DDRD=0x00;
Ali Karimpour Dec 2012
Chapter 15
C code of project
16
……………………. Timer, watchdog,
// Alphanumeric LCD initialization// Connections specified in the// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:// RS - PORTB Bit 2// RD - PORTB Bit 3// EN - PORTB Bit 1// D4 - PORTB Bit 4// D5 - PORTB Bit 5// D6 - PORTB Bit 6// D7 - PORTB Bit 7// Characters/line: 16lcd_init(16);
while (1){// Place your code here}
}
Ali Karimpour Dec 2012
Chapter 15
C code of project
17