久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
自行車測速單片機proteus仿真及源程序
[打印本頁]
作者:
51黑ff
時間:
2016-10-9 21:51
標題:
自行車測速單片機proteus仿真及源程序
一個用51單片機做的自行車測速系統的proteus仿真,下面是原理圖:
0.png
(13.25 KB, 下載次數: 68)
下載附件
2016-10-9 21:50 上傳
0.png
(55.58 KB, 下載次數: 47)
下載附件
2016-10-9 21:50 上傳
仿真工程文件及所有完整程序等資料下載地址:
http://www.zg4o1577.cn/bbs/dpj-56304-1.html
源程序:
#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);
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕免费观看
|
婷婷二区
|
国产精品www
|
亚洲成人自拍
|
免费成年网站
|
久久av一区二区
|
日本一二三区电影
|
欧美一级在线
|
亚洲 中文 欧美 日韩 在线观看
|
欧洲国产精品视频
|
国产精品欧美一区喷水
|
亚州午夜精品
|
狠狠热视频
|
欧美日韩在线观看视频
|
精品久久久久久久久久久久久久久久久
|
亚洲一区 中文字幕
|
精品国产99
|
在线观看中文字幕亚洲
|
国产精品视频二区三区
|
日韩一级免费电影
|
精品久久久999
|
精品成人佐山爱一区二区
|
欧美中文一区
|
亚洲精品乱码久久久久v最新版
|
玖玖在线免费视频
|
一区二区免费视频
|
亚洲成人黄色
|
日韩在线欧美
|
香蕉久久久
|
欧美视频二区
|
国产日韩久久久久69影院
|
国产精品久久久久久久久污网站
|
国产日韩欧美一区
|
99精品免费久久久久久日本
|
麻豆一区二区三区
|
国产午夜精品一区二区三区嫩草
|
亚洲福利网
|
中午字幕在线观看
|
日韩精品成人网
|
香蕉久久av
|
久久电影一区
|