色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于51單片機的LCD1602四數據線驅動程序,LCD1602單片機驅動程序

454398 ? 2018-09-20 19:43 ? 次閱讀

基于51單片機的LCD1602四數據線驅動程序,LCD1602單片機驅動程序

關鍵字:LCD1602,C程序

/這個程序已經調試過了
//下面調用實例
//////////////////////////////////
//LCD1602讀寫頭文件
//四線驅動方式
//////////////////////////////////
#include
#include "LCD1602.h"
/*-----------
管腳定義在液晶頭文件中
-----------*/
void main(void){
LCD_init();
p=LCD_PutStr("Hello Lcd1602!\n",-1); //顯示一段文字
p=LCD_PutNum(1234,2,p); //顯示12.34這個數
while(1);
}
/*---------------------------------------------------------
液晶LCD1602C 使用4條數據線(D4~D7)
-----------------------------------------------------------*/
/*-------------------------------------------------------------
LCD引腳定義
1---GND
2---VCC
3---VO
4---RS
5---RW
6---EN
7到14--D0-D7
15--背景燈+
16--背景燈-
-----------------------------------------------------------------*/
#include
#include


#define LCD_DATA P2
sbit LCD1602_RS=P2^2;
sbit LCD1602_EN=P2^3;
int p=0;
/*--------------------------------------------------------------------------------------------------
函數說明
--------------------------------------------------------------------------------------------------*/
void LCD_init(void);
void LCD_en_write(void);
void LCD_write_command(unsigned char command) ;
void LCD_write_data(unsigned char Recdata);
void LCD_set_xy (unsigned char x, unsigned char y);
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);
void LCD_write_char(unsigned char X,unsigned char Y,unsigned char Recdata);
void delay_nus(unsigned int n);
void delay_nms(unsigned int n);
void delay_1us(void) //1us延時函數
{
_nop_();
}
void delay_nus(unsigned int n) //N us延時函數
{
unsigned int i=0;
for (i=0;i delay_1us();
}

void delay_1ms(void) //1ms延時函數
{
unsigned int i;
for (i=0;i<1140;i++);
}

void delay_nms(unsigned int n) //N ms延時函數
{
unsigned int i=0;
for (i=0;i delay_1ms();
}

void LCD_init(void) //液晶初始化
{
LCD_write_command(0x28);
delay_nus(40);
LCD_write_command(0x28);
delay_nus(40);
LCD_write_command(0x28);
delay_nus(40);

LCD_en_write();
delay_nus(40);
LCD_write_command(0x28); //4位顯示
LCD_write_command(0x0c); //顯示開
LCD_write_command(0x01); //清屏
delay_nms(2);
}
void LCD_en_write(void) //液晶使能
{
LCD1602_EN=1;
delay_nus(1);
LCD1602_EN=0;
}
void LCD_write_command(unsigned char command) //寫指令
{
delay_nus(16);
LCD1602_RS=0; //RS=0
LCD_DATA&=0X0f; //清高四位
LCD_DATA|=command&0xf0; //寫高四位
LCD_en_write();
command=command<<4;????????? //低四位移到高四位
LCD_DATA&=0x0f; //清高四位
LCD_DATA|=command&0xf0; //寫低四位
LCD_en_write();

}
void LCD_write_data(unsigned char Recdata) //寫數據
{
delay_nus(16);
LCD1602_RS=1; //RS=1
LCD_DATA&=0X0f; //清高四位
LCD_DATA|=Recdata&0xf0; //寫高四位
LCD_en_write();
Recdata=Recdata<<4;?????????????? //低四位移到高四位
LCD_DATA&=0X0f; //清高四位
LCD_DATA|=Recdata&0xf0; //寫低四位
LCD_en_write();
}

void LCD_set_xy( unsigned char x, unsigned char y ) //寫地址函數
{
unsigned char address;
if (y == 0) address = 0x80 + x;
else address = 0xc0 + x;
LCD_write_command(address);
}
void LCD_write_char(unsigned char X,unsigned char Y,unsigned char Recdata) //列x=0~15,行y=0,1
{
LCD_set_xy(X, Y); //寫地址
LCD_write_data(Recdata);
}
int LCD_PutStr(unsigned char *DData,int pos){
unsigned char i;
if(pos==-1){
LCD_write_command(0x01); //清屏
delay_nms(2);
pos=0;
}
while((*DData)!='\0'){
switch(*DData){
case '\n': //如果是\n,則換行
{
if(pos<17){?????
for(i=pos;i<16;i++)
LCD_write_char(i%16, i/16, ' ');
pos=16;
}
else{
for(i=pos;i<32;i++) LCD_write_char(i%16, i/16, ' ');
pos=32;
}
break;
}

case '\b': //如果是\b,則退格
{
if(pos>0) pos--;
LCD_write_char(pos%16, pos/16, ' ');
break;
}

default:
{

if((*DData)<0x20){
*DData=' ';
}

LCD_write_char(pos%16, pos/16,*DData);
pos++;
break;
}
}
DData++;
}
return(pos);
}
//----------------------------以下函數用于輸出數字---------------------
int LCD_PutNum(unsigned long num,int XS,int pos){ //從右邊數,保留幾位小數
unsigned long tmp=0;
unsigned char numbits=0;
if(pos==-1){
LCD_write_command(0x01);
delay_nms(2);
pos=0;
}
if(num==0){
LCD_write_char(pos%16, pos/16, '0');
pos++;
}
else{
if(num<0){???
LCD_write_char(pos%16, pos/16, '-');
num*=(-1);
pos++;
}
while(num){
tmp=tmp*10+(num%10);
num=num/10;
numbits++;
}
while(tmp){
LCD_write_char(pos%16, pos/16, (tmp%10)+48);
tmp=tmp/10;
pos++;
numbits--;
if(numbits==XS) pos=LCD_PutStr(".",pos); //顯示小數點
}
while(numbits--){
LCD_write_char(pos%16, pos/16, '0');
pos++;
}
}
return(pos);
}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關推薦

    請問ADS1254和單片機怎么通訊,驅動程序到底怎樣寫?

    請問ADS1254和我的單片機怎么通訊,驅動程序到底怎樣寫?還是使用TI現成的庫? 最好給個參考例程。
    發表于 01-24 06:06

    DS8007有相關的單片機例程或者sdk驅動程序嗎?求分享

    請問DS8007有相關的單片機例程或者sdk驅動程序嗎?
    發表于 12-19 07:13

    基于FPGA的LCD1602液晶顯示模塊驅動設計

    本文通過以LCD1602液晶顯示模塊為基礎,介紹FPGA驅動LCD1602原理,詳細介紹硬件原理圖設計及FPGA驅動LCD1602軟件設計,
    的頭像 發表于 10-24 14:42 ?1656次閱讀
    基于FPGA的<b class='flag-5'>LCD1602</b>液晶顯示模塊<b class='flag-5'>驅動</b>設計

    基于51單片機的二氧化碳濃度檢測報警系統仿真

    具體實現功能由51單片機+二氧化碳傳感器+LCD1602液晶顯示屏+按鍵+蜂鳴器+指示燈+電源構成。具體功能:(1)二氧化碳傳感器測得二氧化碳數據后經過
    的頭像 發表于 10-22 14:13 ?203次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的二氧化碳濃度檢測報警系統仿真

    基于51單片機的二氧化碳濃度檢測調節系統仿真

    具體實現功能由51單片機+二氧化碳傳感器+LCD1602液晶顯示屏+按鍵+蜂鳴器+指示燈+繼電器+風扇+電源構成。具體功能:(1)二氧化碳傳感器測得二氧化碳數據后經過
    的頭像 發表于 10-22 14:13 ?188次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的二氧化碳濃度檢測調節系統仿真

    基于51單片機的光照及溫濕度檢測報警

    具體實現功能由51單片機+LCD1602液晶顯示屏+ADC0832模塊+蜂鳴器+DHT11溫濕度傳感器 +光敏電阻+LED指示燈+獨立按鍵構成。具體功能:1、LCD1602液晶第一行顯
    的頭像 發表于 10-22 14:13 ?229次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的光照及溫濕度檢測報警

    基于51單片機的停車場管理系統

    具體實現功能由51單片機+按鍵模塊+LCD1602顯示+報警模塊+74HC595模塊+LED指示燈等構成。具體功能:(1)根據紅外傳感器原理,用兩個按鍵代替駛入檢測紅外傳感器和駛出檢測紅外
    的頭像 發表于 10-22 14:12 ?320次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的停車場管理系統

    基于MSP430單片機的軟件玻璃液晶驅動程序

    電子發燒友網站提供《基于MSP430單片機的軟件玻璃液晶驅動程序.pdf》資料免費下載
    發表于 10-18 10:41 ?0次下載
    基于MSP430<b class='flag-5'>單片機</b>的軟件玻璃液晶<b class='flag-5'>驅動程序</b>

    51單片機驅動

    電子發燒友網站提供《51單片機驅動.exe》資料免費下載
    發表于 09-20 11:46 ?5次下載

    關于STM8驅動LCD1602遇到的問題求解

    最近因為接了一個老師的項目,要用STM8單片機做一個小玩意,其中用到了LCD1602.但做了好久,就是做不通。吧代碼貼出來,希望大家幫我看看到底是哪里不對。 #include #define
    發表于 04-28 07:09

    51單片機無法接收串口發送過來的數據

    程序運行沒報錯,但是在串口調試助手上發送數據單片機無法接收。功能實現主要是雙向通信。 目前在串口設定溫度上下限,并在LCD1602上顯示出來這個功能無法實現。 請問該如何解決?
    發表于 04-18 01:52

    基于51單片機的路燈【固定時間,紅外,DS1302,LCD1602】(仿真)

    基于51單片機的路燈【固定時間,紅外,DS1302,LCD1602】(仿真)
    的頭像 發表于 04-10 00:44 ?557次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的路燈【固定時間,紅外,DS1302,<b class='flag-5'>LCD1602</b>】(仿真)

    基于51單片機的SHT11溫濕度監測系統,LCD1602顯示,上下限按鍵設置

    設計要求 1.設計一套基于51單片機的溫濕度Proteus仿真監控系統; 2.采用高精度的SHT11溫濕度傳感器模塊; 3.LCD液晶實時顯示當前環境溫濕度值; 4.設計報警單元,實現對超限溫濕度
    發表于 03-26 17:44

    基于51單片機的車輛倒車雷達報警系統,HC-SR04超聲波測距,全套資料

    LCD1602顯示電路組成。 汽車行進時,LCD顯示車內溫度以及設定的倒車預警值;倒車時,啟動超聲波測距,回傳的聲波數據經AT89C51單片機
    發表于 03-19 14:17

    51單片機HX711的電子秤畢業設計(程序+仿真+原理圖+論文)

    電子秤系統主要由單片機最小系統、數據采集系統、人機交互界面系統、報警系統五大部分組成。 單片機最小系統主要包括AT89C51和經典復位電路;數據
    發表于 03-19 13:56
    主站蜘蛛池模板: 国产精品无码无卡毛片不卡视 | 久久本道久久综合伊人 | 久久蜜视频 | 色多多深夜福利免费观看 | 国产精品久久久久久久人人看 | 国产成人精品免费视频大全办公室 | YELLOW视频在线观看最新 | 女人高潮时一吸一夹 | 黑粗硬大欧美在线视频 | 久久6699精品国产人妻 | 国模啪啪久久久久久久 | 亚洲片在线观看 | 亚洲日本乱码中文论理在线电影 | 亚洲蜜桃AV色情精品成人 | jizz69女士第一次 | 在线视频网站www色 在线视频免费国产成人 | 好吊日视频在线 | 青青草在线视频 | 国产成人精品区在线观看 | xxxx俄罗斯1819 | 国产在线观看不卡 | 美女动态图真人后进式 | 99re8热视频这在线视频 | 羞羞在线观看 | 16女下面流水不遮图免费观看 | 亚洲欧美日韩国产精品26u | 有人有片的观看免费视频 | 亚洲色图19p | 欧美乱子YELLOWVIDEO | 小小水蜜桃免费影院 | 国产在线观看www | 欧美牲交视频免费观看K8经典 | 中文字幕天堂久久精品 | 97国产人妻精品无码AV在线 | 伊人影院网 | 亚洲精品无码一区二区三区四虎 | 久久成人午夜电影mp4 | 欧美国产日韩久久久 | 高h喷水荡肉爽文总攻 | 欧美激情一区二区三区视频 | 三级黄色在线免费观看 |