导航:首页 > 编程语言 > 8位数码扫描显示电路的设计程序

8位数码扫描显示电路的设计程序

发布时间:2023-05-15 22:40:55

⑴ 51单片机显示八位数码管的C语言程序

1、最开始,我们先打开keil。

⑵ 求用c语言写的八位数码管动态显示程序,P0控制段,P2控制位。

#include"reg51.h"
#include "intrins.h" //_nop_();延老拿时函数用
#define uchar unsigned char
#define uint unsigned int
#define SEG_OUT P0 //段码输出口
#define BIT_OUT P2 //扫描口
sbit dot=P2^7; //LED小数点控制
uchar code tab[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */
uchar data dis_buff[8]={1,2,0,0,0,0}; //待显示单元数据,共6个数据
unsigned long temp;
/*************1毫秒延时程序**************/
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<侍亏搭120;j++)
;
}
//
/***********LED显空友示动态扫描函数**********/
display()
{
char k;
char m=0xfe;
for(k=0;k<8;k++) //8位LED扫描控制
{ BIT_OUT=0xff;
SEG_OUT=tab[dis_buff[k]];
BIT_OUT=m;
delay1ms(3);
m=(m<<1)|0x01;

}
dis_buff[0]=temp/10000000;

dis_buff[1]=(temp%10000000)/1000000;
dis_buff[2]=(temp%1000000)/100000;
dis_buff[3]=(temp%100000)/10000;
dis_buff[4]=(temp%10000)/1000;
dis_buff[5]=(temp%1000)/100;
dis_buff[6]=(temp%100)/10;
dis_buff[7]=temp%10;
}
/**************初始化程序****************/
void initiation()
{
TMOD=0x01;
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
ET0=1;
TR0=1;
EA=1;
}

/****************定时器0中断服务程序*****/
void init_timer0(void) interrupt 1
{
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
t10ms++;
if(t10ms==100)
{
t10ms=0;
ts++;
if(ts==60)
{
temp++;
ts=0;
}
}
}
/****************主程序******************/
main()
{
initiation();
while(1)
{
display();
}
}
一秒加1

⑶ 试编写程序:8位数码管动态显示数字AbcdEFgH

这是参考程序,把dofly_DuanMa[]里面的值改成a、b、c、d、e、f、g、h的对应段码值就行,然后位选信号看下你的连接电路是怎么接的。希望采纳,有疑问请追问。
#include<消中reg52.h>
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换 sbit LATCH1=P2^2;//定义锁存差桥兄使能端口 段锁存
sbit LATCH2=P2^3;// 位锁存
unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值01234567
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
void Delay(unsigned int t); //函数声明
/*------------主函数-----------------*/
main() {
unsigned char i=0;
while(1)
{ DataPort=dofly_WeiMa[i]; //取位码
LATCH2=1; //位锁存
LATCH2=0;
DataPort=dofly_DuanMa[i]; //取显示数据,段码
LATCH1=1; //段锁存
LATCH1=0;
Delay(600); // 扫描间隙延时,时间太长会闪烁,太短会造成重影,
i++;
if(8==i) //检测8位扫描完全结束?如扫描完成则从第一个
i=0; }
}
/*------------------- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是虚袭定义无符号整形变量,其值的范围是 0~65535 ----------------*/
void Delay(unsigned int t)
{ while(--t); }

⑷ 用verilog编写程序表示8位数码扫描显示电路

我这里有六位的
mole time_display(clk_100,hour,minute,second,led_light,sm_seg);
input clk_100;
input [4:0] hour;
input [5:0] minute;
input [5:0] second;
output [5:0] led_light;
output [7:0] sm_seg;//假设这里用的是念高8段数码管
reg [5:0] led_light;
reg [7:0] sm_seg;
reg [3:0] led;
reg [2:0] led_count;

always @ (posedge clk_100)
begin
if(led_count==5)
led_count<=3'b0;
else
led_count<=led_count+3'b001;
case(led_count)
3'b000:
begin
led_light<=6'b00_0001;
led<=second%10;
end
3'b001:
begin
led_light<碰岩=6'b00_0010;
led<=second/10;
end
3'b010:
begin
led_light<=6'b00_0100;
led<=minute%10;
end
3'b011:
begin
led_light<=6'b00_1000;
led<=minute/10;
end
3'b100:
begin
led_light<=6'b01_0000;
led<=hour%10;
end
3'b101:
begin
led_light<=6'b10_0000;
led<=hour/10;
end
endcase
end

always @ (led_light)
begin
case(led)
4'h0:sm_seg=8'hc0;//"0"
4'h1:sm_seg=8'hf9;//"1"
4'h2:sm_seg=8'ha4;//"2"
4'h3:sm_seg=8'hb0;//"3"
4'h4:sm_seg=8'h99;//"4"
4'h5:sm_seg=8'h92;//"5"
4'h6:sm_seg=8'h82;//"仔吵尺6"
4'h7:sm_seg=8'hf8;//"7"
4'h8:sm_seg=8'h80;//"8"
4'h9:sm_seg=8'h90;//"9"
default:sm_seg=8'hc0;//"0"
endcase
end
endmole

阅读全文

与8位数码扫描显示电路的设计程序相关的资料

热点内容
java会出现内存泄露么 浏览:617
苹果4s锁屏后怎么还显示歌曲 浏览:207
鸿蒙系统文件管理哪些可以删除 浏览:550
ubuntuqt创建工程没有配置文件 浏览:126
网站登录变成其他网站怎么处理 浏览:202
ug数控编程学校有哪些 浏览:203
java图片上传显示 浏览:402
ppt的文件名后缀 浏览:902
ug编程软件下载到哪个盘 浏览:359
炫酷字体APP下载的文件在哪里 浏览:668
廊坊哪里有少儿编程机构 浏览:312
cad新文件能找回来吗 浏览:951
导出手机qq文件到u盘 浏览:456
电脑如何打开ppt文件怎么打开方式 浏览:782
魅族锁定区文件夹 浏览:357
刻字cnc怎么编程 浏览:182
学校的网络拓扑结构图 浏览:784
收集100个pdf文件里关键词 浏览:594
苹果关闭4g网络设置 浏览:289
如何监测数据库 浏览:967

友情链接