久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機液晶模塊代碼(12864 1602 5110)
[打印本頁]
作者:
pdh
時間:
2016-1-11 11:28
標題:
51單片機液晶模塊代碼(12864 1602 5110)
包含12864 1602 5110
00000.png
(25.61 KB, 下載次數: 118)
下載附件
2016-1-11 18:58 上傳
完整代碼(包含頭文件)下載:
液晶.rar
(4.73 KB, 下載次數: 42)
2016-1-11 11:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
以下是文件內容預覽:
12864:
#include"yejing.h"
#define uint unsigned int
#define uchar unsigned char
//液晶
sbit CS=P3^4;
sbit SID=P3^5;
sbit SCLK=P3^6;
uchar yi[]={"歡迎使用"};
uchar er[]={"紅外報警系統"};
uchar san[]={"發現物體闖入"};
uchar si[]={"已處于警戒中"};
void delay_1ms(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<100;i++);
}
/*************************/
/******************寫指令*****************/
void send_command(uchar command_data)
{
uchar i;
uchar i_data;
i_data=0xf8;//第一個字節確定寫指令
CS=1;
SCLK=0;
/*第一個字節設定為寫指令*/
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
/*寫第二個字節和第三個字節確定指令功能*/
/******* 寫第二個字節********/
i_data=command_data;
i_data&=0xf0; //高4位保留,低四位清零
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
/********寫第三個字節********/
i_data=command_data;
i_data<<=4; //把低四位取代高四位
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
CS=0;
delay_1ms(10);
}
/*************************/
/******************寫數據*****************/
void send_data(uchar command_data)
{
uchar i;
uchar i_data;
i_data=0xfa;//第一個字節確定寫數據
CS=1;
/*第一個字節設定為寫數據*/
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
/******* 寫第二個字節********/
i_data=command_data;
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
/******* 寫第三個字節********/
i_data=command_data;
i_data<<=4;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
CS=0;
delay_1ms(10);
}
/********初始化液晶************/
void lcd_init()
{
delay_1ms(100);
send_command(0x30);
send_command(0x02);
send_command(0x06);
send_command(0x0c);
send_command(0x01);
send_command(0x80);
}
/*******顯示第一行*******/
void display_1()
{
uchar i;
send_command(0x82);//發送指令顯示第一行
for(i=0;i<8;i++)
{
send_data(yi[i]);
}
}
/*******顯示測第二行*******/
void display_2()
{
uchar i;
send_command(0x91);//發送指令顯示第二行
for(i=0;i<12;i++)
{
send_data(er[i]);
}
}
/*******顯示第三行*******/
void display_3()
{
uchar i;
send_command(0x89);//發送指令顯示第三行
for(i=0;i<12;i++)
{
send_data(san[i]);
}
}
/*******顯示第三行*******/
void display_4()
{
uchar i;
send_command(0x89);//發送指令顯示第三行
for(i=0;i<12;i++)
{
send_data(si[i]);
}
}
復制代碼
5110:
/******************************
文檔說明:NOKIA5110顯示模塊驅動
修改日期:9月8日
版本: v1
********************************/
#include "LCD5110.h"
#include "suzu.h"
/************************************************
函數名: void LCD_init(void)
功能: NKIA5110初始化配置
輸入參數: 無
輸出參數: 無
修改日期: 9月8日
特殊說明: 不同模塊所需調的是28行代碼,大概范圍150-255
************************************************/
void LCD_init(void)
{
unsigned char i;
SRST=0;
for(i=0;i<150;i++);
SRST=1;
LCD_write_byte(0x21,0);
LCD_write_byte(195,0); //偏置電壓設置
LCD_write_byte(0x20,0);
LCD_clear();
LCD_write_byte(0x0c,0);
SCE=0;
}
/************************************************
函數名: void LCD_write_byte(unsigned char dat,unsigned char command)
功能: 向NKIA5110寫字節數據
輸入參數: unsigned char dat,unsigned char command
輸出參數: 無
修改日期: 9月8日
************************************************/
void LCD_write_byte(unsigned char dat,unsigned char command)
{
unsigned char i;
SCE=0;
if(command==0)
SDC=0;
else
SDC=1;
for(i=0;i<8;i++)
{
if(dat&0x80)
SDIN=1;
else
SDIN=0;
SCLK=0;
dat=dat<<1;
SCLK=1;
}
SCE=1;
}
/************************************************
函數名: void LCD_set_XY(unsigned char X,unsigned char Y)
功能: 設置NKIA5110顯示XY坐標位置
輸入參數: unsigned char X,unsigned char Y
輸出參數: 無
修改日期: 9月8日
************************************************/
void LCD_set_XY(unsigned char X,unsigned char Y)
{
LCD_write_byte(0x40|Y,0);//列
LCD_write_byte(0x80|X,0);//行
}
/************************************************
函數名: void LCD_clear(void)
功能: NKIA5110 清屏
輸入參數: 無
輸出參數: 無
修改日期: 9月8日
************************************************/
void LCD_clear(void)
{
unsigned char t;
unsigned char k;
LCD_set_XY(0,0);
for(t=0;t<6;t++)
{
for(k=0;k<84;k++)
{
LCD_write_byte(0x00,1);
}
}
}
/************************************************
函數名: void LCD_write_char(unsigned char x,unsigned y,unsigned char c)
功能: NKIA5110 顯示字符
輸入參數: unsigned char x,unsigned y,unsigned char c
輸出參數: 無
修改日期: 9月8日
************************************************/
void LCD_write_char(unsigned char x,unsigned y,unsigned char c)
{
unsigned char i;
c-=32;
LCD_set_XY(x,y);
for(i=0;i<6;i++)
{
LCD_write_byte(font6x8[c][i],1);
if(i==5)
{
y++;
LCD_set_XY(x,y);
}
}
}
/************************************************
函數名: void LCD_write_Num(unsigned char X,unsigned char Y,unsigned int num)
功能: NKIA5110 顯示數字
輸入參數: X為一個位置為6,Y為行取值為0~5,num為要顯示的數字
輸出參數: 無
修改日期: 9月8日
************************************************/
void LCD_write_Num(unsigned char X,unsigned char Y,unsigned int num)
{
unsigned char str[8],i=0,len=0;
unsigned int temp;
temp = num;
while(temp)
{
temp /=10;
len++;
}
if(!num)
{
len++;
str[0]=0x30;
}
str[len] = 0;
while(num)
{
str[len-i-1] = num%10 + 0x30;
num /=10;
i++;
}
LCD_write_string(X,Y,(char *)str);
}
/************************************************
函數名: void LCD_write_Num(unsigned char X,unsigned char Y,unsigned int num)
功能: NKIA5110 顯示字符串
輸入參數: X為一個位置為6,Y為行取值為0~5,*s為要顯示的字符串
輸出參數: 無
修改日期: 9月8日
************************************************/
void LCD_write_string(unsigned char X,unsigned char Y,char *s)
{
while(*s)
{
LCD_write_char(X,Y,*s);
s++;
X+=6;
}
}
///************************************************
// 函數名: void disp16_16(unsigned char x,unsigned char y,unsigned char address)
// 功能: NKIA5110 顯示16*16的字符
// 輸入參數: unsigned char x,unsigned y,unsigned char c
// 輸出參數: 無
// 修改日期: 9月8日
// ************************************************/
//void disp16_16(unsigned char x,unsigned char y,unsigned char address)
//{
// unsigned char c;
// LCD_set_XY(x*8, y);
// for(c=0;c<16;c++)
// {
// LCD_write_byte(han[address*32+c],1);
// }
// LCD_set_XY(x*8, y+1);
// for(c=16;c<32;c++)
// {
// LCD_write_byte(han[address*32+c],1);
// }
//}
// /************************************************
// 函數名: void LCD_write_chinese_string(unsigned char X, unsigned char Y,
// unsigned char ch_with,unsigned char num,
// unsigned char line,unsigned char row)
// 功能: NKIA5110 顯示中文字符
// 輸入參數: unsigned char X, unsigned char Y,
// unsigned char ch_with,unsigned char num,
// unsigned char line,unsigned char row
// 輸出參數: 無
// 修改日期: 9月8日
// ************************************************/
//void LCD_write_chinese_string(unsigned char X, unsigned char Y, unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row) //x,y為坐標,ch_with為漢字寬度,num為數組中第幾個漢字,line為行,row為列
//{
// unsigned char i,n;
// LCD_set_XY(X,Y); //
// for (i=0;i<num;)
// {
// for (n=0; n<ch_with*2; n++) //
// {
// if (n==ch_with) //
// {
// if (i==0) LCD_set_XY(X,Y+1);
// else
// LCD_set_XY((X+(ch_with+row)*i),Y+1);
// }
// LCD_write_byte(write_chinese[line+i][n],1);
// }
// i++;
// LCD_set_XY((X+(ch_with+row)*i),Y);
// }
//}
復制代碼
1602:
#include"yejing.h"
/*液晶*/
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
#define DataPort P0
sbit RS = P2^4; //定義端口
sbit RW = P2^5;
sbit EN = P2^6;
/*------------------------------------------------
uS延時函數,含有輸入參數 unsigned char t,無返回值
unsigned char 是定義無符號字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編,大致延時
長度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延時函數,含有輸入參數 unsigned char t,無返回值
unsigned char 是定義無符號字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延時1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
判忙函數
------------------------------------------------*/
bit LCD_Check_Busy(void)
{
DataPort= 0xFF;
RS_CLR;
RW_SET;
EN_CLR;
_nop_();
EN_SET;
return (bit)(DataPort & 0x80);
}
/*------------------------------------------------
寫入命令函數
------------------------------------------------*/
void LCD_Write_Com(unsigned char com)
{
while(LCD_Check_Busy());//忙則等待
DelayMs(5);
RS_CLR;
RW_CLR;
EN_SET;
DataPort=com;
_nop_();
EN_CLR;
}
/*------------------------------------------------
寫入數據函數
------------------------------------------------*/
void LCD_Write_Data(unsigned char Data)
{
DelayMs(5);
RS_SET;
RW_CLR;
EN_SET;
DataPort= Data;
_nop_();
EN_CLR;
}
/*------------------------------------------------
清屏函數
------------------------------------------------*/
void LCD_Clear(void)
{
LCD_Write_Com(0x01);
DelayMs(5);
}
/*------------------------------------------------
寫入字符串函數
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x); //表示第一行
}
else
{
LCD_Write_Com(0xC0 + x); //表示第二行
}
while (*s)
{
LCD_Write_Data( *s);
s ++;
}
}
/*------------------------------------------------
寫入字符函數
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x);
}
else
{
LCD_Write_Com(0xC0 + x);
}
LCD_Write_Data( Data);
}
/*------------------------------------------------
初始化函數
------------------------------------------------*/
void LCD_Init(void)
{
LCD_Write_Com(0x38); /*顯示模式設置*/
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08); /*顯示關閉*/
LCD_Write_Com(0x01); /*顯示清屏*/
LCD_Write_Com(0x06); /*顯示光標移動設置*/
DelayMs(5);
LCD_Write_Com(0x0C); /*顯示開及光標設置*/
}
復制代碼
作者:
whengfu
時間:
2016-1-11 11:39
好東西,菜鳥的福音,收藏了
作者:
愛的步伐XY
時間:
2016-1-11 15:23
不錯,下載看看
作者:
xql1997
時間:
2016-7-19 22:10
很好很好 感謝樓主
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩精品在线播放
|
久久久久久国产
|
国产成人精品一区二区三区网站观看
|
www.中文字幕av
|
婷婷五月色综合
|
亚洲人成人一区二区在线观看
|
91黄色免费看
|
国产91久久久久蜜臀青青天草二
|
www国产成人免费观看视频,深夜成人网
|
中文字幕一区在线观看视频
|
亚洲高清视频在线观看
|
国产精品美女一区二区
|
精品久久精品
|
久久午夜视频
|
国产精品精品
|
日韩一级免费观看
|
婷婷综合网
|
四虎永久在线精品免费一区二
|
九九九久久国产免费
|
日日夜夜精品
|
亚洲精品久久久
|
午夜天堂精品久久久久
|
91视频久久
|
精品国产18久久久久久二百
|
午夜在线观看视频
|
日韩精品免费
|
国产成人久久av免费高清密臂
|
国产精品网址
|
国产精品视频一区二区三
|
精品视频在线观看
|
国产精品一区二区在线观看
|
国产一区二区三区久久久久久久久
|
一级二级三级在线观看
|
日韩成人免费视频
|
91精品国产高清一区二区三区
|
久久99精品久久久久久琪琪
|
免费观看的黄色网址
|
99久久久国产精品
|
欧美淫
|
免费成人在线网站
|
国产线视频精品免费观看视频
|