凡亿教育-香香
凡事用心,一起进步
打开APP
公司名片
凡亿问答 | Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a17_正反转可控直流电机
Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a17_正反转可控直流电机

*本文及代码参阅彭伟《单片机C语言程序设计实训100例》
一,打开文件(可以随文下载放置在文档中打开)。(如下图1所示)
4a9829affdfac826c86c94097070e9.png
图1

二,调整原理图大小,适合可视,另存工程文件。(如下图2,3,4所示)
3762a8007ad69ea0909854ebeb0008.png
图2
e389ba4a55b66a4fae5473bf441020.png
图3

67a174b8afd7b5aa528d7f71ed072e.png
图4

三,点击Source Code标签。(如下图5所示)
5ffc499bd18782a12cdc8962d82ba6.png
图5

四,编辑main.c Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a17_正反转可控直流电机 (如下图6所示)
68cf0304f2dbf3773f1aebff9ac66f.png
图6

五,Main.c 代码:
//-----------------------------------------------------------------
//  名称: 正反转可控的直流电机
//-----------------------------------------------------------------
//  说明: 本例运行时,按下K1直流电机正转,按下K2直流电机反转,
//        按下K3时停止. 在进行相应操作时,对应LED将被点亮.
//               
//-----------------------------------------------------------------


#include "myfunc01.h"

//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
int main(void)
{
        DDRB= 0xFF;                PORTB= 0xFF;
        DDRC= 0xFF;                PORTC= 0xFF;
        DDRD= 0x00;                PORTD= 0xFF;
        LED3_ON();
        while(1) {
                Turner();
        }               
}               

Myfunc01.h
//******************************************************************************************
#ifndef _MYFUNC01_H_
#define _MYFUNC01_H_

#include
#include
#define INT8U   unsigned char
#define INT16U  unsigned int

//按键定义
#define K1_DOWN()        ((PIND & _BV(PD1))== 0x00)
#define K2_DOWN()        ((PIND & _BV(PD4))== 0x00)
#define K3_DOWN()        ((PIND & _BV(PD7))== 0x00)


//LED定义
#define LED1_ON()        (PORTC= 0B11111110)
#define LED2_ON()        (PORTC= 0B11111101)
#define LED3_ON()        (PORTC= 0B11111011)



//电机控制端A,B操作定义
#define MA_0()        (PORTB &= ~_BV(PB0))
#define MA_1()        (PORTB |=    _BV(PB0))
#define MB_0()        (PORTB &= ~_BV(PB1))
#define MB_1()        (PORTB |=    _BV(PB1))

void Turner(void);

#endif


六,点击构建工程按钮,编译工程。(如下图7所示)
16cf88944297e21884953f6ef955a2.png
图7

七,点击窗口左下方仿真按钮,可见虚拟直流电机运行。 (如下图8,9,10所示)
ac2ad6c8d3b08fdb4c592154f90514.png
图8

55e754924c63bcf68f719f3cbfddf5.png
图9
7a7c730840d5e95f7d60df98198d1b.png
图10


八,选择release,点击构建工程按钮,编译工程生成Hex文件。(如下图11所示)
1bbb554245e57c420b51f107fb2186.png
图11






1个回答
热门问答
我来回答
首页
1
0
0