久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5686|回復: 0
收起左側

0802LCD 4位顯示程序 PIC單片機C語言程序

[復制鏈接]
ID:115130 發表于 2016-4-19 09:44 | 顯示全部樓層 |閱讀模式
0802的LCD顯示屏 PIC單片機程序

0.png

  1. #include <xc.h>
  2. #include<pic.h>
  3. //#include"head.h"
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
  7. #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
  8. #pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
  9. #pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)
  10. #pragma config LVP = ON        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
  11. #pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
  12. #pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
  13. #pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

  14. //char tab[]="0123456789";
  15. #define uchar unsigned char
  16. #define uint unsigned int
  17. void LCD_write_cmd(uchar command);
  18. void LCD_write_command(uchar command);
  19. void LCD_en_write(void);
  20. void LCD_set_xy( unsigned char x, unsigned char y );
  21. void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);
  22. void LCD_write_data(unsigned char data);
  23. void delay_nus(unsigned int n);
  24. void delay_nms(unsigned int n);   
  25. #define RS RC2
  26. #define EN RC3
  27. #define DB7 RC7
  28. #define DB6 RC6
  29. #define DB5 RC5
  30. #define DB4 RC4
  31. #define LCD_DATA_PORT PORTC
  32. #define LCD_DATA_TRIS TRISC
  33.    
  34.     /*------------------------------------------------------------------------------
  35.     函數說明
  36.     ------------------------------------------------------------------------------*/
  37. void LCD_init()
  38. {
  39.     TRISD=0x00; //數據口方向為輸出
  40.     PORTD=0x00;
  41.     TRISC=0x00; //數據口方向為輸出
  42.     PORTC=0x00;//設置EN、RS/數據為輸出
  43.       
  44.     LCD_write_cmd(0x30);//4位的指令
  45.     delay_nms(5);
  46.     LCD_write_cmd(0x30);
  47.     delay_nus(200);  
  48.     LCD_write_cmd(0x30);
  49.     delay_nms(1);
  50.     LCD_write_cmd(0x20);
  51.     LCD_write_cmd(0x20); //4位顯示
  52.     LCD_write_cmd(0x80);

  53.     LCD_write_cmd(0x00); //顯示開 游標、閃爍不顯示
  54.     LCD_write_cmd(0x80);
  55.    
  56.     LCD_write_cmd(0x00); //清屏
  57.     LCD_write_cmd(0x01);
  58.    
  59.     LCD_write_cmd(0x00); //兩行 5*7
  60.     LCD_write_cmd(0xc0);
  61. }
  62. void LCD_write_cmd(uchar command) //寫指令
  63. {
  64.     delay_nus(10);
  65.     RS=0;
  66.     EN=0;//使能清零
  67.     LCD_DATA_PORT&=0x0f; //清除端口
  68.     delay_nus(2);
  69.     EN=1;
  70.     LCD_DATA_PORT |= (command & 0xf0);//高4位不用改
  71.     delay_nus(2);
  72.     EN=0;
  73. }

  74. void LCD_write_command(uchar command) //寫指令
  75. {
  76.     LCD_write_cmd(command);
  77.     LCD_write_cmd(command<<4);
  78. }

  79. void LCD_write_data(unsigned char data) //寫數據
  80. {
  81.     delay_nus(10);
  82.     RS=1;
  83.     EN=0;//使能清零
  84.     LCD_DATA_PORT&=0x0f;
  85.     EN=1;
  86.     LCD_DATA_PORT |= (data & 0xf0);//高4位不用改
  87.     delay_nus(2);
  88.     EN=0;
  89.     delay_nus(2);
  90.    
  91.     LCD_DATA_PORT&=0x0F; //清低四位
  92.     EN=1;
  93.     LCD_DATA_PORT |= ((data << 4) & 0xf0);//發送低4位
  94.     delay_nus(2);
  95.     EN=0;
  96.   }

  97. void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1
  98. {
  99.     LCD_set_xy( X, Y ); //寫地址
  100.     while (*s) // 寫顯示字符
  101.     {
  102.         LCD_write_data( *s );
  103.         s ++;
  104.     }
  105. }

  106. void LCD_set_xy( unsigned char x, unsigned char y )  //寫地址函數
  107. {
  108.     unsigned char address;
  109.     if (y == 0) address = 0x80 + x;
  110.     else        address = 0xc0 + x;
  111.     LCD_write_command( address);
  112.    
  113. }

  114. void delay_nms(unsigned int n) //N ms延時函數
  115. {
  116.     uint a,b;
  117.     for(a=n;a>0;a--)
  118.         for(b=80;b>0;b--);
  119. }

  120. void delay_nus(unsigned int n) //N us延時函數
  121. {
  122.     unsigned int i;
  123.     for (i=0;i<n/4;i++);
  124. }
  125. void main()
  126. {
  127.      LCD_init();
  128. //    LCD_write_command(0x0d); //光標開
  129.      while(1)
  130.      {
  131.          RD0=1;
  132.          delay_nms(1000);
  133.          RD0=0;
  134.          delay_nms(1000);
  135.         LCD_write_string(0,0,"ceshiLCD");
  136.         LCD_write_string(0,1,"hahahaha");
  137.         delay_nms(2000);
  138.         
  139.      }
  140. }
復制代碼


try.rar

1.4 KB, 下載次數: 23, 下載積分: 黑幣 -5

PIC單片機

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚州一区二区三区 | 毛片黄| 国产精品久久久久久亚洲调教 | 五月婷婷婷 | 欧美日韩三区 | 日本不卡一区 | 欧美一级精品片在线看 | 成人综合一区 | 一区二区三区四区免费观看 | 大陆一级毛片免费视频观看 | 久久久一区二区三区四区 | 欧美一级久久 | 日日干日日射 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 久久99久久 | 国内精品久久久久久久 | 久久国产精品免费一区二区三区 | 夜夜干夜夜操 | 国产在线a | 亚洲精品乱码久久久久久蜜桃91 | 国产玖玖| 天天爱爱网| 国产高清精品在线 | 精品日本久久久久久久久久 | www国产成人免费观看视频,深夜成人网 | 久久久久国产 | 欧美精品综合在线 | 国产精品毛片一区二区在线看 | 国产999精品久久久影片官网 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 黄色一级毛片免费看 | 中文字幕高清 | 精品久久久久久亚洲综合网站 | 精品久久久久久久久久久院品网 | 欧美日日日日bbbbb视频 | 国产一级片av | 国产日韩一区二区 | 狠狠操网站 | 国产精品69毛片高清亚洲 | 在线观看国产精品视频 | 国产精品高潮呻吟久久av野狼 |