msp自带的液晶驱动怎么用,求电路图

msp自带的液晶驱动怎么用,求电路图,第1张

驱动电路(Drive Circuit),位于主电路和控制电路之间,用来对控制电路的信号进行放大的中间电路(即放大控制电路的信号使其能够驱动功率薯悔晶体管),称为驱动电路。

驱动电路的基本任务,就是将信息电子电路传来的信号按照其控制目标的要求,转换为加在电力电子器件控制端和公共端之间,可以使其开通或关断的信号。

对半控型器件只需提供开通控制信号,对全控型器件则既要提供开通控数备正制信号,又要提供关断控制信号,以保证器件按滚银要求可靠导通或关断。

其实就是简单的MSP430驱动12864带汉字字库液晶的程序加上时钟(建议用时钟芯片如:DS1302,DS12C887)的结合,这两个程序网上应该都能找到。当然也可以通过定时器来产生,不过时间误差较大。如果你只想别人给你写好程序直接用的圆颤话可能性不大,几乎没培袜有人愿意来花这配腔激样的时候来帮人写程序。如果在具体实现过程中遇到什么问题再来问的话相信会得到你满意的答案。这里只是提个建议。

** 1602A液晶屏驱动程序** 晶 振 频 率:11.0592M*****************************************/#include <reg51.h>#define uchar unsigned char#define uint unsigned int sbit LCM_E=P3^5//定义接口sbit LCM_RW=P3^6sbit LCM_RS=P3^7#define LCM_Data P1//数据接口 void LCM_WriteData(uchar WDLCM)void LCM_WriteCommand(uchar WCLCM,BuysC)uchar LCM_ReadData(void)uchar LCM_ReadStatus(void)void LCM_Init(void)void DisplayOneChar(uchar X, uchar Y, uchar DData)void DisplayListChar(uchar X, uchar Y, uchar code *DData)void Delay5Ms(void)void Delay400Ms(void)uchar code uctech[] = {"1602A"}uchar code net[] = {"www.52c51.com"}void main(void){Delay400Ms()//启动等待,等LCM讲入工作状态LCM_Init()//LCM初始化Delay5Ms()//延时片刻(可不要) DisplayListChar(6, 1, uctech)DisplayListChar(0, 0, net)LCM_ReadData()//测试用句无意义LCM_Data=255while(1)} /****************************1602A写数据函数**************************//*函数原型:void LCM_WriteData(uchar WDLCM)/*函数功能:1602A写数据/*输入参数:要写入的数据/*输出参数:无/*调用模块:/**********************************************************************/ void LCM_WriteData(uchar WDLCM){LCM_ReadStatus()//检测忙LCM_Data = WDLCMLCM_RS = 1LCM_RW = 0LCM_E = 0//若晶振速度太高可以在这后加小的延时LCM_E = 0//延盯正时LCM_E = 1} /****************************1602A写指令函数**************************//*函数原型:void LCM_WriteCommand(uchar WCLCM,BuysC)/*函数迟则昌功能:1602A写指令/*输入参数:要写入的指令/*输出参数:无/*调用模块:/**********************************************************************/ void LCM_WriteCommand(uchar WCLCM,BuysC)//BuysC为0时忽略忙检测{if (BuysC) LCM_ReadStatus()//根据需要检测忙码扒LCM_Data = WCLCMLCM_RS = 0LCM_RW = 0LCM_E = 0LCM_E = 0LCM_E = 1} /****************************1602A读数据函数**************************//*函数原型:uchar LCM_ReadData(void)/*函数功能:1602A读数据/*输入参数:无/*输出参数:1602A返回的数据/*调用模块:/**********************************************************************/ uchar LCM_ReadData(void){LCM_RS = 1LCM_RW = 1LCM_E = 0LCM_E = 0LCM_E = 1return(LCM_Data)} /****************************1602A读状态函数**************************//*函数原型:uchar LCM_ReadData(void)/*函数功能:1602A读状态/*输入参数:无/*输出参数:1602A返回的状态/*调用模块:/**********************************************************************/ uchar LCM_ReadStatus(void){LCM_Data = 0xFFLCM_RS = 0LCM_RW = 1LCM_E = 0LCM_E = 0LCM_E = 1while (LCM_Data &0x80)//检测忙信号return(LCM_Data)} /****************************1602A初始化函数**************************//*函数原型:void LCM_Init(void)/*函数功能:1602A初始化/*输入参数:无/*输出参数:无/*调用模块:/**********************************************************************/ void LCM_Init(void){LCM_Data = 0LCM_WriteCommand(0x38,0)//三次显示模式设置,不检测忙信号Delay5Ms()LCM_WriteCommand(0x38,0)Delay5Ms()LCM_WriteCommand(0x38,0)Delay5Ms()LCM_WriteCommand(0x38,1)//显示模式设置,开始要求每次检测忙信号LCM_WriteCommand(0x08,1)//关闭显示LCM_WriteCommand(0x01,1)//显示清屏LCM_WriteCommand(0x06,1)// 显示光标移动设置LCM_WriteCommand(0x0C,1)// 显示开及光标设置} /******************1602A按指定位置显示一个字符函数**********************//*函数原型:void DisplayOneChar(uchar X, uchar Y, uchar DData)/*函数功能:1602A按指定位置显示一个字符/*输入参数:X坐标 Y坐标 要显示的字符/*输出参数:无/*调用模块:/**********************************************************************/ void DisplayOneChar(uchar X, uchar Y, uchar DData){Y &= 0x1X &= 0xF//限制X不能大于15,Y不能大于1if (Y) X |= 0x40//当要显示第二行时地址码+0x40X |= 0x80// 算出指令码LCM_WriteCommand(X, 0)//这里不检测忙信号,发送地址码LCM_WriteData(DData)} /*******************1602A按指定位置显示一串字符函数*********************//*函数原型:void DisplayListChar(uchar X, uchar Y, uchar code *DData)/*函数功能:1602A按指定位置显示一个字符/*输入参数:X坐标 Y坐标 要显示字符串的首地址/*输出参数:无/*调用模块:/**********************************************************************/ void DisplayListChar(uchar X, uchar Y, uchar code *DData){uchar ListLengthListLength = 0Y &= 0x1X &= 0xF//限制X不能大于15,Y不能大于1while (DData[ListLength]>0x20)//若到达字串尾则退出{if (X <= 0xF)//X坐标应小于0xF{DisplayOneChar(X, Y, DData[ListLength])//显示单个字符ListLength++X++}}} /********************5ms延时函数************************//*函数原型:void Delay5Ms(void)/*函数功能:5ms延时/*输入参数:无/*输出参数:无/*调用模块:/**********************************************************************/ void Delay5Ms(void){unsigned int TempCyc = 5552while(TempCyc--)} /********************400ms延时延时函数************************//*函数原型:void Delay400Ms(void)/*函数功能:400ms延时延时/*输入参数:无/*输出参数:无/*调用模块:/**********************************************************************/ void Delay400Ms(void){uchar TempCycA = 5unsigned int TempCycBwhile(TempCycA--){TempCycB=7269while(TempCycB--)}}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12521462.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存