找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+lcd1602顯示 NANJINGKEJI DQYKZXY

[復制鏈接]
ID:793479 發(fā)表于 2020-6-30 09:40 | 顯示全部樓層 |閱讀模式
這是我之前寫的程序,顯示 NANJINGKEJI  DQYKZXY
  1.   unsigned char i;
  2. #include <reg51.h> //包含頭文件reg51.h,定義了51單片機的專用寄存器
  3. #include <intrins.h> //包含頭文件intrins.h,代碼中引用了_nop_()函數(shù)
  4. sbit RS=P3^0; //P3.0
  5. sbit RW=P3^1; //93.1
  6. sbit E=P3^2; //E3.2
  7. void lcd_w_cmd (unsigned char com); //寫命令字函數(shù)
  8. void lcd_w_dat (unsigned char dat); //寫數(shù)據(jù)函數(shù)
  9. unsigned char lcd_r_start(); //讀狀態(tài)函數(shù)
  10. void lcd_int(); //LCD初始化函數(shù)
  11. void delay (unsigned int i); //可控延時函數(shù)
  12. void delayl(); //軟件延時函數(shù),大約幾個機器周期
  13. void main() //主函數(shù)
  14. {
  15.   unsigned char lcd[]="NANJINGKEJI";
  16.   unsigned char lcdl[]="DQYKZXY";
  17.   unsigned char i;
  18.   P2=0xff; //送全1到P2口
  19.   lcd_int(); //初始化LCD
  20.   delay(255);
  21.   lcd_w_cmd(0x83); //設置顯示位置
  22.   delay(255);
  23.   for (i=0;lcd[i]!='\0';i++) //顯示字符串,字符串結束符為‘\0'
  24.   {lcd_w_dat(lcd[i]);
  25.   delay(200);
  26.   }
  27.   lcd_w_cmd(0xc3); //設置顯示位置
  28.   delay (255);
  29.    for (i=0;lcd[i]!='\0';i++)
  30.    {
  31.      lcd_w_dat (lcdl[i]);
  32.      delay(200);
  33.    }
  34.   while (1) ;            //原地踏步,待機命令
  35. }
  36. void delayl()
  37. {
  38.   _nop_();
  39.   _nop_();
  40.   _nop_();
  41. }
  42. void lcd_int() //初始化的函數(shù)
  43. {
  44.   lcd_w_cmd(0x3c); //設置工作方式
  45.   lcd_w_cmd(0x0e); //設置光標
  46.   lcd_w_cmd(0x01); //清屏
  47.   lcd_w_cmd(0x06); //設置輸入方式
  48.   lcd_w_cmd(0x80);
  49. }                  //設置初始顯示位置
  50. unsigned char lcd_r_start()
  51. {
  52.   unsigned char s;
  53.   RW=1;                       //RN=1,RS=0 讀LCD狀態(tài)
  54.   delayl ();
  55.   RS=0;
  56.   delayl();
  57.   E=1; //E端時序
  58.   delayl ();
  59.   s=P2; //從LCD的數(shù)據(jù)口讀狀態(tài)
  60.   delayl();
  61.   E=0;
  62.   delayl ();
  63.   RW=0;
  64.   delayl();
  65.   return(s); //返回讀取的LCD狀態(tài)字
  66. }
  67. void lcd_w_cmd (unsigned char com)
  68. {
  69. unsigned char i;
  70. do
  71. {             //查LCD忙操作
  72.   i=lcd_r_start(); //調(diào)用讀狀態(tài)字函數(shù)
  73.   i=i&0x80; //“與“操作屏蔽掉低7位
  74.   delay(2);
  75. }     while(i!=0); //LCD忙,繼續(xù)查詢,否則退出循環(huán)
  76.   RW=0;
  77.   delayl();
  78.   RS=0; //RW=Q,RS=0,寫LCD命令字
  79.   delayl();
  80.   E=1; //E端時序
  81.   delayl();
  82.   P2=com; //將com中的命令字寫入LCD數(shù)據(jù)口
  83.   delayl();
  84.   E=0;                        
  85. delayl();
  86. RW=1;
  87. delay(255);
  88. }
  89. void lcd_w_dat (unsigned char dat)
  90. {
  91.   unsigned char i;
  92. do {                   //查忙操作
  93. i=lcd_r_start(); //調(diào)用讀狀態(tài)字函數(shù)
  94. i=i&0x80;           //"與"操作屏蔽掉低7位
  95. delay(2);
  96. } while(i!=0); //LCD忙,繼續(xù)查詢,否則退出循環(huán)
  97. RW=0;
  98. delayl();
  99. RS=1;            //RW=0,
  100. delayl();
  101. E=1; //E端時序
  102. delayl();
  103. P2=dat; //將dat中的顯示數(shù)據(jù)寫入LCD數(shù)據(jù)口
  104. delayl();
  105. E=0;
  106. delayl();
  107. RW=1;
  108. delay(255);
  109. }
  110. void delay(unsigned int i)
  111. {
  112. unsigned int k;
  113. for(k=0;k<i;k++);
  114. }
復制代碼

51hei圖片20200630093933.png
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表