lllll 发表于 2009-10-21 16:21:57

atmega16的书中发现个问题。。。。。。(串行口SPI那一章节)(高手看看,我附上动画,效果很

P440页,用TLC549做的电压表,量程为什么是2.5V到5V呢??我不能肯定有错啊,至少在仿真中是这样,我加了个滑动变阻器,测试结果是5V降到2.5V,接着在5V降到2.5V,我自己改编了个程序,现象这样,用书上的程序,还是这样。换个正弦波的信号,还是这样。。不明白!!!滑动变阻器从顶端到中间5V--2.5V(正常),中间到底端5V--2.5V(不正常)。。


http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_494255.gif
(原文件名:111.gif)



#include"mega16.h"
#define uint unsigned int
#define ss PORTB.4
flash uint led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
flash uint pos[]={0xfe,0xfd,0xfb,0xf7};
uint disbuf,ad_result,dat;
uint i=0;
void display()
{
PORTD=0xff;
PORTC=led];
if(i==1) PORTC|=0x80;
PORTD=pos;
if(++i==4) i=0;
}
interrupt void spi_isr()
{
ad_result=SPDR;
ss=1;
dat=ad_result*100/51;
disbuf=0;
disbuf=dat/100;
disbuf=(dat/10)%10;
disbuf=dat%10;
}
interrupt void timer0_comp()
{
display();
ss=0;
SPDR=0x00;
}
void main()
{
DDRC=0xff;
PORTC=0x00;
DDRD|=0x0f;
PORTD|=0x0f;
DDRB=0x90;
PORTB=0x40;
TCCR0=0x0b;
OCR0=0x7c;    //定时2ms
TIMSK=0x02;
SPCR=0xd0;   //SPI中断允许,SPI允许,主机方式,SPI模式0
SPSR=0x00;//SPI时钟频率1M
#asm("sei")
while(1);
}

lllll 发表于 2009-10-21 21:33:44

问题找到了,费了大半天,我把SPCR=0xd1;这样改了,问题解决,半天的时间都被这个问题困扰。。。。1Mb/s也在1.1Mb/s以下,为什么运行不出,不知实物中的效果怎样????


http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_494309.gif
(原文件名:111111.gif)

lllll 发表于 2009-10-22 09:27:55

有能力的朋友发个实物图看看!!!!!

wchp314 发表于 2009-10-22 10:33:33

楼上动画是怎么做的?

taocongrong 发表于 2012-2-23 17:48:36

machao 发表于 2012-2-24 22:24:52

回复【1楼】lllll
-----------------------------------------------------------------------

到底是你的错还是我的错?
页: [1]
查看完整版本: atmega16的书中发现个问题。。。。。。(串行口SPI那一章节)(高手看看,我附上动画,效果很