如何在12864(带子库)编写显示变化数字的子程序中文显示程序已会。

如何在12864(带子库)编写显示变化数字的子程序中文显示程序已会。,第1张

#define uchar unsigned char

#define uint unsigned int

#define iDat 1 //数据标志

#define iCmd 0 //指令标志

#define LCDb_RS 0x20 //定义四个控制引脚

#define LCDb_RW 0x40

#define LCDb_E 0x80

#define LCDb_RST 0x04

#define LCDb_L1 0x80 //第一行的地址

#define LCDb_L2 0x90 //第二行的地址

#define LCDb_L3 0x88 //第三行的地址

#define LCDb_L4 0x98 //第四行的地址

#define LCDb_SET_RS P1OUT|=LCDb_RS //四个控制管脚的控制 *** 作

#define LCDb_SET_RW P1OUT|=LCDb_RW

#define LCDb_SET_E P1OUT|=LCDb_E

#define LCDb_SET_RST P8OUT|=LCDb_RST

#define LCDb_CLR_RS P1OUT&=~LCDb_RS

#define LCDb_CLR_RW P1OUT&=~LCDb_RW

#define LCDb_CLR_E P1OUT&=~LCDb_E

#define LCDb_CLR_RST P8OUT&=~LCDb_RST

#define LCDb_DO P4OUT //输出数据总线端口定义

#define LCDb_FUNCTION 0x38 // 液晶模式为8位,2行,58字符

#define LCDb_BASCMD 0x30 // 基本指令集

#define LCDb_CLS 0x01 // 清屏

#define LCDb_HOME 0x02 // 地址返回原点,不改变DDRAM内容

#define LCDb_ENTRY 0x06 // 设定输入模式,光标加,屏幕不移动

#define LCDb_C2L 0x10 // 光标左移

#define LCDb_C2R 0x14 // 光标右移

#define LCDb_D2L 0x18 // 屏幕左移

#define LCDb_D2R 0x1C // 屏幕又移

#define LCDb_ON 0x0C // 打开显示

#define LCDb_OFF 0x08 // 关闭显示

unsigned char RXData;

unsigned char Result[5]; //整数转化成字符串,给LCD显示

/

函数名称: Delayms

功 能: 延时指定毫秒(8M晶振)

参 数: MS--延时的毫秒数

返回值 : 无

/

void Delayms(uint MS)

{

uint i,j;

for( i=0;i<MS;i++)

for(j=0;j<1141;j++);

}

/

函数名称: Delayus

功 能: 延时指定微秒(8M晶振)

参 数: US--延时的微秒数(大约,不是很精确,MS越大越准确)

返回值 : 无

/

void Delayus(uint US)

{

uint i;

US=US5/4;

for( i=0;i<US;i++);

}

void LCD12864_portini()

{

P1DIR=0xFF;

P4DIR=0xFF;

P8DIR=0xFF; //Trig =P8^3输出;

P8OUT |=LCDb_RST;

// P1OUT=0xFF;

}

/

函数名称: LCD12864_sendbyte

功 能: 向12864液晶写入一个字节数据或者指令

参 数: DatCmd--为iDat时是数据,为iCmd时是指令

dByte--为写入12864的数据或者指令

返回值 : 无

/

void LCD12864_sendbyte(uchar DatCmd, uchar dByte)

{

if (DatCmd == iCmd) //指令 *** 作

LCDb_CLR_RS;

else

LCDb_SET_RS;

LCDb_CLR_RW; //写 *** 作

LCDb_SET_E;

LCDb_DO = dByte; //写入数据

//Delayus(500);

Delayms(1);

LCDb_CLR_E;

}

/

函数名称: LCD12864_sendstr

功 能: 向12864液晶写入一个字符串

参 数: ptString--字符串指针

返回值 : 无

/

void LCD12864_sendstr(uchar ptString)

{

while((ptString)!='\0') //字符串未结束一直写

{

LCD12864_sendbyte(iDat, ptString++);

}

}

/

函数名称: LCD12864_clear

功 能: 12864液晶清屏

参 数: 无

返回值 : 无

/

void LCD12864_clear(void)

{

LCD12864_sendbyte(iCmd,LCDb_CLS);

Delayms(2);// 清屏指令写入后,2ms 的延时是很必要的!!!

}

/

函数名称: LCD12864_gotoXY

功 能: 移动到指定位置

参 数: Row--指定的行

Col--指定的列

返回值 : 无

/

void LCD12864_gotoXY(uchar Row, uchar Col)

{

switch (Row) //选择行

{

case 2:

LCD12864_sendbyte(iCmd, LCDb_L2 + Col); break; //写入第2行的指定列

case 3:

LCD12864_sendbyte(iCmd, LCDb_L3 + Col); break; //写入第3行的指定列

case 4:

LCD12864_sendbyte(iCmd, LCDb_L4 + Col); break; //写入第4行的指定列

default:

LCD12864_sendbyte(iCmd, LCDb_L1 + Col); break; //写入第1行的指定列

}

}

/

函数名称: LCD12864_initial

功 能: 12864液晶初始化

参 数: 无

返回值 : 无

/

void LCD12864_initial(void)

{

Delayms(100); // 等待内部复位

LCD12864_portini(); //端口初始化

LCD12864_sendbyte(iCmd, LCDb_FUNCTION); //功能、模式设定

LCD12864_sendbyte(iCmd, LCDb_ON); //打开显示

LCD12864_clear(); //清屏

LCD12864_sendbyte(iCmd, LCDb_ENTRY); // 输入模式设定

}

void Int_char(int data)

{

if(data/1000)

{

Result[0]=data/1000+'0';

Result[1]=data/100%10+'0';

Result[2]=data/10%10+'0';

Result[3]=data%10+'0';

Result[4]=0;

}

else if(data/100)

{

Result[0]=data/100+'0';

Result[1]=data/10%10+'0';

Result[2]=data%10+'0';

Result[3]=0;

Result[4]=0;

}

else if(data/10)

{

Result[0]=data/10%10+'0';

Result[1]=data%10+'0';

Result[2]=0;

Result[3]=0;

Result[4]=0;

}

else

{

Result[0]=data%10+'0';

Result[1]=0;

Result[2]=0;

Result[3]=0;

Result[4]=0;

}

}

这使msp430单片机的程序,只要在主函数中调用函数,就是调用这个函数Int_char(tmp);每一次循环调用一次,这样可以实时显示这个变化温度数值

LCD12864_gotoXY(2,4);

LCD12864_sendstr(" ");

LCD12864_gotoXY(1,0); //第1行,第1列显示

LCD12864_sendstr("正在检测");

LCD12864_gotoXY(2,0); //第2行,第1列显示

LCD12864_sendstr("距离是:");

Int_char(tmp);

你好!

Keil5本身并不提供直接生成流程图的功能,但可以使用一些工具来生成流程图。

下面介绍一些生成Keil5程序流程图和子程序流程图的方法:

使用Doxygen工具

Doxygen是一种自动化文档生成工具,它可以自动分析源代码并生成各种文档,包括流程图。在Keil5中,可以将程序文件导出为一个文件夹,然后使用Doxygen对该文件夹进行分析,生成程序流程图和子程序流程图。具体使用方法可以参考Doxygen的官方文档。

使用GraphViz工具

GraphViz是一种开源的图形可视化工具,它可以生成各种流程图、状态图等。在Keil5中,可以将程序文件导出为一个dot文件,然后使用GraphViz将该文件转换成流程图。具体使用方法可以参考GraphViz的官方文档。

使用Cscope工具

Cscope是一种代码浏览器,它可以方便地查找函数、变量、宏等。在Keil5中,可以使用Cscope查找程序中的函数和调用关系,然后手动绘制流程图和子程序流程图。

数控子程序怎么使用,请看下面具体介绍:

1在主程序中,调用子程序的指令是一个程序段,其格式随具体的数控系统而定,FANUC系统子程序调用格式为

M98

P--L--

式中

M98--子程序调用字;p--子程序列号;

L--子程序调用次数。可以看出,子程序由程序调用字、子程序号和调用次数组成

2.子程序的返回:子程序返回主程序用指令M99,它表示子程序运行结束,请返回到主程序。

3子程序的嵌套:子程序调用下一级子程序称为嵌套。上一级子程序与下一级于程序的关系,与主程序与第一层子程序的关系相同。子程序可以嵌套多少层由具体的数控系统决定。

希望可以帮到你!

一个程序打开另外一个程序=可以

主程序显示子程序=可以(XXXshow)

主程序生成子程序=

难道你要做一个VB开发工具

否则生成(编译)这种功能很难实现!

如果你能弄到"VB60程序"的源代码希望分享下

-

-|||

PS如果你只是想让主程序"释放"另一个程序的话可以使用:外接程序-外接程序管理器中的"VB6

资源管理器",吧一个exe文件添加进资源管理器中,然后用Binary

As

#1输出

是不是按键部份有问题?

WAIF_KEY:

JB KEY1,WM1

LCALL DISP

JNB KEY1,BP1

BP1:

MOV A,MIN 中,JNB那里,本来是判断按键是否松开,若松开,则运行BP1。若未松则等待。你这程序是不管KEY1有没松开,程序都运行到BP1

应改为:

LCALL DISP

JNB KEY1,$-3;即未松开,转上一条指令。就是等待松开,同时显示。这里LCALL 是三字节指令,占3 个单元,所以要$-3 。

同样后面的KEY2、KEY3也同样处理。

程序是按行来处理的,每行是16个点阵,需要2个字节来存储,根据程序表达的意思,点阵表也是按行来建立的,而每次取数只能一个字节,所以i这个行号需要乘以2,ia是每行的字节位置,取值范围为1,2

以上就是关于如何在12864(带子库)编写显示变化数字的子程序中文显示程序已会。全部的内容,包括:如何在12864(带子库)编写显示变化数字的子程序中文显示程序已会。、keil5程序如何生成主程序流程图以及各子程序流程图、数控子程序怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10118441.html

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

发表评论

登录后才能评论

评论列表(0条)

保存