久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
求教單片機(jī)+LCD1602應(yīng)用時(shí)出現(xiàn)第一行空白部分出現(xiàn)了第二行的數(shù)據(jù)
[打印本頁]
作者:
3510
時(shí)間:
2019-6-2 22:43
標(biāo)題:
求教單片機(jī)+LCD1602應(yīng)用時(shí)出現(xiàn)第一行空白部分出現(xiàn)了第二行的數(shù)據(jù)
以下是全部的程序 LCD數(shù)據(jù)寫入的部分我標(biāo)記了下,求大大們幫個(gè)忙
#include <reg52.h> //此文件中定義了單片機(jī)的一些特殊功能寄存器
#define uchar unsigned char
#define uint unsigned int
#define GPIO_DIG P0 //lcd
#define GPIO_KEY P1 //矩陣鍵盤
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通電,其他相斷電
#define Coil_A2 {A1=1;B1=1;C1=0;D1=0;}//AB相通電,其他相斷電
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通電,其他相斷電
#define Coil_B2 {A1=0;B1=1;C1=1;D1=0;}//BC相通電,其他相斷電
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通電,其他相斷電
#define Coil_C2 {A1=0;B1=0;C1=1;D1=1;}//CD相通電,其他相斷電
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通電,其他相斷電
#define Coil_D2 {A1=1;B1=0;C1=0;D1=1;}//DA相通電,其他相斷電
#define LCD_IO P0
typedef unsigned int u16; //對數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
sbit jiaoliuzhengzhuan=P2^3;
sbit jiaoliufanzhuan=P2^4;
sbit k1=P3^0;
sbit k2=P3^1;
sbit A1=P3^2; //定義步進(jìn)電機(jī)連接端口
sbit B1=P3^3;
sbit C1=P3^4;
sbit D1=P3^5;
int zqianwei,zbaiwei,zshiwei,zgewei;
int zjiaodu=0;
int b=0,c=0,d=0;
int j=0,i=0,k=0;
int jiaodu=180;
int shiwei;
int shanshuo;
int gewei;
int e,v,n;
int baiwei;
int weight=0;
int z=0;
int KeyValue; //用來存放讀取到的鍵值
sbit sheng1=P1^4;
sbit sheng2=P1^5;
sbit LCD_RS = P2^6;
sbit LCD_RW = P2^5;
sbit LCD_EN = P2^7;
char code LCD_line2[] = "Weight: 0kg ";
char Timer_buf[] = "00";
char code LCD_line1[] = "jiaodu: 0 du ";
char weight_1[] = "";
unsigned char SetPlace;
unsigned char Speed;
/*******************************************************************************
* 函 數(shù) 名 : delay
* 函數(shù)功能 : 延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us
*******************************************************************************/
void delay1(uint z)
{
uint x, y;
for(x = z; x > 0; x--) for(y = 100; y > 0; y--);
}
//---------------------------------------------------
void W_LCD_Com(uchar com) //寫指令
{
LCD_RS = 0; LCD_IO = com; // LCD_RS和R/W都為低電平時(shí),寫入指令
LCD_EN = 1; delay1(5); LCD_EN = 0; //用EN輸入一個(gè)高脈沖
}
//---------------------------------------------------
void W_LCD_Dat(uchar dat) //寫數(shù)據(jù)
{
LCD_RS = 1; LCD_IO = dat; // LCD_RS為高、R/W為低時(shí),寫入數(shù)據(jù)
LCD_EN = 1; delay1(5); LCD_EN = 0; //用EN輸入一個(gè)高脈沖
}
//---------------------------------------------------
void W_LCD_STR(uchar *s) //寫字符串
{
while(*s) W_LCD_Dat(*s++);
}
//---------------------------------------------------
void W_BUFF(void) //填寫顯示緩沖區(qū) LCD數(shù)據(jù)寫入
{gewei=jiaodu%10;
baiwei=jiaodu/100;
shiwei=(jiaodu/10)%10;
weight_1[2] = gewei % 10+ 48;
weight_1[1] = shiwei % 10+ 48;
weight_1[0] = baiwei % 10+ 48;
W_LCD_Com(0x80 + 7); W_LCD_STR(weight_1);
zgewei=zjiaodu%10;
zbaiwei=zjiaodu/100;
zshiwei=(zjiaodu/10)%10;
zqianwei=zjiaodu/1000;
Timer_buf[1] = zbaiwei % 10 + 48;Timer_buf[0] = zqianwei % 10+ 48;
Timer_buf[2] = zshiwei % 10 + 48;Timer_buf[3] = zgewei % 10 + 48;
W_LCD_Com(0xc0+7);W_LCD_STR(Timer_buf);
}
//---------------------------------------------------
//---------------------------------------------------
void Init()
{
LCD_RW = 0;
W_LCD_Com(0x38); delay1(50);
W_BUFF();
W_LCD_Com(0x01);
W_LCD_Com(0x80); W_LCD_STR(LCD_line1);
W_LCD_Com(0xC0); W_LCD_STR(LCD_line2);
}
//---------------------------------------------------
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 數(shù) 名 : KeyDown
* 函數(shù)功能 : 檢測有按鍵按下并讀取鍵值
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void KeyDown(void)
{
char a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
{
delay(1000);//延時(shí)10ms進(jìn)行消抖
if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
{
//測試列
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d): KeyValue=2;break;
case(0X0e): KeyValue=3;break;
}
//測試行
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!=0xf0)) //檢測按鍵松手檢測
{
delay(1000);
a++;
}
}
}
}
zhengzhuan()
{
while(k!=j)
{
Coil_A1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替
delay(200); //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,
k--;
if(k==j)
break;
Coil_A2
delay(200);
k--;
if(k==j)
break;
Coil_B1
delay(200);
k--;
if(k==j)
break;
Coil_B2
delay(200);
k--;
if(k==j)
break;
Coil_C1
delay(200);
k--;
if(k==j)
break;
Coil_C2
delay(200);
k--;
if(k==j)
break;
Coil_D1
delay(200);
k--;
if(k==j)
break;
Coil_D2
delay(200);
k--;
if(k==j)
break;
}}
fanzhuan()
{
while(k!=j)
{
Coil_D2 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替
delay(200); //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,
k--;
if(k==j)
break;
Coil_D1
delay(200);
k--;
if(k==j)
break;
Coil_C2
delay(200);
k--;
if(k==j)
break;
Coil_C1
delay(200);
k--;
if(k==j)
break;
Coil_B2
delay(200);
k--;
if(k==j)
break;
Coil_B1
delay(200);
k--;
if(k==j)
break;
Coil_A2
delay(200);
k--;
if(k==j)
break;
Coil_A1
delay(200);
k--;
if(k==j)
break;
}
}
void anjian()
{if(KeyValue==6&&b==1&&c==1&&d==1)//電機(jī)正轉(zhuǎn)
{k=jiaodu*11+jiaodu/2;i=i+k;zhengzhuan();KeyValue=20;}
if(KeyValue==7&&b==1&&c==1&&d==1)//電機(jī)反轉(zhuǎn)
{k=jiaodu*12;if(i<=0){
delay(1000);i=0;k=0;}
i=i-k;fanzhuan();
KeyValue=20;}
if(KeyValue==5)
{b=1;c=1;d=1;shanshuo=0;KeyValue=20;z=5;}
if(KeyValue==0)
{z++;
if (z>=7)
z=0;
KeyValue=20;}//百位選擇
if(z==0)
{b=1;c=0;d=0;e=1;v=1;n=1;shanshuo=1;}
if(z==1)//十位選擇
{b=0;c=1;d=0;e=1;v=1;n=1;shanshuo=2;}
if(z==2)//個(gè)位選擇
{b=0;c=0;d=1;e=1;v=1;n=1;shanshuo=3;}
if(z==3)//千位選擇
{b=0;c=0;d=0;e=1;v=0;n=0;shanshuo=4;}
if(z==4)//百位選擇
{b=1;c=0;d=0;e=0;v=0;n=0;shanshuo=5;}
if(z==5)//十位選擇
{b=0;c=1;d=0;e=0;v=0;n=1;shanshuo=6;}
if(z==6)//個(gè)位選擇
{b=0;c=0;d=1;e=0;v=1;n=1;shanshuo=7;}
if(KeyValue==1)
{jiaoliuzhengzhuan=1;jiaoliufanzhuan=0;}
if(KeyValue==2)
{jiaoliufanzhuan=1;jiaoliuzhengzhuan=0;}
if(KeyValue==9)
{jiaoliufanzhuan=1;jiaoliuzhengzhuan=1;}
if(KeyValue==3&&b==1&&c==0&&d==0&&e==1&&v==1&&n==1)//百位+1
{jiaodu=jiaodu+100;KeyValue=20;}
if(KeyValue==4&&b==1&&c==0&&d==0&&e==1&&v==1&&n==1)//百位-1
{jiaodu=jiaodu-100;KeyValue=20;}
if(KeyValue==3&&b==0&&c==1&&d==0&&e==1&&v==1&&n==1)//十位+1
{jiaodu=jiaodu+10;KeyValue=20;}
if(KeyValue==4&&b==0&&c==1&&d==0&&e==1&&v==1&&n==1)//十位-1
{jiaodu=jiaodu-10;KeyValue=20;}
if(KeyValue==3&&b==0&&c==0&&d==1&&e==1&&v==1&&n==1)//個(gè)位+1
{jiaodu=jiaodu+1;KeyValue=20;}
if(KeyValue==4&&b==0&&c==0&&d==1&&e==1&&v==1&&n==1)//個(gè)位-1
{jiaodu=jiaodu-1;KeyValue=20;}
if(KeyValue==3&&b==1&&c==0&&d==0&&e==0&&v==0&&n==0)//百位+1
{zjiaodu=zjiaodu+100;KeyValue=20;}
if(KeyValue==4&&b==1&&c==0&&d==0&&e==0&&v==0&&n==0)//百位-1
{zjiaodu=zjiaodu-100;KeyValue=20;}
if(KeyValue==3&&b==0&&c==1&&d==0&&e==0&&v==0&&n==1)//十位+1
{zjiaodu=zjiaodu+10;KeyValue=20;}
if(KeyValue==4&&b==0&&c==1&&d==0&&e==0&&v==0&&n==1)//十位-1
{zjiaodu=zjiaodu-10;KeyValue=20;}
if(KeyValue==3&&b==0&&c==0&&d==1&&e==0&&v==1&&n==1)//個(gè)位+1
{zjiaodu=zjiaodu+1;KeyValue=20;}
if(KeyValue==4&&b==0&&c==0&&d==1&&e==0&&v==1&&n==1)//個(gè)位-1
{zjiaodu=zjiaodu-1;KeyValue=20;}
if(KeyValue==3&&b==0&&c==0&&d==0&&e==1&&v==0&&n==0)//千位+1
{zjiaodu=zjiaodu+1000;KeyValue=20;}
if(KeyValue==4&&b==0&&c==0&&d==0&&e==1&&v==0&&n==0)//千位-1
{zjiaodu=zjiaodu-1000;KeyValue=20;}
if(KeyValue==8){if(i<=0)i=0;k=i;
i=i-k;fanzhuan();
KeyValue=20;}
if(k1==0)
{KeyValue=6;}
if(k2==0)
{KeyValue=7;}
}
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main()
{
delay(100);
Init();
shanshuo=0;
delay(100);
weight=30;
P1=0x00;
while(1)
{ KeyDown();
anjian();
weight=i/1900;
switch (shanshuo)
{case 0:W_LCD_Com(0x0c);W_BUFF();break;
case 1: W_LCD_Com(0x87);
W_LCD_Com(0x0f);delay(1000); W_BUFF();break;
case 2:W_LCD_Com(0x88);
W_LCD_Com(0x0f);delay(1000); W_BUFF();break;
case 3:W_LCD_Com(0x89);
W_LCD_Com(0x0f);delay(1000); W_BUFF();break;
case 4:W_LCD_Com(0xc7);
W_LCD_Com(0x0f);delay(1000); W_BUFF();break;
case 5:W_LCD_Com(0xc8);
W_LCD_Com(0x0f);delay(1000); W_BUFF();break;
case 6:W_LCD_Com(0xc9);
W_LCD_Com(0x0f);delay(1000); W_BUFF();break;
case 7:W_LCD_Com(0xca);
W_LCD_Com(0x0f);delay(1000); W_BUFF();break;
default :W_LCD_Com(0x0c);W_BUFF();break;
}//寫顯示
}
}
復(fù)制代碼
QQ圖片20190602223934.jpg
(2.44 MB, 下載次數(shù): 29)
下載附件
2019-6-2 22:39 上傳
第一行后面的倆個(gè)數(shù)我并沒有編寫
作者:
xianfajushi
時(shí)間:
2019-6-4 20:48
得空看看,你用什么板子?
作者:
xianfajushi
時(shí)間:
2019-6-4 21:03
修改一下試看
char code LCD_line1[] = "jiaodu: 0du ";
作者:
xianfajushi
時(shí)間:
2019-6-4 21:05
修改一下45行代碼如下
char code LCD_line1[] = "jiaodu: 0du ";
作者:
幻劍心
時(shí)間:
2019-6-5 03:42
char Timer_buf[] = "00";
char code LCD_line1[] = "jiaodu: 0 du ";
char weight_1[] = "";
改成:
char code LCD_line2[] = "Weight: 0kg ";
char Timer_buf[5];
char code LCD_line1[] = "jiaodu: 0 du ";
unsigned char weight_1[4];
沒固定長度的數(shù)組系統(tǒng)會(huì)默認(rèn)給一個(gè)長的值。顯示不好控制。再加上你的W_LCD_STR()遍歷了整個(gè)數(shù)組。所有才會(huì)出現(xiàn)后面的亂碼。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩高清国产一区在线
|
99re6热在线精品视频播放
|
91精品国产综合久久久亚洲
|
国产精品视频一区二区三
|
欧美一区二区三区的
|
国产精品久久久久国产a级 欧美日本韩国一区二区
|
国产精品一卡
|
国产在线激情视频
|
国产一区二区
|
欧美二三区
|
国产999精品久久久久久绿帽
|
午夜在线视频
|
91久久精品一区二区二区
|
a级性视频
|
成人1区
|
欧美成视频
|
99久久精品免费看国产四区
|
亚洲精品视频免费观看
|
精品视频在线播放
|
日本a网站
|
成人免费视频网站在线观看
|
欧美亚洲视频在线观看
|
狠狠躁躁夜夜躁波多野结依
|
一区二区三区电影网
|
免费福利视频一区二区三区
|
久久精品小视频
|
91精品免费视频
|
亚洲一区精品在线
|
免费成人av网站
|
日韩高清一区
|
成人在线视频网
|
中文字幕欧美日韩一区
|
久久免费观看一级毛片
|
成人精品一区亚洲午夜久久久
|
99综合
|
国产精品海角社区在线观看
|
国产精品久久精品
|
污片在线免费观看
|
日本福利在线观看
|
亚洲综合天堂
|
日本一区二区三区在线观看
|