标题:
单片机+LCD1602怎么显示变量阻值?
[打印本页]
作者:
yinnan128
时间:
2021-3-12 10:07
标题:
单片机+LCD1602怎么显示变量阻值?
本帖最后由 yinnan128 于 2021-3-12 16:21 编辑
自己搞定了,变量需要转成
ASCII码
网上找的代码,自己改了部分,现在想显示变量的数值,一直没成功。我打算LCD1602第一位地址显示变量s的数值,第二位地址显示c的数值,改代码如下
uchar s=5;//需要加
ASCII码s=5+0x30
uchar c=6;
char maichong1[ ] = "sc";//脉冲1
显示出来的却是sc,而不是56
unsigned char Custom0[8]={0x0E,0x0A,0x0A,0x0A,0x0A,0x0A,0x1B};//自定义脉冲1字符
uchar maichong1[ ] = "12";//脉冲1
void write_nibble_lcd(unsigned char Val) //使用的是4位数据传输
{
LCDRW = 0;
LCDEN = 1; //写入时序
D0 = D1 = D2 = D3 = 0;
if(Val & 0x01)
D0 = 1;
if(Val & 0x02)
D1 = 1;
if(Val & 0x04)
D2 = 1;
if(Val & 0x08)
D3 = 1;
LCDEN = 0; //使能清零
}
void write_lcd(unsigned char Val) //发送一个字符
{
write_nibble_lcd(Val >> 4);
write_nibble_lcd(Val);
DelayXms(6);
}
/*******************************写命令************************************/
void write_com(uchar com)
{
LCDRS = 0;
LCDRW = 0;
write_lcd(com);
}
/*******************************写数据***********************************/
void write_data(uchar date)
{
LCDRS = 1; //写入数据 0 选择发送命令 1 选择发送数据
LCDRW = 0;
write_lcd(date);
}
/*******************************显示位置设定****************************/
void lcd1_pos(uchar pos) //设定显示位置在第一行
{ //第一行第几列直接写pos为几,第二行pos从0x40开始
write_com(pos | 0x80) ; //数据指针=80+地址变量
}
void lcd2_pos(uchar pos) //设定显示位置在第二行
{ //第一行第几列直接写pos为几,第二行pos从0x40开始
write_com(pos | 0xc0) ; //数据指针=80+地址变量
}
/******************************自定义字符写入CGRAM**********************/
void Custom()
{
unsigned char i ;
write_com(0x40) ; //写入第0个自定义脉冲1字符
for(i=0;i<8;i++)
{write_data(Custom0[i]);}
}
/******************************自定义字符显示**********************/
void LCD1602_Custom()
{
/*******************第一行*******************/
Custom(); //执行写入自定义字符程序
lcd1_pos(0); //在LCD第一行第0个位置
write_data(0);//显示自定义《脉冲1》字符
}
/******************************参数 ************************************/
void HJ_CS()
{
uchar m;
lcd1_pos(1) ; //设置显示位置为第一行的第1个字符
m=0;
while(maichong1[m]!=0)
{
write_data(maichong1[m]) ; //显示脉冲1时间
m++;
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1