#include
#pragma config JTAGEN =OFF
char Led[]={0x42, 0xf3, 0x86, 0xa2, 0x33, 0x2a, 0x0a, 0xf2, 0x02, 0x22, 0x40, 0xf1, 0x84, 0xa0, 0x31, 0x28, 0x08, 0xf0, 0x00, 0x20, 0x1e, 0x0e, 0x0f, 0xbf, 0x23, 0x9b, 0x8b};
//led字库
void spiout(char image[],int len)
{
int i;
PORTClearBits(IOPORT_B, BIT_9);
for (i = 0; i < len; i++)
{
SpiChnPutC(2, image[i]);
}
for(i=0;i<2;i++);//延时使数据传输完后锁存,通常数码管乱码都是这导致的。
PORTSetBits(IOPORT_B, BIT_9);//数据锁存
}
int main()
{
SpiOpenFlags oFlags = SPI_OPEN_MSTEN | SPI_OPEN_CKP_HIGH | SPI_OPEN_MODE8 | SPI_OPEN_ON;//作为主机, ,8位数据模式,SPI使能
PORTSetPinsDigitalOut(IOPORT_B, BIT_9);//外部移位寄存器数据锁存,1锁存,0开放
SpiChnOpen(2, oFlags, 6);//打开通道2即SDO2,配置SPI,fpbDiv(2~1024).波特率BR=Fpb/fpbDiv
PPSOutput(2, RPB8, SDO2);//输出针脚组2中,查表将针脚RPB8,作为数据输出2口SDO2.实际连线也是如此
spiout(Led,4);
}
//PPSOutput(2,RPB5,SDO1);//输出针脚组2中,查表将针脚RPB5,作为数据输出1口SDO1.
//也可查数据手册用另一种,以后再说
//查找头文件PPSOUT.h在C:Program Files (x86)Microchipxc32v1.21pic32-libsincludeperipheral
{
Output Pin Group 2
#define OUT_PIN_PPS2_RPA1 RPA1Rbits.RPA1R
#define OUT_PIN_PPS2_RPB5 RPB5Rbits.RPB5R
#define OUT_PIN_PPS2_RPB1 RPB1Rbits.RPB1R
#define OUT_PIN_PPS2_RPB11 RPB11Rbits.RPB11R
#define OUT_PIN_PPS2_RPB8 RPB8Rbits.RPB8R
#define OUT_PIN_PPS2_RPA8 RPA8Rbits.RPA8R
#define OUT_PIN_PPS2_RPC8 RPC8Rbits.RPC8R
#define OUT_PIN_PPS2_RPA9 RPA9Rbits.RPA9R
//#define OUT_FN_PPS2_SDO1 3 // RPn tied to SDO1
//#define OUT_FN_PPS2_SDO2 4 // RPn tied to SDO2
//#define OUT_FN_PPS2_OC2 5 // RPn tied to OC2
}
秒表
#include
#pragma config JTAGEN=OFF
#pragma config FPLLIDIV = DIV_2 //振荡器配置
#pragma config FPLLMUL = MUL_24
#pragma config FPLLODIV = DIV_2
#pragma config FNOSC = FRCPLL
#pragma config FPBDIV = DIV_1 //8MHZ/2*24/2/1=48MHZ
#pragma config FWDTEN = OFF
#pragma POSCMOD = OFF
#define PERIOD 48000 //t=ps*period/48000000=0.001s
int n=0,sta=0,ledflag=1,butflag=0,i=0,b=0,bit1=0,bit2=0;;
char t[4],Led[]={0x42, 0xf3, 0x86, 0xa2, 0x33, 0x2a, 0x0a, 0xf2, 0x02, 0x22, 0x40, 0xf1, 0x84, 0xa0, 0x31, 0x28, 0x08, 0xf0, 0x00, 0x20, 0x1e, 0x0e, 0x0f, 0xbf, 0x23, 0x9b, 0x8b},image[]={0x42,0x42,0x42,0x42};
//Led 字库
void timer1init()//时钟源1初始化,配置中断等
{
OpenTimer1(T1_ON|T1_SOURCE_INT|T1_PS_1_1,PERIOD);
ConfigIntTimer1(T1_INT_ON|T1_INT_PRIOR_2|T1_INT_SUB_PRIOR_0);
INTEnableSystemMultiVectoredInt();
}
void spiinit()//SPI初始化
{
SpiOpenFlags oFlags = SPI_OPEN_MSTEN | SPI_OPEN_CKP_HIGH | SPI_OPEN_MODE8 | SPI_OPEN_ON;//作为主机,,8位数据模式,SPI使能
SpiChnOpen(2, oFlags, 6);//打开通道2即SDO2,配置SPI,fpbDiv(2~1024).波特率BR=Fpb/fpbDiv
PPSOutput(2, RPB8, SDO2);//输出针脚组2中,查表将针脚RPB8,作为数据输出2口SDO2.实际连线也是如此
PORTSetPinsDigitalOut(IOPORT_B,BIT_9);//外部移位寄存器SLCK数据锁存,1锁存,0开放
PORTSetBits(IOPORT_B, BIT_9);//先置一锁存数据
}
void __ISR(_TIMER_1_VECTOR,ipl2) timer(void)//中断函数0.001s一次中断
{
INTClearFlag(INT_T1);
n++;
if(n>100)//0.1s
{
n=0;
ledflag=1;
// PORTBINV=(1<<7); RB7口led灯与按键AN1的RA0并联冲突,不能同时使用
}
}
void buttoninit()//按键初始化
{
// ANSELAbits.ANSA0 = 0; //Button1
// ANSELAbits.ANSA1 = 0; //Button2
PORTSetPinsDigitalIn(IOPORT_A,BIT_0|BIT_1);//按键电位检测读数据
PORTSetPinsDigitalIn(IOPORT_B,BIT_3|BIT_14);//需将对应的按键针脚位设为数字输入
}
void spiout(char im[])//SPI数据输出函数
{
PORTClearBits(IOPORT_B, BIT_9);
for(i=0;i<4;i++)
{
SpiChnPutC(2,im[i]);//2号通道依次传输数据
}
for(i=0;i<2;i++);//延时使数据传输完后锁存,通常数码管乱码都是这导致的。
PORTSetBits(IOPORT_B, BIT_9);//数据锁存
}
void led(char imag[3])//秒表换算函数
{
t[0]++;
if(t[0]>9)
{
t[0]=0;
t[1]++;
if(t[1]>19)
{
t[1]=10;
t[2]++;
if(t[2]>9)
{
t[2]=0;
t[3]++;
if(t[3]>9)
t[3]=0;
}
}
}
image[0]=Led[t[3]];
image[1]=Led[t[2]];
image[2]=Led[t[1]];
image[3]=Led[t[0]];
spiout(image); //四个数据相互变换
}
void main()//主函数
{
timer1init();
spiinit();
buttoninit();
PORTSetPinsDigitalOut(IOPORT_B,BIT_13);
PORTSetBits(IOPORT_B,BIT_13);
while(1)//死循环检测按键状态和不断投影数码管
{
if(PORTAbits.RA0==0)
{
bit1++;
if(bit1==5)//防止按键颤动,一种状态只运行一次(非常巧妙)
{
sta=0;
PORTBINV=(1<<13);
}
}
else bit1=0;
if(PORTAbits.RA1==0)
{
bit2++;
if(bit2==5)//防止按键颤动,一种状态只运行一次(非常巧妙)
{
if(sta==1)
sta=2;
else
sta=1;
}
}
else bit2=0;
switch(sta)//不同状态运行不同函数
{
case 0:
for(i=0;i<4;i++)
t[i]=0;
t[1]=10;
image[0]=Led[t[3]];
image[1]=Led[t[2]];
image[2]=Led[t[1]];
image[3]=Led[t[0]];
spiout(image);break; //初始化重置数码管
case 1:
if(ledflag==1)
{
ledflag=0;
led(image);
}
break; //秒表开始
case 2:
break; //暂停
}
}
}
// }
上一篇:pic 18 __config 配置位 学习
下一篇:PIC单片机上串口测试模块
推荐阅读
史海拾趣
Equator Technologies公司成立于XX年代初,当时正值数字视频技术飞速发展的时代。公司凭借其在视频DSP(数字信号处理器)领域的独特见解和技术实力,迅速崭露头角。起初,Equator主要聚焦于提供高性能的视频处理解决方案,用于改善电视和其他显示设备的画质。通过不断的技术创新和产品迭代,Equator逐渐在市场中建立了良好的口碑。
在XX年代中期,Equator迎来了一个重要的转折点——被Pixelworks公司收购。Pixelworks是一家在显示图像处理领域具有领先地位的公司,其产品线广泛,包括用于各种显示设备的图像处理芯片和软件。与Pixelworks的合并使Equator获得了更广阔的市场和资源支持,加速了其技术和产品的发展。合并后,Equator继续专注于视频处理技术的研发,并与Pixelworks共同推出了多款创新产品。
面对不断变化的市场需求和技术趋势,Consolidated Wire公司始终保持创新精神。公司不断研发新产品、新技术,满足客户的多样化需求。同时,公司还注重与其他行业的合作与交流,通过跨界合作推动产品创新和技术升级。这种创新驱动的发展模式使得Consolidated Wire公司能够持续保持竞争优势,实现持续稳健的发展。
作为一家有社会责任感的企业,创世公司始终关注环境保护和可持续发展。公司积极推广绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。同时,创世公司还积极参与社会公益活动,为社会和环境贡献自己的力量。这种对社会责任的关注和担当使得创世公司在电子行业中树立了良好的形象。
ANYSOLAR始终关注企业的社会责任和可持续发展。在生产过程中,公司严格遵守环保法规,采用先进的环保技术和设备,确保生产过程中的废弃物排放达到国家标准。同时,公司还积极参与社会公益活动,捐赠光伏产品支持贫困地区的能源建设。
此外,ANYSOLAR还致力于推动清洁能源的普及和应用,通过技术研发和市场推广等方式,降低清洁能源的使用成本,提高其在能源结构中的占比。这些举措不仅体现了ANYSOLAR的社会责任感,也为公司的可持续发展奠定了坚实的基础。
以上便是关于ANYSOLAR LTD.的五个发展故事。虽然这些故事是虚构的,但它们基于电子行业的常见趋势和企业发展的普遍规律,旨在展示一个企业在发展过程中可能面临的挑战和机遇。希望这些故事能够为您提供一些启发和参考。
FINISAR公司(前身为Finisar Corporation)成立于1987年(另有资料称成立于1988年),总部位于美国加利福尼亚州的硅谷地区。公司自创立之初便专注于光通信技术的研发与应用,致力于设计、制造和销售高性能的光模块和光网络设备。在成立初期,FINISAR凭借其创新的技术和高质量的产品,在光通信市场上逐渐崭露头角,为后续的快速发展奠定了坚实基础。
摘要:变频器是工业自动化系统中的基本拖动设备。当应用环境非常恶劣,不适合于人在现场对变频器直接进行控制时就需要对变频器进行远程控制。主要介绍了如何用VC编写控制软件对变频器进行联网控制。 关键词:变频器;控制软件;联网控制 0 ...… 查看全部问答∨ |
近年来随着微电子技术的不断发展,半导体技术和集成电路技术也在迅速发展。目前,IC卡已经深入到社会生活的各个角落,各种各样的卡大大方便了人们的生活,如银行使用的信用卡、公交车使用的交通卡、食堂使用的就餐卡 ...… 查看全部问答∨ |
小弟新手,急求红外防盗报警器的资料,希望高手帮帮忙,谢谢了!!! 小弟新手,急求【红外线防盗报警器的设计资料】,希望高手哥哥姐姐们帮帮忙,谢谢了!!!有的话可以邮箱我,lijunchong@qq.com,小弟不胜感激!!… 查看全部问答∨ |
$(\'flv_s66\').innerHTML=(mobileplayer() ? \"\" : AC_FL_RunContent(\'width\', \'400\', \'height\', \'300\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'http://player.youku.com/player.php/sid/XMz ...… 查看全部问答∨ |
ModelSim Altera仿真效果图如下:Udal341芯片L3接口控制如图1,在Mode_L3为低时(地址模式),每个Sysclk_L3的上升沿给Data_L3送一个数据,依次为01101000(低位在前);之后,再将Mode_L3拉高(数据传输模式),每个Sysclk_L3的上升沿给Data_L3送 ...… 查看全部问答∨ |
各位高手,我用过一批国产开关电源,带铅蓄电池充放电功能的。在现场使用中常常有坏的情况,容易在出现停电、天气变化时好多被损坏,严重的地区有1/3坏的。 电源返回来可以修好,主要就是坏了PWM芯片、芯片供电串联 ...… 查看全部问答∨ |