Ⅰ 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運放做喇叭的信號放大時就遇到這樣的問題,如果還不行,你可以換一下單片機,如果不是單片機相關,獲取你就要考慮是不是你布線上和信號源上的問題了