標(biāo)題:
編完的程序?yàn)槭裁磍cd162不能顯示,幫忙改改
[打印本頁]
作者:
可樂可口w
時(shí)間:
2018-5-10 21:25
標(biāo)題:
編完的程序?yàn)槭裁磍cd162不能顯示,幫忙改改
#include<reg51.h.>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
sbit lcden=P2^5;
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
lcden=0;
write_com(0x38); //顯示模式控制
write_com(0x0f); //顯示開關(guān) 開啟光標(biāo) 光標(biāo)閃爍
write_com(0x06); //光標(biāo)自加一 未開啟全屏移動
write_com(0x01); //清屏
write_com(0x80); //設(shè)置數(shù)據(jù)指針
}
void main()
{
init();
while(1)
{
write_data('1');
}
}
作者:
西瓜泡飯
時(shí)間:
2018-5-10 22:35
留印,我也新學(xué),我給你一個(gè)程序你試試。過兩天看看有沒有人回答你
/*
* 1602
*/
#include <reg52.h>
#include <intrins.h>
typedef unsigned char uint8;
sbit RS = P1^0 ;
sbit RW = P1^1 ;
sbit EN = P2^5 ;
sbit STA7 = P0^7;
unsigned char code word1[]={"QQ:398115088"};
unsigned char code word2[]={"WWW.HJMCU.COM"};
/**
* 等待繁忙標(biāo)志
*/
void wait(void)
{
P0 = 0xFF;
do
{
RS = 0;
RW = 1;
EN = 0;
EN = 1;
}while (STA7 == 1);
EN = 0;
}
/**
* 寫數(shù)據(jù)
*/
void w_dat(uint8 dat)
{
wait();
EN = 0;
P0 = dat;
RS = 1;
RW = 0;
EN = 1;
EN = 0;
}
/**
* 寫命令
*/
void w_cmd(uint8 cmd)
{
wait();
EN = 0;
P0 = cmd;
RS = 0;
RW = 0;
EN = 1;
EN = 0;
}
/**
* 發(fā)送字符串到LCD
*/
void w_string(uint8 addr_start, uint8 *p)
{
w_cmd(addr_start);
while (*p != '\0')
{
w_dat(*p++);
}
}
/**
* 初始化1602
*/
void Init_LCD1602(void)
{
w_cmd(0x38); // 16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
w_cmd(0x0C); // 顯示器開、光標(biāo)開、光標(biāo)允許閃爍
w_cmd(0x06); // 文字不動,光標(biāo)自動右移
w_cmd(0x01); // 清屏
}
main()
{
Init_LCD1602();
w_string(0x80,word1);
w_string(0xC0,word2);
while (1);
}
作者:
生非死懼
時(shí)間:
2018-5-11 09:01
不能顯示一定是你哪里出錯(cuò)了。
作者:
zhdp
時(shí)間:
2018-5-11 11:40
本帖最后由 zhdp 于 2018-5-11 13:19 編輯
缺少判斷是否忙碌的函數(shù) 還缺一個(gè)顯示用的數(shù)組char code Num[]={'0','1','2','3','4','5','6','7','8','9'};
void Read_Busy()
{
char busy;
LCD1602_DB = 0xff; //復(fù)位數(shù)據(jù)總線 (DB為輸出端)
LCD1602_RS = 0; //拉低RS
LCD1602_RW = 1; //拉高RW讀
do
{
LCD1602_EN = 1;//使能EN
busy = LCD1602_DB;//讀回?cái)?shù)據(jù)
LCD1602_EN = 0; //拉低使能以便于下一次產(chǎn)生上升沿
}while(busy & 0x80); //判斷狀態(tài)字BIT7位是否為1,為1則表示忙,程序等待
}
作者:
西瓜_
時(shí)間:
2018-5-11 12:39
1、include<reg51.h> (你多了個(gè)點(diǎn))
2、#define uchar unsigned char
#define uint unsigned int
作者:
西瓜_
時(shí)間:
2018-5-11 12:42
錯(cuò)誤1、include <reg51.h.> 多了個(gè)點(diǎn)
錯(cuò)誤2、#define uchar unsigned char 不能這么用,正確應(yīng)該使用: typedef unsigned char uchar;
有問題歡迎繼續(xù)問,說實(shí)話這都是基礎(chǔ)問題,完全都可以看書解決的。
作者:
黃國雄hgx
時(shí)間:
2018-5-11 13:35
可能程序出錯(cuò)
作者:
狐貍胡鬧
時(shí)間:
2018-5-11 15:41
可能屏幕初始化錯(cuò)了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1