久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
8位數據顯示屏
[打印本頁]
作者:
axp
時間:
2016-11-1 08:07
標題:
8位數據顯示屏
/**************************************************************************************
* 名 稱:
* 功 能:
* 參 數:
* 返 回 值:
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void send_command(unsigned int Cmd)
{
CS=0;
RS=0;
num_out=Cmd; RW=0;RW=1;
CS=1;
}
/**************************************************************************************
* 名 稱:
* 功 能:
* 參 數:
* 返 回 值:
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void send_byte(uchar Data)
{
RS=1;
CS=0; num_out=Data; RW=0;RW=1; CS=1;
}
/**************************************************************************************
* 名 稱:
* 功 能:
* 參 數:
* 返 回 值:
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void send_data(uint num)
{
RS=1;
CS=0; num_out=(num>>8); RW=0;RW=1; CS=1;
CS=0; num_out=num; RW=0;RW=1; CS=1;
}
/**************************************************************************************
* 名 稱:
* 功 能:
* 參 數:
* 返 回 值:
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void write_com(unsigned int Cmd,unsigned int num)
{
CS=0;
Rd=1;
RS=0;
num_out=Cmd; RW=0;RW=1;
RS=1;
num_out=num; RW=0;RW=1;
CS=1;
}
/**************************************************************************************
* 名 稱:
* 功 能:
* 參 數:
* 返 回 值:
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void lcd_init(void)
{
CS=1; RW=1; Rd=1; RS=1;
RST=0; DelayNS( 1000 );RST=1;
send_command(0x11); DelayNS( 1500 );
// sleep out/power on(SLPOUT)
send_command(0x20); // display inversion off
send_command(0x38); // ID mode off (IDMOFF)
send_command(0x13); // Normal display mode on (Partial mode off)
// color mode Interface pixel format (COLMOD)
write_com(0x3A,0x05); // 16-bit/pixel , 1-times data transfer
write_com(0xC0,0x00); // power control 1 (PWCTR1) , GVDD voltage set 4.65
write_com(0xC1,0x05);DelayNS( 1500 );
// VCOMH voltage set 4.10V
write_com(0xC5,0xc7); //;c0h VCOMH voltage set 4.175V
write_com(0xC6,0x07);DelayNS( 1500 );
//;07 ;VCOMAC voltage set 4.8V ;
// Gamma voltage adjustalbe level
//Gamma + Polarity correction characteristics set
send_command(0xE0);
send_byte(0x21);
send_byte(0x11);
send_byte(0x21);
send_byte(0x22);
send_byte(0x22);
send_byte(0x33);
send_byte(0x03);
write_com(0x36,0x10); // MY=1; MX=0; MV=0; ML=0; RGB=0
send_command(0x37);
send_byte(0x00);
send_byte(0x00); // display on
send_command(0x29);
}
/**************************************************************************************
* 名 稱:
* 功 能:
* 參 數:
* 返 回 值:
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void LCD_SetArea( uchar x0, uchar y0, uchar x1, uchar y1 )
{
send_command(0x2A);
send_byte(0x00);
send_byte(x0);
send_byte(0x00);
send_byte(x1);
send_command(0x2B);
send_byte(0x00);
send_byte(y0);
send_byte(0x00);
send_byte(y1);
}
/**************************************************************************************
* 名 稱:
* 功 能:
* 參 數:
* 返 回 值:
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void Set_ramaddr(uchar x,uchar y)
{
send_command(0x2A);
send_byte(0x00);
send_byte(x);
send_byte(0x00);
send_byte(x);
send_command(0x2B);
send_byte(0x00);
send_byte(y);
send_byte(0x00);
send_byte(y);
}
/**************************************************************************************
* 名 稱: DispOneColor
* 功 能: 全屏顯示某種顏色
* 參 數: Color : 顏色值
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void DispOneColor(uint Color)
{
uchar i,j;
LCD_SetArea(0,0,kuan-1,gao);
send_command(0x2C);
for(j=0;j<kuan;j++)
for(i=0;i<gao;i++)
send_data(Color);
}
/**************************************************************************************
* 名 稱: DispClear
* 功 能: 清除顯示屏的顯示內容
* 參 數: 無
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void DispClear(void)
{
DispOneColor(BLACK);
}
/**************************************************************************************
* 名 稱: DrawSingleAscii
* 功 能: 在指定的位置單個字符
* 參 數: x : x坐標
* y : y坐標
* LineColor : 字符的顏色
* FillColor : 字符背景顏色
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void DrawSingleAscii(uint x, uint y, uchar *pAscii, uint LineColor,uint FillColor, uchar Mod)
{
uchar i, j;
uchar str;
uint OffSet;
OffSet = (*pAscii - 32)*16;
for (i=0;i<16;i++)
{
str = *(AsciiLib + OffSet + i);
for (j=0;j<8;j++)
{
Set_ramaddr(x+j,y+i);
send_command(0x2C);
if ( str & (0x80>>j) ) //0x80>>j
{
send_data((uint)(LineColor&0xffff));
}
else
{
if (NORMAL == Mod)
send_data((uint)(FillColor&0xffff));
else
{
Set_ramaddr(x+j+1,y+i);
send_command(0x2C);
}
}
}
}
}
/**************************************************************************************
* 名 稱: DrawSingleHz
* 功 能: 在指定的位置顯示漢字
* 參 數: x : x坐標
* y : y坐標
* LineColor : 漢字的顏色
* FillColor : 漢字背景顏色
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void DrawSingleHz(uint x, uint y, uchar *pHz, uint LineColor,uint FillColor, uchar Mod)
{
uint j=0,i=0,k=0;
uint str,len;
//---------------------------統(tǒng)計是否在字庫中出現
len=sizeof(HzLib)/sizeof(HzLib[0]);
for(j=0;j<sizeof(HzLib)/sizeof(HzLib[0]);j++)
if((uchar)HzLib[j].Index[0]==pHz[0]&&(uchar)HzLib[j].Index[1]==pHz[1])break;
//--------------------------
if(j<len)
{
for (i=0;i<HZ_column;i++)
{
str = (uchar)HzLib[j].Msk[i*2]<<8|(uchar)HzLib[j].Msk[i*2+1];
for (k=0;k<HZ_column;k++)
{
Set_ramaddr(x+k,y+i);
send_command(0x2C);
if ( str & (0x8000>>k) ) //0x8000>>k
{
send_data((uint)(LineColor&0xffff));
}
else
{
if (NORMAL == Mod)
send_data((uint)(FillColor&0xffff));
else
{
Set_ramaddr(x+k+1,y+i);
send_command(0x2C);
}
}
}
}
}
}
/**************************************************************************************
* 名 稱: DrawString
* 功 能: 在指定的位置顯示多個字符
* 參 數: x : x坐標
* y : y坐標
* LineColor : 字符的顏色
* FillColor : 字符背景顏色
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void DrawString(uint x, uint y, uchar *pStr, uint LineColor,uint FillColor, uchar Mod)
{
while(1)
{
if (*pStr == 0)
{
return;
}
if (*pStr > 0x80) //漢字
{
DrawSingleHz(x, y, pStr, LineColor, FillColor, Mod);
x += HZ_column;
pStr += 2;
}
else //英文字符
{
DrawSingleAscii(x, y, pStr, LineColor, FillColor, Mod);
x += 8;
pStr += 1;
}
}
}
/**************************************************************************************
* 名 稱:
* 功 能:
* 參 數:
* 返 回 值:
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void DispNum(unsigned int x, unsigned int y, unsigned short num)
{
unsigned char str[5];
str[0] = num/1000+0x30;
str[1] = (num%1000)/100+0x30;
str[2] = (num%1000)%100/10+0x30;
str[3] = (num%1000)%100%10+0x30;
str[4] = '\0';
DrawString(x, y, str, RED, YELLOW, NORMAL);
}
/**************************************************************************************
* 名 稱: DispSmallPic
* 功 能: 在指定的位置顯示一張65K色的圖片
* 參 數: str : 圖片數組名
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者
* ----------------------------------------------------
* 1.0
**************************************************************************************/
void DispSmallPic(uint x, uint y, uint w, uint h, const uchar *str)
{
uint i,j,temp;
LCD_SetArea(x,y,x+w-1,y+h-1);
send_command(0x2C);
for(i=0;i<w*h;i++)
{ //send_data(*(unsigned short *)(&str[(j*w+i)*2])); //高位在前
temp=str[(j*w+i)*2+1]<<8; //低位在前
temp|=str[(j*w+i)*2];
send_data(temp);
}
}
復制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲精品免费在线观看
|
国产午夜激情
|
日本大尺度床戏揉捏胸
|
欧美在线
|
婷婷激情综合网
|
狠狠干美女
|
av免费观看网站
|
亚洲国产91
|
91一级片
|
免费看黄色网址
|
日韩在线不卡
|
黄免费视频
|
亚洲国产精品一区二区三区
|
日韩欧美国产成人
|
一级黄色片在线观看
|
一级片网址
|
激情av在线
|
亚洲精品黄
|
久久久一区二区三区
|
深夜福利视频在线观看
|
狠狠干狠狠干
|
亚洲免费黄色
|
在线一区二区三区四区
|
草草免费视频
|
他揉捏她两乳不停呻吟动态图
|
四虎免费在线观看
|
91精品国产日韩91久久久久久
|
在线播放毛片
|
福利视频午夜
|
风间由美一区二区三区
|
色妞网
|
黄色免费观看视频
|
师生出轨h灌满了1v1
|
日韩中文字幕精品
|
欧美日韩高清
|
亚洲小说欧美激情另类
|
aaa一级片
|
亚洲国产91
|
美女国产精品
|
免费在线观看黄
|
欧美性一区二区
|