c语言源程序由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“有界面的c语言源程序”。
基于单片机msp430和温度传感器ds18b20的水温度控制系统的c语言源程序(不是测量,要有加热跟制冷)
我这是用STC做的,应该很容易移植到MPS430上的给你参考一下。#include #include #define uchar unsigned char #define uint unsigned int
sbit scl=P1^3;sbit sda=P1^4;
sbit key1=P1^6;sbit key2=P1^7;sbit key3=P2^0;sbit key4=P2^1;
sbit lcrs=P3^7;//数据/命令 sbit lcwr=P3^5;//读/写 sbit lcden=P3^4;//使能
sbit DS=P2^2;
/*sbit lcrs=P3^4;//数据/命令 sbit lcwr=P3^7;//读/写 sbit lcden=P3^5;//使能 */ sbit jrk=P2^2;sbit cyk=P2^3;sbit xhk=P2^4;bit flag=0,rsg=0,not=0,he=0,in=0;int acon=0,bcon=0,dcon=0,econ=0, temp=0,y=0,j=0,l=0,cfj=0,ec=0,dc=0,at;uchar code table[]={48,49,50,51,52,53,54,55,56,57};uchar code ta1[]={“Temperature UP”};uchar code ta2[]={“Temperature DN”};uchar code ta3[]={“Inflator Cycle”};uchar code ta4[]={“Inflator Time ”};uchar code ta5[]={“ Heating UP ”};uchar code ta6[]={“ Inflator ”};uchar code table7[]={“Temperature”};uchar table1[]={0,0,0,'.',0};uchar table3[]={“AptitudeAquarium”};uchar table4[]={0,0,0,0,0};uchar n,c=0;void delay(uchar);void wen_kong();void xh();void rso();void weno();
void Init_Com(void){ TMOD = 0x11;PCON = 0x00;TH1=0x61;TL1=0x99;EA=1;ET1=1;TR1=1;} void delay(uchar count)//delay { uint i;while(count){ i=200;while(i>0)i--;count--;} } ////初始化18B20///////// bit init18b20(void){ uint i;bit no;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;no=DS;if(no==0){ DS=1;i=100;while(i>0)i--;no=DS;if(no==1)not=0;else not=1;} else not=1;return(not);}
bit tmpread()bit(void)//读一位
{ uint i;bit dat;DS=0;i++;DS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return(dat);}
uchar tmpread()(void)//读一个字节 { uchar i,j,dat;dat=0;for(i=1;i>1);//读出的数据最低位在最前面,这样刚好一个字节在DAT里
} return(dat);}
void tmpwritebyte(uchar dat)//写一个字节到 ds18b20 { uint i;uchar j;bit testb;for(j=1;j>1;if(testb)//write 1 { DS=0;i++;i++;DS=1;i=8;while(i>0)i--;} else { DS=0;//write 0 i=8;while(i>0)i--;DS=1;i++;i++;} } }
int tmp()//DS18B20温度读取 { float tt;int a,b;if(init18b20()==0){ WDT_CONTR=0x36;/////喂狗 EA=0;delay(1);
tmpwritebyte(0xcc);// 跳过读ROM操作 tmpwritebyte(0x44);// 启动温度转换 delay(10);init18b20();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp>4;
tt=temp*0.0625;
temp=tt*10+0.5;//放大10倍输出并四舍五入 EA=1;return temp;} else not=1;}
//////1062///////// void ydelay(uint x){ uint a,b;for(a=x;a>0;a--)for(b=10;b>0;b--);} void write_com(uchar com){ P0=com;lcwr=0;lcrs=0;lcden=0;ydelay(10);lcden=1;ydelay(10);lcden=0;lcwr=1;}
void write_date(uchar date)//写数据 {
P0=date;lcwr=0;lcrs=1;lcden=0;ydelay(10);lcden=1;ydelay(10);lcden=0;lcwr=1;}
void init1602()//初始化 { write_com(0x38);//设置显示模式 ydelay(20);write_com(0x0c);//开显示 ydelay(20);write_com(0x06);//指针和光标自动加一 ydelay(20);write_com(0x01);//清屏指令 ydelay(20);}
///////显示程序////// void display(int num){ uint i,A1,A2;WDT_CONTR=0x35;/////喂狗 if(c!=0)num=~num+1;A1=num/1000;A2=num%1000/100;if(not==0){
if(c!=0){ c=0;table1[0]='-';} else if(A1==0)table1[0]=' ';else
table1[0]=table[A1];if(A1==0)if(A2==0)table1[1]=' ';else table1[1]=table[A2];
table1[2]=table[num%1000%100/10];table1[4]=table[num%1000%100%10];} else { table1[0]='?';table1[1]='?';table1[2]='?';table1[4]='?';}
write_com(0x80);for(i=0;i
write_com(0xc4);delay(2);for(a=0;a
///////////x24c02////////////////// void delay24(){;;}
void init24c02()//初始化 { sda=1;delay24();scl=1;delay24();}
void start()//开始信号 { sda=1;delay24();scl=1;delay24();sda=0;delay24();}
void stop()//停止 { sda=0;delay24();scl=1;delay24();sda=1;delay24();}
void respons()//应答 { uchar i;scl=1;delay24();while((sda==1)&&(i
void write_byte(uchar date)// 写数据子函数 { uchar i,temp;temp=date;
for(i=0;i
uchar read_byte()// 读数据子函数 { uchar i,k;scl=0;delay24();sda=1;delay24();for(i=0;i
void delay1ms(uchar ms){
uchar i;while(ms--){ for(i = 0;i
int keyf(int *num,int up,int dn){ uint i;uchar z;for(i=0;i
display2(n,*num);if(key1==0){ delay1ms(30);if(key1==0){ i=0;n++;if(n>=9)n=0;while(!key1)display2(n,*num);break;} } if(key2==0){
delay1ms(10);if(key2==0){ i=0;if(*num>=up)*num=up;else if(n!=4)*num=*num+1;else if(*num
*num=*num+10;for(z=0;z=up)*num=up;else if(n!=4)*num=*num+1;else if(*num
*num=*num+10;} } }
if(key3==0){ delay1ms(10);if(key3==0){ i=0;if(*num
*num=*num-10;for(z=0;z
*num=*num-10;} } } } return(*num);} void keyjc(){ uchar i=0;if(key1==0){ delay1ms(10);if(key1==0){ EA=0;
for(i=0;i
display(tmp());} if(key1==0){
write_com(0x01);//清屏指令
n++;if(n>=5)n=0;while(!key1){ switch(n){ case 1:display2(n,acon);break;case 0:break;} } if(n==1){ keyf(&acon,1250,-530);if((acon-bcon)
key(){ uint i;if(key4==0)delay1ms(50);if(key4==0){ write_com(0x01);//清屏指令
for(i=0;i=5)n=0;while(!key4){ switch(n){ case 1: display2(1,acon);break;case 2: display2(2,bcon);break;default: break;} } } } switch(n){ case 1: display2(1,acon);break;case 2: display2(2,bcon);break;default: break;} } n=0;} }
///////滤波//////// int filter(){ int tm,buf[6];uchar i,j;EA=0;for(i=0;i
for(j=0;jbuf[i+1]){ tm=buf[i];buf[i]=buf[i+1];buf[i+1]=tm;} tm=((buf[2]+buf[3])/2);EA=1;return(tm);}
void main(){ uchar b,c;Init_Com();init1602();init24c02();
b=read_add(1);delay1ms(15);c=read_add(2);delay1ms(15);acon=b*256+c;b=read_add(3);delay1ms(15);c=read_add(4);delay1ms(15);bcon=b*256+c;
AUXR=0x01;// 禁止ALE输出 WDT_CONTR=0x35;//启动看门狗 write_com(0x01);//清屏指令
while(1){ at=filter();display(at);keyjc();key();
wen_kong();weno();} }
//////温度控制//////////////
void wen_kong(){ if((flag==0)&&(not==0)){ at=filter();if(at
{ flag=1;jrk=0;xhk=0;he=1;} } }
void weno(){ if(flag){ at=filter();if(at>=acon){ flag=0;jrk=1;if(rsg)xhk=0;else xhk=1;he=0;} } if(not==1){ flag=0;jrk=1;if(rsg)xhk=0;else xhk=1;he=0;} }
C/C++程序编译步骤如何生成可执行文件电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命......
附件:病房管理源程序#include #include #include #include #define ok 1 #define error 0 #define TURE 1 #define FALSE 0 #define max_name 21 typedef struct bed{int......
出租车计价器设计与制作设计并制作一台出租车计价器。调试时采用10Hz方波信号模拟,每个方波代表10m。基本要求:(1)不同情况具有不同的收费标准白天 1元/公里 晚上 2元/ 公里 途......
ORG0000HLJMPMAINORG001BHLJMPLOOPORG0100HMAIN:MOV21H,#17HMOV22H,#3AHMOV23H,#00H;设定时间初值MOV36H,#10MOV39H,#10MOVR7,#14H;循环20次50*20=1000msMOVDPTR,#0F003HMOV......
51单片机4路抢答器的原理及C语言源程序 单片机,当然不只是51,51单片机是一种稍通用型的单片机,通过I/O口的定义,可以实现多种控制功能。抢答器,原理:如果为四路,当其中任一路控下后......