使用的AGM1232,然后使用proteus仿真圖是這樣的,程序代碼如下,怎么調位置都不對。
TIM圖片20200304104901.png (75.96 KB, 下載次數: 20)
下載附件
2020-3-4 10:49 上傳
- #include<reg51.h>
- #define PD1 61
- unsigned char Column;
- unsigned char Page_;
- unsigned char Code_;
- unsigned char Command;
- unsigned char LCDData;
- xdata unsigned char CWADD1 _at_ 0x8000;
- xdata unsigned char DWADD1 _at_ 0x8001;
- xdata unsigned char CRADD1 _at_ 0x8002;
- xdata unsigned char DRADD1 _at_ 0x8003;
- xdata unsigned char CWADD2 _at_ 0x8004;
- xdata unsigned char DWADD2 _at_ 0x8005;
- xdata unsigned char CRADD2 _at_ 0x8006;
- xdata unsigned char DRADD2 _at_ 0x8007;
- code unsigned char EETAB[ ][8]={
- {0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00},
- {0x10,0x30,0x50,0x10,0x10,0x10,0x7c,0x00},
- {0x38,0x44,0x04,0x08,0x10,0x20,0x7c,0x00},
- {0x78,0x84,0x04,0x38,0x04,0x84,0x78,0x00}
- };
- code unsigned char CCTAB[][32] ={
- {0x00,0x24,0xF6,0x24,0x24,0x64,0xA4,0x24,0x3F,0x24,0xA4,0x64,0x24,0x24,0xE4,0x04,
- 0x00,0x00,0x7F,0x80,0x49,0x09,0x09,0x09,0x7F,0x09,0x09,0x09,0x09,0x00,0xFF,0x00},
- };
- void WriteCommandE1(){
- while(CRADD1 & 0x80);
- CWADD1 = Command;
- }
- void WriteDataE1(){
- while(CRADD1 & 0x80);
- DWADD1 = LCDData;
- }
- void ReadDataE1(){
- while(CRADD1 & 0x80);
- LCDData = DRADD1;
- }
- void WriteCommandE2(){
- while(CRADD2 & 0x80);
- CWADD2 = Command;
- }
- void WriteDataE2(){
- while(CRADD2 & 0x80);
- DWADD2 = LCDData;
- }
- void ReadDataE2(){
- while(CRADD2 & 0x80);
- LCDData = DRADD2;
- }
- void Init(){
- Command = 0xe2;
- WriteCommandE1();
- WriteCommandE2();
- Command = 0xa4;
- WriteCommandE1();
- WriteCommandE2();
- Command = 0xa9;
- WriteCommandE1();
- WriteCommandE2();
- Command = 0xa0;
- WriteCommandE1();
- WriteCommandE2();
- Command = 0xc0;
- WriteCommandE1();
- WriteCommandE2();
- Command = 0xaf;
- WriteCommandE1();
- WriteCommandE2();
- }
- void Clear(){
- unsigned char i, j;
- i = 0;
- do{
- Command = (i + 0xb8);
- WriteCommandE1();
- WriteCommandE2();
- Command = 0x00;
- WriteCommandE1();
- WriteCommandE2();
- j = 0x50;
- do{
- LCDData = 0x00;
- WriteDataE1();
- WriteDataE2();
- }while(--j!=0);
- }while(++i!=4);
- }
- void Delay(){
- unsigned char i, j;
- i = 20;
- j = 0;
- do{
- do{
- }while(--j!=0);
- }while(--i!=0);
- }
- void WriteCHN16x16(){
- unsigned char i, j, k;
- i = 0;
- j = 0;
- while(j<2){
- Command = ((Page_ + j) & 0x03)|0xb8;
- WriteCommandE1();
- WriteCommandE2();
- k = Column;
- while(k < Column + 16){
- if(k < PD1){
- Command = k;
- WriteCommandE1();
- LCDData = CCTAB[Code_][i];
- WriteDataE1();
- }
- else{
- Command = k-PD1;
- WriteCommandE2();
- LCDData = CCTAB[Code_][i];
- WriteDataE2();
- }
- i++;
- if(++k >= PD1*2) break;
- }
- j++;
- }
- }
- int main(){
- Init();
- Clear();
- Page_ = 0x02;
- Column = 0x00;
- Code_ = 0x00;
- WriteCHN16x16();
-
- Page_ = 0x02;
- Column = 0x10;
- Code_ = 0x00;
- WriteCHN16x16();
- while(1);
- }
復制代碼
|