直播推薦
企業(yè)動態(tài)
- 上海兆越攜重磅方案亮相軌交運維大會
- 當「AI浪潮」撞上掌舵者野心:誰在重新制定行業(yè)規(guī)則?
- 喜報 | 鑫精誠傳感器榮獲深圳名品牌及灣區(qū)名品牌
- CIBF2025現(xiàn)場直擊 | 皓天試驗設備次日熱度攀升!技術展示區(qū)成全場焦點
- 東莞市皓天試驗設備即將亮相CIBF2025,邀您共探電池測試新未來
- 京東集團發(fā)布2025年一季度業(yè)績 降本增效、技術創(chuàng)新引領京東工業(yè)高質(zhì)量發(fā)展
- 皓天試驗設備將攜多款環(huán)境試驗設備亮相CIBF2025深圳國際電池展
- 全場景節(jié)能30%以上!海爾中央空調(diào)亮相中國零售展
推薦展會
//LCD1620——I/O模擬控制方式
#Include <reg52.h>
#Include <intrins.h>
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef bit BOOL ;
sbit rs = P2^0; //寄存器選擇信號,高表示數(shù)據(jù)、低表示指令
sbit rw = P2^1; //讀寫控制信號,高表示讀、低表示寫
sbit ep = P2^2;//片選使能信號。下降沿觸發(fā)
BYTE code dis1[] = {"abcdef"};//每行zui多顯示16個字符
BYTE code dis2[] = {"ABCDEF"};
delay(BYTE ms)// 延時子程序
{
BYTE i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
BOOL lcd_bz()// 測試LCD忙碌狀態(tài) 011
{
BOOL result;
rs = 0;//指令
rw = 1;//讀
ep = 1;//使能
_nop_();
_nop_();
_nop_();
_nop_();
result = (BOOL)(P0 & 0x80);//讀忙標志和地址計數(shù)器ACC的值
//P0口如果等于0X80,則說明不忙碌,(數(shù)據(jù)總線的高位為1)
ep = 0;//使能下降沿觸發(fā)
return result;
}
lcd_wcmd(BYTE cmd)// 寫入指令數(shù)據(jù)到LCD 000
{
while(lcd_bz());
rs = 0;
rw = 0;
ep = 0;//下降沿
_nop_();
_nop_();
P0 = cmd;//寫指令數(shù)據(jù),已經(jīng)定義“ BYTE cmd”
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1; //高
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0; //低
}
lcd_pos(BYTE pos)//設定顯示位置
{
lcd_wcmd(pos | 0x80);
}
lcd_wdat(BYTE dat)//寫入字符顯示數(shù)據(jù)到LCD 100
{
while(lcd_bz());
rs = 1;
rw = 0;
ep = 0;
P0 = dat;//寫數(shù)據(jù)數(shù)據(jù),已經(jīng)定義“BYTE dat”
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1; //高
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0; //低
}
lcd_init() //LCD初始化設定
{
lcd_wcmd(0x38); //打開顯示開關、允許移動位置、允許功能設置
delay(1);
lcd_wcmd(0x0c); //打開顯示開關、設置輸入方式
delay(1);
lcd_wcmd(0x06); //設置輸入方式、光標返回
delay(1);
lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容
delay(1);
}
main()
{
BYTE i;
lcd_init(); // 初始化LCD
delay(10);
lcd_pos(0); // 設置顯示位置為*行的第5個字符
i = 0;
while(dis1[i] != '0')
{ // 顯示字符"abcdef"
lcd_wdat(dis1[i]);
i++;
}
//lcd_pos(0x41); // 設置顯示位置為第二行第二個字符
lcd_pos(64); // 設置顯示位置為第二行第1個字符
i = 0;
while(dis2[i] != '0')
{
lcd_wdat(dis2[i]); // 顯示字符"ABCDEF "
i++;
}
while(1); //
}
//LCD12864—I/O模擬控制顯示方式
/********************************************/
/* 12864系列測試程序 */
//128*64--16行*8頁*64列
/********************************************/
#Include <reg51.h>
#Include <ctype.h>
#Include <string.h>
#Include <stdlib.h>
#Include <stdio.h>
#Include <math.h>
#define Disp_On 0x3f//顯示開0011 111X 顯示開/關指令
#define Disp_Off 0x3e//顯示關0011 111X 顯示開/關指令
#define Col_Add 0x40//設置列地址01XX XXXX(0-63列)
#define Page_Add 0xb8 //設置頁地址指令1011 1XXX(0-7頁)、頁(PAGE)設置指令
#define Start_Line 0xc0//起始行11XX XXXX(0-63行)顯示起始行(ROW)設置指令
#define Lcd_Bus P0 //總線接口 MCU P1<------> LCM
sbit Mcs=P2^6; //主芯片選中(使能 Master chip enable)
sbit Scs=P2^5; //從芯片選中(使能 Slave chip enable)
sbit Enable=P2^7; //LCD信號使能 6800 mode Enable single
sbit Di=P2^4; //數(shù)據(jù)、命令選擇端 Data or Instrument Select
sbit RW=P2^3; //讀寫控制端 Write or Read
sbit Lcd_Rst=P1^0; //Lcm reset
/*
#Include<absacc.h>
#define LCD_CMD_WRA XBYTE[0x8008] //;寫指令代碼,RS=0、R/W=0
#define LCD_DATA_WRA XBYTE[0x8009] //;寫數(shù)據(jù),RS=1、R/W=0
#define LCD_BUSY_RDA XBYTE[0x800A] //;讀忙標志和AC值,RS=0、R/W=1
#define LCD_DATA_RDA XBYTE[0x800B] //;讀數(shù)據(jù),RS=1、R/W=1
#define LCD_CMD_WRB XBYTE[0x8004] //;寫指令代碼,RS=0、R/W=0
#define LCD_DATA_WRB XBYTE[0x8005] //;寫數(shù)據(jù),RS=1、R/W=0
#define LCD_BUSY_RDB XBYTE[0x8006] //;讀忙標志和AC值,RS=0、R/W=1
#define LCD_DATA_RDB XBYTE[0x8007] //;讀數(shù)據(jù),RS=1、R/W=1
*/
char code ce[]={
/*-- 文字: 測 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,
0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00
};
char code shi[]={
/*-- 文字: 試 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x40,0x42,0xDC,0x08,0x00,0x90,0x90,0x90,0x90,0x90,0xFF,0x10,0x12,0x1C,0x10,0x00,
0x00,0x00,0x7F,0x20,0x10,0x20,0x20,0x1F,0x10,0x10,0x01,0x06,0x18,0x20,0x78,0x00
};
char code kai[]={
/*-- 文字: 開 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x40,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x00,
0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00
};
char code shi3[]={
/*-- 文字: 始 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x10,0x90,0x70,0x1F,0x12,0xF0,0x00,0x20,0x70,0x28,0x27,0x22,0x28,0x70,0x20,0x00,
0x40,0x21,0x12,0x0C,0x06,0x09,0x30,0x00,0x7F,0x21,0x21,0x21,0x21,0x7F,0x00,0x00
};
char code wan[]={
/*-- 文字: 完 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x90,0x8C,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x94,0x8C,0x04,0x00,
0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x70,0x00,0x00
};
char code bi[]={
/*-- 文字: 畢 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x00,0xFF,0x88,0x48,0x28,0x08,0x80,0x7F,0x88,0x88,0x88,0x84,0x84,0xE0,0x00,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00
};
//-----------------延時子程序-----------------------------
void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
//----------------寫命令到LCD------------------------------
void write_com(unsigned char cmdcode)//RS=0、RW=0、E=“1—》0”
{
Di=0;
RW=0;
Lcd_Bus=cmdcode;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
//------------------寫數(shù)據(jù)到LCD----------------------------
void write_data(unsigned char Dispdata)//RS=1、RW=0、E=“1—》0”
{
Di=1;
RW=0;
Lcd_Bus=Dispdata;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
//------------------讀LCD數(shù)據(jù)----------------------------
unsigned char read_data()//RS=1、RW=1、E=1
{
unsigned char tmpin;
Di=1;
RW=1;
delay(0);
Enable=1;
delay(0);
Enable=0;
tmpin=Lcd_Bus;
return tmpin;
}
//-----------------清除內(nèi)存---------------
void Clr_Scr()
{
unsigned char j,k;
Mcs=1;Scs=1;
write_com(Page_Add+0);
write_com(Col_Add+0);
for(k=0;k<8;k++)//8頁
{
write_com(Page_Add+k);//0-8
for(j=0;j<64;j++)//64列
write_data(0x00);
}
}
//--------------------位置顯示漢字16*16-----------------------
void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk)
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
write_com(Page_Add+pag+j);
write_com(Col_Add+col);
for(i=0;i<16;i++) write_data(hzk[16*j+i]);
}
}
//-----------------初始化LCD屏--------------------------
void init_lcd()
{
Lcd_Rst=0;delay(100);
Lcd_Rst=1;delay(100);
Mcs=1;Scs=1;delay(100);
write_com(Disp_Off);
write_com(Page_Add+0);
write_com(Start_Line+0);
write_com(Col_Add+0);
write_com(Disp_On);
}
//---------------------------信息顯示---------------------
void Msg(int flg)
{
Clr_Scr();
if(flg==0)//顯示“測試開始”
{
Mcs=1;Scs=0;
hz_disp16(3,32,ce);delay(2000);
hz_disp16(3,48,shi);delay(2000);
Mcs=0;Scs=1;
hz_disp16(3,0,kai);delay(2000);
hz_disp16(3,16,shi3);delay(2000);
}
else if(flg==1)//顯示“測試完畢”
{
Mcs=1;Scs=0;
hz_disp16(3,32,ce);
hz_disp16(3,48,shi);
Mcs=0;Scs=1;
hz_disp16(3,0,wan);
hz_disp16(3,16,bi);
}
}
//-------------------主程序--------------------------------
main()
{
unsigned char i=0;
init_lcd();
while(1)
{
Msg(0);delay(10000);
Msg(1);delay(10000);
}
}
上一篇:基本模型的建立
免責聲明
- 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://www.tzhjjxc.com。違反者本網(wǎng)將追究相關法律責任。
- 企業(yè)發(fā)布的公司新聞、技術文章、資料下載等內(nèi)容,如涉及侵權、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔責任,本網(wǎng)有權刪除內(nèi)容并追溯責任。
- 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負版權等法律責任。
- 如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。
SAMPE中國第二十屆國際先進復合材料展覽會
展會城市:北京市展會時間:2025-06-18