/* * File: main.c * Author: Administrator * * Created on 2017?8?23?, ??4:38 */ #pragma config FOSC=HS1 #pragma config WDTEN=OFF #pragma config PLLCFG = OFF #include <xc.h> #include "delay.h" #include "lcd.h" #include "port.h" #include <pic18f66k80.h> char ta[]={"================"}; void main(void) { port(); PORTG=0X00; PORTB=0X00; rst=1; LcdInit(); // while(1) { // sendByte(0xaa); // sendCom(0x81); // LcdInit(); // position(1,1); // position(1,2); // position(1,3); // position(1,4); // sendCom(0x55); position(1,1); LcdString("dddddd"); position(2,1); sendDat('H'); delay5ms(100); } } LCD.H 复制/* * File: LCD.c * Author: Administrator * * Created on 2017?8?3?, ??9:10 */ #include <stdio.h> #include <stdlib.h> #include "lcd.h" #include "port.h" void sendByte(char send) { char n; for(n=0;n<8;n++) { slk=1; if((send&0x80)==0x80) sid=1; else sid=0; delay25us(1); slk=0; delay25us(1); send=send<<1; } } void sendCom(char com) { char comh,coml; comh=com&0xf0; coml=((com&0x0f)<<4); cs=1; sendByte(0xf8); sendByte(comh); sendByte(coml); delay25us(16); cs=0; } void sendDat(char dat) { char dath,datl; dath=dat&0xf0; datl=((dat&0x0f)<<4); cs=1; sendByte(0xfa); sendByte(dath); sendByte(datl); delay25us(16); cs=0; } void position(char x,char y) { char pos; if(x==1) pos=0x80+y; if(x==2) pos=0x90+y; if(x==3) pos=0x88+y; if(x==4) pos=0x98+y; sendCom(pos); } void LcdInit() { psb=0; rst=1; sendCom(0x30); sendCom(0x0c); sendCom(0x01); delay25us(10); sendCom(0x02); sendCom(0x06); sendCom(0x0c); sendCom(0x14); } void LcdString(char *p) { while(*p!='\0') { sendDat(*p); p++; } } DELAY.H 复制/* * File: delay.c * Author: Administrator * * Created on 2017Äê8ÔÂ3ÈÕ, ÉÏÎç9:11 */ #include "DELAY.h" void delay25us(char aa) { char i; while(aa--) for(i=0;i<40;i++); } void delay10us(char cc) { char i; while(cc--) for(i=0;i<16;i++); } void delay5ms(int bb) { int i; while(bb--) for(i=0;i<800;i++);//400-->2.5MS } PORT.H 复制/* * File: port.h * Author: Administrator * * Created on 2017?8?23?, ??4:39 */ #ifndef PORT_H #define PORT_H #include <pic18f66k80.h> #define cs LATGbits.LATG0 #define sid LATGbits.LATG1 #define slk LATGbits.LATG2 #define psb LATGbits.LATG3 #define rst LATBbits.LATB0 void port(); #endif /* PORT_H */ 大体上代码就是如上,这个代码在STC单片机上验证通过可以显示,但是在PIC18F66K80上却不能正确运行【编译没有问题】。 因为第一次使用PIC芯片,对GPIO的操作不是很透彻。只会一般的操作。 https://git.oschina.net/deja/mplab_lcd12864.git 详细代码<<<< 本来这块板是画来学CAN的,但显示部份没能处理成功,CAN学习部分搁浅到现在。
/* * File: LCD.c * Author: Administrator * * Created on 2017?8?3?, ??9:10 */ #include <stdio.h> #include <stdlib.h> #include "lcd.h" #include "port.h" void sendByte(char send) { char n; for(n=0;n<8;n++) { slk=1; if((send&0x80)==0x80) sid=1; else sid=0; delay25us(1); slk=0; delay25us(1); send=send<<1; } } void sendCom(char com) { char comh,coml; comh=com&0xf0; coml=((com&0x0f)<<4); cs=1; sendByte(0xf8); sendByte(comh); sendByte(coml); delay25us(16); cs=0; } void sendDat(char dat) { char dath,datl; dath=dat&0xf0; datl=((dat&0x0f)<<4); cs=1; sendByte(0xfa); sendByte(dath); sendByte(datl); delay25us(16); cs=0; } void position(char x,char y) { char pos; if(x==1) pos=0x80+y; if(x==2) pos=0x90+y; if(x==3) pos=0x88+y; if(x==4) pos=0x98+y; sendCom(pos); } void LcdInit() { psb=0; rst=1; sendCom(0x30); sendCom(0x0c); sendCom(0x01); delay25us(10); sendCom(0x02); sendCom(0x06); sendCom(0x0c); sendCom(0x14); } void LcdString(char *p) { while(*p!='\0') { sendDat(*p); p++; } } DELAY.H 复制/* * File: delay.c * Author: Administrator * * Created on 2017Äê8ÔÂ3ÈÕ, ÉÏÎç9:11 */ #include "DELAY.h" void delay25us(char aa) { char i; while(aa--) for(i=0;i<40;i++); } void delay10us(char cc) { char i; while(cc--) for(i=0;i<16;i++); } void delay5ms(int bb) { int i; while(bb--) for(i=0;i<800;i++);//400-->2.5MS } PORT.H 复制/* * File: port.h * Author: Administrator * * Created on 2017?8?23?, ??4:39 */ #ifndef PORT_H #define PORT_H #include <pic18f66k80.h> #define cs LATGbits.LATG0 #define sid LATGbits.LATG1 #define slk LATGbits.LATG2 #define psb LATGbits.LATG3 #define rst LATBbits.LATB0 void port(); #endif /* PORT_H */ 大体上代码就是如上,这个代码在STC单片机上验证通过可以显示,但是在PIC18F66K80上却不能正确运行【编译没有问题】。 因为第一次使用PIC芯片,对GPIO的操作不是很透彻。只会一般的操作。 https://git.oschina.net/deja/mplab_lcd12864.git 详细代码<<<< 本来这块板是画来学CAN的,但显示部份没能处理成功,CAN学习部分搁浅到现在。
/* * File: delay.c * Author: Administrator * * Created on 2017Äê8ÔÂ3ÈÕ, ÉÏÎç9:11 */ #include "DELAY.h" void delay25us(char aa) { char i; while(aa--) for(i=0;i<40;i++); } void delay10us(char cc) { char i; while(cc--) for(i=0;i<16;i++); } void delay5ms(int bb) { int i; while(bb--) for(i=0;i<800;i++);//400-->2.5MS } PORT.H 复制/* * File: port.h * Author: Administrator * * Created on 2017?8?23?, ??4:39 */ #ifndef PORT_H #define PORT_H #include <pic18f66k80.h> #define cs LATGbits.LATG0 #define sid LATGbits.LATG1 #define slk LATGbits.LATG2 #define psb LATGbits.LATG3 #define rst LATBbits.LATB0 void port(); #endif /* PORT_H */ 大体上代码就是如上,这个代码在STC单片机上验证通过可以显示,但是在PIC18F66K80上却不能正确运行【编译没有问题】。 因为第一次使用PIC芯片,对GPIO的操作不是很透彻。只会一般的操作。 https://git.oschina.net/deja/mplab_lcd12864.git 详细代码<<<< 本来这块板是画来学CAN的,但显示部份没能处理成功,CAN学习部分搁浅到现在。
/* * File: port.h * Author: Administrator * * Created on 2017?8?23?, ??4:39 */ #ifndef PORT_H #define PORT_H #include <pic18f66k80.h> #define cs LATGbits.LATG0 #define sid LATGbits.LATG1 #define slk LATGbits.LATG2 #define psb LATGbits.LATG3 #define rst LATBbits.LATB0 void port(); #endif /* PORT_H */ 大体上代码就是如上,这个代码在STC单片机上验证通过可以显示,但是在PIC18F66K80上却不能正确运行【编译没有问题】。 因为第一次使用PIC芯片,对GPIO的操作不是很透彻。只会一般的操作。 https://git.oschina.net/deja/mplab_lcd12864.git 详细代码<<<< 本来这块板是画来学CAN的,但显示部份没能处理成功,CAN学习部分搁浅到现在。
您需要 登录 才可以下载或查看,没有账号?注册
收藏0 举报
yqdeso 发表于 2017-8-29 12:17 main.c 23 24行不正确
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
37
185
2
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号