怎么样把c语言和单片机融合,求助怎么把两个单片机c语言程序结合在一起?大一期末实验...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/*
DS18B20数字温度传感器 (温度控制)
实验连线
单片机的P3.3连接DS18B20单元的 DQ
单片机的P3.2连接继电器单元的 JIN
继电器单元的JZ连接GND
继电器单元的JK连接DS18B20单元的 HOT
*/
#include
#include
#include
#define SETVAL 30 //设定温度值
xdata unsigned char CS8279C _at_ 0xfff1;
xdata unsigned char CS8279D _at_ 0xfff0;
sbit HOT = P3^2;
sbit DQ = P3^3;
unsigned char LedBuf[6] = {21,21,21,21,21,21}; //显示缓冲
code unsigned char LedMap[] = //LED字形代码表
{
0x0c, 0x9f, 0x4a, 0x0b, 0x99, 0x29, 0x28, 0x8f, 0x08, 0x09, //0~9
0x04, 0x97, 0x42, 0x03, 0x91, 0x21, 0x20, 0x87, 0x00, 0x01, //0.~9.
0xfb, 0xff //'-', ' '
};
//延时函数, 对于11.0592MHz时钟, 例i=10,约延时10ms.
void delay(unsigned int t)
{
for(; t>0; t--);
}
//对DS18B20的初始化
unsigned char Reset_DS18B20(void)
{
unsigned char presence;
DQ = 1; _nop_(); _nop_();
DQ = 0; delay(50); // 550us
DQ = 1; delay(6); // 66us
presence = DQ; delay(50);
if (presence) //为1初始化失败,为0初始化成功
return 0x00;
else
return 0x01;
}
//读一个字节
unsigned char ReadOneChar(void)
{
unsigned char i, dat = 0;
for(i=8; i>0; i--)
{
dat>>=1;
DQ = 1; _nop_(); _nop_();
DQ = 0; _nop_(); _nop_(); _nop_(); _nop_(); //4us
DQ = 1; _nop_(); _nop_(); _nop_(); _nop_(); //4us
if(DQ) dat |= 0x80;
delay(6); //66us
}
DQ = 1; _nop_();
return(dat);
}
//写一个字节
void WriteOneChar(unsigned char dat)
{
unsigned char i;
for (i=8; i>0; i--)
{
DQ = 1; _nop_(); _nop_();
DQ = 0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_();//5us
DQ = dat & 0x01; //最低位移出
delay(6); //66us
dat >>= 1;
}
DQ = 1; _nop_();
}
//启动ds1820转换
void DS1820_start(void)
{
Reset_DS18B20();
WriteOneChar(0xCC); //勿略地址
WriteOneChar(0x44); //启动转换
}
//读温度值
unsigned int ReadTemperature(void)
{
unsigned int i;
unsigned char buf[9];
Reset_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器
for(i=0; i<9; i++)
buf[i] = ReadOneChar(); //读9位温度值
i = buf[1];
i <<= 8;
i |= buf[0];
return i;
}
//8279显示
void disp8279(void)
{
unsigned char i, j = 0x85;
for(i=0; i<6; i++)
{
CS8279C = j--;
CS8279D = LedMap[LedBuf[i]];
}
}
void main(void)
{
float temp;
int value;
//初始化8279
CS8279C = 0x00; //8个8位显示
CS8279C = 0x32; //设分频初值
CS8279C = 0xdf; //清显示
while( !(CS8279C & 0x80) ); //等待8279就绪
LedBuf[0] = 21; //第1位不显示
HOT = 1; //初始时不加热
while(1)
{
DS1820_start(); //启动转换
delay(80);
temp = ReadTemperature() * 0.0625; //读温度值
if(temp < 0)
LedBuf[1] = 20; //第2位显示负号
else
LedBuf[1] = 21; //第2位不显示
value = temp * 100 + (value > 0? 0.5 : -0.5); //大于0加0.5, 小于0减0.5
value = abs(value);
//设置值
LedBuf[0] = (SETVAL % 100) / 10;
LedBuf[1] = SETVAL % 10;
//实测值
LedBuf[4] = (value % 10000) / 1000;
LedBuf[5] = ((value % 1000) / 100);
if(value / 100 < SETVAL) HOT = 0; //开始加热
else HOT = 1; //停止加热
disp8279();
}
}
怎么样把c语言和单片机融合,求助怎么把两个单片机c语言程序结合在一起?大一期末实验...相关推荐
- 并行DA实验c语言程序,求助怎么把两个单片机c语言程序结合在一起?大一期末实验...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* DS18B20数字温度传感器 (温度控制) 实验连线 单片机的P3.3连接DS18B20单元的 DQ 单片机的P3.2连接继电器单元的 JIN 继电 ...
- c语言不用第三个变量 实现两个数的对调,下面程序功能是不用第三个变量,实现两个数对调操作 ....docx...
下面程序功能是不用第三个变量,实现两个数对调操作 ... [3.1]下面程序的功能是不用第三个变量,实现两个数的对调操作.#include main(){ int a,b:scanf("%d ...
- 大一c语言操作题期末考答案,大一期末考试c语言操作题答案
<大一期末考试c语言操作题答案>由会员分享,可在线阅读,更多相关<大一期末考试c语言操作题答案(13页珍藏版)>请在人人文库网上搜索. 1.ball.c#include std ...
- 两个hc05蓝牙模块在两块单片机上通信(附完整代码)
目录 第一步:进入AT模式 第二步:同时插在电脑上实现通信 第三步:单片机上通信 代码链接 所需材料:两个hc05蓝牙,两个usb转串口模块,两块单片机 第一步:进入AT模式 接线图如下所示 HC-0 ...
- c51单片机的语言,51单片机,stm32,arduino都是用什么语言进行编程的?
51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程. 51单片机的编程 51单片机进入中国比较早,在早前用汇编编程比较多,我在上 ...
- 单片机数码管从00到99C语言_MSP430单片机轻松入门与实践 — 畅学单片机
简介 本课程是MSP430单片机学习者从入门到深入的一套经典视频教程,以初学者为对象,从零开始手把手教你学习MSP430单片机,循序渐进地基于理论讲解并结合实验项目实战开发,讲解当前最热门的MSP43 ...
- 单片机c语言应用100例第3版课后答案,单片机C语言应用100例(第3版)(含光盘1张)...
基 础 篇 第1章 单片机概述及实验器材介绍2 1.1 单片机概述2 1.1.1 单片机的定义.分类与内部组成2 1.1.2 单片机应用系统的结构及其工作过程5 1.1.3 单片机的应用6 1.2 单 ...
- c语言数码管流动显示一个数,51单片机数码管动态显示 - 数码管动态扫描显示01234567程序(三种方案)...
数码管动态扫描显示01234567程序二--51单片机动态显示共阳数码管01234567 原理图 c语言程序 程序如下: #include #define uint unsigned int #def ...
- C语言学习路线,思维脑图,学单片机的一定要知道
C语言学习路线,思维脑图,学单片机的一定要知道 接着前几期内容继续对单片机怎么学习来做一个了解! 对单片机程序有概念之后,就要进修C语言了. 想要进修C语言,首先应该学好计算机根底.里面的很多概念以及 ...
最新文章
- zookeeper安装和使用 windows环境(转)
- java office 集成开发_Office文件格式突变,促使Java和Office更完美集成
- Linux怎么对当前目录提权,linux提权方法(不断总结更新)
- 王者荣耀连接不上服务器最新赛季排名,王者荣耀新赛季连掉三段 初期不能打排位是有原因的...
- Xcode 4.4 的新特性 | LLVM 4.0 的新语法
- 代码能不能不要写得这么烂?!
- oracle查询cpu占用率高,解决oracle进程CPU占用过高问题
- JavaScript回调函数的高手指南
- 24.QTreeWidget的用法
- 两个iphone怎么大量传照片_外出旅行、出差时,同品牌手机如何实现面对面零流量秒传照片?...
- 修改vscode 窗口字体大小和编辑窗口字体大小
- C语言:用二维字符数组的每行存储键盘输入的字符串,将这些字符串按字典顺序升序排序,输出排序后的结果。
- FFT【快速傅里叶变换】FWT【快速沃尔什变换】
- 【图文说明】屏幕录像专家如何安装、录制小文件的录像
- snownlp中文文本情感分析
- 【SpringBoot深入浅出系列】SpringBoot之集成JUnit5进行单元测试
- 基于博弈论的诱饵路由设计及实现
- 冷门短视频带货玩法,零门槛赚钱项目
- java 数据库异常,数据库常见异常
- 快速掌握阿里云 OSS
热门文章
- 一个html可以有几个h1,关于html:HTML5大纲和多个H1 SEO
- static_cast与dynamic_cast转换
- 作为刚開始学习的人应该怎样来学习FPGA
- PostgreSQL的执行计划分析
- 浏览器的两种模式quirks mode 和strict mode
- html5鼠标点击弹出层,jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
- idea怎么和mysql连接并执行_IDEA配置mysql数据库的操作
- mie散射理论方程_亚琛工业大学 计算化学方向 之OPT学习笔记第一部分第一节 静态光散射...
- javastring转long的方法_被JDK坑的没商量?来试试这些方法吧
- pythonclasses_Python中的Classes和Metaclasses详解