传送带产品计数器的设计LCD显示.docx

上传人:b****8 文档编号:30463618 上传时间:2023-08-15 格式:DOCX 页数:13 大小:133.96KB
下载 相关 举报
传送带产品计数器的设计LCD显示.docx_第1页
第1页 / 共13页
传送带产品计数器的设计LCD显示.docx_第2页
第2页 / 共13页
传送带产品计数器的设计LCD显示.docx_第3页
第3页 / 共13页
传送带产品计数器的设计LCD显示.docx_第4页
第4页 / 共13页
传送带产品计数器的设计LCD显示.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

传送带产品计数器的设计LCD显示.docx

《传送带产品计数器的设计LCD显示.docx》由会员分享,可在线阅读,更多相关《传送带产品计数器的设计LCD显示.docx(13页珍藏版)》请在冰豆网上搜索。

传送带产品计数器的设计LCD显示.docx

传送带产品计数器的设计LCD显示

 

摘要

MCS-51系列单片机LCD显示LCM1602

1题目

传送带产品计数器的设计(LCD显示)功能要求:

用MCS-51系列单片机作为控制器;采用LCM1602进行计数显示;采用光电传感器计数;用按键控制传送带电机的起停;用拨码盘预置计数值,计数到预定值时,传送带停止,按键后传送带继续运行。

2电路原理图的设计

2.1传送带产品计数器(LED显示)电路原理图

硬件原理图如下图所示,包括显示模块,按键模块,电机控制模块,置数模块。

2.2LED显示模块

使用4位LED数码管来显示数字,通过NPN管来驱动数码管。

2.3置数模块

使用8位薄码盘和5位薄码盘组合来组成最高13位的二进制数,即8191的最大置数值,很好的利用了4位数码管。

 

3软件系统设计

3.1软件系统的流程结构

3.2C51程序

/*-----------------------------------------------------------

文件名:

lcd1602.h头文件

功能:

LCD1602驱动函数的声明

-----------------------------------------------------------*/

#ifndef_LCD1602_H_

#define_LCD1602_H_

#include

#defineuintunsignedint

#defineucharunsignedchar

//接口定义

sbitLcdRs=P2^0;

sbitLcdRw=P2^1;

sbitLcdEn=P2^2;

sfrDBPort=0x80;//P0口为LCD数据总线

/*-----------------------------------------------------------

功能:

LCD初始化函数

-----------------------------------------------------------*/

voidLCD_Initial();

/*-----------------------------------------------------------

功能:

LCD显示字符(ASIIC码)函数

参数:

x-列0~15;y-行0~1;str-要显示的字符串指针

-----------------------------------------------------------*/

voidLCD_Prints(ucharx,uchary,uchar*str);#endif

/*-----------------------------------------------------------

文件名:

lcd1602.c

函数功能:

LCD1602的驱动函数

原理:

采用普通IO口方式模拟LCD1602时序,未采用总线方式

-----------------------------------------------------------*/

#include

#include//次头文件中定义有_nop_()函数

#include"lcd1602.h"

/*-----------------------------------------------------------

功能:

内部等待函数

返回参数:

P0数据

-----------------------------------------------------------*/

ucharLCD_Wait(void)

{LcdRs=0;

LcdRw=1;_nop_();

LcdEn=1;_nop_();

//while(DBPort&0x80);

/*在用Proteus仿真时,屏蔽此语句,否则会进入死循环,

实际硬件操作时打开此语句.*/

LcdEn=0;

returnDBPort;}

/*-----------------------------------------------------------

功能:

写LCD命令/数据函数

参数:

style为写命令/数据,0-命令,1-数据;input为写入的8位命令/数据

-----------------------------------------------------------*/

#defineLCD_COMMAND0//命令

#defineLCD_DATA1//数据

#defineLCD_CLEAR_SCREEN0x01//清屏

#defineLCD_HOMING0x02//光标返回原点

voidLCD_Write(bitstyle,ucharinput)

{LcdEn=0;

LcdRs=style;

LcdRw=0;_nop_();

DBPort=input;_nop_();

LcdEn=1;_nop_();

LcdEn=0;_nop_();

LCD_Wait();}

/*-----------------------------------------------------------

功能:

设置LCD显示模式

参数:

DisplayMode见下面的定义

-----------------------------------------------------------*/

//显示模式定义

#defineLCD_SHOW0x04//显示开

#defineLCD_HIDE0x00//显示关

#defineLCD_CURSOR0x02//显示光标

#defineLCD_NO_CURSOR0x00//无光标

#defineLCD_FLASH0x01//光标闪动

#defineLCD_NO_FLASH0x00//光标不闪动

voidLCD_SetDisplay(ucharDisplayMode)

{LCD_Write(LCD_COMMAND,0x08|DisplayMode);}

/*-----------------------------------------------------------

功能:

设置LCD输入模式

参数:

InputMode见下面的定义

-----------------------------------------------------------*/

#defineLCD_AC_UP0x02//地址计数器增加方式

#defineLCD_AC_DOWN0x00//此为缺省设置

#defineLCD_MOVE0x01//画面可平移

#defineLCD_NO_MOVE0x00//画面不可平移

voidLCD_SetInput(ucharInputMode)

{LCD_Write(LCD_COMMAND,0x04|InputMode);}

//初始化LCD详见LCD1602.h中的说明

voidLCD_Initial()

{LcdEn=0;

LCD_Write(LCD_COMMAND,0x38);//8位数据端口,2行显示,5*7点阵

LCD_Write(LCD_COMMAND,0x38);//此句不能省

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//开启显示,无光标

LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏

LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC递增,画面不?

}

/*-----------------------------------------------------------

功能:

液晶字符显示的位置函数

参数:

x-列0~15;y-行0~1;

-----------------------------------------------------------*/

voidLCD_Pos(ucharx,uchary)

{if(y==0)

LCD_Write(LCD_COMMAND,0x80|x);

if(y==1)

LCD_Write(LCD_COMMAND,0x80|(x-0x40));}

//将字符(ASIIC码)输出到液晶显示详见LCD1602.h中的说明

voidLCD_Prints(ucharx,uchary,uchar*str)

{LCD_Pos(x,y);

while(*str!

='\0'){LCD_Write(LCD_DATA,*str);str++;}}

3.3计数程序模块

#include"lcd1602.h"

#defineucharunsignedchar

#defineuintunsignedint

ucharout[6];

sbitSTAR_KEY=P3^2;//定义键与单片机的连接引脚

sbitL0=P1^0;//定义SFR中引脚的位

sbitL1=P1^1;

sbitL2=P1^2;

sbitL3=P1^3;

sbitL4=P1^4;

sbitL5=P1^5;

sbitL6=P1^6;

sbitL7=P1^7;

sbitMOTOR=P3^0;

ucharn[2]={1,0};

voiddelayms(uintx)//延时子程序

{uchary;

while(x--){for(y=0;y<123;y++){;}}

ucharKeynum()//按键子程序1

{ucharkey=0;

STAR_KEY=1;//置初值

if(STAR_KEY==0){delayms(10);if(STAR_KEY==0)n[0]=0;n[1]=1;}//按下STAR键则n[0]=0;n[1]=1returnn[1];//返回n值}

voidxianshi(uintdispbuf)//显示子程序

{out[0]=dispbuf/10000+0x30;

out[1]=((dispbuf%10000)/1000)+0x30;

out[2]=((dispbuf%1000)/100)+0x30;

out[3]=((dispbuf%100)/10)+0x30;

out[4]=dispbuf%10+0x30;

out[5]='\0';

LCD_Initial();//LCD初始化

LCD_Prints(1,0,"TheSpeedIs");//LCD输出

LCD_Prints(10,1,"n/min");

LCD_Prints(4,1,out);}

uintqiuzhi()//求用拨码盘所置数的值的子程序

{uchara;

ucharb;

ucharc;

uchard;

uchare;

ucharf;

ucharg;

ucharh;

uintp=0;

if(L0==1){a=1;}else{a=0;}//将电平信号变为数字的值

if(L1==1){b=1;}else{b=0;}

if(L2==1){c=1;}else{c=0;}

if(L3==1){d=1;}else{d=0;}

if(L4==1){e=1;}else{e=0;}

if(L5==1){f=1;}else{f=0;}

if(L6==1){g=1;}else{g=0;}

if(L7==1){h=1;}else{h=0;}

p=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+g*2*2*2*2*2*2+h*2*2*2*2*2*2*2;

returnp;//返回所求的P值}

voidmain(void)//主程序

{uintq;

IT0=1;//负跳变触发

EA=1;//开总允许中断

EX0=1;//开INTO中断

TMOD=0X05;//置T0为计数器方式1

TL0=0;//置计数器初值

TH0=0;

while

(1)//无限循环

{q=qiuzhi();//调用求值子程序求出所置的数

if(MOTOR==1){xianshi(q);}else{xianshi(TL0);Keynum();TR0=n[1];}//当电动机关闭时显示用薄码盘所置的数并停止计数,电机启动时则开始计数,并显示计数值

if(TL0==q){TR0=0;MOTOR=1;}else{Keynum();MOTOR=n[0];}}}

//当计数值与所置数相同时关闭电机,停止计数,当计数值不等时则将电机启动与关闭交由按键控制,所以不存在计数值超过置数值的情况voidInt0(void)interrupt0//中断服务程序,工作寄存器用0组

{TL0=0;TR0=1;}//重置计数值,重新开始计数

4仿真及调试

 

5总论

整个设计通过了软件和硬件上的调试.......................

参考文献

[1]胡汉才.单片机原理及接口技术[M].北京:

清华大学出版社.1996.

[2]张毅刚.MCS-51单片机应用设计[M].哈尔滨:

哈尔滨工业大学出版社,1997.

....................................................................

致谢

............................................................................

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1