第一范文网 - 专业文章范例文档资料分享平台

STC12C5A60S2单片机各个模块程序代码

来源:用户分享 时间:2025/6/1 0:55:37 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

//* 输出: date - 返回的数据

//**********************************// uchar Read_Date(void) {

uchar date;

while(Busy()); //忙 RS = 1; RW = 1; E = 0; _nop_(); _nop_(); _nop_(); E = 1;

Delay_ms(1); date = P2; Delay_ms(1); E = 0; _nop_(); return date; }

//**********************************// //* 名称: Init_LCD() //* 功能: 初始化LCD //* 输入: 无 //* 输出: 无

//**********************************// void Init_LCD(void) {

Delay_ms(4);

PSB = 1;//并行方式 Delay_ms(4);

Write_Cmd(0x0c);//开显示关游标 Delay_ms(4);

Clear_Screen();//清屏 }

//**********************************// //* 名称: Location() //* 功能: 设定显示位置

//* 输入: x,y --X轴点 --Y轴点 //* x 只能是1-4中的一个数 //* Y 只能是0-7中的一个数 //* 输出: 无

//**********************************// void Location( uchar x, uchar y )

{

uchar position; if( x == 1 ) x = 0x80; else if( x == 2 ) x = 0x90; else if( x == 3 ) x = 0x88; else if( x == 4 ) x = 0x98; position = x + y;

Write_Cmd(position); Delay_ms(2); }

//**********************************// //* 名称: Clear_Screen() //* 功能: 清屏 //* 输入: 无 //* 输出: 无

//**********************************// void Clear_Screen(void) {

Write_Cmd(0x34); //扩充指令 Delay_ms(11); //10ms

Write_Cmd(0x30); //基本指令 Delay_ms(1);

Write_Cmd(0x01);//清屏 Delay_ms(10); }

//**********************************// //* 名称: Write_str()

//* 功能: 向12864里写字符串 //* 输入: *p -- 字符串地址 //* 输出: 无

//**********************************// void Write_str( uchar *p ) {

while( *p != '\\0' ) {

Write_Date(*p); p++; } }

//*********************************//

//* 名称:Printf_Decimal() //* 功能:打印浮点类型数据

//* 输入:double Num --要打印的数据 //* 输出:无

//*********************************// void Printf_Decimal(double Num) {

uchar s[6] = {0,0,46,0,0}; uint t;

t = (uint)(Num * 1000); s[0] = t/10000+48;

s[1] = t000/1000+48; s[3] = t00/100+48; s[4] = t0/10+48; s[5] = t+48; Location(1,2); Write_str(s); SendData(s[0]); SendData(s[1]); SendData(s[2]); SendData(s[3]); SendData(s[4]); SendData(s[5]); SendData('\\t'); }

//****************************************************************************//

// STC12C5A60S2 PCA/PWM模块 // //

// 说明: STC12C5A60S2单片机有两路可编程计数器阵列(PCA)模块,可用于软件

// 定时器,外部脉冲的捕捉、高速输出以及脉宽调制(PWM)输出 //

// 涉及寄存器:CMOD(PCA工作模式寄存器) CCON(PCA控制寄存器) // CCAPM0,CCAPM1(PCA比较/捕获寄存器)

// CH,CL(PCA的16位计数器)、CCAPnL,CCAPnH(PCA捕捉/比较寄存器)

// PCA_PWM0,PCA_PWM1(PCA模块PWM寄存器) // AUXR1(辅助寄存器1) // //

// 程序说明: 本程序实现对PCA/PWM模块的四种工作模式的测试。 //

// 注意:当选择相应的模式时,需在主函数内和中断服务内更改相应模式的初始

// 和相应的中断服务程序。去掉注释即可,若要更改相应模式的功能,需在相应

// 的初始化函数里更改相应的参数,脉宽调制(PWM)默认设置为无中断方式

////****************************************************************************//

#include #include

#define uchar unsigned char #define uint unsigned int

/*******高速模式变量更改*********/ #define FOSC 12000000

#define T100KHz (FOSC/2/100000) //高速脉冲输出频率计算: f = PCA模块的时钟源/(2*CCAP0L)

//CCAP0L = PCA时钟源/2/f /*******定时模式变量更改*********/

#define T5ms (0.005*FOSC) //定时计数值=T/(1/PCA的时钟源) /*******PWM模式变量更改**********/ #define DR_50 0x7f //50%占空比 #define DR_10 0x19 //10%占空比

/*******时钟源选择*******/ #define CLK_0 0x00 //Sysclk/12 #define CLK_1 0x02 //Sysclk/2

#define CLK_2 0x04 //定时器0的溢出脉冲

#define CLK_3 0x06 //ECI/P1.2(P4.1)输入的外部时钟 #define CLK_4 0x08 //Sysclk #define CLK_5 0x0a //Sysclk/4 #define CLK_6 0x0d //Sysclk/6 #define CLK_8 0x0e //Sysclk/8 /********模式选择********/

#define H_model 0x4d //高速输出模式,中断模式 #define T_model 0x49 //定时模式

#define P_model 0x42 //无中断PWM模式

#define PL_model 0x63 //由低变高可中断PWM模式 #define PH_model 0x53 //由高变低可中断PWM模式 #define PHL_model 0x73 //高低都可中断PWM模式 #define CU_model 0x61 //16位捕获,上升触发中断模式 #define CD_model 0x51 //16位捕获,下降触发中断模式 #define CUD_model 0x71 //16位捕获,跳变触发中断模式

uint value = T100KHz; //100kHz时的CCAP0L值

uint time = T5ms; //5ms时的CCAP0L和CCAP0H值

搜索更多关于: STC12C5A60S2单片机各个模块程序代码 的文档
STC12C5A60S2单片机各个模块程序代码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0amrm5im213x5if1kn1g_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top