Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16182
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-15 18:03
个人简介

穷且益坚,不坠青云之志

文章分类
文章存档

2014年(2)

我的朋友

分类: 嵌入式

2014-07-01 22:31:05

注:(参考郭天祥51单片机教学)
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit D2 = P2^6;
sbit D3 = P2^7;
void delay(uint n);
uint m = 0 , k = 0;
uchar code table[] = {  
0x3f,0x06,0x5b,0x4f,0x66,0x6d ,  //对数码管进行编码,由0-F
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void main()
{
TMOD = 0x01; 
TH0 = (65536-50000)/256; //给计数器装初值,格式如此
TL0 = (65536-50000)%256;  
TR0 = 1;
EA = 1;   //开总中断
ET0 = 1; //开定时器中断
D3 =  1; 
P0 = 0x00;
D3 = 0; 
P1 = 0xfe;
        delay(200);
      while(1)
{
      P1 = _crol_(P1,1); //库函数,《instrins.h》中实现循环左移,由此产生流水灯效果
      delay(200);
}
}
void delay(uint n)  //延时函数
{
uint i,j;
for(i = n;i>0;i--)
for(j = 110;j>0;j--);
}

void timer0() interrupt 1      //定时器中断函数
{
TH0 = (65536-50000)/256;  //重新装初值
TL0 = (65536-50000)%256; 
m++;
        if(m == 40)                      //判断所需时间是否已经满足,40倍的定时时间既是40x50ms ==2s
{

m = 0;
D2 = 1;
P0 = table[k];  //将table数组里的值赋值,实现数码管显示
D2 = 0;
k++;
if(k ==16)    //清0实现数码管由0-F循环显示
k = 0;
}
}

注:此程序中涉及到的知识点讲解如下:
  1. 数码管的显示原理
  • 数码管分为两种:共阴极和共阳极
  • 程序中使用共阴极数码管,具有共性的一极被称为位选,另一端被称为段选(a.b.c.d.....).段选控制亮的数字或者说亮什么,而位选控制亮哪个数码管。
  • 每一个数码管都是由a.b.c.d.e.f.g.dp八个发光耳机管组成,通过与单片机相连,受到控制输入电平,实现各个二极管的亮灭,从而实现数码管显示数字,二极管显示数字编码如下:0-F  
  • 0x3f,0x06,0x5b,0x4f,0x66,0x6d ,  //对数码管进行编码,由0-F
    0x7d,0x07,0x7f,0x6f,0x77,0x7c,
    0x39,0x5e,0x79,0x71
    2. 定时器
  • 在51单片机中有两种定时器,T0和T1。定时器由两个寄存器控制TMOD和TCON。前者控制定时器的工作模式,后者控制定时器的启动和结束还有溢出标志位。
  • 程序中所选定时器为16位定时器,即两个8位定时器组成TH0和TL0.一共可以装216个数(65535+1 =0),然后溢出变为0,中断标志位置位,向CPU发出中断请求,从而得到CPU的中断响应,进入到定时器中断服务程序。
  • 定时时间 = 计数个数x12x时钟震荡周期(一个机器周期脉冲,计数器加1)
  • 计数器初值 TH0= (65536-计数个数)/256    计数器初值TL0 = (65536-计数个数)%256 
  • 定时器最大的定时时间 = 65536x12x1/12MHZ ~~65ms,所以定时时间要求1s,就必须满足20次中断,每次中断为50ms,计数个数为50000.初值可以算出。保证每次进中断要重装一次初值,然后设置标志位,确定定时时间的到来。还要将标志位清0.
  • 定时器中断产生的必要条件:开总中断EA,开定时器中断ET0。



阅读(2721) | 评论(0) | 转发(0) |
0

上一篇:51单片机学习笔记之流水灯加蜂鸣器

下一篇:没有了

给主人留下些什么吧!~~