基于AVR128单片机智能传送装置

一、系统方案

1、板载可变电阻(电位器)R29的电压作为处理器ATmega128的模数转换模块中单端ADC0的模拟信号输入(跳线JP13短接)。

2、调节电位器,将改变AD转换接口ADC0的模拟信号输入,由处理器完成ADC0的A/D转换。

3、将处理器通过A/D转换后得到的电压信号来模拟"货物"的重量。假定转换得到的电压信号与"货物"重量具有线性关系,例:电压2.5V时,货物重量为500kg,电压为0V时,传送装置空载。

4、将转换得到的电压及对应的"货物"重量通过7段数码管LED或液晶显示屏或PC串口显示。

5、使用板载4*4矩阵键盘中的四个按键号分别为A-D的4个按键和8个发光二极管D1-D8。

A键为传送装置启动按键,按下后,板载发光二极管D1亮,表示传送装置启动。

B键键为正向传送控制键,在A启动后B才有效,B按下后,发光二极管D2-D8从左到右依次循环点亮,表示"传送装置"开始正向传送货物。

C键为反向传送控制键,同样在A启动后才有效,C按下后,发光二极管D2-D8从右到左依次循环点亮,表示"传送装置"开始反向传送货物。

D键为停止键,D按下后, "传送装置"停止工作,所有发光二极管全部熄灭。

二、硬件设计

原理图如下:

三、单片机软件设计

1、首先是系统初始化

void LCD12864_Init() //初始化液晶12864

{

ResetLcd();

SetScreenOnOff(0);

delay_nus(2);

SetPage(0);

delay_nus(2);

SetColum(0);

delay_nus(2);

SetRow(0);

delay_nus(2);

SetScreenOnOff(1);

}

2、液晶显示程序

void SendCommand(unsigned char command)//给液晶写入命令控制字

{

CheckState();

LGM12864_CLR_RS;

LGM12864_CLR_RW;

LCDa_DO = command;

delay_nus(2);

LGM12864_SET_EN;

delay_nus(2);

LGM12864_CLR_EN;

}

unsigned char LCD12864_RecData()//液晶接收数据

{

unsigned char temp;

CheckState();

LGM12864_SET_RS;

LGM12864_SET_RW;

LGM12864_SET_EN;

temp=LCDa_DI;

LGM12864_CLR_EN;

复制代码
return (temp);

}

3、按键程序

void key(void)//按键检测

{

if((k1)==0)//开始按键

{

delay_nms(10);

if((k1)==0)

{

led_start=1;led_0;

}

while((k1)==0);

}

if((k2)==0)//正转

{

delay_nms(10);

if((k2)==0)

{

if(led_start) fx=1;

count=0;

}

while((k2)==0);

}

if((k3)==0)// 反转

{

delay_nms(10);

if((k3)==0)

{

if(led_start) fx=2;

count=0;

}

while((k3)==0);

}

if((k4)==0)//停止

{

delay_nms(10);

if((k4)==0)

{

led_start=0;led_1;

}

while((k4)==0);

}

}

4、核心算法程序

#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF

void timer1_ovf_isr(void)

{

//TIMER1 has overflowed

TCNT1H = 0xFC; //reload counter high value

TCNT1L = 0x18; //reload counter low value

num++;

if(led_start)

{

if(fx==1) PORTB=table0[count];

if(fx==2) PORTB=table1[count];

if(num>300)

{

num=0;

count++;

count%=8;

}

}

else

{

PORTB=0xff;

}

}

四、proteus仿真设计

Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
代码游侠5 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
CODECOLLECT9 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen10 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠12 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_12 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技15 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计15 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
小龙报16 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业16 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能16 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微