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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自行車測速源程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:201129 發(fā)表于 2017-5-15 21:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#include <intrins.h>
#define uint  unsigned int
#define uchar unsigned char
void delay(uint z)
{
   uint a,b;
   for(a=z;a>0;a--)
     for(b=60;b>0;b--);
}
sbit LcdRs        = P2^0;
sbit LcdRw        = P2^1;
sbit LcdEn          = P2^2;
#define  DBPort         P0
#define LCD_COMMAND         0
#define LCD_DATA         1
#define LCD_CLEAR_SCREEN        0x01
#define LCD_HOMING                  0x02
void LCD_Write(bit style, unsigned char input)
{
  LcdRs=style;
        LcdRw=0;
        DBPort=input;       
        delay(5);
        LcdEn=1;
        delay(5);
        LcdEn=0;
}
#define LCD_SHOW                        0x04
#define LCD_HIDE                        0x00  
#define LCD_CURSOR                        0x02
#define LCD_NO_CURSOR                0x00             
#define LCD_FLASH                        0x01
#define LCD_NO_FLASH                0x00   
void LCD_SetDisplay(unsigned char DisplayMode)
{
        LCD_Write(LCD_COMMAND, 0x08|DisplayMode);       
}
#define LCD_AC_UP                        0x02
#define LCD_AC_DOWN                        0x00
#define LCD_MOVE                        0x01
#define LCD_NO_MOVE                        0x00
void LCD_SetInput(unsigned char InputMode)
{
        LCD_Write(LCD_COMMAND, 0x04|InputMode);
}
void LCD_Initial()
{
        LcdEn=0;
        LCD_Write(LCD_COMMAND,0x38);
        delay(5);
        LCD_Write(LCD_COMMAND,0x38);
        delay(5);
       
   LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);
        delay(5);
        LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);
        delay(5);
        LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);
        delay(5);
}
void GotoXY(unsigned char x, unsigned char y)
{
        if(y==0)
                LCD_Write(LCD_COMMAND,0x80|x);
        if(y==1)
                LCD_Write(LCD_COMMAND,0x80|(x-0x40));
}
void Print(unsigned char *str)
{
        while(*str)
        {
                LCD_Write(LCD_DATA,*str);
                str++;
                delay(1);
       
}
}
void Timer1Init(void)                //50ms@12.000MHz
{
        TMOD &= 0x0F;
        TMOD |= 0x10;
        TL1 = 0xB0;
        TH1 = 0x3C;
        TF1 = 0;
        TR1 = 1;
        ET1=1;
        EA=1;
}
unsigned char        count=0;
unsigned int speed=0;
long        temp1=0,temp2=0;
long        s=0;
void        Timer1_IRQ()        interrupt 3
{
                TR1 = 0;
                TL1 = 0xB0;
                TH1 = 0x3C;
                TR1 = 1;
                count++;
                if(count==10)
                {
                        temp2=TH0;
                        temp2<<=8;
                        temp2+=TL0;
                        if(temp2<temp1)        s+=65535;
                        speed=(temp2-temp1)*5;
                        temp1=temp2;
                        count=0;
                }
}
void        Count0Init(void)
{
        TMOD &= 0xF0;
        TMOD |= 0x05;
        TL0 = 0;
        TH0 = 0;
        TF0 = 0;
        TR0 = 1;
}
unsigned int        c=20;
long        u=0;
sbit        k1=P3^0;
sbit        k2=P3^1;
void main()
{
       
        Timer1Init();
        Count0Init();       
        LCD_Initial();
        while(1)
        {
                       
                        GotoXY(0,0);
                        Print("V:");
                        LCD_Write(1,speed/100+0x30);
                        LCD_Write(1,speed%100/10+0x30);
                        LCD_Write(1,'.');
                        LCD_Write(1,speed%10+0x30);
                        LCD_Write(1,' ');
                        Print("C:");
                        LCD_Write(1,c/100+0x30);
                        LCD_Write(1,c%100/10+0x30);
                        LCD_Write(1,'.');
                        LCD_Write(1,c%10+0x30);
                        Print("CM");
                        GotoXY(1,1);
                        Print("Total:");
                        u=(s+temp1)*c/40;
                        LCD_Write(1,u/100000+0x30);
                        LCD_Write(1,u%100000/10000+0x30);
                        LCD_Write(1,u%10000/1000+0x30);
                        LCD_Write(1,u%1000/100+0x30);
                        LCD_Write(1,'.');
                        LCD_Write(1,u%100/10+0x30);
                        LCD_Write(1,'M');
                        if(k2==0)
                        {
                                delay(5);
                                if(k2==0)
                                {
                                        while(k2==0);
                                        c++;
                                }
                        }
                        if(k1==0)
                        {
                                delay(5);
                                if(k1==0)
                                {
                                        while(k2==0);
                                        if(c>0)        c--;
                                }
                        }
        }
}

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中日韩av | 97国产精品视频人人做人人爱 | 亚洲天堂一区 | 精品一区二区在线观看 | 欧美1—12sexvideos | 99精品99| www国产成人免费观看视频,深夜成人网 | 999久久久久久久久6666 | 91网站在线播放 | 精品一区二区三区视频在线观看 | 亚欧精品 | 81精品国产乱码久久久久久 | 久久久激情 | 九九热精品视频 | 精品一区二区三区在线观看 | 国产成人免费视频 | 国产精品美女久久久久久不卡 | 中文字幕视频在线 | 夜夜爽99久久国产综合精品女不卡 | 亚洲狠狠| 国产精品成人一区二区 | 日韩中文字幕在线 | 欧美在线一区视频 | 亚洲综合久久久 | 天天插天天射天天干 | 男人天堂网av | 日韩一级精品视频在线观看 | 午夜无码国产理论在线 | 天天曰天天干 | 91精品久久久 | 中文字幕一区二区三区乱码在线 | 亚洲欧美日韩中文字幕一区二区三区 | 欧美一二三区 | 日韩二三区 | 成人网视频| 精品日本中文字幕 | 丁香婷婷久久久综合精品国产 | 欧美性乱| 99国内精品久久久久久久 | 欧美激情一区 | 久久久久久免费精品一区二区三区 |