久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

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

計(jì)數(shù)器源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:444895 發(fā)表于 2018-12-12 15:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <reg51.h>

typedef unsigned char uchar;
typedef unsigned int uint;

//lcd 管腳口定義
#define LCD1602_DATAPINS P0



//開拓者
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
sbit cgq = P3^0;
sbit beep = P1^5;

////自己焊的板子
//sbit LCD1602_RS = P1^0;
//sbit LCD1602_RW = P1^1;
//sbit LCD1602_E = P1^2;
//sbit cgq = P2^1;
//sbit beep = P1^4;

uint count = 0;                                                                                                //計(jì)數(shù)值
uint a = 0;
static uint p = 0;                                                                                                                //中斷標(biāo)號(hào)
uint flag = 0,m = 0;                                                                                //中斷標(biāo)志位

uint num1[] = {'0','1','2','3','4','5','6','7','8','9'};                //數(shù)字
uchar line1[] = "  **Counter**   ";                                                                //首行顯示字符
uint num2[16];                                                                                                        //存儲(chǔ)數(shù)值
uchar blank[] = "                ";                                                                 //存儲(chǔ)16個(gè)空格


void delay_1ms(uint x)
{
        uint y;
        for(;x > 0;x--)
                for(y = 110;y > 0;y--);       
}


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--);
                 }      
        }
           
}

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;
}

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;
}

void LcdDisplay(uint num)
{
        uint i;
        num2[15-2] = num/100;                  //百位
        if(num > 99)
                num2[15-1] = num/10%10;
        else
                num2[15-1] = num/10;                //十位
        num2[15] = num%10;                        //個(gè)位
        LcdWriteCom(0x01);  //清屏
        LcdWriteCom(0x80);  //設(shè)置數(shù)據(jù)指針起點(diǎn)
        for(i=0;i<16;i++)
        {
                LcdWriteData(line1[i]);       
        }
        LcdWriteCom(0x80+0x40);           //光標(biāo)移動(dòng)到第二行
        for(i=0;i<16;i++)
        {
                if(i < 13)
                        LcdWriteData(blank[i]);
                else       
                        LcdWriteData(num1[num2[i]]);       
        }
               
}

void LcdInit()                                                  //LCD初始化子程序
{
        LcdWriteCom(0x38);  //開顯示
        LcdWriteCom(0x0c);  //開顯示不顯示光標(biāo)
        LcdWriteCom(0x06);  //寫一個(gè)指針加1
        LcdWriteCom(0x01);  //清屏
        LcdWriteCom(0x80);  //設(shè)置數(shù)據(jù)指針起點(diǎn)
}

//傳感器計(jì)數(shù)
void CgqCounter()
{
        if(cgq == 0)
        {
                delay_1ms(20);
                if(cgq == 0)
                {       
                        while((!cgq));                       
                        count++;
                        LcdDisplay(count);
                }
        }

}  

void Timer0_Init()
{         
        TMOD |= 0x01;
        TH0 = 0xfc;
        TL0 = 0x18;
        EA = 1;
        ET0 = 1;
        TR0 = 0;
}



void main()
{
        Timer0_Init();
        LcdInit();
        LcdDisplay(count);
        while(1)
        {
                CgqCounter();
                if((count % 12 == 0) && (count >= 12) && (m != count))
                {
                        flag = 1;
                        TR0 = 1;
                }
               
        }
}

void Timer0() interrupt 1
{
        TH0 = 0xfc;
        TL0 = 0x18;
        p++;
        if(flag == 1)
        {               
                beep = !beep;
                if(p == 2000)
                {
                        TR0 = 0;
                        p = 0;
                        flag = 0;
                        m = count;               
                }
        }
       
}















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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-12-13 02:51 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說(shuō)明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99爱在线观看 | 99成人精品| 久久久久久国产精品免费免费 | 午夜久久久久久久久久一区二区 | 国产精品久久久久久久久久久久 | 欧美日本一区 | 午夜成人在线视频 | 成人国产精品一级毛片视频毛片 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 涩色视频在线观看 | 中文字幕人成乱码在线观看 | 国产精品免费大片 | 91国产在线播放 | 国产精品欧美一区喷水 | 欧美日韩不卡合集视频 | 91精品国产91久久久久久不卞 | 精品一区二区三区免费视频 | 在线观看av网站 | 国产精品a久久久久 | 91超碰caoporn97人人 | 成人午夜影院 | 久久久久久亚洲精品不卡 | 日屁网站| 一区二区三区欧美 | 男女羞羞的网站 | 久草成人网 | 国产精品女人久久久 | 久久成人在线视频 | 日本黄色影片在线观看 | 亚洲成人一区二区 | 成人av免费 | 久久综合影院 | 亚洲三区在线 | 毛片一区二区 | 91亚洲国产精品 | 国产成人精品一区二区三区网站观看 | 波多野吉衣在线播放 | 成人免费日韩 | 亚洲一区二区av在线 | 国产精品18久久久久久白浆动漫 | 国产精品国产a级 |