欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
max7219驅(qū)動(dòng)數(shù)碼管單片機(jī)程序,能不能再簡單點(diǎn),求指教
[打印本頁]
作者:
yq1113
時(shí)間:
2020-11-25 20:13
標(biāo)題:
max7219驅(qū)動(dòng)數(shù)碼管單片機(jī)程序,能不能再簡單點(diǎn),求指教
這樣能不能簡寫感覺太長了
#include <reg52.h>
#include <intrins.h>
sbit DIN_7219=P0^5; //7219串行數(shù)據(jù)輸入端
sbit LOAD_7219=P0^6; //7219數(shù)據(jù)鎖存端
sbit CLK_7219=P0^7; //7219時(shí)鐘輸入端
#define uchar unsigned char
uchar code LEDcode[]=
{0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x00 /*0,1,2,3,4,5,6,7,8,9,全滅*/
/*0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff,*/ }; /*A,B,C,D,E,F,P,U,全亮*/
void write_7219_byte (uchar dat)
{
uchar i,temp;
for (i=0;i<8;i++)
{
temp=dat&0x80;
dat=dat<<1;
if(temp)
DIN_7219=1;
else
DIN_7219=0;
CLK_7219=0;
_nop_();
CLK_7219=1; //時(shí)鐘上升沿把數(shù)據(jù)送入寄存器鎖定
}
}
void write_7219 (uchar addr,uchar dat)
{
LOAD_7219=0; //寄存器打開,等待數(shù)據(jù)的送入
_nop_();
write_7219_byte (addr); //選擇寄存器地址
_nop_();
write_7219_byte (dat); //選擇讓芯片執(zhí)行什么命令
_nop_();
LOAD_7219=1; //第16個(gè)上升沿之后,第17個(gè)上升沿之前必須把pinCLK置高,否則數(shù)據(jù)丟失
}
/**************************************************
* MAX7219初始化 *
***************************************************/
void init_7219 (void)
{
write_7219 (0x0c,0x01); /* 設(shè)置電源工作模式 */
write_7219 (0x0a,0x02); /* 設(shè)置亮度(19/32,根據(jù)需要增減)*/
write_7219 (0x0b,0x03); /* 設(shè)置掃描界限(根據(jù)需要增減) */
write_7219 (0x09,0x00); /* 設(shè)置譯碼模式(00不譯,FF譯) */
write_7219 (0x0f,0x00); /* 顯示測試(00為正常工作狀態(tài)) */
}
/**************************************************
* MAX7219清除顯示 *
***************************************************/
void clear_7219(void)
{
uchar i; //變量i,用來選擇數(shù)碼管位選
for(i=8;i>0;i--) //i自減,選擇完所有的8位
{
write_7219(i,0x00); //對應(yīng)位選的段全部清除顯示
}
}
void main(void)
{
init_7219 (); //MAX7219初始化
clear_7219(); //MAX7219清除顯示,免去干擾
while(1)
{
write_7219(0x01,LEDcode[5]); //掃描第一位(LSB),并送段碼顯示
write_7219(0x02,LEDcode[5]|0x80); //掃描第二位,并送段碼顯示,同時(shí)加顯小數(shù)點(diǎn)2| 0x80 如果不加小數(shù)點(diǎn)就去掉|0x80
write_7219(0x03,LEDcode[5]); //掃描第三位,并送段碼顯示
write_7219(0x04,LEDcode[5]); //掃描第四位,并送段碼顯示
write_7219(0x05,LEDcode[5]); //掃描第五位,并送段碼顯示
write_7219(0x06,LEDcode[6]); //掃描第六位,并送段碼顯示
write_7219(0x07,LEDcode[7]); //掃描第七位,并送段碼顯示
write_7219(0x08,LEDcode[8]); //掃描第八位(MSB),并送段碼顯示
}
}
作者:
csmyldl
時(shí)間:
2020-11-25 22:30
這是最簡單的了,而且條理清楚,再改的話估計(jì)會(huì)讀不懂了
作者:
TTQ001
時(shí)間:
2020-11-26 04:21
我覺得它已經(jīng)簡化了。
作者:
yq1113
時(shí)間:
2020-11-26 19:05
csmyldl 發(fā)表于 2020-11-25 22:30
這是最簡單的了,而且條理清楚,再改的話估計(jì)會(huì)讀不懂了
好的,謝謝
作者:
1019250293
時(shí)間:
2020-11-26 19:11
你可以把寄存器那部分簡化一些
作者:
wwh2382
時(shí)間:
2020-11-26 19:40
一種簡化的方法是,將main函數(shù)之前的4個(gè)函數(shù)做出頭文件。這樣可以使主程序更簡潔。
作者:
vhn
時(shí)間:
2020-11-27 08:19
一種簡化的方法是,將main函數(shù)之前的4個(gè)函數(shù)做出頭文件。這樣可以使主程序更簡潔。
作者:
zhangleixbyl
時(shí)間:
2020-11-27 15:19
怎么和18B20,合一起顯示溫度啊
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1