?? main.c
字號:
/******************** 2011電子科技協會 ********************
;名稱 :點陣
;作者 : 鄭品洪
;日期 : 07/25/2011
;描述 : 循環顯示I LOVE(心形) U
;說明 :由于這里將心形采用動態形式顯示, 使得顯示數組較多, 前三個一樣的數組是為了延長“I” 的顯示時間,這樣顯示時間才協調
后三個數組同理,中間的九個數組是使得心形有動態效果的,這里看起來很復雜,實則讀者在這里只要掌握
595的使用就可以很容易理解了,595的使用涉及到操作時序,需要看懂時序圖,這是很重要的
;***********************************************************/
#include <stm8s105s4.h>
#define uchar unsigned char
#define uint unsigned int
_Bool E @PG_ODR:0; //注意這里開始引入位定義, 相當于51里的sbit E=PG0;這是stm8的位定義形式
_Bool RCLK @PD_ODR:4;
_Bool SRCLK @PD_ODR:5;
_Bool SER @PD_ODR:6;
uchar a,b;
uchar table[14][8]={{0xff,0x83,0xef,0xef,0xef,0xef,0x83,0xff},
{0xff,0x83,0xef,0xef,0xef,0xef,0x83,0xff},
{0xff,0x83,0xef,0xef,0xef,0xef,0x83,0xff},
{0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff},
{0xff,0x93,0xef,0xff,0xff,0xff,0xff,0xff},
{0xff,0x93,0x6d,0xff,0xff,0xff,0xff,0xff},
{0xff,0x93,0x6d,0x7d,0xff,0xff,0xff,0xff},
{0xff,0x93,0x6d,0x7d,0xbb,0xff,0xff,0xff},
{0xff,0x93,0x6d,0x7d,0xbb,0xd7,0xff,0xff},
{0xff,0x93,0x6d,0x7d,0xbb,0xd7,0xef,0xff},
{0xff,0x93,0x6d,0x7d,0xbb,0xd7,0xef,0xff},
{0xff,0xbb,0xbb,0xbb,0xbb,0xbb,0xc7,0xff},
{0xff,0xbb,0xbb,0xbb,0xbb,0xbb,0xc7,0xff},
{0xff,0xbb,0xbb,0xbb,0xbb,0xbb,0xc7,0xff}};
//存放了顯示的代碼
void delay(uint s)
{
uchar i;
for(s;s>0;s--)
for(i=0;i<200;i++);
}
void init(void) //初始化函數,PC是用來控制138以驅動點陣的行
{
PG_DDR=0x01;
PG_CR1=0x01;
PG_CR2=0x00;
PD_DDR=0x70;
PD_CR1=0x70;
PD_CR2=0x00;
PC_DDR=0x0f;
PC_CR1=0x0f;
PC_CR2=0x00;
}
void display(void) //顯示子函數
{
uchar m,n,p,q;
E=1; //先關閉595(賦值時會影響顯示效果)
m=table[a][b]; //將要顯示的table[a][b]賦值給m
for(q=0;q<8;q++)
{
p=0;
if((m&0x80)==0x80)
p=1; //這三句的意思是如果m的最高位是1,則p=1,否則為0,就是把m最高位賦值給p
SER=p; //把p輸入595輸入口
SRCLK=0;
RCLK=1;
if(1);
SRCLK=1;
RCLK=0; //以上語句涉及 595的操作時序, 請參考595芯片資料
m=(m<<1);
}
E=0; //賦值完后打開595
}
void main()
{
uint i,j;
init();
while(1)
{
for(a=0;a<14;a++) //有14個數組要傳送
{
for(i=0;i<10;i++) //每個數組掃描10次,這樣才 能看清楚
{
for(b=0;b<8;b++) //每個數組有8個數
{
display();
PC_ODR=b*2; //讓138和595同步
delay(2); //延時一會,以使顯示清楚, 延時不能太長,太長會看到閃爍,也不能太短,太短顯示不清楚
}
}
}
delay(1000); //為了使得看起來是I LOVE U是一個周期,這里循環一次后,延時1秒
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -