目录
摘 2
1 题目 3
2 电路原理图设计 3
21 传送带产品计数器(LED显示)电路原理图 3
22 LED显示模块 3
23 置数模块 4
3 软件系统设计 5
31 软件系统流程结构 5
32 C51程序 5
33计数程序模块 8
4 仿真调试 11
5 总 11
参 考 文 献 13
致 谢 14
摘
MCS51系列单片机 LCD显示 LCM1602
1 题目
传送带产品计数器设计(LCD显示)功求:
MCS51系列单片机作控制器采LCM1602进行计数显示采光电传感器计数 键控制传送带电机起停 拨码盘预置计数值计数预定值时传送带停止键传送带继续运行
2 电路原理图设计
21 传送带产品计数器(LED显示)电路原理图
硬件原理图图示包括显示模块键模块电机控制模块置数模块
22 LED显示模块
4位LED数码显示数字通NPN驱动数码
23 置数模块
8位薄码盘5位薄码盘组合组成高13位二进制数8191置数值利4位数码
3 软件系统设计
31 软件系统流程结构
32 C51程序
*
文件名:lcd1602h头文件
功:LCD1602驱动函数声明
*
#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初始化函数
*
void LCD_Initial()
*
功:LCD显示字符(ASIIC码)函数
参数:x列0~15y行0~1str显示字符串指针
*
void LCD_Prints(uchar x uchar yuchar *str)#endif
*
文件名:lcd1602c
函数功:LCD1602驱动函数
原理:采普通IO口方式模拟LCD1602时序未采总线方式
*
#include
#include
#include lcd1602h
*
功:部等函数
返回参数:P0数
*
uchar LCD_Wait(void)
{LcdRs0
LcdRw1 _nop_()
LcdEn1 _nop_()
while(DBPort&0x80)
* Proteus仿真时屏蔽语句否会进入死循环
实际硬件操作时开语句*
LcdEn0
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)
{LcdEn0
LcdRsstyle
LcdRw0 _nop_()
DBPortinput _nop_()
LcdEn1 _nop_()
LcdEn0 _nop_()
LCD_Wait()}
*
功:设置LCD显示模式
参数:DisplayMode 见面定义
*
显示模式定义
#define LCD_SHOW 0x04 显示开
#define LCD_HIDE 0x00 显示关
#define LCD_CURSOR 0x02 显示光标
#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 画面移
void LCD_SetInput(uchar InputMode)
{LCD_Write(LCD_COMMAND 0x04|InputMode)}
初始化LCD 详见LCD1602h中说明
void LCD_Initial()
{LcdEn0
LCD_Write(LCD_COMMAND0x38) 8位数端口2行显示5*7点阵
LCD_Write(LCD_COMMAND0x38) 句省
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR) 开启显示 光标
LCD_Write(LCD_COMMANDLCD_CLEAR_SCREEN) 清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE) AC递增 画面}
*
功:液晶字符显示位置函数
参数:x列0~15y行0~1
*
void LCD_Pos(uchar x uchar y)
{if(y0)
LCD_Write(LCD_COMMAND0x80|x)
if(y1)
LCD_Write(LCD_COMMAND0x80|(x0x40))}
字符(ASIIC码)输出液晶显示 详见LCD1602h中说明
void LCD_Prints(uchar x uchar yuchar *str)
{LCD_Pos(xy)
while(*str'\0'){ LCD_Write(LCD_DATA*str) str++}}
33计数程序模块
#includelcd1602h
#define uchar unsigned char
#define uint unsigned int
uchar out[6]
sbit STAR_KEY P3^2定义键单片机连接引脚
sbit L0P1^0 定义SFR中引脚位
sbit L1P1^1
sbit L2P1^2
sbit L3P1^3
sbit L4P1^4
sbit L5P1^5
sbit L6P1^6
sbit L7P1^7
sbit MOTORP3^0
uchar n[2]{10}
void delayms(uint x) 延时子程序
{uchar y
while(x){for(y0y<123y++){}}
uchar Keynum() 键子程序1
{uchar key0
STAR_KEY1 置初值
if(STAR_KEY0){delayms(10)if(STAR_KEY0)n[0]0n[1]1} STAR键n[0]0n[1]1return n[1] 返回n值}
void xianshi(uint dispbuf) 显示子程序
{out[0]dispbuf10000+0x30
out[1]((dispbuf10000)1000)+0x30
out[2]((dispbuf1000)100)+0x30
out[3]((dispbuf100)10)+0x30
out[4]dispbuf10+0x30
out[5]'\0'
LCD_Initial() LCD初始化
LCD_Prints(1 0The Speed Is) LCD输出
LCD_Prints(10 1nmin)
LCD_Prints(4 1out) }
uint qiuzhi() 求拨码盘置数值子程序
{ uchar a
uchar b
uchar c
uchar d
uchar e
uchar f
uchar g
uchar h
uint p0
if (L01) {a1} else {a0} 电信号变数字值
if (L11) {b1} else {b0}
if (L21) {c1} else {c0}
if (L31) {d1} else {d0}
if (L41) {e1} else {e0}
if (L51) {f1} else {f0}
if (L61) {g1} else {g0}
if (L71) {h1} else {h0}
pa+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
return p 返回求P值}
void main(void) 程序
{uint q
IT01 负跳变触发
EA1 开总允许中断
EX01 开INTO中断
TMOD0X05 置T0计数器 方式1
TL00 置计数器初值
TH00
while(1) 限循环
{ qqiuzhi() 调求值子程序求出置数
if (MOTOR1) {xianshi(q)} else {xianshi(TL0)Keynum()TR0n[1]} 电动机关闭时显示薄码盘置数停止计数电机启动时开始计数显示计数值
if (TL0q) {TR00MOTOR1} else {Keynum()MOTORn[0]} }}
计数值置数相时关闭电机停止计数计数值等时电机启动关闭交键控制存计数值超置数值情况 void Int0(void) interrupt 0 中断服务程序工作寄存器0组
{ TL00TR01 }重置计数值重新开始计数
4 仿真调试
5 总
整设计通软件硬件调试
参 考 文 献
[1]胡汉单片机原理接口技术[M]北京清华学出版社1996
[2]张毅刚MCS51单片机应设计[M]哈尔滨哈尔滨工业学出版社1997
致 谢
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档