|
//以下電機程序
#include <reg52.h>
#include <intrins.h>
sbit MOTOA = P1^0;
sbit MOTOB = P1^1;
sbit MOTOC = P1^2;
sbit MOTOD = P1^3;
void delay(int time)
{
int i,j;
for(j=0; j <= time; j++)
for(i =0 ; i <= 120; i++);
}
void main()
{
P1 = 0x00;
while (1)
{
MOTOA = 1;
MOTOB = 0;
MOTOC = 1;
MOTOD = 1;
delay(2);
MOTOA = 1;
MOTOB = 1;
MOTOC = 1;
MOTOD = 0;
delay(2);
MOTOA = 0;
MOTOB = 1;
MOTOC = 1;
MOTOD = 1;
delay(2);
MOTOA = 1;
MOTOB = 1;
MOTOC = 0;
MOTOD = 1;
delay(2);
}
}
//以下溫傳程序
#include<reg51.h>
#include"lcd.h"
#include"temp.h"
void LcdDisplay(int);
void main()
{
LcdInit(); //初始化LCD1602
LcdWriteCom(0x88); //寫地址 80表示初始地址
LcdWriteData('C');
while(1)
{
LcdDisplay(Ds18b20ReadTemp());
// Delay1ms(1000);//1s鐘刷一次
}
}
void LcdDisplay(int temp) //lcd顯示
{
unsigned char datas[] = {0, 0, 0, 0, 0}; //定義數(shù)組
float tp;
if(temp< 0) //當溫度值為負數(shù)
{
LcdWriteCom(0x80); //寫地址 80表示初始地址
LcdWriteData('-'); //顯示負
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
}
else
{
LcdWriteCom(0x80); //寫地址 80表示初始地址
LcdWriteData('+'); //顯示正
tp=temp;
temp=tp*0.0625*100+0.5;
}
datas[0] = temp / 10000;
datas[1] = temp % 10000 / 1000;
datas[2] = temp % 1000 / 100;
datas[3] = temp % 100 / 10;
datas[4] = temp % 10;
LcdWriteCom(0x82); //寫地址 80表示初始地址
LcdWriteData('0'+datas[0]); //百位
LcdWriteCom(0x83);
LcdWriteData('0'+datas[1]); //十位
LcdWriteCom(0x84);
LcdWriteData('0'+datas[2]); //個位
LcdWriteCom(0x85);
LcdWriteData('.');
LcdWriteCom(0x86);
LcdWriteData('0'+datas[3]);
LcdWriteCom(0x87);
LcdWriteData('0'+datas[4]);
}
|
|