⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.c

📁 ARM7下用图形用户界面实现LED,KEY,MOTOR,AD功能
💻 C
字号:
#include "hardware.h"#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/ioctl.h>#include <pthread.h>#include "temp.h"#include "nano-X.h"#define SPE6I			PCONE&=(~0x3000)#define SPE6O			PCONE|=0x1000#define SPE60			PDATE&=(~0x40)#define SPE61			PDATE |=0x40#define CONT              10#define MID               CONT/2extern GR_GC_ID gc;void init_pwm();void init_pe6();int readtemperature();void delay(int t);int init_ds18b20();void writeonechar(unsigned char command);unsigned char readonechar();void * pwm(void *data);void dotemp(float temp,GR_GC_ID gc);void init_pwm(){    TCFG0|=((0<<24)|(0x19<<8) );    TCFG1&=(~0xf<<8);}void init_pe6(){    SPE6I;    SPE6O;    PUPD=0x0;}void delay(int t){    TCNTB2= CONT * t;    TCON|=(0x1<<13);                TCON&=~(0x1<<13);    TCON|=(0x1<<12);       while(!TCNTO2);    while(TCNTO2);    TCON&=~(0x1<<12);}int init_ds18b20(){       	SPE61;    SPE60;    delay(80);    SPE61;     delay(2);    PCONE&=(~0x3000);    delay(4);    return (PDATE&0x40)>>6;}void writeonechar(unsigned char command){	unsigned char i;	unsigned char j;	SPE6O;		for(i=0;i<8;i++)	{		SPE60;		for(j=0;j<10;j--);		if((command & 0x01)==0)		{			SPE60;			delay(4);                }		else		{			SPE61;			delay(4);		}		SPE61;		for(j=0;j<10;j--);		command>>=1;	}}unsigned char readonechar(){	unsigned char i;	unsigned char j;	unsigned char temp;	temp=0;	for(i=0;i<8;i++)	{		SPE6O;        for(j=0;j<5;j++);		SPE60;		for(j=0;j<5;j++);		temp>>=1;		SPE6I;		delay(2);		if(PDATE&0x40);		if(PDATE&0x40)			temp|=0x80;		else			temp|=0x00;		delay(10);	}	return temp;}void * pwm(void *data){    int t;    float tt;    int i=0;	init_pe6();	init_pwm();	PDATE |=0x40;	t=readtemperature();	tt=t*0.0625; 	if(tt-dtemp<10)	{        	dotemp(tt,gc);	}		    dtemp=tt;	for(i=0;i<660;i++);    return NULL;}int readtemperature(){    unsigned char a;    unsigned char b,i;    int t;    INTMSK|=(0x1<<26);    PDATE |=0x40;    delay(33);    init_ds18b20();    delay(33);    writeonechar(0xCC);    writeonechar(0x44);    SPE6O;    SPE61;    for(i=0;i<10;i++)    	delay(1000);    if(init_ds18b20()==1)    	printf("error\n");    delay(33);                    //iiiiiiiiiiiii    writeonechar(0xCC);    writeonechar(0xBE);    SPE6O;    SPE61;    delay(100);   	a=readonechar();    b=readonechar();    INTMSK&=~(0x1<<26);    t=b;    t<<=8;    t=t|a;    delay(1000);	return t;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -