找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5491|回復: 24
打印 上一主題 下一主題
收起左側(cè)

大神快來

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:65766 發(fā)表于 2014-10-31 10:52 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我用的是51單片機 問一下 如何控制AD來控制他的一個燈讓他從最亮到最暗兩秒循環(huán) 我的是DAC0832
  #include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;
void delay(uint);
sbit csda=P3^2;
sbit wr=P3^6;
void main()
{
csda=0;
wr=0;
num=0xff;
while(1)
{
  num=num--;
  if(num==0)
  {
     delay(50);
     num=0xff;
   }
  P0=num;



}
}
  void delay (uint z)   
  {
   uint x,y;
   for(x=z;x>0;x--)
   for(y=110;y>0;y--);
  
  
  }這樣寫為什么不可以 是不是不能直接對16進制數(shù)進行+-運算呢
post_newreply








分享到: QQ好友和群騰訊微博QQ空間
評分收藏0轉(zhuǎn)播分享淘帖000

AD與單片機連接.jpg (87.07 KB, 下載次數(shù): 181)

AD與單片機連接.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:65766 發(fā)表于 2014-10-31 10:56 | 只看該作者
傳錯了

DA接口.jpg (84.76 KB, 下載次數(shù): 177)

DA接口.jpg
回復

使用道具 舉報

板凳
ID:51348 發(fā)表于 2014-10-31 16:07 | 只看該作者
本帖最后由 T29 于 2014-10-31 16:09 編輯

很好  學習  謝謝
回復

使用道具 舉報

地板
ID:51348 發(fā)表于 2014-11-1 00:44 | 只看該作者
沒看到驅(qū)動部分,是不是驅(qū)動的問題
回復

使用道具 舉報

5#
ID:67992 發(fā)表于 2014-11-2 15:51 | 只看該作者
要搞清--num和num--的區(qū)別;num=num--則num的值就永遠不會變。
public class Test {
    public static void main(String[] args) {
        int i = 1;
        i = i++;
        System.out.println(i);
    }
}

先想一想,這個程序會輸出什么?是1還是2?按照我最初的想法,輸出應該是2,因為把i賦值給i相當于沒做什么操作,然后對i進行自加操作,所以變量i的值變?yōu)?了。但實際輸出結(jié)果卻是1!

跟David討論了一下,他說這個i = i++;的操作可能相當于以下三步操作:①把變量i的值取出來,放在一個臨時變量里(我們先記作temp);②把變量i的值進行自加操作;③把臨時變量temp的值作為自增運算前i的值使用,在本題中就是給變量i賦值。因此,經(jīng)過以上三步操作以后,雖然變量i在第②步操作中進行了自增運算,但第三步操作以后又把原來的值賦給了它,故最后輸出結(jié)果為1。雖然我不確定這種解釋是否正確,畢竟對底層實現(xiàn)細節(jié)不是太了解,但這種解釋至少跟結(jié)果是符合的。

評分

參與人數(shù) 1威望 +50 黑幣 +50 收起 理由
huqin + 50 + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:65766 發(fā)表于 2014-11-4 21:16 | 只看該作者
dgahz 發(fā)表于 2014-11-2 15:51
要搞清--num和num--的區(qū)別;num=num--則num的值就永遠不會變。
public class Test {
    public static v ...

受教了 多謝大神 我去試試
回復

使用道具 舉報

7#
ID:65766 發(fā)表于 2014-11-4 21:17 | 只看該作者
dgahz 發(fā)表于 2014-11-2 15:51
要搞清--num和num--的區(qū)別;num=num--則num的值就永遠不會變。
public class Test {
    public static v ...

受教了 多謝大神 我去試試
回復

使用道具 舉報

8#
ID:67992 發(fā)表于 2014-11-4 21:20 | 只看該作者
while(1)
{
  num=num--;
  if(num==0)
  {
     delay(50);

改成
while(1)
{
  num--;
  if(num==0)
  {
回復

使用道具 舉報

9#
ID:65766 發(fā)表于 2014-11-4 21:40 | 只看該作者
還有一個問題 :這段程序這樣表示可以嗎:num=0xff;num=--num 就是我上面說的 能對16進制進行運算嗎
回復

使用道具 舉報

10#
ID:67992 發(fā)表于 2014-11-4 22:05 | 只看該作者
可以。編程可以用十進制和十六進制,不可用二進制。十進制和十六進制都能運算
回復

使用道具 舉報

11#
ID:67992 發(fā)表于 2014-11-4 22:08 | 只看該作者
本帖最后由 dgahz 于 2014-11-4 22:12 編輯

如P1=0xFF和P1=255效果一樣
回復

使用道具 舉報

12#
ID:67992 發(fā)表于 2014-11-4 22:11 | 只看該作者
這段程序這樣表示可以嗎:num=0xff;num=--num

可以,先減可以,后減不行
回復

使用道具 舉報

13#
ID:65766 發(fā)表于 2014-11-4 22:22 | 只看該作者
可程序要實現(xiàn)的功能卻沒有實現(xiàn) 我是想讓上面發(fā)的電路圖中的最右邊的D12燈實現(xiàn)從亮到暗變換 。。不知道程序哪里錯了 大神給點意見唄
回復

使用道具 舉報

14#
ID:67992 發(fā)表于 2014-11-5 09:37 | 只看該作者
本帖最后由 dgahz 于 2014-11-5 09:44 編輯

試試:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;

sbit csda=P3^2;
sbit wr=P3^6;
void delay7ms800us(void)   //誤差 0us 12m晶振
{
    unsigned char a,b,c;
    for(c=5;c>0;c--)
        for(b=4;b>0;b--)
            for(a=193;a>0;a--);
}

void main()
{
csda=0;
wr=0;
num=0xff;
while(1)
{  P0=num;  
delay7ms800us();
  num--;
  
  if(num==0)
  {
     
     num=0xff;
   }





回復

使用道具 舉報

15#
ID:65766 發(fā)表于 2014-11-5 21:30 | 只看該作者
我編譯了一下 貌似有錯誤啊 大神 對了 我用的是ATM89C52 單片機 還有就是void delay7ms800us(void)   //誤差 0us 12m晶振
{
    unsigned char a,b,c;
    for(c=5;c>0;c--)
        for(b=4;b>0;b--)
            for(a=193;a>0;a--);
}這個我沒看懂 就是個延時函數(shù)還是什么

IMG_20141105_212554.jpg (2.06 MB, 下載次數(shù): 136)

IMG_20141105_212554.jpg

IMG_20141105_212603.jpg (1.84 MB, 下載次數(shù): 149)

IMG_20141105_212603.jpg
回復

使用道具 舉報

16#
ID:65766 發(fā)表于 2014-11-5 21:30 | 只看該作者
我編譯了一下 貌似有錯誤啊 大神 對了 我用的是ATM89C52 單片機 還有就是void delay7ms800us(void)   //誤差 0us 12m晶振
{
    unsigned char a,b,c;
    for(c=5;c>0;c--)
        for(b=4;b>0;b--)
            for(a=193;a>0;a--);
}這個我沒看懂 就是個延時函數(shù)還是什么
回復

使用道具 舉報

17#
ID:67992 發(fā)表于 2014-11-5 21:42 | 只看該作者
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;
sbit csda=P3^2;
sbit wr=P3^6;
void delay7ms800us(void)   //誤差 0us 12m晶振
{
    unsigned char a,b,c;
    for(c=5;c>0;c--)
        for(b=4;b>0;b--)
            for(a=193;a>0;a--);
}
void main()
{
        csda=0;
        wr=0;
        num=0xff;
    while(1)
    {   P0=num;  
        delay7ms800us();
        num--;
                if(num==0)
                {
                   num=0xff;
                }
    }
}
回復

使用道具 舉報

18#
ID:67992 發(fā)表于 2014-11-5 21:43 | 只看該作者
是延時函數(shù)
回復

使用道具 舉報

19#
ID:67992 發(fā)表于 2014-11-5 21:45 | 只看該作者
重新編譯好給你,上次那個隨便拿記事本寫好給你,沒檢查,不好意思

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

20#
ID:65766 發(fā)表于 2014-11-8 13:46 | 只看該作者
我去試試
回復

使用道具 舉報

21#
ID:65766 發(fā)表于 2014-11-8 20:06 | 只看該作者

這個延時函數(shù) 我不是很明白 他沒運行一次是多少時間 另外就是那個由亮到暗這個功能是實現(xiàn)了  但數(shù)碼管卻也在變化 我不太理解 難道這兩個是連在一塊的 ?
回復

使用道具 舉報

22#
ID:67992 發(fā)表于 2014-11-8 20:36 | 只看該作者
有個軟件叫單片機小精靈,里面你要延時多長它自動幫你算,形成C代碼,復制過來就可以了。數(shù)碼管會變應該是共用了P0口,開發(fā)板單片機IO都是共用的。你看一下你的板電原理圖就清楚了。
回復

使用道具 舉報

23#
ID:65766 發(fā)表于 2014-11-8 21:38 | 只看該作者
這兩個之間貌似連了鎖存器 可以通過設(shè)置鎖存器來關(guān)閉數(shù)碼管嗎
回復

使用道具 舉報

24#
ID:65766 發(fā)表于 2014-11-8 21:40 | 只看該作者
哦 好像弄錯了 好像沒有啊
回復

使用道具 舉報

25#
ID:67992 發(fā)表于 2014-11-8 23:00 | 只看該作者
發(fā)個電路圖過來
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表