完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
为啥按书上的例子仿真串口液晶MILFORD-2X16-BKP显示乱码?? 例子源于书《PIC16系列单片机C程序设计与proteus仿真》江和编著 /******************************************************************************/ /*FilestoInclude*/ /******************************************************************************/ #ifdefined(__XC) #include #elifdefined(HI_TECH_C) #include #endif #include #include #include"system.h"/*Systemfunct/params,likeosc/peripheralconfig*/ #include"user.h"/*Userfunct/params,suchasInitApp*/ #include /******************************************************************************/ /*UserGlobalVariableDeclaration*/ /******************************************************************************/ char ID[8]; /*i.e.uint8_t #define TX GP1//RC1 //¿ØÖÆ´®ÐÐLCDµÄTX //#defineTX_DIRTRISD0//TRISC1 //#defineTX_READY()TX_DIR=0 #define LCD_CLR 0x01 //ÇåÆÁÃüÁî #define LINE1 0x80 //µÚ1ÐеØÖ· #define LINE2 0xC0 //µÚ2ÐеØÖ· #define COMMAND 0xFE //ÃüÁîÂë #define LCD_COMMAND(A) LCD_TX(COMMAND); LCD_TX(A) #define LCD_CLEAR() LCD_COMMAND(LCD_CLR); DELAY(2) /******************************************************************************/ /*MainProgram*/ /******************************************************************************/ //======ÑÓʱ(n)ms voidDELAY(unsignedintn) { unsignedintj; chark; for(j=0;j } //======ÑÓʱ(n¡Á10)us+12us,¾«È·,°üÀ¨µ÷ÓÃÓë·µ»Øʱ¼ä voidDELAY_US(charn) { charj; j=n; while(j>0) { j--; NOP();NOP();NOP();NOP(); } } voidLCD_TX(charA) //°´9600²¨ÌØÂÊÓëLCDͨÐÅ,ÿλʱ¼äΪ104us { chari; TX=1;NOP(); TX=0; //Æôʼλ DELAY_US(9);//9 //ÑÓʱԼ102us for(i=0;i<8;i++) { if((A&0x01)==0x01) TX=1; else TX=0; DELAY_US(8);//8//ÑÓʱ92us,¼ÓÉÏÑ»·ÄÚµÄÆäËûÖ´ÐÐʱ¼ä,Óë9600²¨ÌØÂÊʱ¼ä104Ïà½ü¡£ A=A>>1; } TX=1; DELAY_US(20);//20 //°üÀ¨Í£Ö¹Î»ÑÓʱԼ212us, } void LCD_CSH(void) { //TX_READY(); TRISIO=0x08; TX=1; DELAY(200); LCD_COMMAND(0b00001100); //D(d2)=1:´ò¿ªÏÔʾ,C(d1)=0:¹â±ê¹Ø±Õ,B(d0)=0:¹â±ê²»ÉÁ LCD_COMMAND(0b00000001); //Çå³ýÏÔʾ DELAY(2); //ÑÓʱ2ms LCD_COMMAND(0b00000110); //ÊäÈëģʽ,I/D(d1)=1:µØÖ·¼Ó1,S(d0)=1:ÏÔʾÒÆλ¹Ø±Õ } //ÏÔʾN¸ö×Ö·û,×Ö·ûÒÑ´æÓÚÊý×éAÖÐ voidLCD_LINE(char*A,charN) { chari; for(i=0;i } //ÏÔʾN¸ö×Ö·û,×Ö·ûΪ³£ÊýÊý×é voidLCD_LINE1(constchar*A,charN) { chari; for(i=0;i } //°´ÕÕ16½øλÊýÏÔʾN¸ö×Ö½Ú(2N¸ö×Ö·û) voidLCD_LINE2(char*A,charN) { chari,j,k; for(i=N;i>0;i--) { j=A[i-1]; k=j>>4; //ÏÈд¸ß4λ k=k&0x0F; if(k<=9) LCD_TX(k+0x30); //°Ñ0£9ת»»ÎªÏàÓ¦Êý×ÖµÄASCIIÂë else LCD_TX(k+'A'-0x0A); //°ÑA£Fת»»ÎªÏàÓ¦×Ö·ûµÄASCIIÂë k=j&0x0F; //ÔÙдµÍ4λ if(k<=9) LCD_TX(k+0x30); else LCD_TX(k+'A'-0x0A); } } voidlcdPrintString(constchar*s) { //while(s&&*s) while(s&&*s) LCD_TX(*s++); } constcharAA1[13]="Find1-WIRE:"; void DISP_ID(char*A) { LCD_CLEAR(); DELAY(30); //Ôì³ÉÉÁ¶¯Ð§¹û LCD_COMMAND(LINE1); //µÚ1ÐÐ LCD_LINE1(AA1,12); //ÏÔʾÊý×éAA1µÄÇ°12¸ö×Ö·û LCD_COMMAND(LINE2); //µÚ2ÐÐ LCD_LINE2(A,8); //°´16½øÖÆÏÔʾROM_CODE DELAY(1000); //ÑÓʱʱ¼ä¿É¸ù¾ÝÇé¿öÔö¡¢¼õ } //ÏÔʾζÈÖµ void DISP_WD(intWENDU) { unsignedcharbuf[20]={0};//40 LCD_COMMAND(0b00001100);//D(d2)=1:´ò¿ªÏÔʾ,C(d1)=0:¹â±ê¹Ø±Õ,B(d0)=0:¹â±ê²»ÉÁ LCD_COMMAND(LINE1+3); //ÏÔʾζÈÖµ LCD_TX('t'); LCD_TX('='); sprintf(buf,"%d",WENDU); lcdPrintString(buf); LCD_TX(0xDF); //ÏÔʾ"¡ã",¼ûͼ5.10 LCD_TX('C'); LCD_COMMAND(0b00001111);//D(d2)=1:´ò¿ªÏÔʾ,C(d1)=1:¹â±ê´ò¿ª,B(d0)=1:¹â±êÉÁ˸ DELAY(1000); } void CSH(void) { ANSEL=0; //全为数字口 WPU=0; //禁止弱上拉 CMCON0=0x07; //关闭比较器,相关的口均为IO口 TRISIO=0b00001000; TX=1; OSCCON=0b01100000; //选用内部4M振荡器作为系统时钟 } voidmain(void) { /*Configuretheoscillatorforthedevice*/ ConfigureOscillator(); /*InitializeI/OandPeripheralsforapplication*/ InitApp(); for(inti=0;i ID=0x99; CSH(); LCD_CSH(); DISP_ID(ID); while(1) { /*TODO } } |
|
相关推荐
3个回答
|
|
我去,模拟串口!靠谱吗?仿真对逻辑要求很严格的!
|
|
|
|
这个东西现在发现有问题,和延时有关系
|
|
|
|
串口液晶的时钟要和单片机的时钟一样,串口液晶的波特率要和单片机的波特率一样。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
5050 浏览 3 评论
6347 浏览 1 评论
6607 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
8359 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1248 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:48 , Processed in 0.698809 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号