|
我的電路圖如下:
8*8的行共陽點(diǎn)陣,74ls164驅(qū)動(dòng)行,74hc154驅(qū)動(dòng)列。164得到數(shù)據(jù)后,154導(dǎo)通,該列指定的led亮。目前給的數(shù)據(jù)是0x7e,就是一行里中間6個(gè)led亮,兩邊的led不亮。
代碼如下:
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA 0x01000000
char putchar(char s)
{
SBUF=s;
while(TI==0)
{
_nop_();
}
TI=0;
}
sbit COW_1641 = P0^0;
//sbit COW_1642 = P0^2;
sbit CLK_1641 = P0^1;
sbit CLK_1642 = P0^3;
sbit CLE_1641 = P0^2;
unsigned char colcount[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
unsigned char code image[8] = {0x00,0x00,0x7E,0x50,0x50,0x50,0x00,0x00};
unsigned char i = 0; //動(dòng)態(tài)掃描的索引
unsigned int cnt = 0; //記錄 T0 中斷次數(shù)
unsigned char flag1s = 0; //1 秒定時(shí)標(biāo)志
void delay(unsigned int delay){
unsigned char i;
for(;delay>0;delay--)
for(i=0;i<150;i++);
}
void main(){
unsigned long sec = 0; //記錄經(jīng)過的秒數(shù)
TMOD = 0x01; //設(shè)置 T0 為模式 1
TH0 = 0xFC; //為 T0 賦初值 0xFC67,定時(shí) 1ms
TL0 = 0x67;
ET0 = 1; //使能 T0 中斷
TR0 = 1; //啟動(dòng) T0
while ( 1 ) {
}
}
/* 定時(shí)器 0 中斷服務(wù)函數(shù) */
void InterruptTimer0() interrupt 1 {
unsigned int col,coldata,speed;
unsigned char temp;
TH0 = 0xFC; //重新加載初值
TL0 = 0x67;
//以下代碼完成數(shù)碼管動(dòng)態(tài)掃描刷新
for (col=0;col<8;col++){
P2=col;
//temp=image[col];
temp=0x7E;
printf("col = %u temp 1 = 0x%X \n", col, temp);
for(coldata=0;coldata<8;coldata++){
printf("coldata = %u temp&0x80 = 0x%X \n",coldata,temp);
CLK_1641 = 0;
COW_1641=temp&0x80;
printf("coldata = %u COW_1641 = 0x%X \n",coldata,COW_1641);
CLK_1641 = 1;
temp<<=1;
printf("temp <<1 = 0x%X \n",temp);
}
}
}
代碼都是網(wǎng)上找的現(xiàn)成的例子。然后再proteus里一步一步運(yùn)行的時(shí)候,顯示的效果是一行里有兩個(gè)相鄰的led不亮,而且這兩個(gè)不亮的led在這行里的位置是隨機(jī)的,還沒有找到規(guī)律,運(yùn)行效果我截圖了。
于是我就在程序里用printf輸出幾個(gè)值,看看是哪里的問題,F(xiàn)在的沒有找到問題的原因。我的問題如下:
1、這樣的運(yùn)行效果代碼哪里有問題,該如何修改?
2、還有就是我原來的問題,COW_1641=temp&0x01運(yùn)算之后,printf函數(shù)輸出COW_1641應(yīng)該是什么值?
|
|