登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 基础知识回顾

[复制链接]
发表于 2018-2-28 21:42:59 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机蜂鸣器和不同数据类型的相互转换
学习安排: 1天
开始时间: 2018-02-28
结束时间: 2018-02-28

蜂鸣器在结构上分为压电式和电磁式蜂鸣器 ,压电式为压电陶瓷片发音电流小,电磁式为线圈通电震动发音,体积小。按驱动方法分为有源和无源,源指振荡源。
用蜂鸣器实现4KHZ和1KHZ发声
#include<STC12C5A60S2.H>
unsigned char T0RH = 0;
unsigned char T0RL = 0;
void main()
{
   unsigned int i;
   TMOD = 0x01;
   EA = 1;
   while(1)
   {
      OpenBuzz(4000);
      for(i=0;i<40000;i++);
      StopBuzz();
      for(i=0;i<40000;i++);
      OpenBuzz(1000);
      for(i=0;i<40000;i++);
      StopBuzz();
      for(i=0;i<40000;i++);
    }
}
void OpenBuzz(unsigned int frequ)
{
    unsigned int reload;
    reload = 65536 -(11059200/12)/(frequ*2);
    T0RH = (unsigned char)(reload  >>  8);
    T0RL  =(unsigned char )reload;
    TH0  = 0xFF;
    TL0   = 0xFE;
    ET0 = 1;
    TR0 = 1;
}
void StopBuzz()
{
   ET0 = 0;
   TR0 = 0;
}
void InterruptTimer0() intetrupt 1
{
     TH0 = T0RH;
     TL0 = T0RL;
     P13 = ~P13;
}

C语言中不同数据类型之间可以混合运算,数据类型不同时 先转换为同一类型,再计算。有自动转换和强制转换。
①短字节的数据向长字节数据转换。
如: unsigned char a; unsigned int b; unsigned int c; c = a * b;
当a=100,b=700时c不是70000
变为c=(unsigned long )a*b;可以解决
②bit 类型变量 此为强制类型转换 如bit  a =0;  unsigned  char b;   a = (bit)b;  不是取b最低位而是它会判断b这个变量是0还是非0  是为0   不是都为1

好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表