基于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 分钟前
STM32FreeRtos入门(四)——任务状态和调度
stm32·单片机·嵌入式硬件
充哥单片机设计11 分钟前
【STM32项目开源】基于STM32的智能天然气火灾监控
stm32·单片机·嵌入式硬件
充哥单片机设计14 分钟前
【STM32项目开源】基于STM32的智能仓库火灾检测系统
stm32·单片机·嵌入式硬件
A9better3 小时前
嵌入式开发学习日志38——stm32之看门狗
stm32·嵌入式硬件·学习
小莞尔3 小时前
【51单片机】【protues仿真】基于51单片机智能路灯控制系统
c语言·stm32·单片机·嵌入式硬件·51单片机
A9better13 小时前
嵌入式开发学习日志36——stm32之USART串口通信前述
stm32·单片机·嵌入式硬件·学习
思诺学长13 小时前
BMS(电池管理系统)的主要功能和架构简述
单片机·嵌入式硬件
czhaii13 小时前
全局不关总中断的 RTOS / CosyOS-II for STCAI MCU
单片机
qq_4017004114 小时前
STM32低功耗Tickless模式
stm32·单片机
点灯小铭16 小时前
基于单片机的自动存包柜设计
数据库·单片机·mongodb·毕业设计·课程设计