数码管从0到9的显示程序
以下是几种不同单片机控制数码管显示数字0到9的程序示例:
1. 80C51单片机
```assemblyORG 0100HMAIN: MOV R2, #00H ; 段码地址表指针清零 MOV DPTR, #TAB ; 指向段码地址表起始地址DSUP: MOV A, R2 ; 将R2的内容送入累加器A MOVC A, @A+DPTR ; 累加器的值与从数据表中取出的数码显示值相加后送入累加器A MOV P0, A ; 将累加器的值送入P0口显示 MOV R1, #11111110B ; 将11111110B(位选P2.0)送入寄存器R1 MOV P2, R1 ; 将R1的值送入P2口进行位选 LCALL YSH1S ; 调用延时1秒子程序 INC R2 ; 段码地址表指针加1 CJNE R2, #0AH, DSUP ; 如果0-9显示完毕,程序重新开台执行 SJMP MAIN ; 跳转到MAIN入口YSH1S: MOV R3, #05H ; 延时1秒子程序LOOP0: MOV R4, #0C8HLOOP1: MOV R5, #0FAHXHD: DJNZ R5, XHD DJNZ R4, LOOP1 DJNZ R3, LOOP0RETTAB: DB 0C0H ; 0-9段码表 DB 0F9H DB 0A4H DB 0B0H DB 99H DB 92H DB 82H DB 0F8H DB 80H DB 90HEND```
2. STM32F103单片机
```c#include \"stm32f10x.h\"#include \"stm32f10x_gpio.h\"const uint8_t SEG_CODE = { 0xC0, // 0 0xF9, // 1 0xA4, // 2 0xB0, // 3 0x99, // 4 0x92, // 5 0x82, // 6 0xF8, // 7 0x80, // 8 0x90 // 9};void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; // 开启GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 配置PA0 - PA7为推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure);}int main(void) { GPIO_Configuration(); uint8_t i = 0; while (1) { P0 = SEG_CODE[i]; i = (i + 1) % 10; // 可以添加延时函数来实现更平滑的显示效果 } return 0;}```
3. 51单片机
其他小伙伴的相似问题:
数码管0-9循环显示的C语言程序代码
如何用51单片机显示0到9的数字?
数码管显示0-99的程序有哪些种?