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