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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機中斷測量速度的程序帶仿真文件

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年06月29日   【字體:

用protues仿真的,仿真文件從http://www.zg4o1577.cn/bbs/dpj-19412-1.html 下載,電路圖都在里面.下面是源代碼是用單片機的int0中斷來實現的.

#include "d:\c51\reg51.h"
#include "d:\c51\intrins.h"


sbit LCM_RS=P3^0;
sbit LCM_RW=P3^1;
sbit LCM_EN=P3^7;

#define BUSY    0x80              //常量定義
#define DATAPORT  P1
#define uchar   unsigned char
#define uint     unsigned int
#define L   50

uchar str0[16],str1[16],count;
uint speed;
unsigned long time;

void ddelay(uint);
void lcd_wait(void);
void display();
void initLCM();
void WriteCommandLCM(uchar WCLCM,uchar BusyC);
void STR();
void account();


/*********延時K*1ms,12.000mhz**********/

void int0_isr(void) interrupt 0         /*遙控使用外部中斷0,接P3.2口*/
{
    unsigned int temp;
 time=count;
    TR0=0;
 temp=TH0;
 temp=((temp << 8) | TL0);
    TH0=0x3c;
    TL0=0xaf;
 count=0;
    TR0=1;
 time=time*50000+temp;
}

void time0_isr(void) interrupt 1        /*遙控使用定時計數器1 */
{
   TH0 =0x3c;
   TL0 =0xaf;
   count++;
}

void main(void)
{
    TMOD=0x01;                       /*TMOD T0選用方式1(16位定時) */
    IP|=0x01;                           /*INT0 中斷優先*/
    TCON|=0x11;                         /*TCON  EX0下降沿觸發,啟動T0*/
    IE|=0x83; 
    TH0=0x3c;
    TL0=0xaf;
 
 initLCM();
    WriteCommandLCM(0x01,1);      //清顯示屏
 for(;;)
 {
  account();
  display();
 }
}

void account()
{
 unsigned long a;
 if (time!=0)
 {
  a=L*360000000/time;
 }
 speed=a;
}

 

void STR()
{
 str0[0]='S';
 str0[1]='p';
 str0[2]='e';
    str0[3]='e';
 str0[4]='d';
 str0[5]=' '; 
 str0[6]=(speed%100000)/10000+0x30;
 str0[7]=(speed%10000)/1000+0x30;
 str0[8]=(speed%1000)/100+0x30;
 str0[9]='.';
 str0[10]=(speed%100)/10+0x30;
 str0[11]=speed%10+0x30;
 str0[12]='k';
 str0[13]='m';
 str0[14]='/';
 str0[15]='h';
}

void ddelay(uint k)
{
    uint i,j;
    for(i=0;i<k;i++)
    {
        for(j=0;j<60;j++)
         {;}
    }
}
/**********寫指令到LCD子函數************/

void WriteCommandLCM(uchar WCLCM,uchar BusyC)
{
    if(BusyC)lcd_wait();
 DATAPORT=WCLCM;
    LCM_RS=0;                   /* 選中指令寄存器*/
    LCM_RW=0;                // 寫模式
    LCM_EN=1;
 _nop_();
 _nop_();
 _nop_();
    LCM_EN=0;

}

/**********寫數據到LCD子函數************/

void WriteDataLCM(uchar WDLCM)
{
    lcd_wait( );            //檢測忙信號
 DATAPORT=WDLCM;
    LCM_RS=1;               /* 選中數據寄存器  */
    LCM_RW=0;            // 寫模式
    LCM_EN=1;
    _nop_();
 _nop_();
 _nop_();
    LCM_EN=0;
}

/***********lcd內部等待函數*************/

void lcd_wait(void)
{
    DATAPORT=0xff;      //讀LCD前若單片機輸出低電平,而讀出LCD為高電平,則沖突,Proteus仿真會有顯示邏輯黃色
 LCM_EN=1;
    LCM_RS=0;
    LCM_RW=1;
    _nop_();
    _nop_();
 _nop_();
    while(DATAPORT&BUSY)
 {  LCM_EN=0;
    _nop_();
    _nop_();
    LCM_EN=1;
    _nop_();
    _nop_();
 }
    LCM_EN=0;

}

/**********LCD初始化子函數***********/
void initLCM( )
{
 DATAPORT=0;
 ddelay(15);
 WriteCommandLCM(0x38,0);    //三次顯示模式設置,不檢測忙信號
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);

    WriteCommandLCM(0x38,1);    //8bit數據傳送,2行顯示,5*7字型,檢測忙信號
    WriteCommandLCM(0x08,1);    //關閉顯示,檢測忙信號
    WriteCommandLCM(0x01,1);    //清屏,檢測忙信號
    WriteCommandLCM(0x06,1);    //顯示光標右移設置,檢測忙信號
    WriteCommandLCM(0x0c,1);    //顯示屏打開,光標不顯示,不閃爍,檢測忙信號
}

/****顯示指定坐標的一個字符子函數****/

void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
    Y&=1;
    X&=15;
    if(Y)X|=0x40;               //若y為1(顯示第二行),地址碼+0X40
    X|=0x80;                    //指令碼為地址碼+0X80
    WriteCommandLCM(X,0);
    WriteDataLCM(DData);
}

/*******顯示指定坐標的一串字符子函數*****/

void DisplayListChar(uchar X,uchar Y,uchar *DData)
{
    uchar ListLength=0;
    Y&=0x01;
    X&=0x0f;
    while(X<16)
    {
        DisplayOneChar(X,Y,DData[ListLength]);
        ListLength++;
        X++;
    }
}


void display()
{

 STR();
 DisplayListChar(0,0,str0);
    DisplayListChar(0,1,str1);
}
 

關閉窗口

相關文章

主站蜘蛛池模板: 久久69精品久久久久久久电影好 | 欧美精品一区二区三区在线 | 美女爽到呻吟久久久久 | 国产精品中文字幕在线 | 最近日韩中文字幕 | 久久成人一区 | 国产91在线视频 | 国产精品一区二区在线观看 | 精品一区二区三区在线视频 | 网站黄色在线 | 精品久久久久一区二区国产 | 亚洲精品成人网 | 亚洲综合免费 | 一级黄色网页 | 午夜精品久久久久久久久久久久久 | 免费视频一区二区 | 91社区在线高清 | 99久久精品国产一区二区三区 | 国产中文字幕网 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 日本小电影网站 | 精品日韩 | 男人天堂网址 | 国产色爽 | 日韩免费 | 一道本在线 | 亚洲二区在线 | 99re热这里只有精品视频 | 精品婷婷 | 97国产精品| 日韩一区二区三区在线观看 | 国产一区二区三区免费 | 国产激情99 | 成人免费网站www网站高清 | 亚洲高清视频在线 | 亚洲精品一区av在线播放 | 丁香婷婷久久久综合精品国产 | 999免费视频 | 天天av网| 日韩一区二区三区av | 美女激情av |