单片机程序数码管显示3.14程序
1个回答
关注
展开全部
以下是一种基于AT89C51单片机的数码管显示3.14的程序:```c#include #include // 定义数码管段选控制IO口sbit SEG_A = P2^0;sbit SEG_B = P2^1;sbit SEG_C = P2^2;sbit SEG_D = P2^3;sbit SEG_E = P2^4;sbit SEG_F = P2^5;sbit SEG_G = P2^6;sbit SEG_DP = P2^7;// 定义数码管位选控制IO口sbit DIGIT_1 = P1^0;sbit DIGIT_2 = P1^1;sbit DIGIT_3 = P1^2;sbit DIGIT_4 = P1^3;// 定义数码管显示的数字和对应的7段码表unsigned char code SEG_TABLE[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};// 延时函数
咨询记录 · 回答于2023-04-14
单片机程序数码管显示3.14程序
以下是一种基于AT89C51单片机的数码管显示3.14的程序:```c#include #include // 定义数码管段选控制IO口sbit SEG_A = P2^0;sbit SEG_B = P2^1;sbit SEG_C = P2^2;sbit SEG_D = P2^3;sbit SEG_E = P2^4;sbit SEG_F = P2^5;sbit SEG_G = P2^6;sbit SEG_DP = P2^7;// 定义数码管位选控制IO口sbit DIGIT_1 = P1^0;sbit DIGIT_2 = P1^1;sbit DIGIT_3 = P1^2;sbit DIGIT_4 = P1^3;// 定义数码管显示的数字和对应的7段码表unsigned char code SEG_TABLE[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};// 延时函数
还有
延时函数void delay(unsigned int time) { while (time--) { _nop_(); }}// 数码管显示函数void display(unsigned int num) { // 分离出百位、十位和个位数 unsigned char baiwei = num / 100; unsigned char shiwei = (num % 100) / 10; unsigned char gewei = num % 10; // 段选
// 段选 SEG_DP = 1; SEG_A = (SEG_TABLE[baiwei] & 0x01) ? 0 : 1; SEG_B = (SEG_TABLE[baiwei] & 0x02) ? 0 : 1; SEG_C = (SEG_TABLE[baiwei] & 0x04) ? 0 : 1; SEG_D = (SEG_TABLE[baiwei] & 0x08) ? 0 : 1; SEG_E = (SEG_TABLE[baiwei] & 0x10) ? 0 : 1; SEG_F = (SEG_TABLE[baiwei] & 0x20) ? 0 : 1; SEG_G = (SEG_TABLE[baiwei] & 0x40) ? 0 : 1; delay(500); SEG_A = (SEG_TABLE[shiwei] & 0x01) ? 0 : 1; SEG_B = (SEG_TABLE[shiwei] & 0x02) ? 0 : 1; SEG_C = (SEG_TABLE[shiwei]
(SEG_TABLE[shiwei] & 0x02) ? 0 : 1; SEG_C = (SEG_TABLE[shiwei] & 0x04) ? 0 : 1; SEG_D = (SEG_TABLE[shiwei] & 0x08) ? 0 : 1; SEG_E = (SEG_TABLE[shiwei] & 0x10) ? 0 : 1; SEG_F = (SEG_TABLE[shiwei] & 0x20) ? 0 : 1; SEG_G = (SEG_TABLE[shiwei] & 0x40) ? 0 : 1; delay(500); SEG_A = (SEG_TABLE[gewei] & 0x01) ? 0 : 1; SEG_B = (SEG_TABLE[gewei] & 0x02) ? 0 : 1; SEG_C = (SEG_TABLE[gewei] & 0x04) ? 0 : 1; SEG_D = (SEG_TABLE[gewei] & 0x08) ? 0 : 1; SEG_E = (SEG_TA
/ 位选 DIGIT_4 = DIGIT_3 = DIGIT_2 = DIGIT_1 = 1; DIGIT_4 = 0; delay(500); DIGIT_4 = 1; DIGIT_3 = 0; delay(500); DIGIT_3 = 1; DIGIT_2 = 0; delay(500); DIGIT_2 = 1; DIGIT_1 = 0; delay(500); DIGIT_1 = 1;}void main() { while(1) { // 显示3.14 display(314); }}```注:此代码仅为参考示例,具体实现应根据自己的硬件电路及外设驱动方式进行相应的调整。
我们的单片机型号是AT89S52,你这是51单片机,对不上啊
给你发图片可以吗
信息太长发不过去
本回答由意法半导体(中国)投资有限公司提供