利用定时器计时,注释非常详细,可自己改变定时时间。
单片机源程序如下:
#include "reg52.h"
#define GPIO_TRAFFIC P2
#define GPIO_DIG P0
typedef unsigned char u8;
typedef unsigned int u16;
//3-8译码器引脚位定义
sbit LSA = P1^0;
sbit LSB = P1^1;
sbit LSC = P1^2;
//交通信号灯南北方向控制引脚位定义
sbit GREEN10 = P2^0;
sbit RED10 = P2^1;
sbit GREEN11 = P2^2;
sbit YELLOW11 = P2^3;
sbit RED11 = P2^4;
//交通信号灯东西方向控制引脚位定义
sbit GREEN00 = P1^6;
sbit RED00 = P1^7;
sbit GREEN01 = P2^5;
sbit YELLOW01 = P2^6;
sbit RED01 = P2^7;
u8 code smgduan[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴
u8 displaydata[8]; //储存信号灯倒计时
//定义一个全局变量
u8 second;
//各种函数的声明
void Timer0Init();
void delay(u16 i);
void Digdisplay();
void trafficpros();
/*******************************
主函数:main
*******************************/
void main(void)
{
second = 1;
Timer0Init(); //初始化定时器T0;
while(1)
{
trafficpros();
}
}
/*******************************
定时器T0配置函数,只选择TCON中TR
0触发,定时10ms。
*******************************/
void Timer0Init()
{
TMOD |= 0x01;
TH0 = 0xd8;
TL0 = 0xf0; //设定初值55536,定时10ms
IE = 0x82; //开启T0中断和总中断
TR0 = 1; //开启定时器T0
}
/*******************************
中断处理函数
*******************************/
void Time0() interrupt 1
{
static u16 i;
TH0 = 0xd8;
TL0 = 0xf0; //重装初值
i++; //记下中断的次数,100次为一秒
if(100 == i)
{
i = 0;
second++;
}
}
/*******************************
延时函数,延时约10μs
*******************************/
void delay(u16 i)
{
while(i--);
}
/*******************************
8位数码管位选函数
*******************************/
void Digdisplay()
{
u8 i;
for(i = 0; i < 8; i++)
{
switch(i)
{
case 0:
LSA = 0; LSB = 0; LSC = 0; break;
case 1:
LSA = 1; LSB = 0; LSC = 0; break;
case 2:
LSA = 0; LSB = 1; LSC = 0; break;
case 3:
LSA = 1; LSB = 1; LSC = 0; break;
case 4:
LSA = 0; LSB = 0; LSC = 1; break;
case 5:
LSA = 1; LSB = 0; LSC = 1; break;
case 6:
LSA = 0; LSB = 1; LSC = 1; break;
case 7:
LSA = 1; LSB = 1; LSC = 1; break;
}
GPIO_DIG = displaydata[i];
delay(100);
GPIO_DIG = 0x00; //消影
}
}
/*******************************
交通信号灯控制函数
*******************************/
void trafficpros()
{
if(second > 74)
{
second = 1;
}
//南北方向通车和人行道
if(second < 32)
{
displaydata[0] = 0x00; //第一位数码管不显示
displaydata[1] = 0x00; //第二位数码管不显示
displaydata[2] = smgduan[(31 - second)/10];
displaydata[3] = smgduan[(31 - second)%10];
displaydata[4] = 0x00; //第五位数码管不显示
displaydata[5] = 0x00; //第六位数码管不显示
displaydata[6] = displaydata[2];
displaydata[7] = displaydata[3];
Digdisplay();
//每次先所有的灯进行熄灭
GPIO_TRAFFIC = 0xff;
GREEN00 = 1;
RED00 = 1;
GREEN10 = 0; //人行道绿灯亮
GREEN11 = 0; //车道绿灯亮
RED00 = 0; //东西方向人行道红灯亮
RED01 = 0; //东西方向车道红灯亮
}
//中间黄灯阶段
else if(second < 38)
{
displaydata[0] = 0x00; //第一位数码管不显示
displaydata[1] = 0x00; //第二位数码管不显示
displaydata[2] = smgduan[(37 - second)/10];
displaydata[3] = smgduan[(37 - second)%10];
displaydata[4] = 0x00; //第五位数码管不显示
displaydata[5] = 0x00; //第六位数码管不显示
displaydata[6] = displaydata[2];
displaydata[7] = displaydata[3];
Digdisplay();
//每次先所有的灯进行熄灭
GPIO_TRAFFIC = 0xff;
GREEN00 = 1;
RED00 = 1;
RED10 = 0; //南北方向人行道红灯亮
YELLOW11 = 0; //南北方向车道黄灯亮
RED00 = 0; //东西方向人行道红灯亮
RED01 = 0; //东西方向车道红灯亮
}
//东西方向通车和人行道
else if(second < 69)
{
displaydata[0] = 0x00; //第一位数码管不显示
displaydata[1] = 0x00; //第二位数码管不显示
displaydata[2] = smgduan[(68 - second)/10];
displaydata[3] = smgduan[(68 - second)%10];
displaydata[4] = 0x00; //第五位数码管不显示
displaydata[5] = 0x00; //第六位数码管不显示
displaydata[6] = displaydata[2];
displaydata[7] = displaydata[3];
Digdisplay();
//每次先所有的灯进行熄灭
GPIO_TRAFFIC = 0xff;
GREEN00 = 1;
RED00 = 1;
GREEN00 = 0; //东西方向人行道绿灯亮
GREEN01 = 0; //东西方向车道绿灯亮
上一篇:基于51单片机+bmp180的数字海拔计程序
下一篇:51单片机霍尔传感器电机测速设计
推荐阅读
史海拾趣
First Sensor公司电子行业的五个发展故事
故事一:初创与崛起
First Sensor的故事始于上世纪90年代初,当时它作为Silicon Sensor GmbH成立,标志着东德转型后科技领域的一次勇敢尝试。公司由Bernd Kriegel博士与21位前VEB电视电子元件厂员工共同创立,初期面临资金、机器和客户短缺的困境。然而,凭借着对传感器技术的坚定信念和专业知识,公司迅速在光子学、压力和先进电子领域开发出标准传感器和客户特定传感器解决方案。到1999年,公司成功上市,通过募集的资本进一步加速了其从初创企业向中型企业的过渡。
故事二:技术创新与市场拓展
进入21世纪后,First Sensor持续加大在技术创新和市场拓展上的投入。公司不仅专注于传感器技术的研发,还致力于提供从芯片到系统的完整解决方案。这一策略使得First Sensor在工业自动化、医疗设备和交通运输等多个领域取得了显著成就。特别是在医疗领域,公司开发的传感器广泛应用于呼吸机、血压计等关键设备中,并通过了EN ISO 13485认证,确保了产品的可靠性和安全性。
故事三:全球化战略与并购成长
随着业务的不断扩展,First Sensor开始实施全球化战略。公司在全球范围内设立了多个分支机构,生产和销售网络覆盖了全球多个市场。此外,公司还通过一系列并购活动进一步壮大了自身实力。例如,在2011年,First Sensor股份公司收购了Sensortechnics集团及其在德国境内外的子公司,这一举措不仅扩大了销售部门,还使公司能够为客户提供更加全面的个性化解决方案。
故事四:与TE Connectivity的合并
2019年,First Sensor迎来了一个重要转折点,即被TE Connectivity(泰科电子)收购。这一交易不仅巩固了TE在传感器领域的全球领导地位,还为First Sensor提供了更广阔的市场和技术资源。合并后,First Sensor的产品和客户群与TE的传感器产品组合相结合,为客户提供了更全面的一体化传感器解决方案。两家公司的互补技术和工程专业知识的结合,进一步推动了工业、医疗和交通运输市场的战略部署。
故事五:持续研发与未来展望
作为一家高科技企业,First Sensor始终将研发视为未来发展的核心。公司不断投资研发项目,推动传感器技术的进步和应用领域的拓展。例如,在自动驾驶和物联网等新兴领域,First Sensor的传感器技术发挥着重要作用。未来,公司将继续聚焦于具有技术特色的工业、医疗和交通等目标市场,紧跟行业发展趋势,为客户提供更加卓越的产品和服务。同时,First Sensor也将持续扩展全球版图,更加贴近市场与客户,以确保把握更多的销售潜力。
在近年来,随着人们对环境保护意识的提高,电子行业也开始注重绿色环保和可持续发展。Connor-Winfield积极响应这一趋势,将绿色环保理念融入到产品设计和生产过程中。公司采用环保材料和节能技术,努力降低产品对环境的影响。同时,公司还积极参与各种环保活动,推动电子行业的绿色发展。
以上是关于Connor-Winfield在电子行业中的5个发展故事。这些故事虽然可能并不完全准确反映公司的实际发展历程,但从中我们可以看出,Connor-Winfield在发展过程中始终注重技术创新、品质提升、市场拓展和环保可持续发展等方面的工作,这些努力使得公司在激烈的市场竞争中保持了领先地位。
喜美克斯(Cvilux)公司自创立之初,就以其对电子技术的深刻理解和创新精神在行业中崭露头角。公司的创始人是一位电子工程领域的资深专家,他带领着一支充满激情的年轻团队,针对当时市场上电子产品的一些痛点,开始研发具有自主知识产权的新技术。经过数月的努力,他们成功开发出了一款具有高效能、低功耗特点的电子芯片,这一创新技术迅速获得了市场的认可,为喜美克斯公司的发展奠定了坚实的基础。
喜美克斯(Cvilux)公司自创立之初,就以其对电子技术的深刻理解和创新精神在行业中崭露头角。公司的创始人是一位电子工程领域的资深专家,他带领着一支充满激情的年轻团队,针对当时市场上电子产品的一些痛点,开始研发具有自主知识产权的新技术。经过数月的努力,他们成功开发出了一款具有高效能、低功耗特点的电子芯片,这一创新技术迅速获得了市场的认可,为喜美克斯公司的发展奠定了坚实的基础。
喜美克斯公司深知人才是企业发展的核心动力。因此,他们高度重视人才的引进和培养。公司建立了一套完善的人才选拔和培养机制,通过内部培训、外部引进等多种方式,不断为公司注入新鲜血液。同时,公司还为员工提供广阔的职业发展空间和优厚的福利待遇,激发了员工的工作热情和创造力。这些举措为喜美克斯公司的长期发展提供了坚实的人才保障。
在电子行业的初期,由于缺乏统一的标准,各种电子产品之间的兼容性和互通性成为了一个大问题。这时,BSI作为国际标准化组织的重要参与者,积极推动了电子产品的标准化工作。通过与各国政府、行业协会和企业的合作,BSI制定了一系列电子产品的标准,为行业的发展提供了可靠的参考依据。这些标准的出台,极大地促进了电子产品的互通性和兼容性,推动了电子行业的健康发展。
PHILIPS STARplug TEA152X系列高效、低功耗电源管理器件 概述 TEA152x系列是开关电源的控制器IC,它直接对通用的主电路进行整流。它采用了高电压EZ-HV SOI工艺和低电压BICMOS工艺制造。器件包含高电压电源开关和并直接在经过整流的主电压下启动电路。 内置 ...… 查看全部问答∨ |
英飞凌(Infineon)日前宣布推出一款32位超标量微控制器TC1166,嵌入了实时性能和DSP功能,有极快的中断响应时间和最高级故障容差,适用于汽车电子和通用市场的AC和DC马达控制。 该控制器采用高性能有四级流水线的32位超标量TriCore?、V1.3 ...… 查看全部问答∨ |
特点:完善的设计规则设置,确保PCB设计符合要求 更加方便、快捷的层堆栈管理 超强的元器件布局功能 更加快捷的网络编辑功能 绝对畅快的焊盘处理功能 多重选择功能 可靠的设计规则检查 面向用户的PCB工作区 丰富的输出功能 完全可控的PCB打印… 查看全部问答∨ |
今天收到论坛赠送的<ARM嵌入式linux系统开发技术详解>这本书,书中光盘内容上传给大家,个人感觉这本书讲的挺好,涉及内容很多,共620页! 下面的文件中有一个2440开发板的PCB和 linux的电子书 [ 本帖最后由 daicheng 于 2009 ...… 查看全部问答∨ |
我的程序是: void CBrowserDlgDlg::OnButton1() { // TODO: Add your control notification handler code here // TODO: Add your control notification handler code h ...… 查看全部问答∨ |
|
服务器的scsi/raid驱动不安装,影响性能吗?就一个硬盘 现在我有一台服务器,之前安装的linux,没有管驱动的事情,现在改给windows,提示scsi/raid控制器的驱动没有安装, 我从网上查了一下说是支持磁盘阵列的问题,想问一下大家,我现在就一个硬盘,不安装可以吗?影响服务器的运行速度吗?… 查看全部问答∨ |
|
【TI原创】基于LM3S8962的网络收音机(六) --- 网络存储播放MP3 上一篇已经做好了PC端的测试程序,用来读写音频文件,并通过网路传输,这篇主要完成: 1. LM3S8962通过网络接收PC端的数据; 2. 存储数据到SD卡中 3. &nbs ...… 查看全部问答∨ |