|
也許是我在焊LCD排針時,靜電擊壞了LCM模組,連STC12C5A60S2的與之相連接的端口也損壞了,
難怪用示波器測試數據端口有的有波形,有的無波形;
程序協議都看了但沒看出問題,所以我只能認為是PCB有問題了;
昨晚通過點亮LCD上第一個點,發現正常;
稍許松了口氣;再次驗證,有了本文的起筆。。。嘿嘿!看單片機點亮LCD第一個點的程序!
- #include <reg51.h>
- #include <intrins.h>
- #include <string.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit Lcd_Rst = P1^5;
- sbit Lcd_Csb = P1^4;
- sbit Lcd_Csa = P1^3;
- sbit Lcd_Rs = P1^2;
- sbit Lcd_Rw = P1^1;
- sbit Lcd_En = P1^0;
- sbit Rst_1302 = P3^2;
- sbit Dio_1302 = P3^3;
- sbit Sck_1302 = P3^4;
- sbit BL = P2^1;
- sbit BUZ = P2^0;
- sbit Led = P2^3;
- sbit Key_1=P2^5;
- sbit Key_2=P2^6;
- sbit Key_3=P2^7;
- uchar Time_Count,Key_Select,Beep_time,Beep,BP_Count,Key_count,Key_flag,Key_long_flag;
- uchar Year=0x12,Month=0x05,Date=0x05,Week=0x01,Sec=0x00,Min=0x00,Hour=0x12;
- uchar Yearh,Yearl,Monthh,Monthl,Dateh,Datel,Hourh,Hourl,Minl,Minh,Secl,Sech;
- uint BLT_Count;
- uchar BLT_Sec;
- //----------------------------------------------------------------------------------------
- void Delay_ms(uint ms)
- {
- uint i,j;
- for(i=ms;i>0;i--)
- for(j=1220;j>0;j--)
- {;}
- }
- void Delay_us(uint us)
- {
- while(us--);
- }
- //chip selection signal CSB CSA Selection
- // 0 0 IC1
- // 0 1 IC2
- // 1 0 IC3
- // 1 1 None
- //----------------------------------------------------------------------------------------
- void Busy()
- {
- Lcd_Rw=1;
- Lcd_Rs=0;
- P0=0xff;
- Lcd_En=1;
- _nop_();
- while(P0&0x80);
- _nop_();
- Lcd_En=0;
- }
- //WR_DATA&CMd
- void wrdata(uchar a,uchar b,uchar c,uchar lcddata)
- {
- Lcd_Csa=a;
- Lcd_Csb=b;
- Busy();
- Lcd_Rs=c;
- Lcd_Rw=0;
- Lcd_En=1;
- _nop_();
- P0=lcddata;
- _nop_();
- Lcd_En=0;
- Lcd_Csa=1;
- Lcd_Csb=1;
- Lcd_Rs=1;
- Lcd_Rw=1;
- }
- //LCM INITIAL
- void initallcd(void)
- {
- Lcd_Csa=1;
- Lcd_Csb=1;
- Lcd_En=0;
- Lcd_Rst=0;
- Delay_ms(50);
- Lcd_Rst=1;
- Delay_ms(50);
- wrdata(0,0,0,0x3E);
- Delay_ms(5);
- wrdata(0,1,0,0x3E);
- Delay_ms(5);
- wrdata(1,0,0,0x3E);
- Delay_ms(5);
- wrdata(0,0,0,0x3F);
- Delay_ms(5);
- wrdata(0,1,0,0x3F);
- Delay_ms(5);
- wrdata(1,0,0,0x3F);
- Delay_ms(5);
-
- }
- //----------------------------------------------------------------------------------------
- void Clear(uchar dat)
- {
- uchar i,j;
- uchar page=0xb8;
- for(i=0;i<8;i++)
- {
- wrdata(0,0,0,page|i);
- wrdata(0,0,0,0x40);
- wrdata(0,0,0,0xc0);
- wrdata(0,1,0,page|i);
- wrdata(0,1,0,0x40);
- wrdata(0,1,0,0xc0);
- wrdata(1,0,0,page|i);
- wrdata(1,0,0,0x40);
- wrdata(1,0,0,0xc0);
- for(j=0;j<64;j++)
- {
- wrdata(0,0,1,dat);
- wrdata(0,1,1,dat);
- wrdata(1,0,1,dat);
- }
- }
- }
- void SetPoint(uchar k)
- {
- wrdata(0,0,0,0xb8);
- wrdata(0,0,0,0x40);
- wrdata(0,0,0,0xc0);
- wrdata(0,0,1,k);
- }
- //----------------------------------------------------------------------------------------
- void Beep_Bi(void)
- {
- if(Beep_time!=0)
- {
- Beep_time--;
- BUZ=~BUZ;
- }
- else
- {
- BUZ=0;
- }
- }
- //----------------------------------------------------------------------------------------
- void TM_ini(void)
- {
- TMOD=0x12;
- TH1=(65536-10000)/256;
- TL1=(65536-10000)%256;
- TR1=1;
- ET1=1;
- TH0=6;
- TL0=6;
- TR0=0;
- ET0=1;
- EA=1;
- }
- //----------------------------------------------------------------------------------------
- void TM1(void)interrupt 3
- {
- TH1=(65536-10000)/256;
- TL1=(65536-10000)%256;
- Key_1=1;
- if(Key_1==0)
- {
- Key_count++;
- if(Key_count==2)
- {
- //Beep_time=150;
- Key_flag=1;BLT_Sec=0;
- TR0=1;BL=1;Led=0;
- Key_Select++;
- if(Key_Select==3)
- {
- Key_Select=0;Key_flag=0;
- }
- }
- }
- else
- {Key_count=0;Key_flag=0;}
- }
- //----------------------------------------------------------------------------------------
- void TM0(void)interrupt 1
- {
- TF0=0;
- BLT_Count++;
- BP_Count++;
- if(BP_Count==2)
- {
- BP_Count=0;
- Beep_Bi();
- }
- if(BLT_Count==2000)
- {
- BLT_Count=0;Led=~Led;BLT_Sec++;
- if(BLT_Sec==15)
- {
- BL=0;BLT_Sec=0;Led=0;
- }
- }
- //}
- }
- //----------------------------------------------------------------------------------------
- void main(void)
- {
- P2=0xf8;
- initallcd();
- Clear(0x00);
- //TM_ini();
- while(1)
- {
- SetPoint(0x01);
- }
- }
復制代碼
|
|