程序如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit DQ=P1^3;//ds18b20 端口
unsigned char code table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};// 显示段码值0~9
unsigned char code table2[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x2,0x78,0x0,0x10};// 显示段码值0~9带点
unsigned char code table3[]={0x08,0x04,0x02,0x01};//分别对应相应的数码管点亮,即位码
unsigned char TempData[4]; //存储显示值的全局变量
//延时程序
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void ys(uint tt)
{
uint xx,yy;
for(xx=tt;xx>0;xx--)
for(yy=110;yy>0;yy--);
}
//延时程序结束
//DS18B20温度读取函数
bit Init_DS18B20(void)
{
bit dat=0;
DQ = 1; //DQ复位
DelayUs2x(5); //稍做延时
DQ = 0; //单片机将DQ拉低
DelayUs2x(200); //精确延时 大于 480us 小于960us
DelayUs2x(200);
DQ = 1; //拉高总线
DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲
dat=DQ; //如果x=0则初始化成功, x=1则初始化失败
DelayUs2x(25); //稍作延时返回
return dat;
}
/*------------------------------------------------
读取一个字节
------------------------------------------------*/
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
DelayUs2x(25);
}
return(dat);
}
/*------------------------------------------------
写入一个字节
------------------------------------------------*/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
DelayUs2x(25);
DQ = 1;
dat>>=1;
}
DelayUs2x(25);
}
/*------------------------------------------------
读取温度
------------------------------------------------*/
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned int b=0;
unsigned int t=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
DelayMs(10);
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar(); //低位
b=ReadOneChar(); //高位
b<<=8;
t=a+b;
return(t);
}
//DS18B20温度读取函数结束
void Display()
{
unsigned int TempH,TempL,temp;
temp=ReadTemperature();
if(temp&0x8000)
{
TempData[0]=0xbf;//负号标志
temp=~temp; // 取反加1
temp +=1;
TempH=temp>>4;
TempL=temp&0x0F;
TempL=TempL*6/10;//小数近似处理
if((TempH/100==0)&&((TempH%100)/10==0))//消隐
TempData[1]=0xff;
else
TempData[1]=table[(TempH%100)/10]; //十位温度
TempData[2]=table2[(TempH%100)%10]; //个位温度,带小数点
TempData[3]=table[TempL];
}
else
{
TempH=temp>>4;
TempL=temp&0x0F;
TempL=TempL*6/10;//小数近似处理
if(TempH/100==0)
TempData[0]=0xff;
else
TempData[0]=table[TempH/100]; //十位温度
if((TempH/100==0)&&((TempH%100)/10==0))//消隐
TempData[1]=0xff;
else
TempData[1]=table[(TempH%100)/10]; //十位温度
TempData[2]=table2[(TempH%100)%10]; //个位温度,带小数点
TempData[3]=table[TempL];
}
}
void main()
{
uint aa;
while(1)
{
Display();
for(aa=0;aa<4;aa++)
{
P2=table3[aa];
P0=TempData[aa];
ys(4);
P0=0XFF;
}
}
}
[查看全文]
下面是课本里2x2计算键值的
void ce_jianzhi ( )
{
uchar i,j,p; //定义局部变量
do
{
while(ce_anjian()==0); //是否有按键按下?若没有按下,判断等待
delay(15); //调用去抖延时子程序
}while(ce_anjian()==0); //是否有按键按下?若没有按下,返回值为0
for(i=0;i<2;i++)
{
P1=(0xfe<<i)|i; //循环扫描输出行扫描信号
for(j=0;j<2;j++)
{
p=P1&0x0c; //输入保留键盘的列数据,其余清0
if(p==0x08>>j) //判断具体哪列按键按下
{
y=i*2+j+1; //计算键值并存于全局变量y中
goto D1; //找到按键值,终端扫描查找
}
}
}
D1:delay(15); //调用去抖延时子程序
do
{
while(ce_anjian()==1); //按键是否释放?若没有释放,继续判断
//若有释放,返回值为0,则继续往下执行
delay(15); //调用去抖延时子程序
}while(ce_anjian()==1); //按键是否释放?若没有释放,继续判断
#24t#24t#24t
本帖最后由 Ca(OH)2 于 2016-4-27 05:13 编辑
啊,无聊挖坟啦! ------------------------------------------------- (别把握关小黑屋。#7133!
2x2 键值的话明显2x2是个二维的。。。(数组?) 每一个维度有两个项目。
呢3x3的话就是每个维度有三个项目啊。。#7036!
在下并不会单片机,只是稍微学过一点c语言。所以这行。。
P1=(0xfe<<i)|i; //循环扫描输出行扫描信号看不懂。不过根据
y=i*2+j+1; //计算键值并存于全局变量y中这行的话。。。
基本上就是, 不同的行列,i 和 j 会不一样,估计最后的算式你可能想要变换一下,不过基本上吧循环从 i<2 和 j<2 变成小于3 应该就可以了吧#6957!
[查看全文]
如图 写html如何让那段红字靠到最上面这段我是这么编写的 纯新人不太懂
<a href="" target=_blank><img src="2345截图20150926091157.jpg"></a>
<img src="email.png">
*本站禁止HTML标签噢*
<img src="5656.png">
<div class="litblank">
<a href=""><font size="5" color="red" face="黑体">       【视频】2015年工商学院迎新季</font></a>
还有第一次写的css 麻烦大神帮我看看哪里有错误
.blank{ height:3000px;
width:1000px;
background-color:white;
border:solid;
#CCCCCC 1px;
width:960px; _width:700px;
margin:auto;
float:center;
}
a:link{color:black}
.a{
font-size:7px;
color:black;
font-family:宋体
}
.b{
font-size:7px;
font-color:black;
}
a:hover {color: red; text-decoration:none;}
a:visited {color: black;text-decoration:none;}
a:link {color:black; text-decoration:none;}
.c{
font-size:17px;
text-decoration:none;
}
.tiao{ height:30px;
width:1000px;
background-color:blue;
border:solid #CCCCCC 1px; width:960px; _width:700px; margin:auto;
float:center;
font-size:18px;
font-family:黑体; }
a:link {color: white;text-decoration:none;}
a:visited {color: white;text-decoration:none;}
a:hover{color: white;text-decoration:none;}
.litblank{ height:350px;
width:500px;
background-color:black;
margin:auto;
float:right;
}
呜呜呜 要被社团的作业吓哭了 求大神教教我 呜呜呜
现在的问题就是我让5*7所有的35个LED全亮了。。但是不能像代码来源处所说的一样显示出字母A或者其他字母数字。。我想知道为什么。。下面是我的代码
const byte row_pins[7]={2,3,4,5,6,7,8};
const byte column_pins[5]={9,10,11,12,13};
void setup() {
byte i;
for(i=0;i<7;i++){
digitalWrite(row_pins,HIGH);
pinMode(row_pins,OUTPUT);
}
for(i=0;i<5;i++){
digitalWrite(column_pins,HIGH);
pinMode(column_pins,OUTPUT);
}// put your setup code here, to run once:
}
void draw_column(byte bits){
digitalWrite(row_pins[0],bits&0*40?HIGH:LOW);
digitalWrite(row_pins[1],bits&0*20?HIGH:LOW);
digitalWrite(row_pins[2],bits&0*10?HIGH:LOW);
digitalWrite(row_pins[3],bits&0*8?HIGH:LOW);
digitalWrite(row_pins[4],bits&0*4?HIGH:LOW);
digitalWrite(row_pins[5],bits&0*2?HIGH:LOW);
digitalWrite(row_pins[6],bits&0*1?HIGH:LOW);
}
const byte bitmap[5]={
0b00011111,
0b00100100,
0b01000100,
0b00100100,
0b00011111
};
void loop() {
byte column;
for(column=0;column<5;column++){
digitalWrite(column_pins[column],LOW);
draw_column(bitmap[column]);
delay(2);
digitalWrite(column_pins[column],HIGH);
}// put your main code here, to run repeatedly:
}
求大神啊啊啊啊蛮急的诶
画质带蓝色,应该是摄像头寄存器没调好。
每六个像素点刷新一次,想做视频的要改成一帧刷新一次。但网上做出来的也是两三秒才刷新一帧。毕竟2.4g传送速度不行
使用时先打开接收端再打开发送端,否则发送的数据不是一帧一帧的。
打算后期再连些串口转wifi 或者GPRS之类模块,偷拍神器啊~
下载传送门:
链接: http://pan.baidu.com/s/1FFPD0 密码: 4mmc
技术宅的朋友们大家好
本人遇到个问题,憋了一个多月实在挺不住了,所以很无耻的上来求教来了。
是这样,我手里有2片全新原装进口TDA2822M音频功率放大器,准备做个单喇叭的小音响,家里工具都有,我反复测量外围元器件没有问题,就有一个问题篮子差点没给我气爆了,那就是噪音,我在输入端加一个1M欧姆电阻,连接电脑机箱3.5音控,隐约能听见电脑里放的音乐,但是声音太小还没耳机声音大呢,尼玛憋屈死啦。
补充一下:我用手掐着连接TDA2822M的7角输入端,竟然能听见喇叭里放的广播,很神奇是吗,但是听不清 又像蒙古语又像韩语又像俄语,可没连接电脑,和电脑主板集成声卡断开,我是用手掐着TDA2822M
喇叭是8欧1W的, 一个
电脑主板是G41MT-D3 F1 技嘉主板
TDA2822M 原装进口保证完整没问题
我的电路图解法如下
我放的这几个图全试过了,网上有的没有的全试过了,就是不行不行啊,要么没动静,要么有噪音,要么声音小没蚊子声大
已经走到这步不能轻易言弃,往各位朋友看见了就留个言帮顶下也好,我谢谢各位,网上的各种图各种法都试了,病急乱投医
求能对症下药的电路图解法 求姐脱
疯掉了
金黄色小炸魚 发表于 2015-5-9 05:46qwq摸摸lz,看起来很高端的样子然而我完全不懂。。。。只好给lz添点人气 ...
行 你太够意思了 楼楼正需要人气儿呀 感激你
[查看全文]