材料:实验板一块(可以买现成的,也可以买面包板自己搭建),电阻、LED灯 若干,5V电源等。以下程序可以直接用Keil C 直接编译执行。//可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。//具体实现

我们得出在不同LED小灯被点亮的时候,P1端口输出的状态程序流程图还是比较简单的,P1口在间隔一段时间之后,输出不同的值,然后返回到程序执行的起点,重新开始执行,这样就会循环往复不断地出现流水的效果。

实验操作:1、设计8个循环点亮的LED灯,1、2、3、4、5、6、7、8顺序点亮。程序: ORG 0000H LJMP START ORG 0100H START: MOV A,#007FH LOOP: RL AMOV P1,ALCALL DELAY1JMP LOOP DELAY2: MOV R1,#127 DEL

一般来说,实现流水灯功能需要以下步骤:首先确定单片机型号和开发环境,并熟悉指令集和寄存器配置。然后确定LED灯的连接方式,并编写程序来控制LED灯的亮灭状态。最后在程序中添加延时函数来实现LED灯的亮灭延迟。在编写程序时

单片机LED流水灯实验怎么设计?

1.设计原理 STC12C5A60S2单片机内部包括微处理器、存储器(存放程序指令或数据的ROM、RAM等)、输入/输出口(I/O口)及其他功能部件如定时/计数器、中断系统等。它们通过地址总线、数据总线和控制总线连接起来。本实验充分

主要内容详细介绍的是使用单片机进行LED高低电平交替闪烁流水灯实验的详细资料说明。实验目的及要求 1. 正确安装keil软件 2. 在 Proteus 的环境下,设计硬件原理图; 3.在keil 集成环境下设计C语言程序; 4. 在 Proteus 的

实训项目(一) 流水灯 1. 实验目的通过此实验让用户进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及Ver-ilog HDL的编程方法;学习简单时序电路的设计和硬件测试.2. 实验内容本实验的内容是建立可用与控制LED流水灯的简

就会出现,移位产生一个0,在或运算时就会被重新置1,如此循环,就进入不到第二个LED,也就不会出现流水灯了。可以自己尝试下。向右流水,效果是一样的,需要注意的是初值更改为左侧为0,就是0x7f,0111 1111,然后移位

单片机原理流水灯实验报告:本实验的目的是通过使用单片机,来实现流水灯的功能。实验中,使用了AT89C51单片机,通过设置定时器,实现了不同的流水灯灯序,并使用外部中断按键,来控制流水灯的开关。实验的结果表明,单片机通过定

单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注

单片机原理流水灯实验报告

1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

如何用单片机控制LED灯的亮度,不要PWM波的程序 程序名称:一只按键控制两只LED灯十种亮度显示 编程人:xx 备注:此程序简单 #include *** it d1=P1^7;、、 定义LED灯1 *** it d2=P

sbit LED1=P1^7; //位定义。void delay_ms(uint);//mS级带参数延时函数。void main(){ while(1){ LED1=0;delay_ms(1000);LED1=1;delay_ms(1000);} } void delay_ms(uint z) //延时子程序 { uint x,

1.准备材料:您需要准备以下材料:单片机(如Arduino、STM32等)LED灯 电阻(用于限流,防止LED过电流损坏)连接线 2.连接电路:将LED灯与单片机连接起来。一般情况下,将LED的正极连接到单片机的一个GPIO引脚,将LED的负极连

首先是控制LED的意义:(通常初学单片机的人控制LED是用并口,也就是掌握IO口输入输出功能、相应的寄存器等等,简单了解一下单片机,以及对于单片机每个功能模块的学习应该怎么入手等等。当然控制LED并不是只能用并口,用串口、红

单片机控制LED灯程序设计总结300字(急!!)

你只要知道怎么控制IO就可以了。不知道你的LED是采用什么方式接入P1口的,如果是LED正极经过限流电阻接正电源,负极接P1口的话,那么就是当P1口某个引脚为低电平时,LED点亮。这样的话,你这个1357,2468不知道是先亮1,然

1、电路有四个控制按键,四个灯,四个数码管;2、按键1,按下,,第一个数码管开始从0-9递增,同时第一个灯亮;3、按键2,按下,第二个数码管开始从0-9显示偶数,同时四个灯的偶数灯亮(即2、4个灯亮);4、按

单片机实验报告南京理工大学紫金学院电光系一、实验目的1、学习I/O口的使用。2、学习延时子程序的编写和使用。3、掌握单片机编程器使用和芯片烧写方法。二、实验原理1.灯闪烁实验(1)在P1.0端口上接一个发光二极管L1,使L

单片机io开关量输入实验原理是连接外部开关、IO口初始化、程序循环、去抖动处理。1、连接外部开关:将外部开关和单片机的IO口相连,当外部开关打开时,IO口检测到高电平信号,反之则是低电平信号。2、IO口初始化:在代码中对

单片机IO口控制实验

本实验程序设计可参考程序流程3.2图3.1灯闪烁实验电路原理 图3.2程序流程图2.广告流水灯实验(1)做单一灯的左移右移,硬件电路图如图3.3所示,八个发光二极管L1-L8分别接在单片机的接口上,输出“0”时,发光二极管亮

1.设计原理 STC12C5A60S2单片机内部包括微处理器、存储器(存放程序指令或数据的ROM、RAM等)、输入/输出口(I/O口)及其他功能部件如定时/计数器、中断系统等。它们通过地址总线、数据总线和控制总线连接起来。本实验充分

主要内容详细介绍的是使用单片机进行LED高低电平交替闪烁流水灯实验的详细资料说明。实验目的及要求 1. 正确安装keil软件 2. 在 Proteus 的环境下,设计硬件原理图; 3.在keil 集成环境下设计C语言程序; 4. 在 Proteus 的

实训项目(一) 流水灯 1. 实验目的通过此实验让用户进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及Ver-ilog HDL的编程方法;学习简单时序电路的设计和硬件测试.2. 实验内容本实验的内容是建立可用与控制LED流水灯的简

就会出现,移位产生一个0,在或运算时就会被重新置1,如此循环,就进入不到第二个LED,也就不会出现流水灯了。可以自己尝试下。向右流水,效果是一样的,需要注意的是初值更改为左侧为0,就是0x7f,0111 1111,然后移位

单片机原理流水灯实验报告:本实验的目的是通过使用单片机,来实现流水灯的功能。实验中,使用了AT89C51单片机,通过设置定时器,实现了不同的流水灯灯序,并使用外部中断按键,来控制流水灯的开关。实验的结果表明,单片机通过定

单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注

单片机原理流水灯实验报告

单片机的led点阵广告牌主要技术指标刷新率如下。工作原理 该系统与上位机的通信由AT91M42800A的USART0口与485接口电路完成,上位机仅需将要显示的数据,传送至AT91M42800A即可。开机后,AT91M42800A初始化,读入启动代码后,

急急!用单片机实现LED/LCD广告牌的设计 需要与PC机构建接口,其中LED显示用16*16点阵实现,并且要建一个字库,至少需要英文标点等100多个。最终实现的是在电脑上打一行英文,在显示屏上同时要显示出来、请高手同志帮帮忙哈。 需要与

文中提出了一种利用PC机和单片机的通讯来实现显示屏灵活的动态显示和远程监控的设计方法,同时该方法还可以将显示内容在PC机上进行预览。 关键词:LED;动态显示;远程控制;显示预览 1引言 LED 点阵电子显示屏是集微电子技术、计算机技术、

对共阳极数码管则刚好相反,高电平时不亮,低电平时亮。这种器件根据显示数位分类,可以分为一位、双位和多位LED显示器,一位LED显示器就称作LED数码管,两位以上的一般就称作LED显示器。要实现LED的汉字显示在进行、列的扫

点阵LED广告牌主要由单片机AT89C51、4个74HC595、1个74HC154、2个74HC240、2个16×16的LED构成,系统框图如下图所示。点阵LED广告牌的系统框图 该电路所设计的广告牌可显示多个汉字,需要2个16×16LED点阵模块,可组成16×3

单片机课程设计题目:自动滚动广告牌所在院系:机电汽车工程学院专业:机101-4班学号:姓名:完成日期:指导教师:目录一、课程设计任务书二、设计项目简介(一)设计思路(二)任务分工三、设计过程(一)电路原理图及各器件原

设计名称基于单片机的LED电子广告牌的设计和实现学校陕西电子科技职业学院学院电子工程学院学生姓名雷超凡班级1507指导教师聂弘颖时间2017年10月21日1.1LED点阵汉字显示系统 由于单片机技术的不断发展和高亮度LED发光管的出现,使得

基于单片机的LED电子广告牌设计实现

LED是发光二极管Light Emitting Diode的英文缩写。 LED应用可分为两大类:一是LED单管应用,包括背光源LED,红外线LED等;另外就是LED显示屏,目前,中国在LED基础材料制造方面与国际还存在着一定的差距,但就LED显示屏而言,中国的设计和生产技术水平基本与国际同步。 LED显示屏是由发光二极管排列组成的一显示器件。它采用低电压扫描驱动,具有:耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远等特点。 LCD显示器的原文是Liquid Crystal Display,取每字的第一个字母组成,中文多称「液晶平面显示器」或「液晶显示器」。其工作原理就是利用液晶的物理特性:通电时排列变得有序,使光线容易通过;不通电时排列混乱,阻止光线通过,说简单点就是让液晶如闸门般地阻隔或让光线穿透。 LCD的好处有: 与CRT显示器相比,LCD的优点主要包括零辐射、低功耗、散热小、体积小、图像还原精确、字符显示锐利等。 选购LCD,有几个基本指针: 高亮度:亮度值愈高,画面自然更亮丽,不会朦胧雾雾。亮度的单位为cd/m2,也就是每平方公尺分之烛光。低阶的LCD亮度值,有低到150 cd/m2,而高阶的显示器,则可高达250cd/m2。 高对比:对比愈高,色彩更鲜艳饱和,且会显的立体。相反的,对比低,颜色显的贫瘠,影像也会变得平板。对比值的差别颇大,有低到100:1,也有高到600:1,甚至更高。 宽广的可视范围:可视范围简单的说,指的是在屏幕前画面可以看的清楚的范围。可视范围愈大,自然可以看的更轻松;愈小,只要观看者稍一变动观看位置,画面可能就会看不清楚了。可视范围的算法是从画面中间,至上、下、左、右四个方向画面清楚的角度范围。数值愈大,范围自然愈广,但四个方向的范围不一定对称。当上下、左右对称时,某些厂商会将两边的角度值相加,标示为水平:160°;垂直:160°;也可能分开标示为左/右:± 80°;上/下:± 80°。某些LCD机种的单一角度,甚至只有40°~50°. 快速讯号反应时间:讯号反应是指系统接收键盘或鼠标的指示后,经CPU计算处理,反应至显示器的时间。讯号反应对动画和鼠标移动非常重要,此现象一般而言,只发生在LCD液晶显示器上,CRT传统显像管显示器则无此问题。讯号反应时间愈快,作业处理自是愈方便。观察的方法是之一是将鼠标快速移动(亦即鼠标不断下指示给系统,系统则不断将讯号反应给显示器),在一般低阶的LCD显示器上,光标在快速移动时,过程中会消失不见,直到鼠标定位,不再移动后一小段时间,才会再度出现;而在一般速度动作时,移动过程亦会清楚的看到鼠标移动痕迹。而VE500的超快讯号反应时间快达16ms(毫秒),则让光标移动无时差,移动过程清楚易见,不带来作业困扰。 LED 发光二极管特征. LED须采用超高亮发光材料,亮高度(UHB)是指发光强度达到或超过100mcd的LED,又称坎德拉(cd)级LED。高亮度A1GaInP和InGaN LED的研制进展十分迅速,现已达到常规材料GaA1As、GaAsP、GaP不可能达到的性能水平。1991年日本东芝公司和美国HP公司研制成 InGaA1P 620nm橙色超高亮度LED,1992年InGaA1p590nm黄色超高亮度LED实用化。同年,东芝公司研制InGaA1P 573nm黄绿色超高亮度LED,法向光强达2cd。1994年日本日亚公司研制成InGaN 450nm蓝(绿)色超高亮度LED。至此,彩色显示所需的三基色红、绿、蓝以及橙、黄多种颜色的LED都达到了坎德拉级的发光强度,实现了超高亮度化、全色化,使发光管的户外全色显示成为现实。发光亮度已高于1000mcd,可满足室外全天候、全色显示的需要,用LED彩色大屏幕可以表现天空和海洋,实现三维动画。新一代红绿、蓝超高亮度LED 达到了前所未有的性能。 室外屏象素目前均由红/绿/兰三种基色的若干个单管LED构成,常用成品有象素筒和象素模组两种结构。象素尺寸多为12-26毫米,象素组成:单色以2R/3R/4R、伪彩以1R2YG/1R3YG/1R4YG、真彩以2R1G1B等组成形式居多。 室外屏系统方案设计原则(内容不做叙述) △结构设计原则 △亮度与配色依据 △可靠性设计原则 △安全性设计原则 △易管理及可操作性设计原则 屏体安装方式 △墙挂式:即显示屏背靠墙面,并固定在墙面上。此方式为常见方式,而且校易实现。 △坐立式:即显示屏坐立在平台上。此方式最易实现,在条件许可的场合应优先采用这种安装方式。 △镶嵌式:即显示屏镶嵌在一个墙框内。此方式不多见,如果墙面凹陷深度不够,须考虑其维护性。 △侧挂式:即显示屏两侧受力,侧挂在两建筑物或立柱之间。此方式常用于空旷场地的屏体悬挂,两立柱依据屏体的悬挂要求搭建。 显示控制系统 大成显示控制系统由采集/发送子系统和接收/灰度处理子系统两部份组成,其前端为计算机的VGA特征输出接口或带有数字化分量输出的多媒体卡,传输由超五类双绞线实现,后端为电子显示屏显示单元。采集/发送子系统以每秒不少于60幅的帧频采集24 Bits真彩色信号,并以双存贮器交替工作的方式平稳地写入到自带的显示缓存中,在中心处理单元的控制下完成灰度的权值变换,通过LVDS差分至超五类双绞线通道上。超五类双绞线实现采集/发送子系统与接收/灰度处理子系统之间的连接,完成信号的传输。在不带中继的情况下,最长传输距离可达300米。 灰度实现描述 大成接收/灰度处理子系统自超五类双绞线上接收24 Bits真彩色信号,权值分别为20、21、22、存23、24、25、26、27,每个基色有八个权值分量,通过CPLD控制从而实现256级灰度控制信号。在视频接收电路、储电路、高速度写电路、显示屏控制扫描电路中都进行了抗干扰处理,且有150Hz的显示屏刷新频率,因而具有极强的稳定性与实时性,保证真正24位真彩效果。 红绿兰三种基色各256级灰度的不同组合能产生的颜色数为:256×256×256 = 16777216种颜色(即16M色) 非线性γ校正 视频信号是为满足电视机的发光特性和电特性而设计的,它可以在电视上或显示器上播放。如果对电视信号不作校正,就会产生严重的色彩失真。因此我们对输入的视频信号前端须进行非线性γ校正,校正后的色度空间会有了明显改善。对应于LED大屏幕,物理亮度与灰度值成正比,如不作校正,明显不能满足色彩还原的要求,具体在显示效果上就是:低级灰度跳变很大,而高级灰度又分不清楚。众所周知,人眼对光强的感受是非线性的,弱光时,光强增加一倍,人眼感觉到的增强多于一倍;强光时,光强增加一倍,人眼感觉到的增强不足一倍,因此需要把灰度做非线性变换,使低灰度时时间距小,高灰度时时间距大。所以为保证LED大屏幕色彩完整还原,必须进行反伽玛校正,经过校正以后,使它的特性与CRT相近。我们可以明显看出,经灰度校正后的显示画面会显得纹理清晰,层次感强,亮度柔和,明暗过渡平缓。 真彩屏白平衡、色偏差及色彩丰富性的技术保证 白平衡是指当每种基色都达到最高一级的亮度时,在一定的距离以外视觉上呈现出色温为6500K的白色色偏差是指LED发光管尤其是红色发光管的亮度随温度变化而改变的一种现象。色偏差的存在,说明了一个在特定温度下生产调试达到白平衡的显示屏,随着工作温度的变化会失去平衡,或者由于屏内的温度分布不均匀使得整个显示屏播放一段时间后会呈现"花脸"现象。本公司针对真彩显示屏的色偏差而引起的问题,有一套全面的解决方案它能有效地保证真彩显示屏的色彩丰富性和一致性。 智能监控与保护系统 智能监控系统由各类传感器、监测系统和控制计算机构成,用于监测显示屏工作环境参数,适时控制相关保护系统,确保显示屏正常工作,性能参数不发生校大的偏移。保护系统包括:散热系统、防水系统、配电系统避雷系统等。 控制软件 显示屏系统的正常运行,须有相关软件的支持。我公司软件设计师通过精心编制、组合,创建了一套功能强大、操作简便的软件配置系统。在该套软件系统中,根据软件作用的不同,我们把它们划归为两类:一类为显示控制软件,主要完成文字、动画和视频图像的播放与切换控制,它们是显示屏工作的基本软件;另一类为内容编辑软件主要用于创意制作和图文编辑,它们可使显示屏的显示内容得到不断更新和变换。 LCD又分 STN TFT TFD等 1.什么是STN? STN(SuperTwistedNematic)是用电场改变原为180度以上扭曲的液晶分子的排列从而改变旋光状态,外加电场通过逐行扫描的方式改变电场,在电场反复改变电压的过程中,每一点的恢复过程较慢,因而产生余辉。STN和TFT最大的两个区别就在于TFT表现效果比STN好,但是STN又比TFT省电。 2.什么是TFT? TFT(ThinFilmTransistor)是指薄膜晶体管,意即每个液晶像素点都是由集成在像素点后面的薄膜晶体管来驱动,从而可以做到高速度、高亮度、高对比度显示屏幕信息,是目前最好的LCD彩色显示设备之一,其效果接近CRT显示器,是现在笔记本电脑和台式机上的主流显示设备。TFT的每个像素点都是由集成在自身上的TFT来控制,是有源像素点。因此,不但速度可以极大提高,而且对比度和亮度也大大提高了,同时分辨率也达到了很高水平。 3.什么是TFD? 移动电话的进步仍在继续,在这种情况下,人们对LCD性能有了更高的要求.以下是未来移动电话彩色LCD的重要性能特征:(1) 高画质;2) 低功耗;(3) 能够处理活动图像;4) 结构紧凑;爱普生有限公司已经进行了一种有源点阵LCD-D-TFD(数码薄膜二极管)的商业化生产,并已成为主要的数码相机生产商之一。其中的一个重要原因是:低功耗(D-TFD的特点)和高画质/高反应速度(有源点阵LCD的特点)符合数码相机的要求。通过将高画质、低功耗和结构更加紧凑的新技术应用于这种D-TFD,我们高水平地实现了对下一代移动电话的上述四项要求。这种LCD被称为"MD-TFD"。 4.TFT、STN和TFD液晶显示屏有何不同? 手机使用的显示屏有STN方式、TFD方式和TFT方式3种类型。其中图像质量最好的是TFT方式,笔记本电脑中所使用的显示屏大部分都是这种类型。但TFT虽然画面精美,耗电量却较大,因而对于手机而言,具有电池不耐用的缺点。STN方式虽然在图像质量方面最差,但是具有耗电量小、成本低的优点。TFD恰恰定位在TFT与STN的中间位置。图像质量虽然略逊于TFT,但耗电量少于TFT
基于单片机的LED条形点阵屏控制器设计与实现 你好,大神,现成的,范本给你参考,之前俺自己完成的
程序和电路都已经帮你弄好了,功能可以实现,如果觉得对你有用,请选最佳答案。用两个74hc138(三八译码器)一个74hc139(二四译码器)就可以实现,电路如图,成为如下:#include #include #define uchar unsigned char sbit ctrl1=P3^0; sbit ctrl2=P3^1; sbit ctrl3=P3^2; uchar t,i,g; void init() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器中断0 TR0=1; t=0; } void main() { init(); while(1) { ctrl1=1; ctrl2=0; ctrl3=1; P2=0X00; g=P2; for(i=0;i<8;i++) { P2=g; while(t!=20); t=0; g=g+1; } ctrl2=1; ctrl1=0; g=0x00; for(i=0;i<8;i++) { P2=(g+i<<3)+0x07; while(t!=20); t=0; } ctrl1=0; ctrl2=0; ctrl3=0; g=0x00; for(i=0;i<4;i++) { P2=(g+i<<6)+0x3f; while(t!=20); t=0; } } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t++; }
12MHz应该是51单片机的晶振频率吧?12MHz经过51单片机12分频得到1MHz的时钟频率,最终执行一条指令1us。你这程序里R6,R7初始值都为0,所以一共就执行了5条指令,耗时5us。
C语言实现LED灯闪烁控制配套51单片机开发板。 #include //包含单片机寄存器的头文件 /****************************************函数功能:延时一段时间 *****************************************/ void delay(void) //两个void意思分别为无需返回值,没有参数传递。 { unsigned int i; //定义无符号整数,最大取值范围65535。 for(i=0;i<20000;i++) //做20000次空循环。 ; //什么也不做,等待一个机器周期。 } /******************************************************* 函数功能:主函数 (C语言规定必须有也只能有1个主函数)。 ********************************************************/void main(void) { while(1) //无限循环。 { P0=0xfe; //P1=1111 1110B, P0.0输出低电平。 delay(); //延时一段时间。 P0=0xff; //P1=1111 1111B, P0.0输出高电平。 delay(); //延时一段时间。 } } 单片机驱动LED灯的源程序: #include //头文件。 #define uint unsigned int #define uchar unsigned char sbit LED1=P1^7; //位定义。 void delay_ms(uint);//mS级带参数延时函数。 void main() { while(1) { LED1=0; delay_ms(1000); LED1=1; delay_ms(1000); } } void delay_ms(uint z) //延时子程序 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } 扩展资料: 单片机应用分类: 通用型: 这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。 总线型: 这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。 另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。 控制型: 这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。 通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。 参考资料来源:百度百科-单片机
/***32灯流水——火柴天堂作品-20130520***/ /***52单片机,12MHz晶振,P0-P3 接32颗LED,低电平驱动***/ #include"REG52.h"//包含52头文件 #define TRUE 1//定义布尔量'1':真 #define FALSE 0//定义布尔量'0':假 #define uchar unsigned char//定义 无符号字符型数据 简称 #define uint unsigned int//定义 无符号整型数据 简称 #define th0 0xb1 #define tl0 0xe0//20ms at 12MHz Fosc in Model 1 #define LED_Port1 P0 #define LED_Port2 P1 #define LED_Port3 P2 #define LED_Port4 P3 #define LED_AllOff LED_Port1=LED_Port2=LED_Port3=LED_Port4=0xff #define LED_AllOn LED_Port1=LED_Port2=LED_Port3=LED_Port4=0 #define LED_Status 43//1步全亮+32步单亮+10步闪烁 #define LED_Marquee 32 bit T20msFlag=0; void Timer0() interrupt 1 { TL0=tl0; TH0=th0; T20msFlag=TRUE; } void TimerInit() { TMOD=0x01; TH0=th0; TL0=tl0; TR0=1; ET0=1; EA=1; } void LED_Out() { static uchar led_status=0; if(T20msFlag) { T20msFlag=FALSE; led_status=++led_status%LED_Status; } if(led_status && led_status<=LED_Marquee) { LED_AllOn; switch((led_status-1)>>3) { case 0:LED_Port1=1<<((led_status-1)%8);break; case 1:LED_Port2=1<<((led_status-1)%8);break; case 2:LED_Port3=1<<((led_status-1)%8);break; case 3:LED_Port4=1<<((led_status-1)%8);break; default:led_status=0;break; } } else { if(!led_status && led_status%2) LED_AllOn; else LED_AllOff; } } void main() { TimerInit(); while(1) { LED_Out(); } }