开发板DIY赛进程
现在我将近来发的帖子集合到这张帖子来,如有不足希望大家多多指教!
2011-12-02 20:42:53
很抱歉,因为前段时间忙一些自己的事所以耽误了进程,在此道歉一下!
现在板子已经焊接好了,程序也正在编写中。我会争取尽早完成这次活动,这是一个难得的锻炼平台,因为是初学者所以请大家多多指教。
板子的焊接情况如下:
2011-12-23 13:24:31
板子已经实现了两个功能,在这里,我先把我前段时间拍摄流水灯的照片上传!希望大家多多指点!还有就是视频应该怎么上传?帮个忙告诉我,谢谢!(拍摄时因为没关掉数码管,所以数码管会显示乱码,还有一个就是板子的问题,第一个LED灯常亮)
2011-12-26 20:08:31
流水灯视频
2011-12-26 20:24:45
流水灯程序如下:
ORG 0
START: MOV R2,#8
MOV A,#0FEH
SETB C
LOOP: MOV P1,A
LCALL DELAY
RLC A
DJNZ R2,LOOP
MOV R2,#8
LOOP1: MOV P1,A
LCALL DELAY
RRC A
DJNZ R2,LOOP1
LJMP START
DELAY: MOV R5,#20 ;
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
如有不足希望大家多多指教!
2011-12-27 10:48:50
九位计时
2011-12-28 13:13:42
数字温度计
数字温度计的程序如下:
#include <reg52.h>
#include<intrins.h>
#define DQ P1_3 //定义DS18B20数据端口DQ
#define dis_data P0 //定义数码管段码输入管脚
#define dis_E P3_7 //定义74HC573使能管脚LE
#define dis_bit P2 //定义74HC138输入管脚A0 A1 A2
/****P3.2和P3.3为调整温度报警增加键和减少键******/
signed char shangxian=38; //上限报警温度,默认值为38
uchar code LEDData[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x39,0x63,0x40,0x00};
//0 1 2 3 4 5 6 7 8 9 C 口 - 关
/*****延时子程序*****/
void Delay(uint i)
{
while( i-- );
}
/*****初始化DS18B20*****/
void Init_DS18B20(void)
{
unsigned char x=0;
DQ=1;
Delay(8); //稍做延时
DQ=0; //单片机将DQ拉低
Delay(80); //精确延时,大于480us
DQ=1; //拉高总线
Delay(14);
x=DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败
Delay(20);
}
/*****读一个字节*****/
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;
Delay(4);
}
return(dat);
}
/*****写一个字节*****/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ=0;
DQ=dat&0x01;
Delay(5);
DQ=1;
dat>>=1;
}
}
void Tmpchange(void) //发送温度转换命令
{
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0x44); //启动温度转换
}
/*****读取温度*****/
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;
Tmpchange();
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器
a=ReadOneChar(); //读低8位
b=ReadOneChar(); //读高8位
。
。
。
。
。
。
************************************
/*****显示开机初始化等待画面*****/
Disp_init()
{
。。
。
。。
。。。
}
/*****显示温度子程序*****/
Disp_Temperature() //显示温度
{
。。
。。
。
。
。
。
。
。。
。。。。
。
。。。;(注:再这里可精确到小数点后四位,我的显示只是整数,碍于时间关系还未精确进去)
}
/*****外部中断0服务程序*****/
void int0(void) interrupt 0
{
EX0=0; //关外部中断0
sign=1;
if(SET==1) shangxian++;
else xiaxian++;
Delay(500);
EX0=1;
}
/*****外部中断1服务程序*****/
void int1(void) interrupt 2
{
EX1=0; //关外部中断0
sign=1;
if(SET==1) shangxian--;
else xiaxian--;
Delay(500);
EX1=1;
}
/*****主函数*****/
void main(void)
{
uint z;
IT0=1;
IT1=1;
EX0=1;
EX1=1;
EA=1;
ReadTemperature();
LING=0;
for(z=0;z<100;z++)
{
Disp_init();
}
while(1)
{
Disp_Temperature();
if(sign==1)
{
for(z=0;z<300;z++)
disptiaozheng();
sign=0;
}
}
}
现在期末考到了,这个视频作为今年最后一个视频,其中省略若干步,有兴趣的可以自己改编!。DIY制作学习到此告一段落!这个寒假我还会继续做下去,希望大家能够多多支持!
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 | |
【换取逻辑分析仪】rtthread添加RRH62000传感器驱动-基于野火启明6M5被打赏48分 | |
换逻辑分析仪+Verilog多输入门被打赏27分 |