欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于單片機的鋼絲繩檢測Proteus仿真+程序
[打印本頁]
作者:
翱翔111111
時間:
2019-6-4 00:15
標題:
基于單片機的鋼絲繩檢測Proteus仿真+程序
鋼絲繩檢測仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(18.23 KB, 下載次數: 46)
下載附件
2019-6-7 05:08 上傳
單片機源程序如下:
#include <reg51.h>
#include <stdio.h>
#include <intrins.h>
#include <math.h> //Keil library
#include <stdlib.h> //Keil library
#define uchar unsigned char //定義一下方便使用
#define uint unsigned int
#define ulong unsigned long
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2;
sbit BF = P0^7; //忙碌標志位,,將BF位定義為P0.7引腳
sbit ADOUT=P1^7; //ADC 數據輸入
sbit ADCLK=P1^6; //ADC CLK
sbit ADCS=P1^5; //ADC CS
sbit key1=P3^6; //定義按鍵
sbit spk=P3^7; //定義蜂鳴器
sbit led=P3^5; //定義led
uchar count;
uint DATA1=0; //采集值
/*************延時函數*************/
void delay(uint n)
{ uint x,y;
for(x=n;x>0;x--)
for(y=121;y>0;y--);
}
/***********判忙函數***********/
bit LCD_Check_Busy()
{
bit result;
RS=0; //根據規定,RS為低電平,RW為高電平時,可以讀狀態
RW=1;
EN=1; //E=1,才允許讀寫
_nop_(); //空操作
_nop_();
_nop_();
_nop_(); //空操作四個機器周期,給硬件反應時間
result=BF; //將忙碌標志電平賦給result
EN=0; //將E恢復低電平
return result;
}
/***********寫入命令函數***********/
void write_com(uchar com)
{
while(LCD_Check_Busy()); //忙則等待
RS=0;
RW=0;
EN=1;
P0= com;
_nop_();
EN=0;
}
/**********寫入數據函數**********/
void write_dat(uchar dat)
{
while(LCD_Check_Busy()); //忙則等待
RS=1;
RW=0;
EN=1;
P0= dat;
_nop_();
EN=0;
}
/*******寫入字符函數***********/
void LCD_Write_Char(uchar x,uchar y,uchar dat)
{
if (y == 0)
{ write_com(0x80 + x); }
else
{ write_com(0xC0 + x); }
write_dat( dat);
}
/******寫入字符串函數***********/
void Write_String(uchar x,uchar y,uchar *s)
{
while (*s)
{
LCD_Write_Char(x,y,*s);
s++;
x++;
}
}
/*****初始化函數******/
void LCD_Init()
{
write_com(0x38); /*顯示模式設置*/
delay(5);
write_com(0x06);/*顯示光標移動設置*/
delay(5);
write_com(0x0C); /*顯示開及光標設置*/
write_com(0x01); /*顯示清屏*/
}
/*----------------ADC采樣函數程序-----------------------------------------------*/
void adc0831()
{
uchar i;
DATA1=1;
_nop_(); _nop_(); _nop_();
ADCS=0;
_nop_(); _nop_(); _nop_();
ADCLK=1;
_nop_(); _nop_(); _nop_();
ADCLK=0;
_nop_(); _nop_(); _nop_();
ADCLK=1;
_nop_(); _nop_(); _nop_();
ADCLK=0;
for(i=0;i<8;i++)
{
DATA1<<=1;
if(ADOUT)
{
DATA1++;
}
ADCLK=1;
_nop_(); _nop_(); _nop_();
ADCLK=0;
_nop_(); _nop_(); _nop_();
}
ADCS=1;
_nop_(); _nop_();
// return DATA1;
}
///***********************************************************************
void lcd1()
{
// uint e;
// uchar e0,e1,e2,e3;
if(DATA1>340)
{
Write_String(0,1," OFF Normal ");
spk=0;
led=0;
}
else
{
Write_String(0,1," Normal ");
spk=1;
led=1;
}
/*
e=DATA1;
e0 = e/1000 +48;
e1 = (e/100)%10+48;
e2 = (e/10)%10+48;
e3 = e%10+48;
Write_String(8,1,"Q="); //
LCD_Write_Char(10,1,e0);
LCD_Write_Char(11,1,e1);
LCD_Write_Char(12,1,e2);
LCD_Write_Char(13,1,e3);
Write_String(14,1,"Kg");
*/
}
void key()
{
if(key1==0) //kay5 +1
{
delay(1); //延時消抖
if(key1==0)
while(!key1);//等待松手
// KA=!KA;
}
}
/*----------------主函數-----------------------------------------------*/
int main(void)
{
LCD_Init(); //初始化液晶屏
delay(10); //延時用于穩定,可以去掉
write_com(0x01); //清屏
Write_String(0,0," Welcome to use "); //寫入的是設備信息
Write_String(0,1," "); //寫入第二行信息,可以寫自己的名字什么的
delay(500);
//write_com(0x01); //清屏
while (1)
{
adc0831(); //質量采集
key();
lcd1();
delay(100); //延時,兩次發射之間要至少有10ms間隔
}
}
復制代碼
所有資料51hei提供下載:
C052931.zip
(189.81 KB, 下載次數: 24)
2019-6-4 00:14 上傳
點擊文件名下載附件
仿真程序文件
下載積分: 黑幣 -5
作者:
翱翔111111
時間:
2019-6-4 00:15
非常有喲有用
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1