基于avr atmega16单片机 1602显示,pwm控制电机,电压采集,智能小车程序外部中断等。

这篇博客分享了基于AVR ATmega16单片机的智能小车程序设计,包括1602液晶屏显示、PWM控制电机、电压采集及外部中断功能。通过按键操作实现吊车模拟控制,如前进、后退、提起、放下,并有急停和电量显示功能,同时利用LCD和LED指示状态,蜂鸣器提供声音反馈。
摘要由CSDN通过智能技术生成

前言

最近写avr时候发现网上教程太少,本着为各位的学习提供帮助的心理,把自己写的程序发出来,一起探讨学习,希望我们共同努力,为梦想奋斗。

功能

在AVR开发板上模拟一台吊车的操作控制和状态显示功能。将开发板上独立按键设定
为使能键、急停键、电压采集键,将开发板上的按键或遥杆方向键设定为车的前进、后退、
提起和放下等控制键,使用LCD1602作为车的状态显示屏,使用LED(红、绿)作为车的
状态指示灯,使用蜂鸣器作为车的报警器。通过编程,实现以下功能:
-在按下使能键的同时,可通过指定按键模拟吊车操作,松开使能键,则操作按键无效;
-按下急停按钮,停止一切动作;
-控制配套的直流电机旋转,模拟吊车的前进、后退、提起、放下等功能;
-按下指定按键进行电压采集,通过电位计调节电压,模拟吊车的电量显示功能,同时
控制电机加速;
-根据按键输入,控制LED绿灯和红灯的亮、灭,模拟吊车的正常运行、急停或警示
状态;
-根据按键输入,控制蜂鸣器不响、响一声、连续响,模拟吊车的正常运行、使能键按
下、急停或警示等状态;
-根据按键输入,控制LCD显示多种状态信息,如:按秒更新显示系统累计运行时间、
暂停更新系统累计运行时间、显示采集的输出电压值(保留小数点后一位)、显示吊车执行
的工作状态。

程序

/*
 * test.c
 *
 * Created: 2020/4/20 15:55:49
 * Author : zjlc
 
 PC0 使能键  | PC1 电机前进(可调)| PC2 电机后退(可调)| PC3 提起(可调,软件调) |PC4 放下(可调,硬件调)
 |PD2 急停键 |PC5 电压采集 |PA6 蜂鸣器|PA5 红灯|PA4 绿灯|PA0 电压采集脚|
 PD7 PD6 电机 PD4,5 电机 PD3 1602 EN PD1,0 RS,RW |
 PB0-PB7 1602数据口
 
 */ 


#define F_CPU 8000000
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
char  number[]={
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

#define sreg _SFR_IO8(0X3F)
#define rs 0
#define rw 1
#define en 3
#define setrs() PORTD |=(1<<rs)
#define setrw() PORTD |=(1<<rw)
#define seten() PORTD |=(1<<en)
#define clrrs() PORTD &=~(1<<rs)
#define clrrw() PORTD &=~(1<<rw)
#define clren() PORTD &=~(1<<en)
int cishu=500;
void hungray()//忙信号
{
   
	DDRB=0x00;
	clrrs();
	setrw();
	seten();
	_delay_us(5);
	while((PINB&0x80)&&(cishu--));
	clren();
	DDRB=0xff;
}
void write(char data,int or)//写指令或者数据
{
   
	hungray();
	PORTB=data;
	if (or==0)//指令
	{
   
		clrrs();
	}
	else
	{
   
		setrs();
	}
	clrrw();
	seten();
	_delay_us(5);
	clren();
}
void move(int x,int y)
{
   
	if(x==0)
	write(0x80|y,0);
	else
	write(0xc0|y,0);
}
void display
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值