A. 51单片机编写lcd1602显示程序,第一行显示自己的姓名,第二行显示学号
1、首先我们打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并启动器添加STARTUP.A51文件,然后在当前目禅昌录下新建一个C文件,并将其添加入工作路径。
B. LCD1602,我一开始烧进51单片机后,1602第一行全黑,第二行亮着,就是显示不出东西来
调节一下1602 第三个管脚接的滑动变阻器
C. 有关51单片机1602的问题
有几个错误:
电容上标注104的并不是说容量是104pF,而是指该电容的电容量是10×10^4pF,也就是100 000pF,相当于100nF。算法类似于电阻的色环标注,最后一位数字是指数。
上面第一个图中,1602液晶屏的第1脚是需要接地的,图中没有接地。
上面第一个图中,1602液晶屏的16脚应该是接地的,你把背光LED的阴极和阳极都接到电源上了,怎么可能把LED点亮。
1602的对比度控制VO引脚尽量不要使用固定电阻来控制,因为当电源电压有变化或者1602的批次不同,可能会导致VO的电压不同,这时用固定电阻的话难以消除这种离散的差异。尽量使用电位器来控制VO。
布线问题,自己想办法吧,可以考虑换IO口。
D. 51单片机-温度测量在LCD1602显示(图+代码)--问题归纳与复盘
通过使用可调电位器来模拟不同温度的电压输入,这个范围覆盖20°C到80°C。随后,我们使用ADC0808进行电压到数字的转换,这个数字量代表了实际的温度值。这些转换后的数值随后通过LCD1602显示屏进行直观的显示。
我们使用的单片机型号为AT89C51。电位器是一种滑动变阻器,我们使用它来改变输入电压以模拟不同温度。ADC0808则是用于将模拟信号转换为数字信号的关键部件。LCD1602则是用来显示数值的设备,它以字符的形式展示数字。
设计和流程中需要注意几个关键点:
- 在提交实验报告之前,确保程序流程图中的箭头不指向方块。这是一个基本的流程图规范,避免了逻辑上的混乱。
- LCD1602在显示数字时,不能仅输入字符如'3'或字母'a',而应该根据显示字符表输入对应的值。
- 电位器的电压值(0到5V)与模拟温度值(20°C到80°C)之间存在着线性关系。通过特定的数学公式,可以将电压转换为温度值。
在最终的代码实现中,温度值从理论上的20°C到79.77°C显示出来。如果遇到问题,如改变电位器阻值但显示数值不变,这可能与程序逻辑或硬件配置有关。
以下为部分关键代码段:
c
#include
void delayms(unsigned char t)
{
unsigned char i, j;
for(i = 0; i < t; i++)
for(j = 0; j < 120; j++);
}
void lcd_init()
{
lcd_write_com(0x38); // 设置为8位数据、2行、5x7点阵字符
lcd_write_com(0x0C); // 开启显示、不闪烁、光标关闭
lcd_write_com(0x06); // 写入数据后光标右移
lcd_write_com(0x01); // 清屏
lcd_write_com(0x80); // 设置数据指针起点
}
void main()
{
lcd_init();
InitADC();
while(1)
{
float temp_decimal;
int temp = 0;
temp_decimal = 20.0 + (result * (80.0 - 20.0)) / 256;
temp = (int)((100.0 * temp_decimal + 0.5) / 1);
display_LCD(1,0,word2[temp/1000]);
display_LCD(1,1,word2[temp/100%10]);
display_LCD(1,2,'.');
display_LCD(1,3,word2[temp/10%10]);
display_LCD(1,4,word2[temp%10]);
display_LCD(1,5,'C');
}
}
这段代码包含了初始化LCD、ADC初始化、主循环中温度显示的逻辑。通过不断更新显示的温度值,用户可以直观地看到温度的变化。
如遇到问题,建议检查硬件连接、代码逻辑,以及确保使用正确的库和函数进行操作。