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

上传人:re****.1 文档编号:396429892 上传时间:2024-02-06 格式:DOCX 页数:14 大小:96.05KB
返回 下载 相关 举报
传送带产品计数器的设计(LCD显示)_第1页
第1页 / 共14页
传送带产品计数器的设计(LCD显示)_第2页
第2页 / 共14页
传送带产品计数器的设计(LCD显示)_第3页
第3页 / 共14页
传送带产品计数器的设计(LCD显示)_第4页
第4页 / 共14页
传送带产品计数器的设计(LCD显示)_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《传送带产品计数器的设计(LCD显示)》由会员分享,可在线阅读,更多相关《传送带产品计数器的设计(LCD显示)(14页珍藏版)》请在金锄头文库上搜索。

1、目录摘要21 题目32 电路原理图的设计32.1 传送带产品计数器(LED显示)电路原理图32.2 LED显示模块32.3 置数模块43 软件系统设计53.1 软件系统的流程结构53.2 C51程序53.3计数程序模块84 仿真及调试115 总论11参 考 文 献13致 谢14摘要MCS-51系列单片机 LCD显示 LCM16021 题目传送带产品计数器的设计(LCD显示)功能要求: 用MCS-51系列单片机作为控制器;采用LCM1602进行计数显示;采用光电传感器计数; 用按键控制传送带电机的起停; 用拨码盘预置计数值,计数到预定值时,传送带停止,按键后传送带继续运行。2 电路原理图的设计2

2、.1 传送带产品计数器(LED显示)电路原理图硬件原理图如下图所示,包括显示模块,按键模块,电机控制模块,置数模块。2.2 LED显示模块使用4位LED数码管来显示数字,通过NPN管来驱动数码管。2.3 置数模块使用8位薄码盘和5位薄码盘组合来组成最高13位的二进制数,即8191的最大置数值,很好的利用了4位数码管。 3 软件系统设计3.1 软件系统的流程结构3.2 C51程序/*-文件名:lcd1602.h头文件功能:LCD1602驱动函数的声明-*/#ifndef _LCD1602_H_#define _LCD1602_H_#include #define uint unsigned in

3、t#define uchar unsigned char/接口定义sbit LcdRs= P20;sbit LcdRw= P21;sbit LcdEn = P22;sfr DBPort = 0x80; /P0口为LCD数据总线/*-功能:LCD初始化函数-*/void LCD_Initial();/*-功能:LCD显示字符(ASIIC码)函数参数:x-列015;y-行01;str-要显示的字符串指针-*/void LCD_Prints(uchar x, uchar y,uchar *str);#endif/*-文件名:lcd1602.c函数功能:LCD1602的驱动函数原理:采用普通IO口方式

4、模拟LCD1602时序,未采用总线方式-*/#include #include /次头文件中定义有_nop_()函数#include lcd1602.h/*-功能:内部等待函数 返回参数:P0数据-*/uchar LCD_Wait(void)LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();/while(DBPort&0x80);/* 在用Proteus仿真时,屏蔽此语句,否则会进入死循环, 实际硬件操作时打开此语句.*/ LcdEn=0;return DBPort;/*-功能:写LCD命令/数据 函数 参数:style为写命令/数据,0-命令,1-数据;inpu

5、t为写入的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;LcdRw=0;_nop_();DBPort=input;_nop_(); LcdEn=1;_nop_(); LcdEn=0;_nop_();LCD_Wait();/*-功能:设置LCD显示模式参数:DisplayMode见

6、下面的定义-*/显示模式定义#define LCD_SHOW0x04 /显示开#define LCD_HIDE0x00 /显示关 #define LCD_CURSOR0x02 /显示光标#define LCD_NO_CURSOR0x00 /无光标 #define LCD_FLASH0x01 /光标闪动#define LCD_NO_FLASH0x00 /光标不闪动void LCD_SetDisplay(uchar DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);/*-功能:设置LCD输入模式参数:InputMode见下面的定义-*/#de

7、fine LCD_AC_UP0x02 / 地址计数器增加方式#define LCD_AC_DOWN0x00 / 此为缺省设置#define LCD_MOVE0x01 / 画面可平移#define LCD_NO_MOVE0x00 / 画面不可平移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

8、(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-列015;y-行01; -*/void LCD_Pos(uchar x, uchar y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND

9、,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计数程序模块#includelcd1602.h#define uchar unsigned char#define uint unsigned int uchar out6;sbit STAR_KEY =P32;/定义键与单片机的连接引脚sbit L0=P10; /定义SFR中引脚的位s

10、bit L1=P11;sbit L2=P12;sbit L3=P13;sbit L4=P14;sbit L5=P15;sbit L6=P16;sbit L7=P17;sbit MOTOR=P30;uchar n2=1,0;void delayms(uint x) /延时子程序uchar y;while(x-)for(y=0;y123;y+);uchar Keynum() /按键子程序1uchar key=0;STAR_KEY=1; /置初值if(STAR_KEY=0)delayms(10);if(STAR_KEY=0)n0=0;n1=1; /按下STAR键则n0=0;n1=1return n1; /返回n值void xianshi(uint dispbuf) /显示子程序out0=dispbuf/10000+0x30;out1=(dispbuf%10000)/1000)+0x30;out2=(dispbuf%1000)/100)+0x30;out3=(dispbuf%100)/10)+0x30;out4=dispbuf%10+0x30;out5=0; LCD_Initial();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号