日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Futaba M11BT222A VFD(主控PT6311)STC51单片机驱动程序

發布時間:2024/1/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Futaba M11BT222A VFD(主控PT6311)STC51单片机驱动程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/* Futaba M11BT222A VFD 顯示屏驅動程序Coder ? : FarmanVersion : 2018-01-07該顯示屏采用PT6311芯片驅動,但板子端口和PT6311之間的信號經過了 其他芯片的轉換,SCLK和STB信號被翻轉。在程序中要相應的進行變換。Pin : ?1 - VCC +5V2 - GND3 - No Connection4 - Booster ?1:On 0:OFF5 - SDA6 - GND7 - SCLK8 - STB */#include <STC89C5xRC.H> #include "Delay.h"sbit M11BT222A_SDA ? ? = P0^7; // SPI 數據線 sbit M11BT222A_SCLK ? ?= P0^6; // SPI 串行時鐘 sbit M11BT222A_STB ? ? = P0^5; // 片選信號,0-不選 1-選中。 sbit M11BT222A_BOOSTER = P0^4; // 板上電壓發生器控制,1-ON 0-OFF// Futaba M11BT222A 接口信號與 M11BT222A 之間經過了器件轉換,SCLK 和 STB 信號電平翻轉 #define M11BT222A_SDA_HIGH ?1 #define M11BT222A_SCLK_HIGH 0 #define M11BT222A_STB_HIGH ?0//--------------------------------------------------------void M11BT222A_delay() {_nop_(); }//----------------------------------------------------------void M11BT222A_enable() {M11BT222A_STB ?= !M11BT222A_STB_HIGH;?M11BT222A_delay(); }void M11BT222A_disable() {M11BT222A_STB = M11BT222A_STB_HIGH;M11BT222A_delay(); }void M11BT222A_write_byte(unsigned char byte_to_write) {unsigned char mask = 0x01;unsigned char n;for(n=0; n<8; n++){M11BT222A_SCLK =!M11BT222A_SCLK_HIGH;M11BT222A_delay();M11BT222A_SDA = (mask & byte_to_write) ? 1 : 0; M11BT222A_delay();M11BT222A_SCLK = M11BT222A_SCLK_HIGH;?M11BT222A_delay();mask += mask;}return; }void M11BT222A_write_command_byte(unsigned char command_byte) {M11BT222A_enable();M11BT222A_write_byte(command_byte);M11BT222A_disable(); }//----------------------------------------------------------// digits_could_display : 8 - 16 // 命令前必須有一次 STB 有效, // 命令后必須有一次 STB 釋放。 void M11BT222A_command1(unsigned char digits_could_display) {M11BT222A_write_command_byte(digits_could_display - 1); }// 命令前必須有一次 STB 有效, // 命令后必須有一次 STB 釋放。 void M11BT222A_command2(bit enable_inc_addr_after_write) {unsigned char command = 0x40;command += enable_inc_addr_after_write ? 0x00 : 0x04;M11BT222A_write_command_byte(command); ? }// addr : 0x00 - 0x2F // 該命令后面要緊跟寫入顯示RAM的數據,且該命令與數據之間不允許有 STB 釋放操作 // 數據與數據之間也不允許有 STB 釋放。 //? // 所以,在該命令前要 調用一次 M11BT222A_enable() // 所有的顯示RAM傳輸結束后,調用一次 M11BT222A_disable(). void M11BT222A_command3(unsigned char RAM_addr_to_write) {M11BT222A_write_byte(0xC0 + RAM_addr_to_write); }// 命令前必須有一次 STB 有效, // 命令后必須有一次 STB 釋放。 void M11BT222A_command4(bit enable_display) {M11BT222A_write_command_byte(enable_display ? 0x8F : 0x87); }//----------------------------------------------------------void M11BT222A_write_display_RAM(unsigned char addr, unsigned char display_data_byte) {M11BT222A_enable();M11BT222A_command3(addr);M11BT222A_write_byte(display_data_byte);M11BT222A_disable(); }void M11BT222A_fill_display(unsigned char pattern) {unsigned char m;M11BT222A_command2(1);M11BT222A_enable();M11BT222A_command3(0);for(m=0x00; m<0x30; m++){M11BT222A_write_byte(pattern);}M11BT222A_disable(); }//----------------------------------------------------------code unsigned char M11BT222A_16seg_digit[] =? {0x46, 0x31, // '0'0x10, 0x84, // '1'0x45, 0xD1, // '2'0x43, 0xD1, // '3'0x03, 0xF0, // '4'0x43, 0xE1, // '5'0x47, 0xE1, // '6'0x10, 0x89, //0x02, 0x11, // '7'0x47, 0xF1, // '8'0x43, 0xF1 ?// '9' };void M11BT222A_show_16seg_digit(unsigned char pos, unsigned char digit) {M11BT222A_write_display_RAM(pos*3+1, ? M11BT222A_16seg_digit[digit*2]);M11BT222A_write_display_RAM(pos*3, M11BT222A_16seg_digit[digit*2 + 1]); }code unsigned char M11BT222A_8seg_digit[] =? {0x77, 0x12, 0x6B, 0x5B, 0x1E, 0x5D, 0x7D, 0x13, 0x7F, 0x5F };code unsigned char M11BT222A_8seg_pos[] =? {0x00, 0x06, 0x07, 0x03, 0x04, 0x01 };void M11BT222A_show_8seg_digit(unsigned char pos, unsigned char digit) {M11BT222A_write_display_RAM(15 + M11BT222A_8seg_pos[pos], M11BT222A_8seg_digit[digit]);//M11BT222A_write_display_RAM(15 + pos, M11BT222A_8seg_digit[digit]); }void M11BT222A_show_disk(unsigned char pattern) {M11BT222A_write_display_RAM(24, pattern); }void M11BT222A_show_network(unsigned int pattern) {M11BT222A_write_display_RAM(30, pattern/256);M11BT222A_write_display_RAM(31, pattern); }void M11BT222A_show_usb(unsigned int pattern) {M11BT222A_write_display_RAM(27, pattern/256);M11BT222A_write_display_RAM(28, pattern); }//----------------------------------------------------------void M11BT222A_booster_enable() {M11BT222A_BOOSTER = 1; }void M11BT222A_booster_disable() {M11BT222A_BOOSTER = 0; }//----------------------------------------------------------void M11BT222A_init() {M11BT222A_disable();M11BT222A_SCLK = 0;M11BT222A_SDA ?= 1;M11BT222A_booster_enable();Delay200ms();M11BT222A_command2(1);M11BT222A_fill_display(0xFF);M11BT222A_command1(11);M11BT222A_command4(1); }//----------------------------------------------------------void M11BT222A_main() ? {unsigned char m, n, seg;M11BT222A_init();M11BT222A_fill_display(0xFF); Delay200ms();M11BT222A_fill_display(0x00); Delay200ms();M11BT222A_fill_display(0xFF); Delay200ms();M11BT222A_fill_display(0x00); Delay200ms();M11BT222A_fill_display(0xFF); Delay200ms();M11BT222A_fill_display(0x00); Delay200ms();while(1){seg = 0x01;M11BT222A_show_usb(0x5555);continue;M11BT222A_show_network(0x5555); Delay1s();M11BT222A_show_network(0xAAAA); Delay1s();M11BT222A_show_disk(0x55); ?for(m=0; m<10; m++){M11BT222A_show_8seg_digit(0, 0);M11BT222A_show_8seg_digit(1, 1);M11BT222A_show_8seg_digit(2, 2);M11BT222A_show_8seg_digit(3, 3);M11BT222A_show_8seg_digit(4, 4);M11BT222A_show_8seg_digit(5, 9);Delay1s();}for(m=0; m<10; m++){M11BT222A_show_16seg_digit(0, m);M11BT222A_show_16seg_digit(1, m);M11BT222A_show_16seg_digit(2, m);M11BT222A_show_16seg_digit(3, m);M11BT222A_show_16seg_digit(4, m);Delay1s();}} }

?

總結

以上是生活随笔為你收集整理的Futaba M11BT222A VFD(主控PT6311)STC51单片机驱动程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。