Ⅰ STC51单片机实验板20130427
首先肯定画得不错,这PCB图画完了,就是画出来玩一下吗,还是真想做板子?要是真要做板子,还要做些调整了。这布线怎么顶层多,而底层的很少呀,与正常做板的习惯刚好相反,特别是插件的焊盘要尽量用底层导线连接,否则,焊盘就容易掉,因为在焊接的过程中焊接不好,焊盘就容易被焊掉了,而有导线连接就不容易掉了。如果用的是贴片元件,顶层导线多是正常的,可你用的都是插脚元件就不正常了。其次就是所有的字符都要重新调整一下,太乱了,哪个元件的字符就要靠近哪个元件,而且要正看,而你现在的图中的字符很多都是倒放的,做出的板子就不清楚是哪个元件的字符了,还有,几个字符不能重叠放在一起的。
Ⅱ 玩过STC单片机实验板的进来~~~
先点下载,再插USB接口。
Ⅲ 51单片机控制数码管显示1,2交替闪烁
#include"reg52.h"
constunsignedcharcodedian[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,
0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};//数码管带点
voidmain(void)
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
ET0=1;
TR0=1;
EA=1;
while(1);
}
dingshiqi1()interrupt1
{
staticchara;
staticbitb;
TH0=0x3c;
TL0=0xb0;
a++;
if(a>10)
{
a=0;
b=~b;
if(b)
P2=dian[1];
else
P2=dian[2];
}
}
Ⅳ STC单片机PWM编程!
看看这个,单片机用的是ADUC848,AD转换输出正弦波,和PWM原理类似。
2、源程序清单
DACCONEQU0xfD;定义模数转换控制器
DACHEQU0xfc;定义模数转换数据寄存器高8位
DACLEQU0xfb;定义模数转换数据寄存器低8位
ORG0000H
LJMPMAIN
ORG0200H
MAIN:MOVDACCON,#0fH;DACoperation
CLRA;
MOVDACH,A;模数转换高八位清零
PRG3:MOVR0,#09H;正弦波
MOVR4,#40H
LP11:MOVA,R0
MOVCA,@A+PC
MOVDACL,A;2
ACALLDELAY;2
INCR0;1
DJNZR4,LP11;2
SJMPPRG3;2
DATA0:
DB80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H,0DAH,0E2H,0EAH
DB0F0H,0F6H,0FAH,0FDH,0FFH,0FFH,0FDH,0FAH,0F6H,0F0H
DB0EAH,0E2H,0DAH,0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH
DB80H,7FH,73H,67H,5AH,4FH,43H,38H,2EH,25H,1DH,15H
DB0FH,09H,05H,02H,00H,00H,02H,05H,09H,0FH,15H
DB1DH,25H,2EH,38H,43H,4FH,5AH,67H,73H,7FH
RET
DELAY:MOVR6,#10H
MOVR7,#0A1H
DELAYLOOP:;延时程序
DJNZR6,DELAYLOOP
DJNZR7,DELAYLOOP
RET
四、实验板插针配置:
无需插针配置,注意DAC是从CONDACOUT1端子输出,可用示波器观察DAC输出波形。若产生失真情况,请检查开发板DA输出端LM358运算放大器的放大倍数,适当更改所查函数表的范围。
五、思考题
1、改变程序,使能添加输出锯齿波;
2、改变程序,使输出添加三角波;
3、改变程序,使输出添加方波;
4、改变程序,并制作一个简单的函数发生器
Ⅳ 我有一块STC单片机实验板,然后从别的C语言书抄流水灯程序写进去,可以成功么
嗯 应该可以 注意 程序的连续性 祝你成功
Ⅵ 51单片机两位数码管交替123456789
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint j;
uchar code table[]={0xc0,0xf9,0xa4,
0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar a,b,c;
sbit aa=P1^0;
sbit bb=P1^1;
void delay(uint d) //延时函数
{
uint x,y;
for(x=d;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
a=1;b=2;
while(1)
{
for(c;c<5;c++)
{
aa=0; //打开第一个数码管
P0=table[a];
delay(20);
P0=0xff;
aa=1;
bb=0; //打开第二个数码管
P0=table[b];
delay(20);
P0=0xff;
bb=1;
a++;b++;
}
a=1;b=2;c=0;
}
}
Ⅶ 51单片机实验(关于定时器计数器)
6mz的晶振 可算出一个时钟周期为2微秒,200毫秒去除一下2微秒就是10000,然后吧10000取16进制为 27A0 ,用 FFFF减27A0再加1 得 C860,用定时方式一,TL0 ,#60H
TH0, #C8H
Ⅷ 用51单片机编写一个并行口实验
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code seg1[]={ 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; //控制字) 从左向右开始逐个点亮
uchar code seg2[]={ 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff} ;//控制字(从 右向左LED发光二极管再逐个熄灭)//
uchar code seg3[]= {0x7e, 0x3c, 0x18,0x00,0xff,0x00,0xff}; //控制字(由两边到中间点亮再明暗2次)
sbit P2_0=P2^0;
sbit P2_1=P2^1;
/********************延时y*1mS子函数*********************/
void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++){
for(j=0;j<121;j++)
{;}}
}
main()
{
uchar m,n,p;
while(1)
{ while((P2_0!=0)||(P2_1!=1))//P2_0,P2_1接按键K1 K2
{for(m=0;m<8;m++) //K1 k2均未按下,8个LED发光二极管依次从左向右开始逐个点亮
{ delay(1000);//延时1S
P1=seg1[m];
}
}
while(P2_0==0) //K1 按下 状态2
{
for(n=0;n<8;n++)
{
delay(1000);
P1=seg2[n];
}
}
while(P2_1==0) //K2 按下 状态3
{
for(p=0;p<7;p++)
{
delay(1000);
P1=seg3[p];
}
}
}
}
Ⅸ 51单片机怎样用定时器做两个输出循环交替
这个不难,用1个全局变量作为交替标识,我没在家上,这里没U4,没法给你写全,我随便写一段,你自己多琢磨就明白了
unsigned char i; //这个是全局变量
void main()
{
i=0;
while(1)
{
}
}
//你可以设定定时器累加时间到3秒执行一次,这里我就不细写了
//比方30毫秒加一,到3000毫秒就是3秒的意思
void init0() interropt 1 //这里是定时器0的中断,至于定时时间设置,你就自己设置吧
{ //假设P11是1个灯,P12也是个灯,0是开灯
ET0=0; //关掉
if(i==0)
{
P11=0; //假设P11是1个灯,0是开灯
Delay(10); //假设这里是延时10秒,这样,P11就这个灯就开了1秒
P11=1; //这里P11关灯
}
else
{
P12=0; 如果i不是等于0,那么开的就是第二个灯
Delay(8); 此处延时8秒,当然你也可以用定时器1来定时,无非就是多个标识变量
P12=1;
}
i=~i; //把标识取反
TH0=XXX; //此处请自己设置时间
TL0=XXX; //此处请自己设置时间
ET0=1; //打开定时器
}
Ⅹ stc单片机AD转换不定时数据突然变大变小怎么解决,有啥子好方法
信号端加不加电容先不管,首先要注意的是,你要防止电源波纹导致精度不对,首先请保证你电源滤波做好了,也就是做加几个大电容于芯片的VCC和GND之间,我之前用368运放做喇叭的信号放大时就遇到这样的问题,如果还不行,你可以换一下单片机,如果不是单片机相关,获取你就要考虑是不是你布线上和信号源上的问题了