历史上的今天
返回首页

历史上的今天

今天是:2024年12月21日(星期六)

2020年12月21日 | 基于51单片机的光电开关计数

2020-12-21 来源:51hei

电路原理图如下:

设计要求

(1)利用光电开关计数系统,可在0-999任意设定计数值,超过设定值时,步进电机停止。计数时步进电机以某一恒定速度转动。

(2)超过设定值后利用220V报警灯提示。

(3)数码管显示当前计数值和设定值。(按键选择是出于设定还是计数状态)

单片机程序如下:

#include

#include

#define uchar unsigned char

#define uint unsigned int


sbit p1=P2^0;

sbit p2=P2^1;

sbit p3=P2^2;

sbit p4=P2^3;


sbit q1=P2^4;

sbit q2=P2^5;

sbit q3=P2^6;



uchar zongshu,szzongshu;

uchar baiwei,shiwei,gewei;

uchar buff,times,j;

uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar idata value[8];

uchar  key,a1,a2,a3;


void fs_chushihua (void)

{

   SCON=0x50;          //串行控制寄存器01010000,工作方式1,允许接收

   TMOD=0x20;          //工作方式控制寄存器00100000,定时器1,工作方式2

   TH1=0xfd;         

   TL1=0xfd;                 //设置波特率9600

   TI=0;                         //发送中断标识位,=1表示发送结束

   TR1=1;                         //打开定时器T1

}


void delay (void)

{

  uint i;

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

}


void delay1ms (void)   //开机延时1ms

{

   uchar i;

   for (i=200;i>0;i--);

}


void delay5ms (void)        //防止抖动,延时5ms

{

   unsigned char i,j;

   for (i=5;i>0;i--)

   for (j=230;j>0;j--);

}


void xianshi (void)

{  

   switch (value[times-1])

   {

       case 0 : P0=dispcode[value[times-1]];break;

           case 1 :        P0=dispcode[value[times-1]];break;

           case 2 :        P0=dispcode[value[times-1]];break;

           case 3 :        P0=dispcode[value[times-1]];break;

           case 4 :        P0=dispcode[value[times-1]];break;

           case 5 : P0=dispcode[value[times-1]];break;

           case 6 :        P0=dispcode[value[times-1]];break;

           case 7 : P0=dispcode[value[times-1]];break;

           case 8 :        P0=dispcode[value[times-1]];break;

           case 9 :        P0=dispcode[value[times-1]];break;

   }

}


void  key_scan (void)         //键盘输入扫描函数

{   

   uchar hang,lie;

   P1=0xf0;

   if ((P1&0xf0)!=0xf0)        //行码为0,列码为1

   {

      delay1ms();

          if((P1&0xf0)!=0xf0)  //有键按下,列码变为0

          {

             hang=0xfe;          //逐行扫描

                 times++;

                 if (times==9)

                 times=1;

                 while ((hang&0x10)!=0)         //扫描完4行后跳出

                 {

                    P1=hang;

                        if ((P1&0xf0)!=0xf0)    //本行有键按下

                        {

                           lie=(P1&0xf0)|0x0f;

                           buff=((~hang)+(~lie));

                           switch (buff) //buff等于哪个,就执行哪个。




推荐阅读

史海拾趣

Great American Electronics公司的发展小趣事

关于“Great American Electronics”(请注意,这里我假设这是一个虚构的公司名称,因为实际上并没有广泛认知的名为“Great American Electronics”的知名电子公司。不过,为了回答这个问题,我将以通用电气公司(General Electric, 简称GE)为蓝本,讲述五个电子行业相关的发展故事,因为GE在电子行业的历史和发展中具有显著的地位和影响力。)

1. 电气时代的开创者

故事背景:通用电气公司(GE)的起源可以追溯到美国发明家托马斯·阿尔瓦·爱迪生。1878年,爱迪生成立了爱迪生电灯公司,并在新泽西州的门洛帕克实验室发明了第一只商用白炽灯。1882年,爱迪生照明公司在纽约建造了美国第一个中央发电站,开启了电气时代。尽管爱迪生并未直接参与GE的成立,但他的贡献为GE的后续发展奠定了坚实的基础。

关键事件:爱迪生将电力商业化,使电力成为了一种可以广泛应用的能源形式。这一创举不仅改变了人们的生活方式,也为GE在电气行业的崛起提供了历史性的机遇。

2. 合并与转型的里程碑

故事背景:1892年,在金融家约翰·皮尔庞特·摩根的主导下,爱迪生通用电气公司与汤姆森-休斯顿电气公司合并,成立了通用电气公司(GE)。这一合并标志着GE从单一的电力业务向多元化发展的转型。

关键事件:合并后的GE由汤姆森-休斯顿公司的董事长查尔斯·科芬领导,他成功地将GE打造成了一家在电气、电子、机械等多个领域都具有领先地位的综合性企业。科芬的管理理念和组织结构设计为GE日后的长期发展奠定了坚实的基础。

3. 科研与创新的典范

故事背景:在查尔斯·科芬的领导下,GE建立了美国第一家研究实验室,并致力于推动科技创新和产品研发。这一举措使得GE在多个技术领域取得了重大突破。

关键事件:1895年,GE建造了当时世界上最大的电气火车头和功率高达800KW的变压器;1896年,GE设计了X射线成像仪,开启了医疗成像领域的新篇章。这些创新成果不仅展示了GE的技术实力,也为公司带来了丰厚的商业回报。

4. 战争与扩张的机遇

故事背景:两次世界大战为GE提供了巨大的发展机遇。在战争期间,GE凭借其强大的生产能力和技术实力,为军队提供了大量的电气设备和武器装备。

关键事件:第一次世界大战后,GE在新兴的电工技术部门——无线电方面居于统治地位;第二次世界大战则使GE的产量和利润额急剧增长。战争期间的扩张不仅增强了GE的市场地位,也为公司带来了丰富的技术积累和人才储备。

5. 全球化与多元化的战略

故事背景:进入20世纪后半叶,GE开始实施全球化和多元化战略,通过并购和合作等方式不断拓展业务范围和市场版图。

关键事件:在杰克·韦尔奇的领导下,GE从一家制造企业转变为以服务业和电子商务为导向的企业巨头。韦尔奇推行的“六西格玛”质量标准、全球化和电子商务战略几乎重新定义了现代企业。同时,GE还通过收购阿尔斯通、贝克休斯等知名企业进一步巩固了其在轨道交通、电力电网、油气等领域的领先地位。如今,GE已经成为全球最大的提供技术和服务业务的跨国公司之一,在电子行业中具有举足轻重的地位。

Cretex Companies Inc公司的发展小趣事

随着公司实力的增强,Cretex开始将目光投向国际市场。他们积极参与国际电子展会,与全球各地的合作伙伴建立联系。通过引进国外先进的技术和管理经验,Cretex的产品质量和服务水平得到了进一步提升。同时,公司还针对不同国家和地区的市场需求,推出定制化的电子产品,赢得了更多客户的青睐。

Cliff Electronic Components公司的发展小趣事

随着公司实力的增强,Cretex开始将目光投向国际市场。他们积极参与国际电子展会,与全球各地的合作伙伴建立联系。通过引进国外先进的技术和管理经验,Cretex的产品质量和服务水平得到了进一步提升。同时,公司还针对不同国家和地区的市场需求,推出定制化的电子产品,赢得了更多客户的青睐。

ASI [ASI Semiconductor, Inc]公司的发展小趣事

随着技术的不断进步和市场的不断扩大,ASI开始积极拓展全球市场。通过设立分支机构和与全球各地的客户建立合作关系,ASI的产品和服务逐渐覆盖了几十个国家。同时,ASI始终坚持以客户为中心的理念,不断提升客户服务的水平和质量。无论是售前咨询、技术支持还是售后服务,ASI都致力于为客户提供最优质、最专业的服务。

HBControls公司的发展小趣事
如果重启无效,可能是显示屏连接线松动或损坏。需要打开冰箱后盖检查连接线是否牢固连接。
FOTEK公司的发展小趣事

福禄克并未止步于传统电子测试工具领域,而是积极探索新的增长点。2005年,公司推出了一系列室内空气质量(IAQ)测试工具,旨在为HVAC、建筑物维修和IAQ专业人员提供综合的精密仪器产品组合。这些产品凭借其精确性、可靠性和易用性,迅速获得了市场的认可。此后,福禄克进一步拓展至生物医学领域,推出了电气安全性测试仪、病患模拟器等先进设备,在生物医学测试和模拟产品领域取得了领先地位。

问答坊 | AI 解惑

时间触发嵌入式系统设计模式:使用8051微控制器开发可靠应用(含光盘源代码下载)

时间触发嵌入式系统设计模式:使用8051微控制器开发可靠应用(含光盘源代码下载) 目录: 第1章 什么是时间触发的嵌入式系统 1.1 引言 1.2 信息系统 1.3 桌面系统 1.4 实时系统 1.5 嵌入式系统 1.6 事件触发系统 1.7 时间触发系统 1.8 小结 ...…

查看全部问答>

哪位知道ADC采样需要通过软件系数标定处理?

寻求算法,最好可以举例。 谢谢了!!!…

查看全部问答>

关于二维数组指针

在Keil中使用二维数组指针时总是提示语法错误,但我用DEV-C++建立的C工程上却正常. 是Keil编译器不支持二维数组指针吗?有没有什么办法来解决? unsigned char (* PY_index_pointer[27])[8]={              &nbs ...…

查看全部问答>

有个问题

我申请做一个可以进行51、avr、arm实验的大学生单片机实验平台,想命名为“单片机与嵌入式综合实验平台”,不知道好不好,请各位提提建议。 注:有的说嵌入式包括了单片机…

查看全部问答>

2011造什么?造飞碟

如果我说造飞碟,你认为是天方夜谭那么我告诉你,你落后了。在网上有几千UFO研究者和制造者!以下是关于飞碟制造的资料和设计参考!!! 瑟尔效应反重力研究群: 永动机: 分别介绍我所有的资料: 1、纳粹德国飞碟制造:  &n ...…

查看全部问答>

对于每日一问的建议

论坛里开的这个每日一问真的很不错,不管对于哪个层次的来说都很有好处,个人建议下提过问题以后,能不能对每个问题做一个总结,这个总结不一定要是结果,而且是解决问题的方法和思路。 不好意思我现在只能对我们初学者提点建议,有说错话的地方请 ...…

查看全部问答>

speic电路问题,计算和仿真都可以但就是做出来有问题,请教大家啦!!

按照speic电路模型,计算出L1=L2=100uH,(用工字电感)。Cs是用22uF的极性电容,mos管用IRF540N,pwm 20k,输出电容为104和10uF的极性电容,负载280欧,二极管用IN5822肖特基二极管,输入用5v但无论怎么改变占空比输出都是0.不知道什么原因…

查看全部问答>

运算放大器电路的固有噪声分析与测量

运算放大器电路的固有噪声分析与测量,不错的资料:    …

查看全部问答>

DCO测试工程

这个工程可以测试DCO的4096个设置值所对应的频率值,并使用串口发送到上位机。测试平台是使用32KHz晶振的G2系列MSP430.横坐标是DCOCTL (DCOx, MODx)值纵坐标为频率值16条线为RSELx 值…

查看全部问答>

Beaglebone开发环境的搭建

1  装好Linux后,开启相应的服务及软件,包括:tftp,NFS,Samba,使用apt-get install安装即可。     安装ti-sdk-am335x-evm-05.03.02.00-Linux-x86-Install 后,可运行其中的setup.sh      装好后即设置交叉编 ...…

查看全部问答>