標(biāo)題:
為什么我單片機(jī)驅(qū)動(dòng)lcd1602只亮不顯示?
[打印本頁]
作者:
爾科技
時(shí)間:
2020-10-28 10:44
標(biāo)題:
為什么我單片機(jī)驅(qū)動(dòng)lcd1602只亮不顯示?
7e1f5df96d8b2f75d472e53ac7a4219.png
(132.91 KB, 下載次數(shù): 36)
下載附件
2020-10-28 10:43 上傳
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
/*LCD1602顯示模塊*/
/*用于PROTUES仿真
#define LCD1602_DATAPINS P2
sbit LCD1602_RS=P3^0;
sbit LCD1602_RW=P3^1;
sbit LCD1602_E=P3^2; */
#define LCD1602_DATAPINS P0
sbit LCD1602_RS=P2^6;
sbit LCD1602_RW=P2^5;
sbit LCD1602_E=P2^7;
/*按鍵調(diào)節(jié)模塊*/
sbit k1=P1^1;//功能鍵
sbit k2=P1^2;//加
sbit k3=P1^3;//減
void keyscan();
void key1_switch();
void key2_add();
void key3_minus();
uchar k_num;
void LCD1602_SetTemp(uchar add,uchar dat);
uchar high=90,low=10,set_t=30,set_d=2;//這里的數(shù)據(jù)類型可能有問題!
/*其他模塊接口*/
sbit DSPORT=P3^7; //溫度傳感器單總線端
sbit SPEAKER=P1^5;//蜂鳴器
sbit RELAY=P1^4;//繼電器
sbit COOLER=P1^7;//降溫裝置
/*LCD1602相關(guān)函數(shù)*/
void Delay1us(uint a);
void LCD1602_WriteCom(uchar com);//LCD1602寫入8位命令子函數(shù)
void LCD1602_WriteData(uchar dat);
void LCD1602_Init();//LCD1602初始化子程序
void LCD1602_ShowTemp(int temp);
/*DS18B20溫度傳感器相關(guān)函數(shù)*/
void Delay15us(uchar aa);
uchar Ds18b20Init();
void Ds18b20WriteByte(uchar dat);
uchar Ds18b20ReadByte();
void Ds18b20SwitchTemp();
int Ds18b20ReadTemp();
float temp_max=125.00,temp_min=-55.00;
uchar ii=0,jj=0,kk=0;
uchar words_h[2]={"H="};
uchar words_l[2]={"L="};
uchar words_s[4]={"Set="};
void Sound();
void Temp_control(int temp);
uchar count=0;//用來解決主程序執(zhí)行太快,按鍵光標(biāo)來不及顯示的問題
void Temp_control(int temp)
{
unsigned int kk=400;
uchar set_h,set_l;
set_h=set_t+set_d;
set_l=set_t-set_d;
if (temp<=set_h&&temp>=set_l) //設(shè)定溫度范圍之內(nèi)
{
RELAY = 0; //繼電器斷開
COOLER=0;//風(fēng)扇關(guān)閉
}
else
{
TR0=0;
while (kk--)
{
Sound();
}
RELAY = 1; //繼電器打開,外電路(常開觸電)閉合加熱
if (temp>=set_h)//溫度過高
{
RELAY = 0; //繼電器斷開
COOLER=1;//打開
}
TR0=1;
}
}
/*其他模塊相關(guān)函數(shù)*/
void Sound()//蜂鳴器
{
SPEAKER=1;
Delay15us(40);
SPEAKER=0;
Delay15us(40);
}
void Delay1us(uint a)
{
uint b,c;
for(c=a;c>0;c--)
for(b=110;b>0;b--);
}
void LCD1602_WriteCom(uchar com) //寫入命令
{
LCD1602_E=0;
LCD1602_RS=0;//0就寫指令
LCD1602_RW=0; //0就是寫
LCD1602_DATAPINS=com;
Delay
作者:
這是個(gè)用戶名
時(shí)間:
2020-10-28 13:02
看了一下代碼,你把/*LCD1602顯示模塊*/ /*用于PROTUES仿真 #define LCD1602_DATAPINS P2 sbit LCD1602_RS=P3^0; sbit LCD1602_RW=P3^1; sbit LCD1602_E=P3^2; */這段你都注釋掉了,但是仿真還是按照這段代碼連線,這樣怎么能顯示?
作者:
hengan0577
時(shí)間:
2020-10-28 14:24
亮說明背光沒問題,不顯示還是驅(qū)動(dòng)沒寫好
作者:
情可傾
時(shí)間:
2020-10-28 15:10
把/*LCD1602顯示模塊*/ /*用于PROTUES仿真 #define LCD1602_DATAPINS P2 sbit LCD1602_RS=P3^0; sbit LCD1602_RW=P3^1; sbit LCD1602_E=P3^2; */這段你都注釋掉了,但是仿真還是按照這段代碼連線,這樣怎么能顯示?
作者:
man1234567
時(shí)間:
2020-10-29 08:58
看程序象是普中一類的試驗(yàn)板程序接口,可直接用廠家給的試驗(yàn)程序調(diào)試。
然后將仿真的接線按試驗(yàn)板調(diào)整再調(diào)試,重點(diǎn)在時(shí)序上。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1