編寫軟件 Atmel Studio7
仿真軟件 proteus
程序
#include <avr/io.h>
#define led_wei_ddr DDRA|=0XF0
#define led_wei PORTA
#define led_duan_ddr DDRB=0XFF
#define led_duan PORTB
#define uchar unsigned char
#define uint unsigned int
int table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共陽數(shù)碼管0--9代碼
void delay_ms(unsigned int x) // 延時 (x) ms
{
unsigned char j;
while(x--)
{
for(j=0;j<123;j++)
{
;
}
}
}
void delay_us(unsigned char x) // 延時 (x*2+5) us
{
while(--x);
}
void show(uchar j,uchar k)
{
led_wei|=0xF0; //如果換位的話這里也要改,使清屏 //共陽共陰和高低電平驅動也不一樣
led_wei&=~1<<(k);
/*if(k==1) //這用來在有需要的位上加小數(shù)點
{
led_duan=table[j]&0x7f;
delay_ms(4);
}*/
led_duan = table[j];
delay_ms(5);
}
/*****************數(shù)碼管輸出函數(shù)****************/
void led_display(uint dat,uchar num)//dat為要輸出的數(shù),num為要輸出數(shù)字的位數(shù)
{
uchar i,ad[4];
led_duan_ddr;
led_wei_ddr;
for(i=0;i<num;i++)
{
ad=dat%10;
dat=dat/10;
}
for(i=0;i<num;i++)
{
show(ad,i);
delay_ms(5);
}
}
int main(void)
{
/* Replace with your application code */
while (1)
{
led_display(6666,4);
}
}
程序通過 無錯誤 無警告 設置F_CPU=8000000UL 數(shù)碼管模塊 100us
2017-092.jpg (165.09 KB, 下載次數(shù): 92)
下載附件
2017-9-4 21:14 上傳
2017-091.jpg (176.51 KB, 下載次數(shù): 101)
下載附件
2017-9-4 21:14 上傳
2017-093.jpg (164.3 KB, 下載次數(shù): 75)
下載附件
2017-9-4 21:15 上傳
請教各位老師 怎樣修改 能正確顯示
|