完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
#include "HT66F0185.h"
unsigned char gc_FrameSts; //============================================================================ //TM0中断 DEFINE_ISR (Interrupt_TM0, 0x0C) { _t0pf = 0;//进中断后,请清除中断标志 _frame = ~_frame; gc_FrameSts++; switch(gc_FrameSts) { case 0: //COM0 _pc2 = 1;//COM0---(VDD:Frame=0) or (VSS: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 = 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 1: //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---(VSS:Frame=0) or (VDD:Frame=1) _pa7 = 1;//SEG8 _pa6 = 1;//SEG9 _pa5 = 1;//SEG10 _pc1 = 1;//SEG12 _pc2 = 1;//SEG13 _pc4 = 1;//SEG15 break; case 2: //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---(VSS:Frame=0) or (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: //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 = 0;//SEG19---(VSS:Frame=0) or (VDD:Frame=1) _pc1 = 0;//SEG20---(VSS:Frame=0) or (VDD:Frame=1) _pa7 = 0;//SEG8 _pa6 = 0;//SEG9 _pa5 = 0;//SEG10 _pc1 = 0;//SEG12 _pc2 = 0;//SEG13 _pc4 = 0;//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(); } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 05:32 , Processed in 0.625245 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号