找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3064|回复: 0
打印 上一主题 下一主题
收起左侧

51+PIC单片机兼容程序 1602液晶显示欢迎界面

[复制链接]
跳转到指定楼层
楼主
ID:103513 发表于 2016-1-17 00:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  1. //犯的错:在51里RW(L命令、H数据)是直接焊成接地的
  2. //∴ 少了lcd_enable(); 这一函数{lcdrs = 0; lcdrw = 0; lcden = 0; delay(5); lcden = 1;}
  3. //少了这一函数设置就无法显示了
  4. #define PIC     //说明,如果是51,你把这句删掉即可
  5. #define ww     //说明,如果是PIC16F877A,你把这句删掉即可
  6. #ifdef ww
  7. #include<reg52.h>
  8. sbit lcden=P3^4;
  9. sbit lcdrs=P3^5;
  10. sbit lcdrw=P3^0;   //这是个无用的定义,因为51板直接接地,而PIC则不是
  11. sbit dula=P2^6;     
  12. sbit wela=P2^7;
  13. #endif
  14. #ifdef PIC
  15. #include <pic.h>
  16. __CONFIG(0X3B31);
  17. #define lcden RA3
  18. #define lcdrs RA5
  19. #define lcdrw RA4
  20. #define P0 PORTD
  21. #endif
  22. #define uchar unsigned char
  23. #define uint unsigned int

  24. #ifdef ww
  25. uchar code table[]="   hello! jasper";   //写字符串时用“”而不是{ }了
  26. uchar code table1[]="   xm.dabiao    ";
  27. #endif
  28. #ifdef PIC
  29.   //奇怪了,移动下面2行会提示,逗号错误
  30. const uchar table[]="   hello! jasper";    //写字符串时用“”而不是{ }了
  31. const uchar table1[]="   xm.dabiao    "; //PIC的数组写法与51的是不同的
  32. #endif
  33. uchar num;
  34. void delay(uint z)     //延时
  35. {
  36.   uint x,y;
  37.   for(x=z;x>0;x--)
  38.    for(y=110;y>0;y--);
  39. }
  40. void write_com(uchar com)
  41. {
  42.   lcdrs=0;  
  43.   P0=com;
  44.   delay(5);  
  45.   lcden=1;  
  46.   delay(5);
  47.   lcden=0;
  48. }
  49. void write_data(uchar date)  
  50. {
  51.   lcdrs=1;
  52.   P0=date;
  53. //  delay(5);
  54.   lcdrs=1;
  55.   lcdrw=0;
  56.   lcden=0;
  57.   delay(5);
  58.   lcden=1;
  59. }
  60. void lcd_enable(void)   
  61. {
  62. lcdrs = 0;                     
  63. lcdrw = 0;                  
  64. lcden = 0;                  
  65. delay(5);               
  66. lcden = 1;                  
  67. }
  68. void init()
  69. {
  70. #ifdef ww
  71.    dula=0;         
  72.   wela=0;
  73.   lcden=0;
  74. #endif
  75. #ifdef PIC
  76. TRISA=0x00;PORTA=0XF0;
  77. TRISD=0x00;PORTD=0XFF;
  78. ADCON1=0X07;
  79. RA1=1;
  80. #endif
  81.   lcd_enable();   
  82.   write_com(0x38);  
  83.   lcd_enable();
  84.   write_com(0x0c);   
  85.   lcd_enable();   
  86.   write_com(0x06);   
  87.   lcd_enable();  
  88.   write_com(0x01);
  89.   lcd_enable();
  90. // write_com(0x80);
  91.   write_com(0x80+0x10);
  92. }
  93. void main()
  94. {
  95.   init();
  96.   for(num=0;num<16;num++)
  97.   {      
  98.     write_data(table[num]);
  99.     delay(20);
  100.   }
  101.   write_com(0x80+0x51);  
  102.   for(num=0;num<16;num++)
  103.   {
  104.     write_data(table1[num]);
  105.     delay(20);
  106.   }
  107.   for(num=0;num<16;num++)
  108.   {
  109.     write_com(0x18);
  110.     delay(160);
  111.   }
  112.   while(1);
  113. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表