📄 main._c
字号:
/*
实验五:
SPI接口实险,LED数据管显示。
1、程序通过SPI接口输出数据到HC595芯片驱动LED数据管简单显示。
2、内部1 M晶振,程序采用单任务方式,软件延时。
3、进行此实验请插上SPI短路块。
4、此实验具有一定参考价值,可作为项目的参考方案。
AVR mega16学习板
www.iccavr.com
2007-10-10
*/
#include "iom128v.h"
extern unsigned char led_buf[];
extern void disp_init(void);
/*延时函数*/
void delay_ms(unsigned char i) {
unsigned char a, b;
for (a = 1; a < i; a++) {
for (b = 1; b; b++) {
;
}
}
}
/*IO口初始化函数*/
void io_init(void) {
DDRA = 0x00; /*方向输入*/
PORTA = 0xFF; /*打开上拉*/
DDRB = 0xF0; /*设置高4位为输出,控制4位数码管*/
PORTB = 0x0F; /*高4位输出低电平,点亮4位数码管*/
DDRC = 0x00; /*不用的IO口建议设置为输入带上拉*/
PORTC = 0xFF;
DDRD = 0x00;
PORTD = 0xFF;
DDRE = 0x00;
PORTE = 0xFF;
DDRF = 0x00;
PORTF = 0xFF;
DDRG = 0x00;
PORTG = 0xFF;
}
/*十六进制转十进制函数*/
void int_to_bcd(unsigned int temp) {
unsigned char i;
for (i = 0; i < 4; i++) {
led_buf[i] = temp % 10; /*提取当前变量最低位*/
temp = temp / 10; /*去掉当前最低位值*/
}
}
void main(void) {
unsigned int i = 0;
delay_ms(200); /*200mS启动延时*/
io_init(); /*初始化IO口*/
disp_init(); /*初始显示部*/
while (1) {
i ++;
if (i > 9999) {
i = 0x00;
}
delay_ms(100);
int_to_bcd(i); /*数值转换*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -