基于PIC16F876A的摇摇棒
const数组必须用const指针访问
指向ROM 常数的指针
如果一组变量是已经被定义在ROM 区的常数,那么指向它的指针可以这样定义:
const unsigned char company[]=”Microchip”; //定义ROM 中的常数
const unsigned char *romPtr; //定义指向ROM 的指针
程序中可以对上面的指针变量赋值和实现取数操作:
romPtr = company; //指针赋初值
data = *romPtr++; //取指针指向的一个数,然后指针加1
反过来,下面的操作将是一个错误,因为该指针指向的是常数型变量,不能赋值。
*romPtr = data; //往指针指向的地址写一个数
//#include <pic18.h>
__CONFIG (0x1F72);//此适用于16F
//#define CW RB6
//#define CLOCK RB7
/*#define LED1ON PORTA&=0xFE//
#define LED1OFF PORTA|=0x01 // PA0
#define LED2ON PORTA&=0xFD//
#define LED2OFF PORTA|=0x02 // PA1
#define LED3ON PORTA&=0xFB//
#define LED3OFF PORTA|=0x04 // PA2
#define LED4ON PORTA&=0xF7//
#define LED4OFF PORTA|=0x08 // PA3
#define LED5ON PORTA&=0xDF//
#define LED5OFF PORTA|=0x20 // PA5
#define LED6ON PORTC&=0xFD//
#define LED6OFF PORTC|=0x02 //PC1
#define LED7ON PORTC&=0xFB//
#define LED7OFF PORTC|=0x04 //PC2
#define LED8ON PORTC&=0xF7//
#define LED8OFF PORTC|=0x08 //PC3
#define LED9ON PORTC&=0xEF//
#define LED9OFF PORTC|=0x10 //PC4
#define LED10ON PORTC&=0xDF//
#define LED10OFF PORTC|=0x20 //PC5
#define LED11ON PORTC&=0xBF//
#define LED11OFF PORTC|=0x40//PC6
#define LED12ON PORTC&=0x7F//
#define LED12OFF PORTC|=0x80 //PC7
#define LED13ON PORTB&=0xFD//
#define LED13OFF PORTB|=0x02 //PB1
#define LED14ON PORTB&=0xFB//
#define LED14OFF PORTB|=0x04 //PB2
#define LED15ON PORTB&=0xEF//
#define LED15OFF PORTB|=0x10 //PB4
#define LED16ON PORTB&=0xDF//
#define LED16OFF PORTB|=0x20 //PB5
#define LED17OFF asm("BCF PORTC,0x1")
*/
#define LED1 RA0;
#define LED2 RA1;
#define LED3 RA2;
#define LED4 RA3;
#define LED5 RA5;
#define LED6 RC1;
#define LED7 RC2;
#define LED8 RC3;
#define LED9 RC4;
#define LED10 RC5;
#define LED11 RC6;
#define LED12 RC7;
#define LED13 RB1;
#define LED14 RB2;
#define LED15 RB4;
#define LED16 RB5;
typedef unsigned char u8;
unsigned char in=0;
const unsigned char *romPtr;
void delay_us(unsigned char delay_count)
{
unsigned char j;
for(j=delay_count;j>0;j--);
}
void delay_ms(unsigned char delay_count)
{
unsigned char i;
for(i=delay_count;i>0;i--)
{
delay_us(250);
delay_us(250);
delay_us(250);
delay_us(250);
}
}
unsigned char hanzi[] =
{
0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,
0x08,0x08,0x07,0xF0,
};
bank1 unsigned char hanzi1[32] =
{
0x10,0x82,0x11,0x01,0xFF,0xFE,0x12,0x02,0x15,0x0C,0x3F,0xF0,0x69,0x42,0xA5,0x21,
0x3F,0xFE,0x03,0x02,0x7D,0x84,0x41,0x68,0x41,0x18,0x7D,0x66,0x05,0x84,0x00,0x00,
};
bank1 unsigned char hanzi2[32] =
{
0x08,0x01,0x08,0xC2,0x0F,0x44,0xF8,0x28,0x08,0x30,0x0F,0xCE,0x01,0x04,0x41,0x00,
0x41,0x02,0x41,0x01,0x4F,0xFE,0x51,0x00,0x61,0x00,0x41,0x00,0x01,0x00,0x00,0x00,
};
bank2 unsigned char hanzi3[32] =
{
0x40,0x40,0x41,0x80,0x4F,0xFE,0x72,0x08,0x43,0xFC,0x42,0x00,0x12,0x00,0x12,0x40,
0x13,0xC8,0xFE,0x44,0x12,0x4A,0x12,0x50,0x12,0x60,0x12,0x00,0x02,0x00,0x00,0x00,
};
const unsigned char hanzic1[32] =
{
0x10,0x82,0x11,0x01,0xFF,0xFE,0x12,0x02,0x15,0x0C,0x3F,0xF0,0x69,0x42,0xA5,0x21,
0x3F,0xFE,0x03,0x02,0x7D,0x84,0x41,0x68,0x41,0x18,0x7D,0x66,0x05,0x84,0x00,0x00,
};
const unsigned char hanzic2[32] =
{
0x08,0x01,0x08,0xC2,0x0F,0x44,0xF8,0x28,0x08,0x30,0x0F,0xCE,0x01,0x04,0x41,0x00,
0x41,0x02,0x41,0x01,0x4F,0xFE,0x51,0x00,0x61,0x00,0x41,0x00,0x01,0x00,0x00,0x00,
};
const unsigned char hanzic3[32] =
{
0x40,0x40,0x41,0x80,0x4F,0xFE,0x72,0x08,0x43,0xFC,0x42,0x00,0x12,0x00,0x12,0x40,
0x13,0xC8,0xFE,0x44,0x12,0x4A,0x12,0x50,0x12,0x60,0x12,0x00,0x02,0x00,0x00,0x00,
};
void displayword(u8 *aaray);
void displaywordfan(u8 *aaray);
void displayword1(bank2 u8 *aaray);
void displaywordfan1(bank2 u8 *aaray);
void displaywordc1(const u8 *aaray);
void displaywordfanc1(const u8 *aaray);
void main()
{
//unsigned char i,j,p=0,a;
//unsigned int i,*p;
//INTCON|=0x90;//设置全局中断使能,INT/RB0中断使能
//OPTION_REG=0x80;
u8 *p;
//FSR=0;
//INDF=0;
ADCON1=0x07;
TRISB=0xC9;
TRISA=0;
TRISC=0;
RA0=1;
RA1=1;
RA2=1;
RA3=1;
RA5=1;
RC1=1;
RC2=1;
RC3=1;
RC4=1;
RC5=1;
RC6=1;
RC7=1;
RB1=1;
RB2=1;
RB4=1;
RB5=1;
while(1)
{
//if(RB0==0)
//{
/*for(j=0;j<=7;j++)
if(p>11)p=0;
i=hanzi[p];
RA0=1-(i>>7);
RA1=1-((i&0x7F)>>6);
RA2=1-((i&0x3F)>>5);
RA3=1-((i&0x1F)>>4);
RA5=1-((i&0x0F)>>3);
RC1=1-((i&0x07)>>2);
RC2=1-((i&0x03)>>1);
RC3=1-(i&0x01);
p++;
i=hanzi[p];
p++;
RC4=1-(i>>7);
RC5=1-((i&0x7F)>>6);
RC6=1-((i&0x3F)>>5);
RC7=1-((i&0x1F)>>4);
RB1=1-((i&0x0F)>>3);
RB2=1-((i&0x07)>>2);
RB4=1-((i&0x03)>>1);
RB5=1-(i&0x01);
delay_ms(15);
};*/
/*
if(RB0==0)
{
//p=hanzi1;
displayword(hanzi1);
//p=hanzi2;
displayword(hanzi2);
//displayword(&hanzi3[0]);
displayword1(hanzi3);
}
if(RB0==1)
{
//displayword(&hanzi3[0]);
//p=hanzi2;
displaywordfan1(hanzi3);
displaywordfan(hanzi2);
//p=hanzi1;
displaywordfan(hanzi1);
}
*/
if(RB0==0)
{
//p=hanzi1;
displaywordc1(hanzic1);
//p=hanzi2;
displaywordc1(hanzic2);
//displayword(&hanzi3[0]);
displaywordc1(hanzic3);
}
if(RB0==1)
{
//displayword(&hanzi3[0]);
//p=hanzi2;
displaywordfanc1(hanzic3);
displaywordfanc1(hanzic2);
//p=hanzi1;
displaywordfanc1(hanzic1);
}
}
}
void displayword(u8 *aaray)
{
u8 j,i,p=0;
for(j=0;j<=15;j++)
{
if(p>31)p=0;
i=aaray[p];
RA0=1-(i>>7);
RA1=1-((i&0x7F)>>6);
RA2=1-((i&0x3F)>>5);
RA3=1-((i&0x1F)>>4);
RA5=1-((i&0x0F)>>3);
RC1=1-((i&0x07)>>2);
RC2=1-((i&0x03)>>1);
RC3=1-(i&0x01);
p++;
i=aaray[p];
p++;
RC4=1-(i>>7);
RC5=1-((i&0x7F)>>6);
RC6=1-((i&0x3F)>>5);
RC7=1-((i&0x1F)>>4);
RB1=1-((i&0x0F)>>3);
RB2=1-((i&0x07)>>2);
RB4=1-((i&0x03)>>1);
RB5=1-(i&0x01);
delay_ms(3);
}
}
void displaywordfan(u8 *aaray)
{
u8 j,i,p=31;
for(j=0;j<=15;j++)
{
if(p==0xff)p=31;
i=aaray[p];
RC4=1-(i>>7);
RC5=1-((i&0x7F)>>6);
RC6=1-((i&0x3F)>>5);
RC7=1-((i&0x1F)>>4);
RB1=1-((i&0x0F)>>3);
RB2=1-((i&0x07)>>2);
RB4=1-((i&0x03)>>1);
RB5=1-(i&0x01);
p--;
i=aaray[p];
p--;
RA0=1-(i>>7);
RA1=1-((i&0x7F)>>6);
RA2=1-((i&0x3F)>>5);
RA3=1-((i&0x1F)>>4);
RA5=1-((i&0x0F)>>3);
RC1=1-((i&0x07)>>2);
RC2=1-((i&0x03)>>1);
RC3=1-(i&0x01);
delay_ms(3);
}
}
void displaywordc1(const u8 *aaray)
{
u8 j,i,p=0;
for(j=0;j<=15;j++)
{
if(p>31)p=0;
i=aaray[p];
RA0=1-(i>>7);
RA1=1-((i&0x7F)>>6);
RA2=1-((i&0x3F)>>5);
RA3=1-((i&0x1F)>>4);
RA5=1-((i&0x0F)>>3);
RC1=1-((i&0x07)>>2);
RC2=1-((i&0x03)>>1);
RC3=1-(i&0x01);
p++;
i=aaray[p];
p++;
RC4=1-(i>>7);
RC5=1-((i&0x7F)>>6);
RC6=1-((i&0x3F)>>5);
RC7=1-((i&0x1F)>>4);
RB1=1-((i&0x0F)>>3);
RB2=1-((i&0x07)>>2);
RB4=1-((i&0x03)>>1);
RB5=1-(i&0x01);
delay_ms(3);
}
}
void displaywordfanc1(const u8 *aaray)
{
u8 j,i,p=31;
for(j=0;j<=15;j++)
{
if(p==0xff)p=31;
i=aaray[p];
RC4=1-(i>>7);
RC5=1-((i&0x7F)>>6);
RC6=1-((i&0x3F)>>5);
RC7=1-((i&0x1F)>>4);
RB1=1-((i&0x0F)>>3);
RB2=1-((i&0x07)>>2);
RB4=1-((i&0x03)>>1);
RB5=1-(i&0x01);
p--;
i=aaray[p];
p--;
RA0=1-(i>>7);
RA1=1-((i&0x7F)>>6);
RA2=1-((i&0x3F)>>5);
RA3=1-((i&0x1F)>>4);
RA5=1-((i&0x0F)>>3);
RC1=1-((i&0x07)>>2);
RC2=1-((i&0x03)>>1);
RC3=1-(i&0x01);
delay_ms(3);
}
}
void displayword1(bank2 u8 *aaray)
{
u8 j,i,p=0;
for(j=0;j<=15;j++)
{
if(p>31)p=0;
i=aaray[p];
RA0=1-(i>>7);
RA1=1-((i&0x7F)>>6);
RA2=1-((i&0x3F)>>5);
RA3=1-((i&0x1F)>>4);
RA5=1-((i&0x0F)>>3);
RC1=1-((i&0x07)>>2);
RC2=1-((i&0x03)>>1);
RC3=1-(i&0x01);
p++;
i=aaray[p];
p++;
RC4=1-(i>>7);
RC5=1-((i&0x7F)>>6);
RC6=1-((i&0x3F)>>5);
RC7=1-((i&0x1F)>>4);
RB1=1-((i&0x0F)>>3);
RB2=1-((i&0x07)>>2);
RB4=1-((i&0x03)>>1);
RB5=1-(i&0x01);
delay_ms(3);
}
}
void displaywordfan1(bank2 u8 *aaray)
{
u8 j,i,p=31;
for(j=0;j<=15;j++)
{
if(p==0xff)p=31;
i=aaray[p];
RC4=1-(i>>7);
RC5=1-((i&0x7F)>>6);
RC6=1-((i&0x3F)>>5);
RC7=1-((i&0x1F)>>4);
RB1=1-((i&0x0F)>>3);
RB2=1-((i&0x07)>>2);
RB4=1-((i&0x03)>>1);
RB5=1-(i&0x01);
p--;
i=aaray[p];
p--;
RA0=1-(i>>7);
RA1=1-((i&0x7F)>>6);
RA2=1-((i&0x3F)>>5);
RA3=1-((i&0x1F)>>4);
RA5=1-((i&0x0F)>>3);
RC1=1-((i&0x07)>>2);
RC2=1-((i&0x03)>>1);
RC3=1-(i&0x01);
delay_ms(3);
}
}
/*void interrupt ISR(void)
{
//if(T0IE & T0IF)
// {
// T0IF = 0;
//处理函数
// }
//nop();
;
if(INTF==1)
{
INTF=0;
in++;
if(in==2)in=0;
if(in==0)
{
TRISB=0xFF;
TRISA=0xFF;
TRISC=0xFF;
}
if(in==1)
{
TRISB=0xC9;
TRISA=0;
TRISC=0;
}
}
}*/
/* LED1ON;
delay_ms(250);
LED1OFF;
delay_ms(250);
LED2ON;
delay_ms(250);
LED2OFF;
delay_ms(250);
LED3ON;
delay_ms(250);
LED3OFF;
delay_ms(250);
LED4ON;
delay_ms(250);
LED4OFF;
delay_ms(250);
LED5ON;
delay_ms(250);
LED5OFF;
delay_ms(250);
LED6ON;
delay_ms(250);
LED6OFF;
delay_ms(250);
LED7ON;
delay_ms(250);
LED7OFF;
delay_ms(250);
LED8ON;
delay_ms(250);
LED8OFF;
delay_ms(250);
LED9ON;
delay_ms(250);
LED9OFF;
delay_ms(250);
LED10ON;
delay_ms(250);
LED10OFF;
delay_ms(250);
LED11ON;
delay_ms(250);
LED11OFF;
delay_ms(250);
LED12ON;
delay_ms(250);
LED12OFF;
delay_ms(250);
LED13ON;
delay_ms(250);
LED13OFF;
delay_ms(250);
LED14ON;
delay_ms(250);
LED14OFF;
delay_ms(250);
LED15ON;
delay_ms(250);
LED15OFF;
delay_ms(250);
LED16ON;
delay_ms(250);
LED16OFF;
delay_ms(250);
LED1ON;
LED2ON;
LED3ON;
LED4ON;
LED5ON;
LED6ON;
LED7ON;
LED8ON;
LED9ON;
LED10ON;
LED11ON;
LED12ON;
LED13ON;
LED14ON;
LED15ON;
LED16ON;
delay_ms(250);
delay_ms(250);
delay_ms(250);
LED1OFF;
LED2OFF;
LED3OFF;
LED4OFF;
LED5OFF;
LED6OFF;
LED7OFF;
LED8OFF;
LED9OFF;
LED10OFF;
LED11OFF;
LED12OFF;
LED13OFF;
LED14OFF;
LED15OFF;
LED16OFF;
*/
基于PIC16F876A的摇摇棒相关推荐
- led version 2.0 摇摇棒编程软件c 语言,基于单片机控制LED摇摇棒的解决方案 - 全文...
摇摇棒本为开发套件,全部采用直插的器件.显示的LED采用了5mm超高亮30度聚光发光二极管,共 32只.控制芯片采用宏晶单片机STC11F03E,其内部有3K的程序存储空间,256字节的数据存储空间, ...
- 基于ADXL345的 LED摇摇棒原理
1. LED摇摇棒原理 LED摇摇棒可以通过左右摇动而显示出自己定义的字符,这是利用了人的视觉停留原理.基于ADXL345的LED摇摇棒的实现,主要是根据G_sensor所产生的数据来触发显示 ...
- 51单片机系列——基于单片机的蓝牙LED摇摇棒设计
设计一个机遇基于LED的显示棒,其中LED等必须呈线性排列,并至少使用16只: 摇动显示棒是形成的亮灯扇形区域能让人分辨出字符,并用按键实现显示的切换: 可以显示英文及汉字并至少显示四种模式. 摇摇棒 ...
- 51摇摇棒的简介与改字详解
51摇摇棒:"摇摇棒"是基于人的视觉暂留原理的,通过分时刷新16个发光二极管来显示输出文字或图案等信息的显示装置.输出信号频率的控制通过单片机来实现,用摇动传感器检测当前摇动状态. ...
- 蓝牙控制摇摇棒(电子综合设计)
蓝牙控制摇摇棒 经过三周的努力,蓝牙控制摇摇棒已经完成,在此过程中收获良多.选择这个题目的原因 是摇摇棒是很不错的一个玩具,再加上蓝牙的交互,可以随心所欲的控制摇晃的内容,趣味性 很强,这也是我选择做 ...
- 实例源码2---基于51单片机的摇摇棒制作
最近整理资料,看见这个之前做的摇摇棒,是基于51单片机的,下面把源程序贴出来,有任何问题欢迎留言! #include #define uchar unsigned char #define uint ...
- 基于2D-RNN的鲁棒行人跟踪
基于2D-RNN的鲁棒行人跟踪 Recurrent Neural Networks RNN 行人跟踪 读"G.L. Masala, et.al., 2D Recurrent Neural N ...
- 摇摇棒C语言程序,摇摇棒代码C语言.doc
摇摇棒代码C语言 /**************************************************************************** * * ********* ...
- android 摇摇棒 之surfaceView vs. View--第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇...
第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇 我的主题是: Android 应用程序开发经验 一直做的是嵌入式C/C++(Qt)语言开发,Java看了一个月,没想 ...
最新文章
- VS2008环境下CEGUI 0.7.1及相关工具的编译(转载 + 额外的注意事项)
- 初学Flink,对Watermarks的一些理解和感悟(透彻2)
- ZooKeeper小结
- S/4 HANA – 是ERP皇帝的新装,还是SAP王国的新基石
- 固态硬盘开卡软件_有一种软件号称能让固态硬盘速度飞起,到底靠不靠谱?
- Mysql学习总结(38)——21条MySql性能优化经验
- 打造IOS移动***测试平台
- 现在最简单的赚钱套路
- 微博热榜排行榜zset
- 屏蔽五项网络功能 让XP系统极速狂飙
- GeoServer的安装与数据服务发布
- 两层循环的中断,注意中断退出
- c语言基础知识scanf,C语言基础之scanf函数的使用
- ic 卡获取帐号apdu指令_APDU指令格式解析
- Qt: Exception at 0x7ff8082c4f69, code: 0xe06d7363: C++ exception, flags=0x1 (execution cannot be ...
- CSS3阴影 box-shadow的使用和技巧总结
- Android性能优化第(七)篇---StrickMode严苛模式检测耗时与内存问题
- Android 如何令 Socket 不遵循IP路由配置规则?
- 爆料!滴滴或于4-5月开启第二轮裁员,内部员工透露细节:或无赔偿!
- 小鸟云服务器怎么进行启动和关机?