?? lcd_disp.c
字號(hào):
/**********************************************************************************
* *
* 文 件 名:lcd_disp.c *
* MCU Type:STC89C51 Fosc:11.0592MHz *
* 功 能:1602液晶屏顯示 *
* 創(chuàng) 建 者:www.eldiy.net *
* 創(chuàng)建日期:2006-11-10 *
* 其他說明:在YH51-I單片機(jī)學(xué)習(xí)開發(fā)板上驗(yàn)證通過 *
* 有什么問題歡迎來我們的學(xué)習(xí)論壇討論,祝你成功! *
**********************************************************************************/
#include <reg51.h> // 引用頭文件,里面包含了一些對(duì)51單片機(jī)內(nèi)部寄存器的定義
#include <string.h>
#define uchar unsigned char //定義unsigned int為uint
#define uint unsigned int //定義unsigned uchar為uchar
sbit LCD_RS = P2^0 ;
sbit LCD_RW = P2^1 ;
sbit LCD_EN = P2^2 ;
sbit D_SDA = P2^6; //定義74HC164數(shù)據(jù)線為P2.6端口
sbit D_SCL = P2^7; //定義74HC164數(shù)據(jù)線為P2.7端口
uchar str_forward[] = {"Forward "};
uchar str_backward[] = {"Backward"};
uchar str_stop[] = {"Stop "};
extern bit forward_flag;
extern bit backward_flag;
extern bit ring_flag;
extern uchar speed_set_value;
extern void delay_ms(uint s);
//========= 送出一個(gè)字節(jié)給74HC164(實(shí)現(xiàn)串并轉(zhuǎn)換) ==========
void send_out(unsigned char out)//傳送一個(gè)字節(jié)8位
{
uchar i;
D_SCL = 0;
for (i=8;i>=1;i--)
{
D_SDA = out&0x80; //送數(shù)據(jù)到數(shù)據(jù)口
D_SCL = 1; //時(shí)鐘線置1
D_SCL = 0; //送一時(shí)鐘
out<<=1; //左移
}
}
//========= 寫命令函數(shù) ==========
void lcd_wcmd(uchar cmd)
{
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
send_out(cmd);
LCD_EN = 1;
LCD_EN = 0 ;
}
//========= 寫數(shù)據(jù)函數(shù) ==========
void lcd_wdat(uchar dat)
{
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
send_out(dat);
LCD_EN = 1;
LCD_EN = 0;
}
void lcd_wstr(uchar *p,addr,len)
{
while(len!=0)
{
lcd_wcmd(addr);
delay_ms(1);
lcd_wdat(*p);
p++;
len--;
addr++;
delay_ms(1);
}
}
void renew_speed_value()
{
uchar addr;
addr = 0x80 + 0x4b;
lcd_wcmd(addr);
delay_ms(1);
lcd_wdat(speed_set_value + 0x30); //寫入數(shù)據(jù)
}
void renew_work_status()
{
uchar addr,len;
addr = 0x80 + 0x00;
if(!ring_flag)
{
len = 8;
lcd_wstr(str_stop, addr, len);
}
else
{
if(forward_flag)
{
len =8;
lcd_wstr(str_forward,addr,len);
}
else if(backward_flag)
{
len = 8;
lcd_wstr(str_backward,addr,len);
}
}
}
void renew_lcd_disp()
{
renew_speed_value();
renew_work_status();
}
//========= LCD初始化函數(shù) ==========
void lcd_init()
{
uchar addr,len;
uchar s_speed[] = "Speed set: 0";
lcd_wcmd(0x38);
delay_ms(1);
lcd_wcmd(0x0c); //顯示開,關(guān)光標(biāo)
delay_ms(1);
lcd_wcmd(0x06); //向右移動(dòng)光標(biāo)
delay_ms(1);
lcd_wcmd(0x01); //清除LCD顯示屏
delay_ms(1);
addr = 0x40 | 0x80;
len = 12;
lcd_wstr(s_speed,addr,len);
renew_lcd_disp();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -