包含文件和仿真文件的下载地址:http://www.51hei.com/f/stc12c5a60s2_spwm.zip
下面是主程序部分:
#include
#include
#define uint unsigned int
uchar index;
uchar a;
void init_pca(void)//pca计数器初始化函数
{
CMOD=0x04;//计数器0的溢出为PCA计数器的时钟源
CCON=0x00;
CCAPM0=0x42;//8位PWM输出,无中断
CL=0x00;//清零pca计数器
CH=0x00;
CCAP0L=pwm[0]; //初始化spwm输出的占空比
CCAP0H=pwm[0];
CR=1;//运行pca计数器
}
void init_timer(void)//计数器初始化函数
{
TMOD= 0x12; //计数器0工作在方式模式2,计数器1工作在方式1
TH0 = 0xFF;//T0的计数值为5,把时钟源5分频
TL0 = 0xFF;
TH1 = 0xF6;//T1的计数值为625,若是12M晶振,则中断频率为12M/625=1920HZ,正弦频率为1920/32=600HZ,即600/12=50HZ
TL1 = 0xA0; //T1的计数值低位
AUXR=0x80;//计数器均工作在8051速度
//ET0 = 1; //开中计数器0断
ET1 = 1; //开计数器1中断
TR0 = 1; //开启计数器0
TR1 = 1; //开计数器1
}
void int_timer1(void) interrupt 3//计数器1中断函数
{
CR=0;
a=a+1;
index++; //查表索引
TH1=0xFD; //重装计数值
TL1=0x8F;
CCAP0H=pwm[index%32]*2;//改变pwm的占空比
CR=1;
}
void main()
{a=0;
EA=1;//开总中断
init_pca();
init_timer();
while(1);
//-.-//
}
关键字:stc12c5a60s2 单片机 spwm
引用地址:
stc12c5a60s2单片机spwm发生程序带仿真文件
推荐阅读最新更新时间:2024-03-16 14:04
单片机LCD实验2
代码如下: #include reg51.h #include intrins.h typedef unsigned char BYTE; typedef unsigned int WORD; typedef bit BOOL ; sbit rs = P2^0; // sbit rw = P2^1; sbit ep = P2^2; BYTE code dis1 = { welcome! }; BYTE code dis2 = { china !!!refuel! }; delay(BYTE ms) { // 延时子程序 BYTE i; while(ms--) { for(i =
[单片机]
单片机试验三:跑马灯试验
前面做了二极管的点亮与熄灭和二极管闪烁试验,在这基础上再来做一个跑马灯试验。所用到的器件也是试验板上的八只二极管,要让它们一个个的轮流循环点亮,需要该变P1口的值,即先送入11111110B给P1口,让第一只二级管点亮,由于程序执行时间很短(微秒级),所以我们需要它亮一段时间,就是所说的延时;然后再送入11111101B给P1口即第二只点亮,其它都是熄灭的,延时,再让第三只点亮。就这样不断的循环,这就成 跑马灯了。程序如下: 第一种: ORG 1000H LJMP BEGIN BEGIN: MOV A,#11111110B ;低电平对应的发光二极管亮 MOV P1,A ;将值送到P1口,第一只
[单片机]
OLED显示模块与C8051F单片机的接口设计
摘要:OLED作为新一代显示技术,广泛用于各种仪器仪表的显示终端,实时显示字符、汉字、曲线等信息。文中介绍一种点阵式OLED模块VGS12864E的结构特征、指令系统;给出它与Cygnal C8051F020单片机的间接访问接口电路设计,以及显示模块的硬件驱动和显示16%26;#215;8点阵西文字符的Keil C51程序代码,并对相关代码进行注释。由于此款显示模块的指令系统与液晶显示驱动控制器HD61202兼容,故程序代码也可作为指令系统与它兼容的液晶显示编程的参考。
关键词:点阵显示模块 OLED C8051F 接口设计
有机发光显示OLED(Organic Light Emitting Display)是比液晶显示技术
[应用]
STM32单片机----外部中断EXTI学习
可屏蔽中断和不可屏蔽中断: 按照是否可以被屏蔽,可将中断分为两大类:不可屏蔽中断(又叫非屏蔽中断)和可屏蔽中断。不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应。CPU一般设置两根中断请求输入线:可屏蔽中断请求INTR(Interrupt Require)和不可屏蔽中断请求NMI(NonMaskable Interrupt)。对于可屏蔽中断,除了受本身的屏蔽位控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(Iinterrupt Flag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。 GPIO口与EXTI外中断的映像图:
[单片机]
基于AT89C51单片机的数码管循环点亮0到9(Keil+Proteus+C语言)
要求描述: 选用AT89C51单片机,绿色7段共阴极数码管,使用C语言实现 仿真图 代码 #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE = { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f }; void DelayMS(uint x) { uchar t; while(x--) for(t=120;t 0;t--); } void main() { u
[单片机]
用单片机实现SRAM工艺FPGA的加密应用
摘要:首先对采用SRAM工艺的FPGA的保密性和加密方法进行原理分析,然后提出一种实用的采用单片机产生长伪随机码实现加密的方法,并详细介绍具体的电路和程序。
关键词:静态随机存储器(SRAM) 现场可编程门阵列(FPGA) 加密
在现代电子系统设计中,由于可编程逻辑器件的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。由于大规模高密度可编程逻辑器件多采用SRAM工艺,要求每次上电,对FPGA器件进行重配置,这就使得可以通过监视配置的位数据流,进行克隆设计。因此,在关键、核心设备中,必须采用加密技术保护设计者的知识产权。
1 基于SRAM工艺FPGA的保密性问题
通常,采用SRAM工艺的FPGA芯片的的配置方法主要
[单片机]
用单片机接受并解码ps2键盘发送过来的数据
//本程序可实现用单片机来接受从ps2键盘上传输过来的数据. //把电脑键盘插入51hei-5开发板的ps2,然后按键p0口就会有不同的灯亮 //跳线设置:默认 //晶振:6M #include reg51.h //包含单片机寄存器的头文件 #include intrins.h //包含_nop_()函数定义的头文件 //#include 51hei.h /******************************************************************************* 以下是引脚定义 ************************************************
[单片机]
单片机延时方法(Keil 软件延时)
C 语言常用的延时方法,有如图4-2所示4种。 图2-4 C 语言延时方法 图2-4是 C 语言编程常用的4种延时方法,其中两种非精确延时,两种精确一些的延时。for 语句和 while 语句都可以通过改变 i 的范围值来改变延时时间,但是 C 语言循环的执行时间都是不能通过程序看出来的。精确延时有两个方法,一个方法是用定时器来延时,这个方法我们后边课程要详细介绍,定时器是单片机的一个重点。另外一个就是用库函数nop();,一个 NOP 的时间是一个机器周期的时间,这个后边也要介绍。 非精确延时,只是在我们做一些比如小灯闪烁,流水灯等简单演示实验中使用,而实际项目开发过程中其实这种非精确延时用的很少。 好了,介绍完了,我们就要
[单片机]