完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
*本文及代码参阅彭伟《单片机C语言程序设计实训100例》
一,打开文件(可以随文下载放置在文档中打开)。 二,调整原理图大小,适合可视,另存工程文件。 三,点击Source Code标签。 四,编辑main.c Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a17_正反转可控直流电机。 五,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 《avr/io.h》 #include 《util/delay.h》 #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 六,点击构建工程按钮,编译工程。 七,点击窗口左下方仿真按钮,可见虚拟直流电机运行。 八,选择release,点击构建工程按钮,编译工程生成Hex文件。 |
|
|
|
只有小组成员才能发言,加入小组>>
660浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 22:57 , Processed in 0.677455 second(s), Total 97, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号