AT89C52单片机实验程序:发光二极管的亮灭、多个发光二极管分组循环交替亮灭、外部中断控制数码管循环显示0~9、定时器控制发光二极管的亮灭+简单输出连续矩形脉冲。
用keil编写程序实现下列功能:
在P1.0端口接一个发光二极管D1,使D1不停地一亮一灭,亮灭的时间间隔为0.2s。
要求:用Proteus仿真验证:
- 单片机选用AT89C52
- 提交仿真过程、结果和源程序
设计单片机与8个发光二极管和4个按键相连的Proteus仿真电路,编程实现如下功能:
- 按下K1,8个灯按照一定频率同时闪烁,频率自定
- 按下K2,使某个灯闪烁10次后,转到下个灯闪烁,从左往右(D1到D8)循环不停
- 按下K3,相邻的4个LED灯为一组,两组LED灯每隔约0.5秒交替发亮一次,周而复始
- 按下K4,从右往左依次点亮,然后全灭,不断循环
- K1按下,八个灯同时闪烁。即P1在0xff与0x00之间交替取值。
- K2按下,某个灯闪烁十次,然后从左往右循环。P1初始时为0xfe,然后P1在0xfe与0xff之间交替取值十次,即最左边的灯闪烁十次,然后右移,第二个做同样的操作,直到第八个灯也闪烁了十次,最后再左移即可。
- K3按下,相邻的4个LED为一组,交替发亮。即P1在0xf0与0x0f之间交替取值。
- K4按下,从右往左依次点亮,然后全灭,不断重复。从D8到D1,不断从1变为0即可。
设计单片机的Proteus仿真电路,实现如下功能:
- 控制P0口数码管循环显示0-9
- 按下上面开关,控制P2口数码管依次显示0-9
- 按下下面开关,控制P1口数码管依次显示0-9
- 控制P0口数码管循环显示0-9。使P0不断取DSY_CODE中的值,然后每次改变前延时。
- 外部中断INT0发生时,控制P2口数码管依次显示0-9。开启外部中断0,然后在中断处理函数里面使P2不断取DSY_CODE中的值,不循环。
- 外部中断INT1发生时,控制P1口数码管依次显示0-9。开启外部中断1,同时设置高优先级,中断处理函数同上。
设计单片机的Proteus仿真电路,实现如下功能:
- P1口控制8个发光二极管,P0连接数码管
- 利用定时器/计数器T0产生定时,采用中断方式,让8个发光二极管每隔1s依次点亮,全亮后全灭,再次开始循环
- 数码管从1开始,每点亮一个发光二极管,显示+1,显示9时二极管全灭,再次开始循环
- 系统的晶振频率fosc=12MHz,用Proteus仿真验证如下连续矩形脉冲:
- 八个发光二极管每隔1s依次点亮,同时数码管从1显示到8,9时全灭,然后不断循环。采用定时器0中断,事先写好依次点亮时的八种状态,然后每隔一秒P1变换到下一个状态。
- 高电平40ms,低电平360ms,采用定时器1中断,每次定时40ms,40ms时由高电平到低电平,400ms时候翻转即可。