您好,欢迎来到好土汽车网。
搜索
您的当前位置:首页传送带产品计数器的设计(LCD显示)

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

来源:好土汽车网


目录

摘要 ................................................................................................................................................................................................................................ 1 1 题目 ........................................................................................................................................................................................................................... 2 2 电路原理图的设计 ............................................................................................................................................................................................. 2 2.1 传送带产品计数器(LED显示)电路原理图 ................................................................................................................................... 2 2.2 LED显示模块 .................................................................................................................................................................................................. 3 2.3 置数模块 .......................................................................................................................................................................................................... 4 3 软件系统设计 ...................................................................................................................................................................................................... 4 3.1 软件系统的流程结构 ................................................................................................................................................................................. 5 3.2 C51程序 ........................................................................................................................................................................................................ 5 3.3计数程序模块 ............................................................................................................................................................................................... 13 4 仿真及调试 ........................................................................................................................................................................................................ 19 5 总论 ........................................................................................................................................................................................................................ 19 参 考 文 献 ............................................................................................................................................................................................................. 21 致 谢 ...................................................................................................................................................................................................................... 22

摘要

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

1

1 题目

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

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

2 电路原理图的设计

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

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

2

LCD1LM016LVCCRV11kVSSVDDVEERSRWE456D0D1D2D3D4D5D6D771011121314RP110*8VCC1U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161718XTAL29RST234567123+12V+12v计数值设定DSW1161514131211109OFFON293031PSENALEEAVCCRL112V电机急停1234567812345678R1100P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51U21652VCC4OPTOCOUPLER-NPNR310kD11N4001R22kQ5NPNDIPSW_8计数R410kU1(P3.4/T0)重启动R55k 2.2 LED显示模块

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

3

LCD1LM016LVSSVDDVEERSRWE45612371011121314D0D1D2D3D4D5D6D7 2.3 置数模块 使用8位薄码盘和5位薄码盘组合来组成最高13位的二进制数,即8191的最大置数值,很好的利用了4位数码管。 VCC计数值设定DSW1161514131211109OFFON12345678U21652VCC4OPTOCOUPLER-NPNDIPSW_8 3 软件系统设计

4

3.1 软件系统的流程结构

3.2 C51程序

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

文件名:lcd1602.h头文件

功能:LCD1602驱动函数的声明

5

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

#ifndef _LCD1602_H_

#define _LCD1602_H_

#include

#define uint unsigned int

#define uchar unsigned char

//接口定义

sbit LcdRs = P2^0;

sbit LcdRw = P2^1;

sbit LcdEn = P2^2;

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

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

功能:LCD初始化函数

6

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

void LCD_Initial();

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

功能:LCD显示字符(ASIIC码)函数

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

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

void LCD_Prints(uchar x, uchar y,uchar *str);#endif

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

文件名:lcd1602.c

函数功能:LCD1602的驱动函数

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

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

#include

7

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

#include \"lcd1602.h\"

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

功能:内部等待函数

返回参数:P0数据

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

uchar LCD_Wait(void)

{LcdRs=0;

LcdRw=1; _nop_();

LcdEn=1; _nop_();

//while(DBPort&0x80);

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

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

8

LcdEn=0;

return DBPort;}

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

功能:写LCD命令/数据 函数

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

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

#define LCD_COMMAND 0 // 命令

#define LCD_DATA 1 // 数据

#define LCD_CLEAR_SCREEN 0x01 // 清屏

#define LCD_HOMING 0x02 // 光标返回原点

void LCD_Write(bit style, uchar input)

{LcdEn=0;

LcdRs=style;

9

LcdRw=0; _nop_();

DBPort=input; _nop_();

LcdEn=1; _nop_();

LcdEn=0; _nop_();

LCD_Wait();}

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

功能:设置LCD显示模式

参数:DisplayMode 见下面的定义

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

//显示模式定义

#define LCD_SHOW 0x04 //显示开

#define LCD_HIDE 0x00 //显示关

#define LCD_CURSOR

0x02 //显示光标

10

#define LCD_NO_CURSOR 0x00 //无光标

#define LCD_FLASH 0x01 //光标闪动

#define LCD_NO_FLASH 0x00 //光标不闪动

void LCD_SetDisplay(uchar DisplayMode)

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

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

功能:设置LCD输入模式

参数:InputMode 见下面的定义

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

#define LCD_AC_UP 0x02 // 地址计数器增加方式

#define LCD_AC_DOWN 0x00 // 此为缺省设置

#define LCD_MOVE 0x01 // 画面可平移

#define LCD_NO_MOVE

0x00 // 画面不可平移

11

void LCD_SetInput(uchar InputMode)

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

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

void LCD_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;

12

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

void LCD_Pos(uchar x, uchar y)

{if(y==0)

LCD_Write(LCD_COMMAND,0x80|x);

if(y==1)

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

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

void LCD_Prints(uchar x, uchar y,uchar *str)

{LCD_Pos(x,y);

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

3.3计数程序模块

#include\"lcd1602.h\"

#define uchar unsigned char

13

#define uint unsigned int

uchar out[6];

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

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

sbit L1=P1^1;

sbit L2=P1^2;

sbit L3=P1^3;

sbit L4=P1^4;

sbit L5=P1^5;

sbit L6=P1^6;

sbit L7=P1^7;

sbit MOTOR=P3^0;

uchar n[2]={1,0};

14

void delayms(uint x) //延时子程序

{uchar y;

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

uchar Keynum() //按键子程序1

{uchar key=0;

STAR_KEY=1; //置初值

if(STAR_KEY==0){delayms(10);if(STAR_KEY==0)n[0]=0;n[1]=1;} n[0]=0;n[1]=1return n[1]; //返回n值}

void xianshi(uint dispbuf) //显示子程序

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

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

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

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

15

//按下STAR键则

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

out[5]='\\0';

LCD_Initial(); //LCD初始化

LCD_Prints(1, 0,\"The Speed Is\"); //LCD输出

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

LCD_Prints(4, 1,out); }

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

{ uchar a;

uchar b;

uchar c;

uchar d;

uchar e;

uchar f;

16

uchar g;

uchar h;

uint p=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;

17

return p; // 返回所求的P值}

void main(void) //主程序

{uint q;

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];} //当电动机关闭时显示用薄码盘所置的数并停止计数,电机启动时则开始计数,并显示计数值

18

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

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

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

4 仿真及调试

LCD1LM016LVCCRV11kVSSVDDVEERSRWE456D0D1D2D3D4D5D6D771011121314RP110*8VCC1U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161718XTAL29RST234567123+12V+12v计数值设定DSW1161514131211109OFFON293031PSENALEEAVCCRL112V电机急停1234567812345678R1100P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51U21652VCC4OPTOCOUPLER-NPNR310kD11N4001R22kQ5NPNDIPSW_8计数R410kU1(P3.4/T0)重启动R55k 5 总论

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

19

20

参 考 文 献

[1]胡汉才.单片机原理及接口技术[M].北京:清华大学出版社.1996.

[2]张毅刚.MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,1997.

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

21

致 谢

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

22

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- howto234.com 版权所有 湘ICP备2022005869号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务