历史上的今天
返回首页

历史上的今天

今天是:2025年12月27日(星期六)

2022年12月27日 | 云台单片机控制源程序

2022-12-27 来源:zhihu

#include "AT89X52.H"

#include "math.h"

sbit NTL = P0^0;//继电器控制,输出

sbit NTR = P0^1;

sbit NTU = P0^2;

sbit NTD = P0^3;

sbit INL = P0^4;//云台运动状况的检测电,输入

sbit INR = P0^5;

sbit INU = P0^6;

sbit IND = P0^7;

sbit LEFC = P2^0;//继电器的通断检测,

sbit LEGC = P2^1;

sbit UPPC = P2^2;

sbit DOWC = P2^3;

sbit SOUND = P2^7;

int counter=0,TimerCnt1Ms=0,LastTime1Ms;

char b,c,d= 0;

char Flag = 0,sc[3];

void Delay(int DelayTimeInMs);

void sendchar();

void checkpinc(char c);

void checkpind(char d);

void show(void);

void judge(char Flag);

void main (void)

{

SCON = 0x52; /* 设置串行口控制寄存器SCON*/

TMOD = 0x21; /* */

TCON = 0x69; /* TCON */

TH1 = 0xf3; /* TH1 */

ET1=1;

EA=1;

b = 0x01;

while( b<0x10 )

{ P0=0xFF;

switch(b)

{case 0x01 :

P0|=0x0F;

NTL=0;

break;

case 0x02 :

P0|=0x0F;

NTR=0;

break;

case 0x04 :

P0|=0x0F;

NTU=0;

break;

case 0x08 :

P0|=0x0F;

NTD=0;

break;

default:

P0=0x0F;

break;

}

Delay(900);

b <<=1;

}

SOUND=1;//蜂鸣器响

P0|=0x0F;

for(;;)

{

show();

judge (Flag);

sendchar();

if (Flag!=0xff)

{

int DelayNum=0;

do

{

SOUND=~SOUND;

DelayNum++;

Delay(1);

}

while( DelayNum<3000);

}

else

Delay(500);

}

}

void show(void)

{

b = 0x01;

c = 0x80;

d = 0x10;

Flag=0x00;

while( b<0x10 )

{ switch(b)

{case 0x01 :

P0|=0x0F;

NTL=0;

break;

case 0x02 :

P0|=0x0F;

NTR=0;

break;

case 0x04 :

P0|=0x0F;

NTU=0;

break;

case 0x08 :

P0|=0x0F;

NTD=0;

break;

}

checkpinc(c);

if (counter>10)

checkpind(d);

b <<=1;

c >>=1;

d <<=1;

counter=0;

}

SOUND=1;

NTL=1;

NTR=1;

NTU=1;

NTD=1;

}

void Delay(int DelayTimeInMs) // Note:DelayTimeInMs<1000

{

int LastTime1Ms = TimerCnt1Ms;

while(abs(TimerCnt1Ms-LastTime1Ms){}

TimerCnt1Ms=0;

}

// Timer0 overflow IntNum=10

void timer1_ovf_isr(void) interrupt 3

{

unsigned char Second,Minute,Hour = 0;

TimerCnt1Ms++;

if( TimerCnt1Ms==1000 )//1秒

{

TimerCnt1Ms = 0;

Second++;

if( Second==60 )

{

Second = 0;

Minute++;

if( Minute==60 )

{

Minute = 0;

Hour++;

}

}

}

}

void sendchar()

{

char i;

sc[2]=0x0d;

if ((Flag&0x0f)>9)

sc[0]=65+(Flag&0x0f)-0x0a;

else

sc[0]=48+(Flag&0x0f);

if((Flag&0xf0)>0x90)

sc[1]=65+((Flag>>4)&0x0f)-0x0a;

else

sc[1]=48+((Flag&0xf0)>>4);

for (i=0;i<=2;i++)

{

SBUF=sc[i];

// while (!(USR & 0x40))

{

}

// USR|=0x40;

}

}

void checkpinc(char c) //C端口检测

{

int DelayNum=0;

Delay(30);

counter=0;

do

{

Delay(2);

DelayNum++;

// if (PINC&c==c)

counter++;

}

while( DelayNum<15);

if (counter>10)

Flag |=c;

}

void checkpind(char d) //D端口检测

{

int DelayNum=0;

counter=0;

do

{

Delay(2);

DelayNum++;

// if (d!=(PIND&d))

counter++;

}

while( DelayNum<30);

if (counter>5)

Flag |=(d>>4);

}

void judge (char Flag)

{

int j,m,n;

for (j=0;j<=2;j++)

{

if (Flag!=0xff)

{

m=((Flag||0x0f)>>4)||0xf0;

n=Flag||0xf0;

if ((m-n)<=0)

{}

else

{

if ((((~n)||0xf3)==0xff)|((n||0xf3)==0xff))

{

}

else

{

P0=((~n)||0xf3);

Delay(200);

P0=0x8f;

}

if ((((~n)||0xfc)==0xff)|((n||0xfc)==0xff))

{

}

else

{

P0=((~n)||0xfc);

Delay(200);

P0=0x8f;

}

}

Delay(5);

show();

}

else j=3;

P0=0x8f;

}

}


电原理图


控制板


推荐阅读

史海拾趣

AnDAPT__Inc.公司的发展小趣事

AnDAPT Inc.是一家专注于可编程电源管理解决方案的创新型公司。以下是关于该公司发展的相关故事:

  1. 公司成立与初期阶段:AnDAPT Inc.成立于2014年,总部位于美国加利福尼亚州圣何塞。公司的创始人之一是Raghunandan "Raghu" Anandan,他在可编程电源管理领域拥有丰富的经验和专业知识。公司成立之初,致力于开发一种新型的可编程电源管理解决方案,以满足日益复杂和多样化的电子设备对电源管理的需求。

  2. 技术创新与产品开发:AnDAPT Inc.在其成立初期即开始着手开发基于可编程电源管理技术的解决方案。公司团队结合了数字信号处理(DSP)和模拟电路设计等领域的专业知识,不断推动技术创新和产品开发。他们的主要产品是基于可编程电源管理器件的芯片,能够根据应用需求动态调整电源管理参数,提供高效、灵活和智能的电源解决方案。

  3. 市场拓展与合作伙伴关系:随着公司技术的不断成熟和产品的不断推出,AnDAPT Inc.开始加大对市场的拓展力度。公司与电子设备制造商、系统集成商以及电源管理解决方案提供商建立了紧密的合作关系,共同推动可编程电源管理技术的应用和推广。通过与行业领先的合作伙伴进行合作,AnDAPT Inc.不断拓展产品的应用领域和市场份额。

  4. 技术认证与市场认可:AnDAPT Inc.的产品经过严格的技术认证和市场测试,在业界获得了良好的口碑和市场认可。公司的可编程电源管理解决方案被广泛应用于各种电子设备,包括消费类电子产品、工业自动化设备、汽车电子系统等。其技术创新和产品性能得到了行业专家和客户的一致好评。

  5. 持续发展与未来展望:作为一家专注于可编程电源管理技术的创新型公司,AnDAPT Inc.将继续致力于技术创新和产品开发。公司将不断推出新的产品和解决方案,满足客户不断变化的需求,并积极参与行业标准的制定和技术进步的推动。在未来,AnDAPT Inc.将继续保持敏锐的市场洞察力和技术领先地位,助力客户实现产品创新和市场竞争优势。

CHENMKO公司的发展小趣事

非常抱歉,由于CHENMKO并非一个我所熟知的电子行业中的具体公司名称,我无法直接为您提供关于其发展起来的5个相关故事。如果您提到的“CHENMKO”是一个虚构的或者不太知名的公司,那么相关的具体故事就需要您自己创作或者查找相关资料。

然而,我可以提供您一个电子行业公司发展的通用故事框架,您可以根据这个框架和您的具体需求来创作或寻找更多信息。

电子行业公司发展故事框架

  1. 创业初期
    • 描述公司的创始人和初创团队,他们是如何发现市场机会的。
    • 讲述公司初创时期的艰难和挑战,比如资金短缺、技术难题等。
    • 介绍公司早期产品的特点,以及如何在市场上获得初步认可。
  2. 技术创新与突破
    • 描述公司在某一技术领域取得的重大突破,如研发出新技术、新产品。
    • 分析这一技术创新如何帮助公司在市场上获得竞争优势。
    • 讲述技术创新过程中遇到的困难以及克服这些困难的过程。
  3. 市场拓展与合作
    • 描述公司如何逐步扩大市场份额,比如通过开拓新市场、拓展产品线等。
    • 介绍公司与其他企业或机构的合作案例,以及这些合作带来的好处。
    • 分析公司在市场拓展过程中面临的挑战和应对策略。
  4. 品牌建设与形象提升
    • 讲述公司如何通过品牌建设提升市场影响力,比如参加行业展会、举办发布会等。
    • 介绍公司如何塑造积极的品牌形象,如强调社会责任、环保理念等。
    • 分析品牌建设对公司长期发展的重要性。
  5. 未来发展与展望
    • 描述公司的未来发展规划,如继续技术创新、拓展国际市场等。
    • 分析行业发展趋势和市场竞争态势,以及公司如何应对这些挑战。
    • 展望公司的未来发展前景和可能面临的机遇与挑战。

请注意,以上框架是一个通用的模板,您可以根据CHENMKO公司的实际情况进行调整和修改。如果您需要更具体的信息或故事,建议您查找该公司的官方网站、新闻报道或行业分析报告等渠道获取相关资料。

上海晶丰明源(BPS)公司的发展小趣事

作为一家有社会责任感的企业,晶丰明源始终注重可持续发展。公司积极履行环保责任,采用环保材料和工艺,减少生产过程中的污染排放。同时,公司还关注员工福利和社区建设,为员工提供良好的工作环境和福利待遇,积极参与社会公益活动,为社区的和谐发展做出了贡献。

这五个故事从不同角度展现了上海晶丰明源(BPS)公司在电子行业中的发展历程和成就。从创立到上市、从技术突破到市场拓展、从应对挑战到履行社会责任,晶丰明源始终坚持以市场为导向、以技术为核心的发展理念,不断追求卓越和创新,为电子行业的发展做出了重要贡献。

宇阳科技(EYANG)公司的发展小趣事

宇阳科技自2001年成立以来,一直致力于片式多层陶瓷电容器(MLCC)的研发和生产。2002年,公司成功研发出0402 BME微型片式多层陶瓷电容器,并通过了新产品鉴定,填补了国内市场的空白。这一创新不仅彰显了宇阳科技在MLCC领域的技术实力,也为公司赢得了市场的认可,为后续的发展奠定了坚实的基础。

BusBoard Prototype Systems公司的发展小趣事

BusBoard Prototype Systems公司起源于一位电子工程师的梦想。这位工程师发现,在电子产品的开发过程中,原型制作是一个既耗时又昂贵的环节。于是,他萌生了创建一个专门提供快速、高效原型制作服务的公司的想法。经过数月的筹备,BusBoard Prototype Systems正式成立,以其独特的BusBoard技术和定制化的服务,迅速在行业内崭露头角。

广州盛炬(GZSJ)公司的发展小趣事

在国内市场取得一定成绩后,BusBoard Prototype Systems开始将目光投向国际市场。公司积极参加国际电子展会,与海外客户建立联系,并成功将产品和服务推向了海外市场。随着国际业务的不断拓展,公司的知名度和影响力也逐渐提升。

问答坊 | AI 解惑

2-60V可调

最近打算做一个2-60V可调电源,最大电流为10A,纹波<100mv,不知大家有什么建议给我吗?虽然做过电源但是还没有做过这么大功率的,第一次尝试,不知该考虑些什么? 希望各位大虾多给提点意见 …

查看全部问答>

.net cf 没有GetDelegateForFunctionPointer函数

只有Marshal.GetFunctionPointerForDelegate函数 我要调用一个dll,该dll的函数参数是指针 在.net上可以这样调用: DelegateS myS = Marshal.GetDelegateForFunctionPointer(                 ...…

查看全部问答>

新手提问89c51中断系统IE,IP寄存器啥区别?怎么编程使用

如题,最近我在学习用KEIL C编写程序时对单片机里中断系统里寄存器IE和IP的功能很不了解,不知道中断源的优先级到底该设到哪各寄存器里,于是感到很晕,心里犯嘀咕:一个寄存器里怎么能把所有中断源优先次序排个序?!!由于对硬件不了解,就翻了几 ...…

查看全部问答>

双色LED立体显示效果

昨晚在做LED点阵无意中拍摄到的,呵呵,实际不是这样。 为了显示上面那几个字,我采用手工绘图方法绘出来。 显示代码如下: unsigned char code Display_Font[64][16]= { //1   0x03,0x03,0x03,0x01,0x03,0x03,0x03,0x03,  ...…

查看全部问答>

WINCE摄像头采集后图像如何播放?

请问:   我用的是2440CAMERA接口,驱动只完成了将数据存到帧存储器的工作,要想在WINCE上将视频,或者是一张图片显示出来,要做什么工作呢?    我的理解是LCD会不断的从帧缓冲里将数据输出到屏上,所以用memcpy将buffer_rgb的数据 ...…

查看全部问答>

关于NT内核模式中的进程问题,一直都没人解决,不知大牛们对此有何看法??

根据IRP既然可以得到宿主进程的信息,如名字和路径,那么能否得到宿主进程的ID呢? 是有代码可以得到IRP的进程ID的,得到的是PEPROCESS ProcessID,那么这个进程ID和用户模式的任务管理器中看到的进程ID有什么关系??它们是同一个东西吗???内核模 ...…

查看全部问答>

申请ez430-RF2500 开发板

不敢说项目中就会用它,但是可以多一种方案多一个选择。 完成后分享过程中的点滴。   [ 本帖最后由 sblpp 于 2010-10-13 18:55 编辑 ]…

查看全部问答>

ST给的Demo中的STM3210E-EVAL如何产生的?

IAR编译器下本来的工程应该是Debug,Release,但是ST给的Demo中的 TM3210E-EVAL如何产生的?属于Debug呢还是Release呢?…

查看全部问答>

P1REN没有定义?

我刚开始学430在编译下面代码的时候,IAR报错 Error[Pe020]: identifier \"P1REN\" is undefined E:\\workspace\\main.c 12 #include \"io430.h\"#include \"intrinsics.h\" int main( void ){  // Stop watchdog timer to prevent time out ...…

查看全部问答>

分享目前最详细最好的SD卡学习视频教程,阿迪的《MMC/SD卡入门到精通》

比较不错的SD卡/MMC卡学习视频教程,AVR单片机驱动的,在线稍微没有那么清晰东西比较大,没有上传,大家先网上看看在线的,有时间了传清晰版版本优酷网在线观看地址:第一集:http://v.youku.com/v_playlist/f5066832o1p1.html第二集:http://v.you ...…

查看全部问答>