#include <reg51.h>//包含头文件REG51.h,使能51内部寄存器
#define uchar unsigned char //后面用uchar来代替unsigned char
#define uint unsigned int//后面用uint来代替unsigned int
#define COM8255 XBYTE[0X060FF] /*命令字地址*///后面若出现COM8255,则单片机端口P0和P2联合输出0X060FF绝对物理地址(地址指向82C55指令寄存器)
#define PA8255 XBYTE[0X000FF] /*A口地址*///后面若出现PA8255,则单片机端口P0和P2联合输出0X000FF绝对物理地址(地址指向82C55的A组端口寄存器)
#define PB8255 XBYTE[0X020FF] /*B口地址*///后面若出现PB8255,则单片机端口P0和P2联合输出0X020FF绝对物理地址(地址指向82C55的B组端口寄存器)
#define PC8255 XBYTE[0X040FF] /*C口地址*///后面若出现PC8255,则单片机端口P0和P2联合输出0X040FF绝对物理地址(地址指向82C55的C组端口寄存器)
sbit SPK=P1^0 //定义蜂鸣器端口
sbit DQ=P1^2 //ds18b20 端口
sbit gao=P1^4//定义温度过高指示端口
sbit jinbao1=P1^6
sbit di=P1^5//定义温度过低指示端口
sbit jinbao2=P1^7
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF}//数码管显示“段码表”,显示0-f
uchar code poly[]={0xf7,0xfb,0xfd,0Xbf,0x7f}//数码管“位码表”,分别使能5个数码管
uchar temp//定义当前温度值的数值暂存器
unsigned char Shiwei //定义温度设定值的十位数值暂存器
unsigned char Gewei //定义温度设定值的个位数值暂存器
uchar flag_get,count,num,minute,second
uchar i,key,S,j
uchar keyscan(void)//函数申明
void delay1(uint i)//同上
unsigned char ReadTemperature(void)//同上
void Init_DS18B20(void)//同上
unsigned char ReadOneChar(void)//同上
void WriteOneChar(unsigned char dat)//同上
void delay(unsigned int i)//同上
/*******************
初始化1
********************/
void init(void)
{
TMOD|=0x01//T0被设置为定时器,且工作在方式1模式下
TH0=0xef//T0初值寄存器高位写入0XEF
TL0=0xf0//T0初值寄存器低位写入0XEF
IE=0x82//总中断允许,定时器T0中断允许
TR0=0//关闭T0
SPK=1//关闭喇叭
gao=0//关闭温度过高指示端口
di=0//关闭温度过低指示端口
jinbao1=0//警报端口1清零
jinbao2=0//警报端口2清零
key=0//按键键值清零
Shiwei=0//温度阀值十位显示0
Gewei=0//温度阀值个位显示0
COM8255=0X88 //定义C口高四位输入、低八位为输出
//单片机送出指令0x88到指令寄存器
//物理地址和具体的接线有关系
}
简易蜂鸣器程序:#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit P36=P3^6//我的系统板蜂鸣器口定义
sbit k1=P1^4//按钮1
sbit k2=P1^5//按钮2
void Delay(uint num)//延时函数
{uchar i,j
for(i=0i<255i--)
{for(j=0j>0j++)}
}
main()
{
while(1)
{
if(k1==0)
{P36=0//蜂鸣器响
Delay()
P36=1//蜂鸣器停
Dalay()
key_time()
}
}
}
1.beep.h文件中写入
//蜂鸣器端口定义
void BEEP_Init(void)//初始化
2.beep.c文件中写入
//初始化 PB8 为输出口.并使能这个口的时钟
//LED IO 初始化
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure //结构体指针
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)
//使能 GPIOB 端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8//BEEP-->GPIOB.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz//速度为 50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure)//根据参数初始化 GPIOB.8
GPIO_ResetBits(GPIOB,GPIO_Pin_8)//输出 0,关闭蜂鸣器输出
}
main主函数里面写入
//ALIENTEK 精英 STM32 开发板实验 2
//蜂鸣器实验
int main(void)
{
delay_init()//延时函数初始化
LED_Init()//初始化与 LED 连接的硬件接口ALIENTEK 精英 STM32F103 V1 开发板教程
BEEP_Init()//初始化蜂鸣器端口
while(1)
{
LED0=0 //位 *** 作,LED0为低电平
BEEP=0 //位 *** 作,BEEP为低电平
delay_ms(300) //延时300毫秒
LED0=1
BEEP=1
delay_ms(300)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)