求程序解析(13)

求程序解析(13),第1张

#include <absacc.h>//要使用XBYTE来访问绝对地址需要包含absacc.h头文件

#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)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8164552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存