標(biāo)題:
LCD PG160128A液晶屏仿真與單片機(jī)源程序
[打印本頁(yè)]
作者:
謝綠林
時(shí)間:
2017-12-4 12:59
標(biāo)題:
LCD PG160128A液晶屏仿真與單片機(jī)源程序
PG160128A仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(16.19 KB, 下載次數(shù): 75)
下載附件
2017-12-4 15:18 上傳
0.png
(15.57 KB, 下載次數(shù): 82)
下載附件
2017-12-4 15:18 上傳
單片機(jī)源程序如下:
#include "config.h"
/****************************************************************************
* 名稱:DelayNS()
* 功能:長(zhǎng)軟件延時(shí)
* 入口參數(shù):dly 延時(shí)參數(shù),值越大,延時(shí)越久
* 出口參數(shù):無(wú)
****************************************************************************/
/*void delay(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
for(i=0; i<500; i++);
}*/
__inline void enable_irq()
{
uint8 tmp;
__asm
{
MRS tmp,CPSR
BIC tmp,tmp,#0x80
MSR CPSR_c,tmp
}
}
__inline void disable_irq()
{
uint8 tmp;
__asm
{
MRS tmp,CPSR
ORR tmp,tmp,#0x80
MSR CPSR_c,tmp
}
}
__inline void enable_frq()
{
uint8 tmp;
__asm
{
MRS tmp,CPSR
BIC tmp,tmp,#0x40
MSR CPSR_c,tmp
}
}
__inline void disable_frq()
{
uint8 tmp;
__asm
{
MRS tmp,CPSR
ORR tmp,tmp,#0x40
MSR CPSR_c,tmp
}
}
//**************lcd programme start*****************************
#define wr (1<<8)
#define rd (1<<9)
#define cd (1<<10)
void delay(int c)
{
int j;
while(c--)
for(j=500;j>0;j--)
;
}
uint8 rd_state() //讀狀態(tài)
{
uint8 temp;
IODIR=0x700;
IOSET=cd;
IOCLR=rd;
temp=IOPIN;
IOSET=rd;
return(temp);
}
void rd_enable() //等待可讀寫
{
uint8 temp;
temp=rd_state();
while((temp&0x03)!=0x03)
temp=rd_state();
}
void rd_auto() //等待自動(dòng)讀寫
{
uint8 temp;
temp=rd_state();
while((temp&0x04)!=0x04)
temp=rd_state();
}
void wr_auto() //等待自動(dòng)寫
{
uint8 temp;
temp=rd_state();
while((temp&0x08)!=0x08)
temp=rd_state();
}
/*寫命令、寫數(shù)據(jù)命令*********************
數(shù)據(jù)1、數(shù)據(jù)2、命令、參數(shù)個(gè)數(shù)*************
*****************************************/
void wr_data(char data1,char data2,char cmd,char num)
{
char temp;
temp=num;
if(temp==2)
{
rd_enable();
IODIR=0x7ff;
IOCLR=cd;
IOCLR=0xff;
IOSET=data1;
IOCLR=wr;
IOSET=wr;
}
if(temp==2||temp==1)
{
rd_enable();
IODIR=0x7ff;
IOCLR=cd;
IOCLR=0xff;
IOSET=data2;
IOCLR=wr;
IOSET=wr;
}
rd_enable();
IODIR=0x7ff;
IOSET=cd;
IOCLR=0xff;
IOSET=cmd;
IOCLR=wr;
IOSET=wr;
}
char rd_data() //讀數(shù)據(jù)
{
char temp;
rd_enable();
IODIR=0x700;
IOCLR=cd;
IOCLR=rd;
temp=IOPIN;
IOSET=rd;
return(temp);
}
void lcd_init()
{
IODIR=cd|rd|wr;
IOSET=cd|rd|wr;
wr_data(0x00,0x00,0x40,0x02); //設(shè)置文本顯示首地址
wr_data(0x14,0x00,0x41,0x02); //設(shè)置文本顯示寬度
wr_data(0x40,0x01,0x42,0x02); //設(shè)置圖形顯示首地址
wr_data(0x14,0x00,0x43,0x02); //設(shè)置圖形顯示寬度
wr_data(0x00,0x00,0xa1,0x00); //光標(biāo)形狀設(shè)置
wr_data(0x00,0x00,0x80,0x00); //顯示方式設(shè)置,“或”
wr_data(0x00,0x00,0x9c,0x00); //顯示開關(guān)設(shè)置
}
//******************lcd programme end*******************************
/****************************************************************************
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
2104控制的點(diǎn)陣lcd.rar
(64.71 KB, 下載次數(shù): 90)
2017-12-4 12:58 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1