77范文网 - 专业文章范例文档资料分享平台

多功能数据采集控制板的设计与实现 - 图文(6)

来源:网络收集 时间:2019-03-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

motordir.bits.motor42=0; } CCAP4L=speed; CCAP4H=speed; break; default: break; } MotorOutPort=motordir.all; }

void stopmotor() //停止电机运转 { MotorOutPort=0x00; }

4.4 液晶显示驱动程序设计

液晶显示函数比较复杂,在使用的时候要注意延时函数的搭配,具体实现如下:

#define Uchar unsigned char #define Uint unsigned int #define DATA_PORT P0

sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2;

sbit P1_5 = P1^5;

sbit BLK = P1^6; //P16:LCD1602液晶背光控制引脚

void lcd_busy(); //液晶忙检测函数

void lcd_wcmd(unsigned char cmd, bit Check);//写液晶命令函数 void lcd_wdat(unsigned char dat);//写数据函数 void lcd_init();//液晶初始化

void lcd_pos(unsigned char xpos, unsigned char ypos);//液晶显示定位 void wr_string(unsigned char str[]);//写字符函数 void delayNOP() {

_nop_(); _nop_(); _nop_(); _nop_(); }

/**********************************************************

ms延时子程序

**********************************************************/ void delayms(unsigned int ms) {

unsigned char k; while (ms--) {

for (k = 0; k < 114; k++) ; } }

/********************************************************** 检查LCD忙状态

lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据。

**********************************************************/ void lcd_busy() {

bit busy; busy = 1; while (busy) {

LCD_RS = 0; LCD_RW = 1; LCD_EN = 1;

busy = (bit)(DATA_PORT &0x80); delayNOP(); }

LCD_EN = 0; }

/********************************************************** 写指令数据到LCD

RS=L,RW=L,EN 下降沿执行写操作。D0-D7=指令码。 Check=1,进行忙检测。

**********************************************************/ void lcd_wcmd(unsigned char cmd, bit Check) {

if (Check)

lcd_busy(); //进行忙检测

LCD_RS = 0; LCD_RW = 0;

LCD_EN = 1;

DATA_PORT = cmd; delayNOP(); LCD_EN = 0; }

/********************************************************** 写显示数据到LCD

RS=H,RW=L,EN 下降沿执行写操作。D0-D7=数据。

**********************************************************/ void lcd_wdat(unsigned char dat) {

lcd_busy(); //进行忙检测 LCD_RS = 1; LCD_RW = 0; LCD_EN = 1;

DATA_PORT = dat; delayNOP(); LCD_EN = 0; }

/********************************************************** LCD初始化设定

**********************************************************/ void lcd_init() {

delayms(15);

lcd_wcmd(0x38, 0); //16*2显示,5*7点阵,8位数据 delayms(5);

lcd_wcmd(0x38, 0); //不进行忙检测,强制执行三次。 delayms(5);

lcd_wcmd(0x38, 0); delayms(5);

lcd_wcmd(0x38, 1); //进行忙检测 delayms(5);

lcd_wcmd(0x0c, 1); //显示开,关光标 delayms(5);

lcd_wcmd(0x06, 1); //移动光标 delayms(5);

lcd_wcmd(0x01, 1); //清除LCD的显示内容 delayms(5); }

/********************************************************** 设定显示位置

**********************************************************/ void lcd_pos(unsigned char xpos, unsigned char ypos) {

if (ypos == 0x01)

lcd_wcmd((xpos | 0x80), 1); if (ypos == 0x02)

lcd_wcmd((xpos | 0xc0), 1); }

/********************************************************** 写字符串子函数

**********************************************************/ void wr_string(unsigned char str[]) {

unsigned char num = 0;

while (str[num]) {

lcd_wdat(str[num++]); delayms(150); } }

4.5 数字量控制驱动程序设计

输入函数如下: #include \

Uchar pdata DigInPort _at_ 0x5f; //分配输入端口地址

/***************************************************** 功能:digin

描述:数字量输入函数 参数:通道号 返回:数字量

*****************************************************/

Uchar digin(Uchar chanel) { Uchar diginval; Uchar i; diginval=DigInPort; for(i=0;i

diginval>>=1; } diginval&=0x01; return diginval; }

/***************************************************** 功能:diginal

描述:数字量输入函数 参数:无

返回:所有输入通道值

*****************************************************/

Uchar diginall(void) {

Uchar val; val=DigInPort; return val; }

数字量输出控制函数如下:

//*****************************************************************************

#include \ #include \#include \

Uchar pdata DigOutPort _at_ 0x3f; //分配输出地址

/***************************************************** 功能:digout

描述:数字量输出函数 参数:通道号,输出值 返回:无

*****************************************************/

void digout(Uchar chanel,Uchar val) { static union DIGOUT_REG data digoutval={0xff}; switch (chanel) { case 0: digoutval.bits.digout0=val; break;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库多功能数据采集控制板的设计与实现 - 图文(6)在线全文阅读。

多功能数据采集控制板的设计与实现 - 图文(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/528588.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: