久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51MCU+無字庫LCD12864滾屏 proteus仿真與C程序設計
[打印本頁]
作者:
FairyWSM
時間:
2020-3-31 14:30
標題:
51MCU+無字庫LCD12864滾屏 proteus仿真與C程序設計
51hei.png
(26.2 KB, 下載次數: 54)
下載附件
2020-3-31 14:51 上傳
單片機源程序如下:
#include <reg52.h>
#include <intrins.h>
#include <lcd12864.h>
#include <delay.h>
#define uchar unsigned char
#define uint unsigned int
#define Dataport P1 //LCD數據線
sbit RS=P2^2; // 數據\指令 選擇
sbit RW=P2^1; // 讀\寫 選擇
sbit EN=P2^0; // 讀\寫使能
sbit cs1=P2^4; // 片選1
sbit cs2=P2^3; // 片選2
/********************************/
/* 定義中文字庫 */
/********************************/
unsigned char code Hzk[]={
///*-- 文字: 中 --*/
///*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
//0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,
//0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
void CheckState() //狀態檢查,LCD是否忙?
{
uchar dat;
RS=0;
RW=1;
do{
Dataport=0x00;
EN=1;
dat=Dataport;
EN=0;
dat=0x80 & dat; //僅當第7位為0時才可操作(判別busy信號)
}while(!(dat==0x00));
}
SendCommandToLCD(uchar command) //寫命令到LCD中
{
CheckState();
RS=0; //向LCD發送命令
RW=0;
Dataport=command; //command :命令
EN=1;
EN=0;
}
void SetLine(uchar page) //設置頁 0xb8是頁的首地址
{
page=0xb8|page; //1011 1xxx 0<=page<=7 設定頁地址--X 0-7,8行為一頁64/8=8,共8頁
SendCommandToLCD(page);
}
void SetStartLine(uchar startline) //設定顯示開始行,0xc0是行的首地址
{
startline=0xc0|startline; //1100 0000
SendCommandToLCD(startline); //設置從哪行開始:0--63,一般從0 行開始顯示
}
void SetColumn(uchar column) //設定列地址--Y 0-63 ,0x40是列的首地址
{
column=column &0x3f; //column最大值為64,越出 0=<column<=63
column= 0x40|column; //01xx xxxx
SendCommandToLCD(column);
}
void SetOnOff(uchar onoff) //開關顯示,0x3f是開顯示,0x3e是關顯示
{
onoff=0x3e|onoff; //0011 111x,onoff只能為0或者1
SendCommandToLCD(onoff);
}
void WriteByte(uchar dat) //寫顯示數據
{
CheckState();
RS=1;
RW=0;
Dataport=dat;//dat:顯示數據
EN=1;
EN=0;
}
void SelectScreen(uchar screen) //選擇屏幕screen: 0-全屏,1-左屏,2-右屏
{
switch(screen)
{ case 0: cs1=0;//全屏
_nop_(); _nop_(); _nop_();
cs2=0;
_nop_(); _nop_(); _nop_();
break;
case 1: cs1=0;//左屏
_nop_(); _nop_(); _nop_();
cs2=1;
_nop_(); _nop_(); _nop_();
break;
case 2: cs1=1;//右屏
_nop_(); _nop_(); _nop_();
cs2=0;
_nop_(); _nop_(); _nop_();
break;
}
}
void ClearScreen(uchar screen) //清屏screen: 0-全屏,1-左屏,2-右
{
unsigned char i,j;
SelectScreen(screen);
for(i=0;i<8;i++) //控制頁數0-7,共8頁
{
SetLine(i);
SetColumn(0);
for(j=0;j<64;j++) //控制列數0-63,共64列
{
WriteByte(0x00); //寫點內容,列地址自動加1
}
}
}
void lcd_rol() //向上滾屏
{
uint i;
for(i = 0; i < 64; i++)
{
cs1=0; // 片選1
SendCommandToLCD(0xc0+i);
cs1=1;
cs2=0;// 片選2
SendCommandToLCD(0xc0+62-i);
cs2=0; // 片選2
delay_ms(6);
}
}
void InitLCD( ) //初始化LCD
{
CheckState();
SelectScreen(0);
SetOnOff(0); //關顯示
SelectScreen(0);
SetOnOff(1); //開顯示
SelectScreen(0);
ClearScreen(0);//清屏
SetStartLine(0); //開始行:0
}
//顯示全角漢字
void Display(uchar ss,uchar page,uchar column,uchar number) //Display(2,0,i*16,i);
{
uint i; //選屏參數,pagr選頁參數,column選列參數,number選第幾漢字輸出
SelectScreen(ss);
column=column&0x3f;
SetLine(page); //寫上半頁
SetColumn(column); //控制列
for(i=0;i<16;i++) //控制16列的數據輸出
{
WriteByte(Hzk[i+32*number]); //i+32*number漢字的前16個數據輸出
}
SetLine(page+1); //寫下半頁
SetColumn(column); //控制列
for(i=0;i<16;i++) //控制16列的數據輸出
{
WriteByte(Hzk[i+32*number+16]); //i+32*number+16漢字的后16個數據輸出
}
}
//顯示半角漢字和數字和字母
void Displayen(uchar ss,uchar page,uchar column,uchar number)
{
uint i; //選屏參數,pagr選頁參數,column選列參數,number選第幾漢字輸出
SelectScreen(ss);
column=column&0x3f;
SetLine(page); //寫上半頁
SetColumn(column);
for(i=0;i<8;i++)
{
WriteByte(Ezk[i+16*number]);
}
SetLine(page+1); //寫下半頁
SetColumn(column);
for(i=0;i<8;i++)
{
WriteByte(Ezk[i+16*number+8]);
}
}
void Dis_Play()
{
uchar i;
SetStartLine(0);
for(i=0;i<4;i++)
{
Display(0,0,i*16,i);
Display(1,0,i*16,i+4);
Display(2,0+2,i*16,i+8);
Display(1,0+2,i*16,i+12);
Display(2,0+2+2,i*16,i+16);
Display(1,0+2+2,i*16,i+20);
// Display(2,0+2+2+2,i*16,i+24);
// Display(1,0+2+2+2,i*16,i+28);
}
for(i=0;i<8;i++)
{
Displayen(2,0+2+2+2,i*8,i);
Displayen(1,0+2+2+2,i*8,i+8);
}
while(1)
{
lcd_rol();
for(i=0;i<2*5;i++)
{
delay_ms(500);
}
}
}
復制代碼
所有資料51hei提供下載:
LCD12864.rar
(101.36 KB, 下載次數: 34)
2020-3-31 14:28 上傳
點擊文件名下載附件
51LCD仿真與C程序
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美综合一区二区三区
|
九九九视频
|
久久9久
|
国产农村妇女毛片精品久久麻豆
|
华丽的挑战在线观看
|
日本在线免费看最新的电影
|
欧美日韩高清在线一区
|
99精品电影
|
91精品国产综合久久久动漫日韩
|
国产精品揄拍一区二区久久国内亚洲精
|
国产精品一二三区
|
久久久久久久久99精品
|
国产精品一区一区
|
国产精品日本一区二区在线播放
|
在线观看国产
|
国产一区视频在线
|
日本高清中文字幕
|
国产精品特级毛片一区二区三区
|
日韩一区二区三区视频
|
久久久久久国产
|
国产中文字幕在线观看
|
欧美三级在线
|
欧美xxxx在线
|
亚洲区一区二
|
亚洲一区视频在线
|
日韩二三区
|
欧美一级片免费看
|
日韩欧美一区二区三区四区
|
成人精品久久
|
国产精品国产成人国产三级
|
www.97国产
|
性网站免费
|
精品视频免费在线
|
欧洲免费视频
|
91成人免费看片
|
亚洲精品区
|
国产日产欧产精品精品推荐蛮挑
|
国产精品福利久久久
|
羞羞视频在线网站观看
|
国产精品99久久免费观看
|
人人玩人人干
|