|
1. 這是代碼和運(yùn)行結(jié)果
1.lcd.c
#include "lcd.h"
#include "lcd.h"
/*******************************************************************************
* 函 數(shù) 名 : Lcd1602_Delay1ms
* 函數(shù)功能 : 延時(shí)函數(shù),延時(shí)1ms
* 輸 入 : c
* 輸 出 : 無(wú)
* 說(shuō) 名 : 該函數(shù)是在12MHZ晶振下,12分頻單片機(jī)的延時(shí)。
*******************************************************************************/
void Lcd1602_Delay1ms(uint c) //誤差 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
/*******************************************************************************
* 函 數(shù) 名 : LcdWriteCom
* 函數(shù)功能 : 向LCD寫入一個(gè)字節(jié)的命令
* 輸 入 : com
* 輸 出 : 無(wú)
*******************************************************************!
************/
void LcdWriteCom(uchar com) //寫入命令
{
LCD1602_E = 0; //使能
LCD1602_RS = 0; //選擇發(fā)送命令
LCD1602_RW = 0; //選擇寫入
LCD1602_DATAPINS = com; //放入命令
Lcd1602_Delay1ms(1); //等待數(shù)據(jù)穩(wěn)定
LCD1602_E = 1; //寫入時(shí)序
Lcd1602_Delay1ms(5); //保持時(shí)間
LCD1602_E = 0;
}
/*******************************************************************************
* 函 數(shù) 名 : LcdWriteData
* 函數(shù)功能 : 向LCD寫入一個(gè)字節(jié)的數(shù)據(jù)
* 輸 入 : dat
* 輸 出 : 無(wú)
*******************************************************************************/
void LcdWriteData(uchar dat) //寫入數(shù)據(jù)
{
LCD1602_E = 0; //使能清零
```
```
LCD1602_RS = 1; //選擇輸入數(shù)據(jù)
LCD1602_RW = 0; //選擇寫入
LCD1602_DATAPINS = dat; //寫入數(shù)據(jù)
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //寫入時(shí)序
Lcd1602_Delay1ms(5); //保持時(shí)間
LCD1602_E = 0;
}
/*******************************************************************************
* 函 數(shù) 名 : LcdInit()
* 函數(shù)功能 : 初始化LCD屏
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x3f); //開顯示
Lcd1602_Delay1ms(1);
LcdWriteCom(0x0c); //開顯示不顯示光標(biāo)
Lcd1602_Delay1ms(1);
LcdWriteCom(0x06); //寫一個(gè)指針加1
Lcd1602_Delay1ms(1);
LcdWriteCom(0x01); //清屏
Lcd1602_Delay1ms(1);
LcdWriteCom(0x80); //設(shè)置數(shù)據(jù)指針起點(diǎn)
Lcd1602_Delay1ms(1);
}
2.lcd.h
#ifndef __LCD_H_
#define __LCD_H_
/**********************************
**********************************/
//#define LCD1602_4PINS
/**********************************
包含頭文件
**********************************/
#include <REG52.H>
//---重定義關(guān)鍵詞---//
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
/**********************************
PIN口定義
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
/**********************************
函數(shù)聲明
**********************************/
/*在51單片機(jī)12MHZ時(shí)鐘下的延時(shí)函數(shù)*/
void Lcd1602_Delay1ms(uint c); //誤差 0us
/*LCD1602寫入8位命令子函數(shù)*/
void LcdWriteCom(uchar com);
/*LCD1602寫入8位數(shù)據(jù)子函數(shù)*/
void LcdWriteData(uchar dat) ;
/*LCD1602初始化子程序*/
void LcdInit();
#endif
3.main.c
/**************************************************************************************
* LCD1602液晶顯示實(shí)驗(yàn)
***************************************************************************************/
#include <REG52.H>
//此文件中定義了單片機(jī)的一些特殊功能寄存器
#include "lcd.h"
typedef unsigned int u16; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
u8 Disp[12]="HELLO WORLD";
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
void main()
{
u8 i;
//P1=0X0f;
LcdInit();
LcdWriteCom(0x80);
LcdWriteCom(0x80);
for(i=0;i<11;i++)
{
LcdWriteData(Disp[ i]);
}
while(1);
}
4.運(yùn)行結(jié)果
5,換引腳之后的結(jié)果
|
|
相關(guān)帖子
- • 這是定義的問(wèn)題嗎,用的c語(yǔ)言,怎么都改不對(duì)
- • adc_dma進(jìn)行采集時(shí)打印數(shù)據(jù)為0,不開dma數(shù)據(jù)能夠正常顯示,想問(wèn)一下是什么原因
- • 51單片機(jī)驅(qū)動(dòng)電磁閥程序,怎么驅(qū)動(dòng)不了電磁閥,有大神能幫我看看問(wèn)題所在嗎?
- • 單片機(jī)不使用外部中斷,如何LED顯示程序?
- • 做了個(gè)替BF7612CM的測(cè)試
- • Keil程序求助,這些報(bào)錯(cuò)怎么解決,小白一個(gè),剛接觸單片機(jī)
- • 求用at89c51單片機(jī)測(cè)LM331 V/F轉(zhuǎn)化后的頻率 我的沒(méi)有顯示
- • 為什么protuce中數(shù)碼管不顯示
- • MCU模擬SPI通信,能發(fā)送數(shù)據(jù),接收不到數(shù)據(jù)
- • 單片機(jī)Proteus仿真OLED顯示屏沒(méi)有反應(yīng)
- • 菜鳥求助
- • STM32單片機(jī)向ESP8266發(fā)送指令,設(shè)置延時(shí)1秒上傳一次數(shù)據(jù),延時(shí)不準(zhǔn)確
- • 單片機(jī)矩陣按鍵 原理圖+源代碼
- • 通過(guò)手機(jī)藍(lán)牙APP發(fā)出控制指令,控制3個(gè)以上LED燈亮滅和蜂鳴器報(bào)警和關(guān)閉,怎么做 求指導(dǎo)
- • 關(guān)于用51單片機(jī)驅(qū)動(dòng)AD9851的原理及其編程思路?
- • 關(guān)于在Proteus仿真的pt100引腳功能與電路圖原理
- • 單片機(jī)用點(diǎn)陣LED實(shí)現(xiàn)靜態(tài)字符顯示實(shí)驗(yàn)程序
- • 單片機(jī)匯編語(yǔ)言的十字路口紅綠燈Proteus仿真設(shè)計(jì)
|
|
|
|
|