LCD1602显示程序理解
生活随笔
收集整理的這篇文章主要介紹了
LCD1602显示程序理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 /*2018年8月11日 18點30分,于福安公寓
2 功能:LCD1602顯示程序*/
3 #include<reg52.h>
4 #define uchar unsigned char
5 #define uint unsigned int
6 uchar code table[] ="zhangshuaishuai";
7 uchar code table1[] ="ce shi cheng xu";
8 sbit lcdrw =P2^5;
9 sbit lcdrs =P2^6;
10 sbit lcde =P2^7;
11 void delay(uchar x)
12 {
13 uchar i,j;
14 for(i=x;i>0;i--)
15 for(j=110;j>0;j--);
16 }
17 //顯示程序的位置
18 /*void lcd_display_char(uchar x,uchar y,uchar date)
19 {
20 uchar address;
21 if(y ==1)
22 address =0x80+x;
23 else
24 address =0xc0+x;
25 }
26 */
27 /*寫指令函數*/
28 void lcd_write_cmd(uchar com)
29 {
30 lcdrs =0; //指令
31 P0 = com;
32 delay(1);
33 lcdrw =0;//寫有效
34 lcde =1; //由時序圖可知,當lcde為高電平之前就必須要將數據輸入進去,故而P0 = com;這句指令在其前面
35 delay(1);
36 lcde =0;
37
38 }
39 /*寫數據函數*/
40 void lcd_write_data(uchar date)
41 {
42 P0 =date;
43 lcdrs =1;
44 delay(1);
45 lcdrw =0;
46 lcde =1;
47 delay(1);
48 lcde =0;
49
50 }
51 // 函數初始化
52 void init()
53 {
54 lcd_write_cmd(0x38);//設置8位格式;2行,5*7
55 lcd_write_cmd(0x0c);//整體顯示,關光標,不閃爍
56 // lcd_write_cmd(0x01); //清除屏幕顯示
57 lcd_write_cmd(0x06);//設定輸入方式,增量不移位
58
59 delay(1);
60 }
61 void main()
62 {
63 uchar i,j,num;
64 init();
65
66 /* lcd_write_data(0x41);
67 lcd_write_data('B');
68 lcd_write_data('C');
69 while(1); //當這里沒有while(1);暫停語句時,就會出現滿屏的數據 ;當輸入多個字符時,比如'B','C'如上面,就會面屏出現同樣的數據,并且在這幾個字符中輪流變化
70 */
71
72 lcd_write_cmd(0x80+0x13); //確定剛開始寫入第一行數據的位置
73 for(i =0;i<15;i++) //如果沒有確定要顯示的位置,LCd顯示屏默認就會從第一個字符開始
74 {
75 // lcd_display_char(0,0,table[i])
76
77 lcd_write_data(table[i]);
78 delay(100);
79
80 // while(1); //如果在此處加上while(1)暫停語句時,就只會出現z這一個字符
81 }
82 // lcd_write_cmd(0x01); // 清屏指令 讓上面的字符顯示之后,再清屏
83 // delay(1000); //如果沒有這個延時程序,那么下面顯示的位置就不在你所設定的位置,會跑到第一行
84
85 lcd_write_cmd(0x80+0x53); //確定了下面要顯示內容的位置 確定剛開始寫入數據的位置
86
87 for(j =0;j<15;j++)
88 {
89 lcd_write_data(table1[j]);
90 delay(100); //動態顯示讓其延時,相當于
91 }
92
93
94 /*用于整屏向左移動的程序 由于是整個屏幕的向左移動,故而在將其所有要顯示的
95 內容全部顯示到不可見區域,然后統一按照移動屏幕的指令整體移動,每次移動也只移動一位*/
96 for(num =0;num<18;num++)
97 {
98 lcd_write_cmd(0x18); //表示顯示整屏向左移動
99 delay(1000); // 每個100ms移動一位
100 }
101
102 while(1); //如果在此處加上while(1)暫停語句時,會正常顯示字符
103
104 } View Code
?
轉載于:https://www.cnblogs.com/wises/p/9539572.html
總結
以上是生活随笔為你收集整理的LCD1602显示程序理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转载)SpringBoot 发送邮件和
- 下一篇: 计算机硬件:内存条的基础知识笔记