HT66F0185 LED程序(V2.0)

#include “HT66F0185.h”

unsigned char gc_FrameSts;

//============================================================================
//TM0中断
DEFINE_ISR (Interrupt_TM0, 0x0C)
{
_t0pf = 0; //进中断后,请清除中断标志

gc_FrameSts++;
switch(gc_FrameSts)
{
case 1:
	//COM0
	_pc5 = 0;//COM1---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)
	_pa1 = 0;//COM2---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)
	_pa3 = 0;//COM3---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)


	if(_frame)
	{
		_frame = 0;
	}else{
		_frame = 1;
	}
	_pc2 = 1;//COM0---(VDD:Frame=0) or (VSS:Frame=1)
	
	//SEG--0不点亮,1点亮
	_pc0 = 1;//SEG19---(2/3 VDD:Frame=0) or (1/3 VDD:Frame=1)
	_pc1 = 1;//SEG20---(2/3 VDD:Frame=0) or (1/3 VDD:Frame=1)
	
	_pa7 = 1;//SEG8
	_pa6 = 1;//SEG9
	_pa5 = 1;//SEG10
	_pc1 = 1;//SEG12
	_pc2 = 1;//SEG13
	_pc4 = 1;//SEG15

	break;
case 2:
	//COM1
	_pc2 = 0;//COM0---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)
	_pc5 = 1;//COM1---(VDD:Frame=0) or (VSS:Frame=1)
	_pa1 = 0;//COM2---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)
	_pa3 = 0;//COM3---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)

	//SEG--0不点亮,1点亮
	_pc0 = 1;//SEG19---(2/3 VDD:Frame=0) or (1/3 VDD:Frame=1)
	_pc1 = 1;//SEG20---(2/3 VDD:Frame=0) or (1/3 VDD:Frame=1)

	_pa7 = 1;//SEG8
	_pa6 = 1;//SEG9
	_pa5 = 1;//SEG10
	_pc1 = 1;//SEG12
	_pc2 = 1;//SEG13
	_pc4 = 1;//SEG15

	break;
case 3:
	//COM2
	_pc2 = 0;//COM0---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)
	_pc5 = 0;//COM1---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)
	_pa1 = 1;//COM2---(VDD:Frame=0) or (VSS:Frame=1)
	_pa3 = 0;//COM3---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)

	//SEG--0不点亮,1点亮
	_pc0 = 1;//SEG19---(2/3 VDD:Frame=0) or (1/3 VDD:Frame=1)
	_pc1 = 1;//SEG20---(2/3 VDD:Frame=0) or (1/3 VDD:Frame=1)

	_pa7 = 1;//SEG8
	_pa6 = 1;//SEG9
	_pa5 = 1;//SEG10
	_pc1 = 1;//SEG12
	_pc2 = 1;//SEG13
	_pc4 = 1;//SEG15


	break;
case 4:
	//COM3
	_pc2 = 0;//COM0---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)
	_pc5 = 0;//COM1---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)
	_pa1 = 0;//COM2---(1/3 VDD:Frame=0) or (2/3 VDD:Frame=1)
	_pa3 = 1;//COM3---(VDD:Frame=0) or (VSS:Frame=1)

	//SEG--0不点亮,1点亮
	_pc0 = 1;//SEG19---(2/3 VDD:Frame=0) or (1/3 VDD:Frame=1)
	_pc1 = 1;//SEG20---(2/3 VDD:Frame=0) or (1/3 VDD:Frame=1)

	_pa7 = 1;//SEG8
	_pa6 = 1;//SEG9
	_pa5 = 1;//SEG10
	_pc1 = 1;//SEG12
	_pc2 = 1;//SEG13
	_pc4 = 1;//SEG15
	
	gc_FrameSts = 0;
	break;
}

}

//=======================================================================================
//* brief : Initial STM PWM
//* param : None
//* retval: None
//=======================================================================================
void Init()
{
_wdtc = 0xAF;//关闭看门狗

//IO init
//_pac0 = 0;//PA0 output--PWM输出口
//_t0cp = 1;//TP0(PA0)引脚控制位使能

//设定PB0,PB1,PB2,PA4,  PA5,PA6,PA7,PB3 作为IO口
_acerl = 0x00;//设定相关IO口不作为ADC输入口,缺省是ADC输入口

//设定PA3,PB6,PB5作为IO口
_csel = 0;//设定比较器引脚作为IO口,缺省是比较器引脚
_cos = 1;


//系统时钟
_smod = 0x01;//fsys = fH   bit0 = 1

//-------STM init-------
//计数器和比较器
_tm0al = 0x00;//占空比设定
_tm0ah = 0x7F;//占空比设定
_tm0dl = 0x00;
_tm0dh = 0x00; 
_tm0rp = 0xFF;//周期设定, 8位,与_tm0dh比较

_tm0c1 = 0xC0;//设定定时模式,CCRP - 周期;CCRA - 占空比

_tm0c0 = 0x18;//启动timer0, 计数时钟选择fsys


_t0pe = 1;//TM0比较器p中断使能
_mf0e = 1;//多功能中断0控制位使能
_emi = 1;//总中断使能

gc_FrameSts = 0;

}

//============================================================================
//以HT66F0185为例设定驱动,步骤如下
//1、设定共用引脚是COM还是SEG(COMSEGS5-----COMSEGS0)
//2、使能LCDEN
//3、设定与LCD共用的IO口为输出功能
//4、设定frame是0还是1
//5、根据波形图,设定PXn输出0还是输出1(比如COM0与PC2共用,则_pc2=0或1)
//FRAME LCDEN COMnEN IO output
//0 1 1 0 (1/3) * VDD
//0 1 1 1 VDD
//0 1 0 0 VSS
//0 1 0 1 VDD
//1 1 1 0 (2/3) * VDD
//1 1 1 1 VSS
//1 1 0 0 VSS
//1 1 0 1 VDD
//FRAME LCDEN SEGnEN IO output
//0 1 1 0 (2/3) * VDD
//0 1 1 1 VSS
//0 1 0 0 VSS
//0 1 0 1 VDD
//1 1 1 0 (1/3) * VDD
//1 1 1 1 VDD
//1 1 0 0 VSS
//1 1 0 1 VDD

//============================================================================
void LCD_Init()
{
//设定COM0–3
_pcc2 = 0;//PC2 output enable—COM0
_pcc5 = 0;//PC5 output enable—COM1
_pac1 = 0;//PA1 output enable—COM2
_pac3 = 0;//PA3 output enable—COM3

_comsegs0 = 0;//select com0
_com0en = 1;//enable com0
_comsegs1 = 0;//select com1
_com1en = 1;//enable com1
_comsegs2 = 0;//select com2
_com2en = 1;//enable com2
_comsegs3 = 0;//select com3
_com3en = 1;//enable com3

//设定SEG
_pcc0 = 0;//Pc0 output enable---SEG19
_pcc1 = 0;//Pc1 output enable---SEG20

_pac7 = 0;//PA7 output enable---SEG8
_pac6 = 0;//PA6 output enable---SEG9
_pac5 = 0;//PA5 output enable---SEG10
_pdc1 = 0;//PD1 output enable---SEG12
_pdc2 = 0;//PD2 output enable---SEG13
_pac4 = 0;//PA4 output enable---SEG15

_seg19en = 1;//enable SEG19
_seg20en = 1;//enable SEG20

_seg8en = 1;//enable SEG9
_seg9en = 1;//enable SEG9
_seg10en = 1;//enable SEG10
_seg12en = 1;//enable SEG12
_seg13en = 1;//enable SEG13
_seg15en = 1;//enable SEG15

_lcden = 1;//LCD enable
_frame = 0;//frame = 0

}

//============================================================================
void main()
{
_wdtc = 0xA8;//关闭看门狗,缺省是开的,如果不清看门狗会引起复位
Init();
LCD_Init();

while(1)
{
	_nop();
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值