📄 temp.c
字号:
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h>
#include <stdio.h>
#include <lcd.h>
//通过ADC0832采样模拟数据
sbit SCS=P3^6;
sbit SCLK=P3^5;
sbit SDOUT=P3^3;
sbit SDIN=P3^4;
sbit led1 = P1^6;
sbit led2 = P1^7;
//sbit EPIN = P1^2; //LCM1602使能信号
uchar buf[3];
uchar bdata DATAIN;
sbit BITIN=DATAIN^0;
sbit buzzer=P3^7;
uint get_data;
void buzz(uchar b) //蜂鸣器发音
{
uchar i;
uint j;
for(j=0;j<b*256;j++)
{
for(i=100;i>0;i--);//i的大小决定输出频率
buzzer=~buzzer;
}
}
uchar get_ad(bit channel)
{
uchar i;
SCLK=0;
SCS=1;//选通允许
SCS=0;
SDIN=1; //启动位
SCLK=1;
SDIN=1;//SGL
SCLK=0;
SCLK=1;
SDIN=channel;//ODD=1; 选CH0。
SCLK=0;
SCLK=1;
SCLK=0;
SCLK=1;
SCLK=0;
for(i=0;i<8;i++)
{
DATAIN=DATAIN<<1; //移位8次取到采样的值
BITIN=SDOUT;
SCLK=1;
SCLK=0;
}
SCS=1;
return(DATAIN);
}
void convert()
{
uint temp=0;
temp=get_ad(0);
get_data = (uint)temp*100/255 ;
if( get_data < 30)
{
led1 = 1;
led2 = 0;
buzz(5);
}
else if( get_data > 60)
{
led1 = 0;
led2 = 1;
buzz(20);
}
else
{
led1 = 0;
led2 = 0;
}
}
void main()
{
EPIN=0;
lcdreset();
lcdwda(0,0,"THE temprure IS");
lcdwda(0,1,"measrued: ");
while(1)
{
convert();
buf[0]=get_data%1000/100;
buf[1]=get_data%100/10;
buf[2]=get_data%10;
lcdchar (9,1,buf[0]+0x30);
lcdchar (10,1,buf[1]+0x30);
lcdchar (11,1,buf[2]+0x30);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -