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初始化、主循環中溫度顯示的邏輯。通過不斷更新顯示的溫度值,用戶可以直觀地看到溫度的變化。
如遇到問題,建議檢查硬體連接、代碼邏輯,以及確保使用正確的庫和函數進行操作。