找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3373|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

有害氣體檢測(cè)單片機(jī)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:167387 發(fā)表于 2017-3-31 21:31 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
typedef unsigned char U8;
typedef unsigned int U16;
typedef signed char S8;

#define lcddb P0                //1602數(shù)據(jù)總線

sbit lcden=P3^4;                //en端
sbit rs=P3^5;                        //rs端
sbit rw=P3^6;                        //rw端
//sbit dula=P2^6;
//sbit wela=P2^7;

uchar code table1[]="ch20";
uchar code table2[]=" 0x05mg/m ";
uchar num1;                //存儲(chǔ)通道采集的數(shù)據(jù)

void delay(uint x)                 //延時(shí)函數(shù)
{
        uint a,b;
        for(a=x;a>0;a--)
                for(b=114;b>0;b--);
}

void delay1(uint x)
{
        uint a,b;
        for(a=x;a>0;a--)
                for(b=100;b>0;b--);
}

void read_busy()
{
        uchar busy;
        lcddb = 0xff;                //復(fù)位數(shù)據(jù)總線
        rs = 0;                   //拉低rs
        rw = 1;                        //拉高rw
        do
        {
                lcden = 1;                //使能en
                busy = lcddb;        //讀回?cái)?shù)據(jù)
                lcden = 0;                //拉低使能以便于下次產(chǎn)生上升沿
        }
        while(busy & 0x80);        //判斷狀態(tài)字bit7位是否為1,為1側(cè)表示忙,程序等待
}

void write_com(uchar com)  //向1602寫指令
{
//        read_busy();        //判斷忙,忙則
        P0 = com;
        rs = 0;
        rw = 0;
        lcddb = com;
        lcden = 0;
        delay(10);
        lcden = 1;
        delay(10);
        lcden = 0;
        
}

void write_date(uchar date)                  //向1602寫數(shù)據(jù)
{
        P0=date;
        rs=1;
        lcden=0;
        delay(10);
        lcden=1;
        delay(10);
        lcden=0;
        
}

void init()                 //lcd初始化
{
    rw=0;
        write_com(0x38);   //顯示模式設(shè)置:16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口
        delay(20);
        write_com(0x0f);   //顯示模式設(shè)置
        delay(20);
        write_com(0x06);   //顯示模式設(shè)置:光標(biāo)右移,字符不移
        delay(20);
        write_com(0x01);   //清屏幕指令,將以前的顯示內(nèi)容清除
        delay(20);        
}


void main()
{
        uchar a;
        init();

        write_com(0x80);         //將第一個(gè)字符寫在向右偏移17個(gè)字符處,為后面的由右向左劃入做準(zhǔn)備。
        delay(20);
        for(a=0;a<14;a++)
        {
                write_date(table1[a]);         //向1602寫入第一個(gè)數(shù)據(jù)
                delay(20);               
        }

        write_com(0xc0);
        delay(50);
        for(a=0;a<14;a++)
        {
                write_date(table2[a]);        //向1602寫入第二個(gè)數(shù)據(jù)
                delay(40);               
        }
        while(1);
}

新建 Microsoft Word 文檔.docx

15.62 KB, 下載次數(shù): 24, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表