女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > 技術學院 > 熱搜器件
[導讀]此段代碼沒有ds18b20的id設置 ,只是實現(xiàn)了一個簡單的溫度輸出。對ds18b20理解足夠,重點在如何看到datesheet的時序圖,以及功能的如何實現(xiàn)步驟。

此段代碼沒有ds18b20的id設置 ,只是實現(xiàn)了一個簡單的溫度輸出。對ds18b20理解足夠,重點在如何看到datesheet的時序圖,以及功能的如何實現(xiàn)步驟。

#include //支持printk輸出

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define DEVICE_NAME "DS18B20"

#define DS18B20_MAJOR 231

#define DQ S3C2410_GPG0

#define CLK S3C2410_GPB0

#define W1 S3C2410_GPH9

#define W2 S3C2410_GPE10

#define W3 S3C2410_GPH7

#define AB S3C2410_GPB4

#define OUT S3C2410_GPIO_OUTPUT

#define IN S3C2410_GPIO_INPUT

#define HIGH 1

#define LOW 0

//定義DS18B20ROM指令

#define DS18B20_ReadROM 0x33 //讀ROM

#define DS18B20_MatchROM 0x55 //匹配ROM

#define DS18B20_SkipROM 0xCC //跳過ROM

#define DS18B20_SearchROM 0xF0 //搜索ROM

#define DS18B20_AlarmROM 0xEC //報警搜索

//定義DS18B20存儲器操作命令

#define DS18B20_WriteSCR 0x4E //寫暫存存儲器

#define DS18B20_ReadSCR 0xBE //讀暫存存儲器

#define DS18B20_CopySCR 0x48 //復制暫存存儲器

#define DS18B20_ConvertTemp 0x44 //溫度變換

#define DS18B20_RecallEP 0xB8 //重新調出

#define DS18B20_ReadPower 0xB4 //讀電源

static char devicecount=0; //計數(shù)器,防止被多個人多次打開

unsigned char DS18B20_Init(void)

{

s3c2410_gpio_cfgpin(DQ,OUT);

s3c2410_gpio_setpin(DQ,LOW);

udelay(700);

s3c2410_gpio_cfgpin(DQ,IN);

udelay(60);

udelay(240);

return 0;

}

unsigned char DS18B20_readbit(void)

{

unsigned char bit;

s3c2410_gpio_cfgpin(DQ,OUT);

s3c2410_gpio_setpin(DQ,LOW);

udelay(15);

s3c2410_gpio_cfgpin(DQ,IN);

bit=s3c2410_gpio_getpin(DQ);

udelay(45);

return bit;

}

unsigned char DS18B20_readbyte(void)

{

unsigned char i,j,dat;

dat=0;

for(i=1;i<=8;i++)

{

j=DS18B20_readbit();

dat=(j<<7)|(dat>>1);

}

return dat;

}

void DS18B20_writebyte(unsigned char dat)

{

unsigned int i;

unsigned char j;

for(i=1;i<=8;i++)

{

j=dat&0x01;

dat=dat>>1;

if(j)

{

s3c2410_gpio_cfgpin(DQ,OUT);

s3c2410_gpio_setpin(DQ,LOW);

udelay(10);

s3c2410_gpio_setpin(DQ,HIGH);

udelay(45);

}

else

{

s3c2410_gpio_cfgpin(DQ,OUT);

s3c2410_gpio_setpin(DQ,LOW);

udelay(60);

s3c2410_gpio_setpin(DQ,HIGH);

}

}

}

unsigned short DS18B20_tmperature(void)

{

unsigned int a,b;

unsigned short tmp;

DS18B20_Init();

DS18B20_writebyte(DS18B20_SkipROM);

DS18B20_writebyte(DS18B20_ConvertTemp);

DS18B20_Init();

DS18B20_writebyte(DS18B20_SkipROM);

DS18B20_writebyte(DS18B20_ReadSCR);

a=DS18B20_readbyte();

b=DS18B20_readbyte();

tmp=b;

tmp=tmp<<8;

tmp=tmp|a;

return tmp;

}

void display(unsigned char dat)

{

unsigned char i;

for(i=1;i<=8;i++)

{

s3c2410_gpio_cfgpin(CLK,OUT);

s3c2410_gpio_setpin(CLK,LOW);

s3c2410_gpio_cfgpin(AB,OUT);

s3c2410_gpio_setpin(AB,dat&0x01);

s3c2410_gpio_setpin(CLK,HIGH);

dat>>=1;

}

udelay(700);

}

static int DS18B20_write(struct file *file, const char __user *buffer, size_t count, loff_t * ppos)

{

unsigned char i,a[3];

unsigned char table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰

unsigned char table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x40};

copy_from_user(a,buffer,sizeof(a));

for(i=100;i--;i>0)

{

s3c2410_gpio_cfgpin(W1,OUT);

s3c2410_gpio_setpin(W1,LOW);

display(table[a[0]]);

s3c2410_gpio_cfgpin(W1,IN);

s3c2410_gpio_cfgpin(W2,OUT);

s3c2410_gpio_setpin(W2,LOW);

display(table1[a[1]]);

s3c2410_gpio_cfgpin(W2,IN);

s3c2410_gpio_cfgpin(W3,OUT);

s3c2410_gpio_setpin(W3,LOW);

display(table[a[2]]);

s3c2410_gpio_cfgpin(W3,IN);

}

return 0;

}

static int DS18B20_read(struct file *filp, char __user *buffer, size_t count, loff_t *ppos)

{

unsigned short tmp;

tmp=DS18B20_tmperature();

printk("tmperature = %d\n",tmp);

if(tmp<600)

copy_to_user(buffer,&tmp,sizeof(tmp));

return 0;

}

static int DS18B20_open(struct inode *inode,struct file *file)//3

{

if(devicecount >0) return -ERESTARTSYS;

printk("device open : success\n");

devicecount++;

return 0;

}

static int DS18B20_release(struct inode *inode, struct file *filp)//5

{

devicecount--;

printk("device release\n");

return 0;

}

static int DS18B20_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg)//4

{

printk("*************This is the first driver----hello,welcome to embedded world *************\n");

return 0;

}

static struct file_operations DS18B20_fops = {//2_1

.owner = THIS_MODULE,

.ioctl = DS18B20_ioctl,

.write = DS18B20_write,

.read = DS18B20_read,

.open = DS18B20_open,

.release = DS18B20_release,

};

static int __init DS18B20_init(void)//2_0

{

int ret;

ret = register_chrdev(DS18B20_MAJOR, DEVICE_NAME, &DS18B20_fops);

if (ret < 0) {

printk(DEVICE_NAME " can't register major number\n");

return ret;

}

printk(DEVICE_NAME " initialized\n");

return 0;

}

static void __exit DS18B20_exit(void)//6

{

unregister_chrdev(DS18B20_MAJOR, DEVICE_NAME);

}

module_init(DS18B20_init); //1

module_exit(DS18B20_exit);//6

MODULE_AUTHOR("Yink_Liu");

MODULE_DESCRIPTION("A simple Hello World Moudle");

MODULE_ALIAS("a simple module");

MODULE_LICENSE("Dual BSD/GPL");

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

本文將演示一種加速嵌入式系統(tǒng)設計原型階段的方法,說明如何將與硬件無關的驅動程序和傳感器結合使用,簡化整個嵌入式系統(tǒng)的器件選擇。同時還將介紹嵌入式系統(tǒng)的器件、典型軟件結構以及驅動程序的實現(xiàn)。后續(xù)文章“利用與硬件無關的方法簡...

關鍵字: 嵌入式系統(tǒng) 驅動程序 傳感器

隨著科技的飛速發(fā)展,嵌入式系統(tǒng)已經(jīng)成為現(xiàn)代生活不可或缺的一部分,它們被廣泛應用于從智能家居到自動駕駛汽車的各個領域。而在這些系統(tǒng)中,C語言由于其高效性、可移植性和對硬件的直接控制能力,成為了嵌入式系統(tǒng)開發(fā)的首選語言。

關鍵字: C語言 驅動程序

每個嵌入式軟件應用程序都必須在某個時候訪問最低級別的固件并控制硬件。驅動程序的設計和實現(xiàn)對于確保系統(tǒng)能夠滿足其實時要求至關重要。

關鍵字: 嵌入式 驅動程序

在Linux內核開發(fā)中,字符設備驅動程序是連接硬件設備與用戶空間應用程序的重要橋梁。本文將詳細介紹如何編寫一個基本的字符設備驅動程序,從理論框架到實際代碼實現(xiàn),再到測試和部署。

關鍵字: Linux 字符設備 驅動程序

DS18B20是常用的數(shù)字溫度傳感器,其輸出的是數(shù)字信號,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。

關鍵字: ds18b20 溫度傳感器 數(shù)字信號

USB攝像頭是一種采用USB接口的視頻采集設備,其優(yōu)點在于即插即用、操作簡便,無需額外驅動程序,支持筆記本電腦,并且成本較低,可以支持遠程網(wǎng)絡觀看。

關鍵字: usb攝像頭 驅動程序

與兩相雙極步進電機的驅動電路相比,兩相單極步進電機的驅動電路在輸入段配置、內部邏輯及控制電路和驅動電路使用雙通道方面基本相同,但是輸出段的配置不同。

關鍵字: 四相步進電機 驅動程序 程序電路

本文介紹了如何實現(xiàn)嵌入式MICREL網(wǎng)卡的驅動程序開發(fā)和設計。首先,我們介紹了MICREL網(wǎng)卡的概述和工作原理。然后,詳細探討了驅動程序的開發(fā)流程,包括硬件和軟件的配置以及驅動程序的編寫和測試。最后,總結了幾點注意事項和...

關鍵字: 嵌入式 MICREL網(wǎng)卡 驅動程序

在這篇文章中,小編將對OLED的相關內容和情況加以介紹以幫助大家增進對它的了解程度,和小編一起來閱讀以下內容吧。

關鍵字: OLED 驅動程序 無源驅動

近日,英特爾發(fā)布了銳炫顯卡的新版驅動更新。本次驅動更新涵蓋了銳炫A770、A750、A380以及移動端的銳炫GPU,這使得英特爾銳炫整個家族的DX9性能都實現(xiàn)了顯著提升。

關鍵字: 英特爾 顯卡 驅動程序
關閉