博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单片机实验四:定时器控制发光二极管的亮灭+简单输出连续矩形脉冲
阅读量:2085 次
发布时间:2019-04-29

本文共 1489 字,大约阅读时间需要 4 分钟。

Description

设计单片机的Proteus仿真电路,实现如下功能:

  1. P1口控制8个发光二极管,P0连接数码管
  2. 利用定时器/计数器T0产生定时,采用中断方式,让8个发光二极管每隔1s依次点亮,全亮后全灭,再次开始循环
  3. 数码管从1开始,每点亮一个发光二极管,显示+1,显示9时二极管全灭,再次开始循环
  4. 系统的晶振频率 f o s c = 12 M H z f_{osc}=12MHz fosc=12MHz,用Proteus仿真验证如下连续矩形脉冲
    在这里插入图片描述

实验电路图

在这里插入图片描述

实验分析

  1. 八个发光二极管每隔1s依次点亮,同时数码管从1显示到8,9时全灭,然后不断循环。采用定时器0中断,事先写好依次点亮时的八种状态,然后每隔一秒P1变换到下一个状态。
  2. 高电平40ms,低电平360ms,采用定时器1中断,每次定时40ms,40ms时由高电平到低电平,400ms时候翻转即可。

源程序

#include
#include
#define uint unsigned int#define uchar unsigned char uchar t = 0, cnt = 1, n;sbit wave = P2^7;bit flag;uchar code DSY_CODE[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0-9uchar code LED_CODE[]={
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; //依次点亮void init_time0() {
P1 = LED_CODE[cnt - 1]; P0 = DSY_CODE[cnt]; TMOD = 0x01; //设置T0为定时器模式,工作方式在1 EA = 1; ET0 = 1; TR0 = 1;}void init_time1() {
TMOD = 0x11; EA = 1; ET1 = 1; TR1 = 1; wave = 1; //高电平 flag = 1;}void time0() interrupt 1 {
//定时器0中断服务程序 TH0=(65536-50000) / 256; TL0=(65536-50000) % 256; if(++t == 20) {
//1s t = 0; cnt++; P1 = LED_CODE[cnt - 1]; P0 = DSY_CODE[cnt]; if(cnt == 9) {
P1 = 0xff; cnt = 0; } }}void timer1() interrupt 3 {
TH1=(65536-40000) / 256; //40ms高电平 TL1=(65536-40000) % 256; if(flag) {
wave = ~wave; //变为低电平 flag = 0; } n++; if(n == 10) {
//400ms时候,此时低电平已经持续360ms,翻转 n = 0; wave = ~wave; flag = 1; }}void main() {
init_time0(); init_time1(); while(1);}

附录

矩形脉冲截图如下:

在这里插入图片描述
高电平:-760-(-800)=40ms,低电平:-400-(-760)=360ms。

转载地址:http://dmiqf.baihongyu.com/

你可能感兴趣的文章
为什么在优化算法中使用指数加权平均
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>
Java集合详解6:这次,从头到尾带你解读Java中的红黑树
查看>>
Java并发指南2:深入理解Java内存模型JMM
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>