求求角c的度数解答过程,拜托,过程详细。

查看: 1138|回复: 15
急求答案啊!!!!拜托了!!!
小车上方有宽窄不同的障碍物,要求小车数出宽的障碍物个数并显示。怎样让每次发生低电平时计数器计数,而恢复高点平时不计数呢?我的程序可以让它在第一次低电平时开始计数,但是当电平恢复高电平时还在计数停不下来。
#include&stc12c5a60s2.h&
#define uint unsigned int
#define uchar unsigned char
sbit&&chuanganqi=P3^3;
sbit RS=P2^5;
sbit RW=P2^6;
sbit EP=P2^7;
unsigned int geshu,kuan,
void delay(int z)
& &int i,j;
& &for(i=z;i&0;i--)
& &&&for(j=1000;j&0;j--);
void zhongduan1() interrupt 2& &//外部中断1
Timer1_int();
void zhongduan2() interrupt 3& && &&&//定时器中断1
& &&&num++;
& &TL1 = 0x9C;&&//设置定时初值
TH1 = 0xFF;&&//设置定时初值 //定时100us=0.1ms
void Timer1_int()&&//定时器1初始化
/* TMOD|=0x10;
TH1=()/256;
TL1=()%256;& &//定时100us=0.1ms
AUXR &= 0xBF;&&//定时器时钟12T模式
TMOD &= 0x0F;&&//设置定时器模式
TMOD |= 0x10;&&//设置定时器模式
TL1 = 0x9C;&&//设置定时初值
TH1 = 0xFF;&&//设置定时初值
TF1 = 0;&&//清除TF1标志&&
// TR1 = 1;&&//定时器1开始计时
void write_com(char com) //输入命令函数
void write_date(char date)//输入数据函数
void write_init()//初始化函数
& &write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
void display()
write_com(0x80+0x00);
write_date(geshu/);
write_com(0x80+0x01);
write_date(geshu%x30);
write_com(0x80+0x02);
write_date(geshu%+0x30);
write_com(0x80+0x03);
write_date(geshu%10+0x30);
void main()
IT1=1;&&//低电平触发中断
write_init();
Timer1_int();&&
& &if (num&=1000)
& &&&kuan++;& &// kuan/2是托盘个数
& && &TR1=0;
geshu=kuan/2;
& &&&display();
// delay(5);
 一定要用这个stc12c5a60s2吗? 用PIC的话, 我可以帮你写一个,外部中断做不准, 最好是用CCP模块的捕获方法,因为进入中断程序会消耗时钟周期。
 我初学一月,说不对别怪。楼主程序目的想检测低电平持续时间,用外中断不好处理。如用低电平触发,低电平不退出则程序死在外中断服务程序里,其它任务做不了,包括定时中断服务也不做。如用下降触发,则触发后定时器计时,到设定时间(1S吧?)才停止计时,成了触发式一秒定时器,当然也可以改两秒三秒。检测低电平持续时间,应该在电平持续时间内定时器计时,高电平关闭,再算时间,对吧?
#include &stc.h&
#define uint unsigned int
#define uchar unsigned char
sbit&&chuanganqi=P3^3;
sbit&&RS=P2^5;
sbit&&RW=P2^6;
sbit&&EP=P2^7;
unsigned int geshu,kuan,
void Timer1_int();
void delay(int z)
& &int i,j;
& &for(i=z;i&0;i--)
& &&&for(j=1000;j&0;j--);
void zhongduan2() interrupt 3& && &&&//定时器中断1
& &&&num++;
& &&&TL1 = 0x9C;&&//设置定时初值
& &&&TH1 = 0xFF;&&//设置定时初值 //定时100us=0.1ms
void Timer1_int()&&//定时器1初始化
& & & & AUXR &= 0xBF;&&//定时器时钟12T模式
& & & & TMOD &= 0x0F;&&//设置定时器模式
& & & & TMOD |= 0x10;&&//设置定时器模式
& & & & TL1 = 0x9C;&&//设置定时初值
& & & & TH1 = 0xFF;&&//设置定时初值
& & & & ET1=1;
& & & & EA=1;
void write_com(char com) //输入命令函数
& & & & & & & & RS=0;
& & & & & & & & RW=0;
& & & & & & & & EP=0;
& & & & & & & & P0=
& & & & & & & & delay(5);
& & & & & & & & EP=1;
& & & & & & & & delay(5);
& & & & & & & & EP=0;
void write_date(char date)//输入数据函数
& & & & RS=1;
& & & & RW=0;
& & & & EP=0;
& & & & P0=
& & & & delay(5);
& & & & EP=1;
& & & & delay(5);
& & & & EP=0;
void write_init()//初始化函数
& & write_com(0x38);
& & & & write_com(0x0c);
& & & & write_com(0x06);
& & & & write_com(0x01);
void display()
& & & & & & & & write_com(0x80+0x00);
& & & & & & & & write_date(geshu/);
& & & & & & & & write_com(0x80+0x01);
& & & & & & & & write_date(geshu%x30);
& & & & & & & & write_com(0x80+0x02);
& & & & & & & & write_date(geshu%+0x30);
& & & & & & & & write_com(0x80+0x03);
& & & & & & & & write_date(geshu%10+0x30);
void main()
{&&& & & &
& & Timer1_int();
& &write_init();
& & & & while(1)
& & & & {&&& & & & while(chuanganqi==0)
& & & & & & & & {
& & & & & & & & & & & &&&TR1=1;
& & & & & & & & }
& & & && && &TR1=0;
& & & && & if (num&=1000)
& & & && & {&&
& & & && && & kuan++;& &// kuan是托盘个数
& & & && && & num=0;
& & & && && & TR1=0;
& & & && && & geshu=
& & & && &&&}
& & & && && & display();
老实说我从未用过这个stc12c5a60s2; 你说的对,用捕获的方法 要么检测低电平持续时间, 或者检测高电平持续时间, 然后运用算法计算这样的时间有多少个即可。
如果用外部中断+定时器应该也可以,但是比较粗略:
用一个外部中断做触发,一定要用电平触发, 不可以用上升沿和下降沿,因为物体开始时如果是上升沿, 那么结束时是下降沿, 反之依然。 一旦触发就打开定时器timer(定时器先要关)开始计时, 当下一个电平改变后停止计时器,当接下来的电平再次改变时,定时器又打开,反复 计算出这段时间, 用算法计算这样有多少个即可。
不好意思,上面给的程序有问题,重新改过如下:
#include &stc.h&
//#include &uart.h&
#define uint unsigned int
#define uchar unsigned char
sbit&&chuanganqi=P3^3;
sbit&&RS=P2^6;
sbit&&RW=P2^5;
sbit&&EP=P2^7;
unsigned int geshu,kuan,
void Timer1_int();
void delay(int z)
& &int i,j;
& &for(i=z;i&0;i--)
& &&&for(j=1000;j&0;j--);
void zhongduan2() interrupt 3& && &&&//定时器中断1
& &&&num++;
//& & & &&&printexp1(&num&,num);
& &&&TL1 = 0x9C;&&//设置定时初值
& &&&TH1 = 0xFF;&&//设置定时初值 //定时100us=0.1ms
void Timer1_int()&&//定时器1初始化
& & & & AUXR &= 0xBF;&&//定时器时钟12T模式
& & & & TMOD &= 0x0F;&&//设置定时器模式
& & & & TMOD |= 0x10;&&//设置定时器模式
& & & & TL1 = 0x9C;&&//设置定时初值
& & & & TH1 = 0xFF;&&//设置定时初值
& & & & ET1=1;
& & & & EA=1;
void write_com(char com) //输入命令函数
& & & & & & & & RS=0;
& & & & & & & & RW=0;
& & & & & & & & EP=0;
& & & & & & & & P0=
& & & & & & & & delay(5);
& & & & & & & & EP=1;
& & & & & & & & delay(5);
& & & & & & & & EP=0;
void write_date(char date)//输入数据函数
& & & & RS=1;
& & & & RW=0;
& & & & EP=0;
& & & & P0=
& & & & delay(5);
& & & & EP=1;
& & & & delay(5);
& & & & EP=0;
void write_init()//初始化函数
& & write_com(0x38);
& & & & write_com(0x0c);
& & & & write_com(0x06);
& & & & write_com(0x01);
void display()
& & & & & & & & write_com(0x80+0x00);
& & & & & & & & write_date(geshu/);
& & & & & & & & write_com(0x80+0x01);
& & & & & & & & write_date(geshu%x30);
& & & & & & & & write_com(0x80+0x02);
& & & & & & & & write_date(geshu%+0x30);
& & & & & & & & write_com(0x80+0x03);
& & & & & & & & write_date(geshu%10+0x30);
void main()
{&&& & & &
& & & & uart_ini();
& & Timer1_int();
& &write_init();
& & & & while(1)
& & & & {&&& & & & while(chuanganqi==0)
& & & & & & & & {
& & & & & & & & & & & &&&TR1=1;
& & & & & & & & }
& & & && && &TR1=0;
& & & && & if (num&=1000)
& & & && & {&&
& & & && && & kuan++;
//& & & & & & & &&&printexp1(&kuan&,kuan);& &// kuan是托盘个数
& & & && && & num=0;
& & & && && & TR1=0;
& & & && && & geshu=
& & & && &&&}
& & & & & & & & else
& & & & & & & & {
& & & & & & & && &num=0;
& & & && && & TR1=0;
& & & & & & & & }
& & & && && & display();
我初学一月,说不对别怪。楼主程序目的想检测低电平持续时间,用外中断不好处理。如用低电平触发,低电平不 ...
对,就是这意思
不好意思,上面给的程序有问题,重新改过如下:
#include &stc.h&
//#include &uart.h&
可是烧到板上,LCD什么都不显示啊
一定要用这个stc12c5a60s2吗? 用PIC的话, 我可以帮你写一个,外部中断做不准, 最好是用CCP模块的捕获方 ...
是啊,因为其他模块要用PCA,所以必须得用它,实际上我们用的是stc12c5a16s2
#include &stc.h&
//#include &uart.h&
这些是我调试用的,和你的程序没关系,凡是打//的可删掉。
有东西挡住传感器时间长点,会加1,短时间不会。
前提你的传感器被挡住能输出低电平。
把main里的 uart_ini();删掉,复制时我忘在前面打//了。
我就是删掉了之后,发现还是不显示。找不到其他的问题了。
编译通过没有?有没有和其它模块组合一起用?如果单用它是没问题的。我下载试过,正常显示,你改用你的头文件,不要用我的试试。
#include&stc12c5a60s2.h&
#define uint unsigned int
#define uchar unsigned char
sbit&&chuanganqi=P3^3;
sbit&&RS=P2^6;
sbit&&RW=P2^5;
sbit&&EP=P2^7;
unsigned int geshu,kuan,
void Timer1_int();
void delay(int z)
& &int i,j;
& &for(i=z;i&0;i--)
& &&&for(j=1000;j&0;j--);
void zhongduan2() interrupt 3& && &&&//定时器中断1
& &&&num++;
& &&&TL1 = 0x9C;&&//设置定时初值
& &&&TH1 = 0xFF;&&//设置定时初值 //定时100us=0.1ms
void Timer1_int()&&//定时器1初始化
& && &&&AUXR &= 0xBF;&&//定时器时钟12T模式
& && &&&TMOD &= 0x0F;&&//设置定时器模式
& && &&&TMOD |= 0x10;&&//设置定时器模式
& && &&&TL1 = 0x9C;&&//设置定时初值
& && &&&TH1 = 0xFF;&&//设置定时初值
& && &&&ET1=1;
& && &&&EA=1;
void write_com(char com) //输入命令函数
& && && && && & RS=0;
& && && && && & RW=0;
& && && && && & EP=0;
& && && && && & P0=
& && && && && & delay(5);
& && && && && & EP=1;
& && && && && & delay(5);
& && && && && & EP=0;
void write_date(char date)//输入数据函数
& && &&&RS=1;
& && &&&RW=0;
& && &&&EP=0;
& && &&&P0=
& && &&&delay(5);
& && &&&EP=1;
& && &&&delay(5);
& && &&&EP=0;
void write_init()//初始化函数
& & write_com(0x38);
& && &&&write_com(0x0c);
& && &&&write_com(0x06);
& && &&&write_com(0x01);
void display()
& && && && && & write_com(0x80+0x00);
& && && && && & write_date(geshu/);
& && && && && & write_com(0x80+0x01);
& && && && && & write_date(geshu%x30);
& && && && && & write_com(0x80+0x02);
& && && && && & write_date(geshu%+0x30);
& && && && && & write_com(0x80+0x03);
& && && && && & write_date(geshu%10+0x30);
void main()
{& && && &
& && &&&uart_ini();
& & Timer1_int();
& &write_init();
& && &&&while(1)
& && &&&{& && && & while(chuanganqi==0)
& && && && && & {
& && && && && && && && & TR1=1;
& && && && && & }
& && && && & TR1=0;
& && && &&&if (num&=1000)
& && && &&&{&&
& && && && &&&kuan++;
& && && && &&&num=0;
& && && && &&&TR1=0;
& && && && &&&geshu=
& && && && &}
& && && && && & else
& && && && && & {
& && && && && && &num=0;
& && && && &&&TR1=0;
& && && && && & }
& && && && &&&display();
Powered by更多疑问请点击这里哦
求问求问~关于出国带红枣等的问题~海关会查吗?求各位大神解答~!!拜托拜托~!
来自论坛版面
我10天后去欧洲~想带点当归红枣枸杞,还有一点常用药什么的,第一次出国什么都不懂,搜了好多资料,说牛黄解毒片这些不可以带,然后红枣这些药填申报表,请问是这样的吗?谢谢,,。。。
 1873人浏览
 7 个回答
 1 人关注
绝对不要带红枣枸杞之类的东西。会认为是种子类的植物,各国海关都严查。一般你去当地华人超市也能买到。不需要国内带去。常用药倒是不担心。
也要看當時海關心情及他忙不忙。一般來說,華人民以食為天,也喜歡貪小便宜,以為小小違法,問題不大。所以海關會對我們特別關注。喜歡冒險,就帶吧,成功了,可以吹噓一下,查到了,被充公,丟在垃圾桶事少,拒絕入境或收扣才大事。為了小小口福,值嗎?&
建議參考一下:
我可以很负责任的告诉你,只要放在托运箱里就什么都可以带。不管是补品还是药。根本不用填申报单。如果你不放心,最多把它们放在衣服袋子里面藏起来。没人会查这些东西。
填申报单不是自找麻烦吗,按规定这些都是需要通过j检疫,不能直接带,问题是查不查到你,查到要罚款,还可能被禁止入境
问答探路者
擅长美国、俄罗斯等地的问题
自用的不需申报,量不要太多就行。
自用的不需申报,量不要太多就行。扫二维码下载作业帮
2亿+学生的选择
下载作业帮安装包
扫二维码下载作业帮
2亿+学生的选择
求过程解答.拜托&
鬼王NYk2继
扫二维码下载作业帮
2亿+学生的选择
1,sin(45+a)sin(45-a)=sin(45+a)cos(45+a)=1/2sin(90+2a)=1/2cos(2a)=-1/4解得cos(2a)=-1/2;a=602,sin(a+10)(1-(根号3)tan(a-10))=sin70*(1-(根号3)*tan50)=cos20/cos50*(cos50-(根号3)*sin50)=2cos20/sin40*(1/2*cos50-(根号3)/2*sin50)=1/sin20*sin(30-50)=1/sin20*(-sin20)=-1;
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 阅读下面的解答过程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信