你好,能问一些关于单片机编程器的问题吗

你好 我想请假您一些关于单片机的问题_百度知道
你好 我想请假您一些关于单片机的问题
我的方案是
采用MQ-2烟雾+ADC0832+DS18B20温度传感器+51单片机+LCD显示设计而成。当烟雾传感器检测到火灾释放的烟雾时,将信号传送的ADC0832进行处理模数转化再到单片机进行处理,当检测到浓度超标时,蜂鸣器进行报警,并且红色指示灯亮。同时,此系统还可以...
我有更好的答案
思路和程序流程没有问题。一点建议:实时时钟一般很少使用内部定时器实现,一般用一个时钟芯片加一个纽扣电池,这样保证时间的准确和不丢失-电子设计网dzsj
采纳率:61%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
请完成以下验证码
查看: 1124|回复: 0
关于单片机程序问题
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
各位大虾:& &&&你们好,本人最近在中遇到了一些棘手的,望得到前辈们的指点:1 首先是静态显示的问题,有如下一段& &#include&reg52.h&& && && && && && && && && && && && && && && && && && && && && && && && && && &&&sbit dula=P2^6;& && && && && && && && && && && && && && && && && && && && && && && && && && &&&sbit wela=P2^7;& && && && && && && && && && && && && && && && && && && && && && && && && && &&&void main()& && && && && && && && && && && && && && && && && && && && && && && && && && &&&{& & & && && && && && && && && && && && && && && && && && && && && && && && && && && && && &wela=1;& && && && && && && && && && && && && && && && && && && && && && && && && && && && && &P0=0XFE;& && && && && && && && && && && && && && && && && && && && && && && && && && && && && &wela=0;& && && && && && && && && && && && && && && && && && && && && && && && && && && && && &dula=1;& && && && && && && && && && && && && && && && && && && && && && && && && && && && && & P0=0xFC;& && && && && && && && && && && && && && && && && && && && && && && && && && && && && & dula=0;& && && && && && && && && && && && && && && && && && && && && && && && && && && && && &while(1);& && && && && && && && && && && && && && && && && && && && && && && && && && && &}该段程序我演示过能正常显示,但是一直有个疑问,我觉得DULA=1这条语句应该放在PO=0XFC之后会比较合适,因为当位选锁存器关闭的时候,此时P0口的值还是0XFE,在没有重新赋值的时候,段锁存器被打开,会出现以OXFE为段选的数,但是实际显示却正常,比较困惑另,本人在做蜂鸣器实验的时候,用的是PNP的三极管,集电极接12V电源,以及一个蜂鸣器,发射极接地,在基极加一个低电平的时候开关导通进入饱和状态,在我的认识里,要开关导通,CE之间近似短路,要发射极和集电极都正偏,此时,集电极正偏可以理解,但是发射极已经接地,怎么能正偏呢,请赐教,谢谢!
EEWORLD 官方微信
Powered by求问一个单片机的一个编程,为什么我和别人的不一样? - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
求问一个单片机的一个编程,为什么我和别人的不一样?
10:27:08  
我是按照百度上面的做的。。。但是为什么结果不一样?有大神愿意给我看看吗?
这是百度到的图。。。这是我自己按照这个画的
这是他给的程序
#include &at89x51.h&//用AT89C51时就用这个头文件//#include &reg52.h&//用华邦W78E58B时必须用这个头文件#include &absacc.h&#include &ctype.h&#include &math.h&#include &stdio.h&#include &string.h&#include &DS18B20.h&#include &LCD1602.h&& & & & & & & & & & & & ////液晶显示头文件//sbit DQ = P3^4;& & & & & & & & & & & & & & & & & & & & //定义DQ引脚为P3.4unsigned char t[2],*& & & & & & & & & & & & & & & & //用来存放温度值,测温程序就是通过这个数组与 主函数通信的unsigned char&&TempBuffer1[9]={0x2b,0x31,0x32,0x32,0x2e,0x30,0x30,0x43,'\0'};& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //显示实时温度,上电时显示 +125.00Cunsigned char&&TempBuffer0[17]={0x54,0x48,0x3a,0x2b,0x31,0x32,0x35,0x20,& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
<font color="#x54,0x4c,0x3a,0x2b,0x31,0x32,0x34,0x43,'\0'};& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //显示温度上下限,上电时显示 TH:+125 TL:+124C& & & & & & & & & & & & & & & & & & & & & & & & & & & & unsigned char code dotcode[4]={0,25,50,75};/***因显示分辨率为<font color="#.25,但小数运算比较麻烦,故采用查表的方法*******再将表值分离出十位和个位后送到十分位和百分位********************/
void covert0( unsigned char TH, unsigned char TL)& & & & //将温度上下限转换为LCD显示的数据{ & &if(TH&0x7F)& && && && && && &&&//判断正负,如果为负温,将其转化为其绝对值& &{& & TempBuffer0[3]=0x2d;& & & & & &&&//0x2d为&-&的ASCII码& & & & TH=~TH;& & & & TH++;& &}& &else TempBuffer0[3]=0x2b;& & & & //0x2B为&+&的ASCII码 & &if(TL&0x7f)& &{& &TempBuffer0[11]=0x2d;& & & & & &&&//0x2d为&-&的ASCII码& &TL=~TL+1;& &}& &else TempBuffer0[11]=0x2b;& & & & //0x2B为&+&的ASCII码 &&TempBuffer0[4]=TH/100+0x30;& & & & & & & & & && && && & //分离出TH的百十个位&&if( TempBuffer0[4]==0x30) TempBuffer0[4]=0 //百位数消隐&&TempBuffer0[5]=(TH%100)/10+0x30;& & & & & & & & & & & & & & & & //分离出十位&&TempBuffer0[6]=(TH%100)%10+0x30;& & & &
& & & & & & & & & & & & //分离出个位&&TempBuffer0[12]=TL/100+0x30;& & & & & & & & & && && && & //分离出TL的百十个位&&if( TempBuffer0[12]==0x30) TempBuffer0[12]=0 //百位数消隐&&TempBuffer0[13]=(TL%100)/10+0x30;& & & & & & & & & & & & & & & & //分离出十位&&TempBuffer0[14]=(TL%100)%10+0x30;& & & &
& & & & & & & & & & & & //分离出个位}
void covert1(void)& & & & //将温度转换为LCD显示的数据{& &unsigned char x=0x00,y=0x00;& &t[0]=*& &pt++;& &t[1]=*& &if(t[1]&0x07)& && && && && && &&&//判断正负温度& &{& & TempBuffer1[0]=0x2d;& & & & & &&&//0x2d为&-&的ASCII码& & & & t[1]=~t[1];& & & & & & & & & & & &
/*下面几句把负数的补码*/& & & & t[0]=~t[0]; & & & & & & & &
/* 换算成绝对值*********/& & & & x=t[0]+1;& & & & & & & & & & & & & & & &
/***********************/& & & & t[0]=x;& & & & & & & & & & & & & & & & & & & &
/***********************/& & & & if(x&255)& && && && && & /**********************/& & & & t[1]++;& & & & & & & & & & & & & & & &
/*********************/& &}& &else TempBuffer1[0]=0x2b;& & & & //0xfe为变&+&的ASCII码&&t[1]&&=4;& & & & & & & & //将高字节左移<font color="#位&&t[1]=t[1]&0x70;& & & & & & & & //取出高字节的<font color="#个有效数字位&&x=t[0];& & & & & & & & & & & & & & & & & & & & //将t[0]暂存到X,因为取小数部分还要用到它&&x&&=4;& & & & & & & & & & & & & & & & & & & & //右移<font color="#位&&x=x&0x0f;& & & & & & & & & & & & & & & & & & & & //和前面两句就是取出t[0]的高四位& & & & &&t[1]=t[1]|x;& & & & & & & & & & & & //将高低字节的有效值的整数部分拼成一个字节&&TempBuffer1[1]=t[1]/100+0x30;& & & & & & & & & && && && & //+0x30 为变 <font color="#~9 ASCII码& &if( TempBuffer1[1]==0x30) TempBuffer1[1]=0 //百位数消隐&&TempBuffer1[2]=(t[1]%100)/10+0x30;& & & & & & & & & & & & & & & & //分离出十位&&TempBuffer1[3]=(t[1]%100)%10+0x30;& & & &
& & & & & & & & & & & & //分离出个位&&t[0]=t[0]&0x0c;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //取有效的两位小数&&t[0]&&=2;& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //左移两位, 以便查表&&x=t[0];& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&y=dotcode[x];& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //查表换算 成实际的小数&&TempBuffer1[5]=y/10+0x30;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //分离出十 分位&&TempBuffer1[6]=y%10+0x30;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //分离出百 分位}& & & & & & & & & & & &
void delay(unsigned char i){& & & & while(i--);} main(){ unsigned char TH=110,TL=-20;& & & & & & & & & & & & & & & & & & & & & & //下一步扩展时可能 通过这两个变量,调节上下限& && & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
//测温函数返回这个 数组的头地址 while(1) {& & & & & & pt=ReadTemperature(TH,TL,0x3f);& & & & & & & &
//上限温度-22,下限-24,分辨率<font color="#位,也就是 <font color="#.25C& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
//读取温度 ,温度值存放在一个两个字节的数组中,& & & & delay(100); & & & & covert1();& & & & covert0(TH,TL);& & & & LCD_Initial();& & & & & & & & & & & & & & & & & & & & & & & & & & & & //第一个参数列号,第 二个为行号,为<font color="#表示第一行& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & // 为<font color="#表示第二行,第三个参数为显示数据的首地址& & & & LCD_Print(0,0,TempBuffer0);& & & & & & & & LCD_Print(0,1,TempBuffer1); & & & & & & & & & & & & & & & &
}}&&我按照他这个程序去做。但是是错误的?请问哪里错了
附件: 您需要
才可以下载或查看,没有帐号?
高级工程师
10:51:17  
你的说 错在哪里?
高级工程师
11:07:28  
晶振标数值了吗,单片机有装载程序吗
11:21:21  
你的说 错在哪里?
就是,,我按照他这个程序运行仿真的时候,会出现一个方框就是显示程序错误的那个
11:21:54  
晶振标数值了吗,单片机有装载程序吗
老哥。这些东西在哪里标注呀,。。。我没用过这个,要不是老师非要求。我只是照着葫芦画瓢
高级工程师
11:43:42  
双击晶振,会有一个对话框,里面有一项是晶振频率,双击单片机,也会有一个对话框,里面有程序文件的选项,在里面选择你的程序编译后生成的hex文件
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司你好在吗我有单片机方面的问题请教你_百度知道
你好在吗我有单片机方面的问题请教你
我有更好的答案
啥问题呢?
来自:求助得到的回答
,看来你是没有问题啊
什么问题,看我会不会
一个闭环系统,单片机控制风扇,风扇吹动小球,小球的高度通过红外测距传给单片机,使小球至一定高度稳定,单片机根据小球的高度调节风扇的速度
为您推荐:
其他类似问题
单片机的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 单片机c语言编程300例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信