lcd1602背光亮度控制(lcd1602)

  • 发布时间:2023-09-11 12:02:31 来源:
标签:
导读 你们好,最近小未来发现有诸多的小伙伴们对于lcd1602背光亮度控制,lcd1602这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看

你们好,最近小未来发现有诸多的小伙伴们对于lcd1602背光亮度控制,lcd1602这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、 新建工程

2、 新代码文件

3、 将代码复制到文件

4、 代码:

5、 /***************************************************************************

6、 标题:液晶显示器1602

7、 作者:百度ID米强滋润。

8、 描述:这个程序在LCD1602上显示两行字符。

9、 ******************************************************************************/

10、 //头文件:

11、 #include reg52.h

12、 /* * * * * * * * IO引脚定义* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

13、 sbit lcd_rs=p1^0;//定义管脚

14、 sbit LCD_RW=P1^1;

15、 sbit LCD_E=P1^2;

16、 /* * * * * * * *宏定义* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

17、 #define LCD_Data P0

18、 #define Busy0x80 //用于检测LCD状态字中的Busy标志。

19、 /* * * * * * * *数据定义* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

20、 unsigned char code uctech[]={'LCD1602 DJZRS'};

21、 unsigned char code net[]={'51hahahahahaha51'};

22、 /* * * * * * * *函数语句* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

23、 Void WriteDataLCD (unsigned character WDLCD); //Write data

24、 void write command CD(unsigned char WCLCD,BuysC);//写命令

25、 无符号字符read data LCD(void);//读取数据

26、 无符号char ReadStatusLCD(void);//阅读状态

27、 void LCDInit(void);//初始化

28、 Void DisplayOneChar (unsigned char X, unsigned char Y, unsigned char data); //The corresponding coordinates display byte contents.

29、 Void DisplayListChar (unsigned char X, unsigned char Y, unsigned char code * ddata); //The corresponding coordinates start to display a string of contents.

30、 无效延迟5 ms(无效);//延时

31、 Void Delay400Ms (invalid); //Delay

32、 * * * * * * * * * *主功能启动* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

33、 void main(void)

34、 {

35、 delay 400 ms();//开始等待,等待LCD工作。

36、 LCDInit();//初始化

37、 delay 5 ms();//延迟片刻(不要)

38、 DisplayListChar(0, 0, uctech);

39、 DisplayListChar(0, 5, net);

40、 read data LCD();//测试句子没有意义

41、 while(1);

42、 }

43、 * * * * * * * * * *写数据* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

44、 void WriteDataLCD(unsigned char WDLCD)

45、 {

46、 ReadStatusLCD();//检测忙

47、 LCD_Data=WDLCD;

48、 LCD_RS=1;

49、 LCD_RW=0;

50、 LCD_E=0; //若晶振速度太高可以在这后加小的延时

51、 LCD_E=0; //延时

52、 LCD_E=1;

53、 }

54、 /***********写指令********************************************************/

55、 void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测

56、 {

57、 if (BuysC) ReadStatusLCD(); //根据需要检测忙

58、 LCD_Data=WCLCD;

59、 LCD_RS=0;

60、 LCD_RW=0;

61、 LCD_E=0;

62、 LCD_E=0;

63、 LCD_E=1;

64、 }

65、 /***********读数据********************************************************/

66、 unsigned char ReadDataLCD(void)

67、 {

68、 LCD_RS=1;

69、 LCD_RW=1;

70、 LCD_E=0;

71、 LCD_E=0;

72、 LCD_E=1;

73、 return(LCD_Data);

74、 }

75、 /***********读状态*******************************************************/

76、 unsigned char ReadStatusLCD(void)

77、 {

78、 LCD_Data=0xFF;

79、 LCD_RS=0;

80、 LCD_RW=1;

81、 LCD_E=0;

82、 LCD_E=0;

83、 LCD_E=1;

84、 while (LCD_Data Busy); //检测忙信号

85、 return(LCD_Data);

86、 }

87、 /***********初始化********************************************************/

88、 void LCDInit(void)

89、 {

90、 LCD_Data=0;

91、 WriteCommandLCD(0x38,0); //三次模式设置,不检测忙信号

92、 Delay5Ms();

93、 WriteCommandLCD(0x38,0);

94、 Delay5Ms();

95、 WriteCommandLCD(0x38,0);

96、 Delay5Ms();

97、 WriteCommandLCD(0x38,1); //显示模式设置,开始要求每次检测忙信号

98、 WriteCommandLCD(0x08,1); //关闭显示

99、 WriteCommandLCD(0x01,1); //显示清屏

100、 WriteCommandLCD(0x06,1); //显示光标移动设置

101、 WriteCommandLCD(0x0C,1); //显示开及光标设置

102、 }

103、 /***********按指定位置显示一个字符*******************************************/

104、 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)

105、 {

106、 Y=0x1;

107、 X=0xF; //限制X不能大于15,Y不能大于1

108、 if (Y) X |=0x40; //当要显示第二行时地址码+0x40;

109、 X |=0x80; //算出指令码

110、 WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码

111、 WriteDataLCD(DData);

112、 }

113、 /***********按指定位置显示一串字符*****************************************/

114、 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)

115、 {

116、 unsigned char ListLength;

117、 ListLength=0;

118、 Y=0x1;

119、 X=0xF; //限制X不能大于15,Y不能大于1

120、 while (DData[ListLength]=0x20){ //若到达字串尾则退出

121、 if (X=0xF){ //X坐标应小于0xF

122、 DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符

123、 ListLength++;

124、 X++;

125、 }

126、 }

127、 }

128、 /***********短延时********************************************************/

129、 void Delay5Ms(void)

130、 {

131、 unsigned int TempCyc=5552;

132、 while(TempCyc--);

133、 }

134、 /***********长延时********************************************************/

135、 void Delay400Ms(void)

136、 {

137、 unsigned char TempCycA=5;

138、 unsigned int TempCycB;

139、 while(TempCycA--){

140、 TempCycB=7269;

141、 while(TempCycB--);

142、 }

143、 }

144、 把文件添加到组

145、 编译

146、 代码简介。具体请看看代码注释

147、 如果你改了代码,就要重新编译

148、 连线,下载

149、 效果

以上就是lcd1602这篇文章的一些介绍,希望对大家有所帮助。

  • 免责声明:本文由用户上传,如有侵权请联系删除!