|
20黑幣
我現(xiàn)在用GN1621驅(qū)動液晶屏,不能單獨操作SEG口,我想給SEG9一個0xf0,液晶屏全亮了。有有大佬知道問題嗎?
單片機源程序如下:
#define unchar unsigned char #define unint unsigned int
#define unlong unsigned long
#define CS RC0 //片選端
//#define RD RC1 //讀數(shù)據(jù)時鐘
#define WR RC1 //寫數(shù)據(jù)時鐘
#define DATA RC4 //串行數(shù)據(jù)端
void DelayUs(unsigned char Time)
{
unsigned char a;
for(a=0;a<Time;a++)
{
CLRWDT();
}
}
void delay(void)
{
unchar i;
for(i=0;i<200;i++);
}
void delay_ms(unsigned char Time)
{
unsigned char a,b;
for(a=0;a<Time;a++)
{
for(b=0;b<5;b++)
{
DelayUs(197); //快1%
}
}
}
void write_byte(unchar byte,unchar length)
{
unchar i;
for(i=0;i<length;i++)
{
WR = 0;
delay();
if(byte & 0X80)
{
DATA = 1; //高位先傳
}
else
{
DATA = 0;
}
byte <<= 1;
WR = 1; //WR上升沿鎖存
delay();
}
}
void Write_dat(unchar dat) //寫數(shù)據(jù)
{
unchar i;
CS = 1;
delay();
CS = 0; //片選低電平使能
write_byte(0XA0,3); //傳3位命令碼101
write_byte(0X09,6); //傳6位地址碼,起始地址00H
for(i=0;i<32;i++)
{
write_byte(dat,4); //傳4位數(shù)據(jù)。高位先傳
}
}
void Write_dat1(unchar Addr,unchar dat) //寫數(shù)據(jù)
{
unchar i;
CS = 1;
delay();
CS = 0; //片選低電平使能
write_byte(0XA0,3); //傳3位命令碼101
write_byte(Addr,6); //傳6位地址碼,起始地址00H
for(i=0;i<8;i++)
{
write_byte(dat,4); //傳4位數(shù)據(jù)。高位先傳
}
}
void Write_cmd(unchar cmd) //寫指令
{
CS = 1;
delay();
CS = 0;
write_byte(0X80,3); //傳3位命令碼100
write_byte(cmd,9); //傳9位指令
}
void lcd_init(void)
{
delay_ms(100);
Write_cmd(0x01); //開啟系統(tǒng)時鐘
Write_cmd(0X18); //內(nèi)部RC震蕩
// Write_cmd(0X14); //晶體振蕩
//// Write_cmd(0X07); //允許WDT暫停標(biāo)志輸出
//// Write_cmd(0X88); //允許IRQ輸出
//// Write_cmd(0X60); //蜂鳴頻率:2KHz
Write_cmd(0x29); //1/3偏置,4COM
Write_dat(0x00); //RAM清零
Write_cmd(0x03); //開顯示
}
/*-------------------------------------------------
* 函數(shù)名:POWER_INITIAL
* 功能: 上電系統(tǒng)初始化
* 輸入: 無
* 輸出: 無
--------------------------------------------------*/
void POWER_INITIAL (void)
{
OSCCON = 0B01110001; //WDT 32KHZ IRCF=111=16MHZ/2=8MHZ,0.125US/T
//Bit0=1,系統(tǒng)時鐘為內(nèi)部振蕩器
//Bit0=0,時鐘源由FOSC<2:0>決定即編譯選項時選擇
INTCON = 0; //暫禁止所有中斷
PORTA = 0B00000000;
TRISA = 0B00000000; //PA輸入輸出 0-輸出 1-輸入
//PA3->輸出
PORTC = 0B00000000;
TRISC = 0B00000000; //PC輸入輸出 0-輸出 1-輸入
WPUA = 0B00000000; //PA端口上拉控制 1-開上拉 0-關(guān)上拉
WPUC = 0B00000000; //PC端口上拉控制 1-開上拉 0-關(guān)上拉
OPTION = 0B00001000; //Bit3=1 WDT MODE,PS=000=1:1 WDT RATE
//Bit7(PAPU)=0 ENABLED PULL UP PA
MSCKCON = 0B00000000; //Bit6->0,禁止PA4,PC5穩(wěn)壓輸出
//Bit5->0,TIMER2時鐘為Fosc
//Bit4->0,禁止LVR
CMCON0 = 0B00000111; //關(guān)閉比較器,CxIN為數(shù)字IO口
}
/*-------------------------------------------------
* 函數(shù)名: main
* 功能: 主函數(shù)
* 輸入: 無
* 輸出: 無
--------------------------------------------------*/
void main()
{
POWER_INITIAL(); //系統(tǒng)初始化
lcd_init();
while(1)
{
//Write_dat1(0x16,0x00);
//Write_dat1(0x15,0x00);
//Write_dat1(0x14,0x00);
//Write_dat1(0x13,0x00);
//Write_dat1(0x12,0x00);
//Write_dat1(0x11,0x00);
//Write_dat1(0x10,0x00);
//Write_dat1(0x0F,0x00);
//Write_dat1(0x0E,0x00);
//Write_dat1(0x0D,0x00);
//Write_dat1(0x0C,0x00);
//Write_dat1(0x0B,0x00);
//Write_dat1(0x0A,0x00);
Write_dat1(0x09,0xf0);
}
}
|
|